Skip to content

Commit edc5934

Browse files
Merge pull request #5788 from christianbeeznest/ofaj-21987
Internal: Fix CLI error when retrieving settings with api_get_setting - refs BT#21987
2 parents 07413e3 + e5cef54 commit edc5934

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

public/main/inc/global.inc.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
}
4747

4848
$container = $kernel->getContainer();
49+
Container::setContainer($container);
4950
$router = $container->get('router');
5051
$context = $router->getContext();
5152
$router->setContext($context);

public/main/inc/lib/api.lib.php

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
2525
use Symfony\Component\Security\Core\User\UserInterface;
2626
use Symfony\Component\Validator\Constraints as Assert;
27-
use Symfony\Component\Yaml\Yaml;
2827
use ZipStream\Option\Archive;
2928
use ZipStream\ZipStream;
3029
use Chamilo\CoreBundle\Component\Utils\ActionIcon;
@@ -2686,6 +2685,35 @@ function api_get_session_condition(
26862685
*/
26872686
function api_get_setting($variable, $isArray = false, $key = null)
26882687
{
2688+
if ('cli' === php_sapi_name()) {
2689+
$entityManager = Database::getManager();
2690+
if (false !== strpos($variable, '.')) {
2691+
[$category, $variable] = explode('.', $variable, 2);
2692+
$repository = $entityManager->getRepository(SettingsCurrent::class);
2693+
$setting = $repository->findOneBy([
2694+
'category' => $category,
2695+
'variable' => $variable
2696+
]);
2697+
} else {
2698+
$repository = $entityManager->getRepository(SettingsCurrent::class);
2699+
$setting = $repository->findOneBy(['variable' => $variable]);
2700+
}
2701+
2702+
if ($setting) {
2703+
$settingValue = $setting->getSelectedValue();
2704+
if (is_string($settingValue) && $isArray && !empty($settingValue)) {
2705+
$decodedValue = json_decode($settingValue, true);
2706+
if (is_array($decodedValue)) {
2707+
return $decodedValue;
2708+
}
2709+
}
2710+
2711+
return $settingValue;
2712+
}
2713+
2714+
return '';
2715+
}
2716+
26892717
$settingsManager = Container::getSettingsManager();
26902718
if (empty($settingsManager)) {
26912719
return '';

0 commit comments

Comments
 (0)