From e5cef5433bb733ccdd0bf639d5bd573faa88ac90 Mon Sep 17 00:00:00 2001 From: christianbeeznst Date: Wed, 11 Sep 2024 12:23:27 -0500 Subject: [PATCH] Internal: Fix CLI error when retrieving settings with api_get_setting - refs BT#21987 --- public/main/inc/global.inc.php | 1 + public/main/inc/lib/api.lib.php | 30 +++++++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/public/main/inc/global.inc.php b/public/main/inc/global.inc.php index 67d19305c35..f1cadc4a361 100644 --- a/public/main/inc/global.inc.php +++ b/public/main/inc/global.inc.php @@ -46,6 +46,7 @@ } $container = $kernel->getContainer(); + Container::setContainer($container); $router = $container->get('router'); $context = $router->getContext(); $router->setContext($context); diff --git a/public/main/inc/lib/api.lib.php b/public/main/inc/lib/api.lib.php index 2845901625d..1df3267e986 100644 --- a/public/main/inc/lib/api.lib.php +++ b/public/main/inc/lib/api.lib.php @@ -24,7 +24,6 @@ use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Validator\Constraints as Assert; -use Symfony\Component\Yaml\Yaml; use ZipStream\Option\Archive; use ZipStream\ZipStream; use Chamilo\CoreBundle\Component\Utils\ActionIcon; @@ -2686,6 +2685,35 @@ function api_get_session_condition( */ function api_get_setting($variable, $isArray = false, $key = null) { + if ('cli' === php_sapi_name()) { + $entityManager = Database::getManager(); + if (false !== strpos($variable, '.')) { + [$category, $variable] = explode('.', $variable, 2); + $repository = $entityManager->getRepository(SettingsCurrent::class); + $setting = $repository->findOneBy([ + 'category' => $category, + 'variable' => $variable + ]); + } else { + $repository = $entityManager->getRepository(SettingsCurrent::class); + $setting = $repository->findOneBy(['variable' => $variable]); + } + + if ($setting) { + $settingValue = $setting->getSelectedValue(); + if (is_string($settingValue) && $isArray && !empty($settingValue)) { + $decodedValue = json_decode($settingValue, true); + if (is_array($decodedValue)) { + return $decodedValue; + } + } + + return $settingValue; + } + + return ''; + } + $settingsManager = Container::getSettingsManager(); if (empty($settingsManager)) { return '';