diff --git a/.env.dist b/.env.dist index ba83d89b7d..7cdb85c292 100644 --- a/.env.dist +++ b/.env.dist @@ -33,8 +33,6 @@ APP_LOCALE='en_US' APP_CUSTOM_VUE_TEMPLATE='0' -APP_MULTIPLE_ACCESS_URL='' - GOOGLE_MAPS_API_KEY='' #APP_API_PLATFORM_URL='http://localhost/api/' #deprecated diff --git a/public/main/inc/lib/api.lib.php b/public/main/inc/lib/api.lib.php index 29f3fccaa7..1d4946877f 100644 --- a/public/main/inc/lib/api.lib.php +++ b/public/main/inc/lib/api.lib.php @@ -11,6 +11,7 @@ use Chamilo\CoreBundle\Entity\User; use Chamilo\CoreBundle\Entity\UserCourseCategory; use Chamilo\CoreBundle\Exception\NotAllowedException; use Chamilo\CoreBundle\Framework\Container; +use Chamilo\CoreBundle\ServiceHelper\AccessUrlHelper; use Chamilo\CoreBundle\ServiceHelper\MailHelper; use Chamilo\CoreBundle\ServiceHelper\PermissionServiceHelper; use Chamilo\CoreBundle\ServiceHelper\ThemeHelper; @@ -5972,21 +5973,12 @@ function api_get_course_url($courseId = null, $sessionId = null, $groupId = null */ function api_get_multiple_access_url(): bool { - static $accessUrlEnabled; - if (!isset($accessUrlEnabled)) { - $table = Database::get_main_table(TABLE_MAIN_ACCESS_URL); - $sql = "SELECT id FROM $table"; - $res = Database::query($sql); - if (Database::num_rows($res) > 1) { - $accessUrlEnabled = true; - } else { - $accessUrlEnabled = false; - } - } - - return $accessUrlEnabled; + return Container::$container->get(AccessUrlHelper::class)->isMultiple(); } +/** + * @deprecated Use AccessUrlHelper::isMultiple + */ function api_is_multiple_url_enabled(): bool { return api_get_multiple_access_url(); diff --git a/src/CoreBundle/EventListener/LegacyListener.php b/src/CoreBundle/EventListener/LegacyListener.php index b52183e88b..4e2a4b2229 100644 --- a/src/CoreBundle/EventListener/LegacyListener.php +++ b/src/CoreBundle/EventListener/LegacyListener.php @@ -9,6 +9,7 @@ namespace Chamilo\CoreBundle\EventListener; use Chamilo\CoreBundle\Entity\User; use Chamilo\CoreBundle\Framework\Container; use Chamilo\CoreBundle\Repository\Node\AccessUrlRepository; +use Chamilo\CoreBundle\ServiceHelper\AccessUrlHelper; use Chamilo\CoreBundle\Settings\SettingsManager; use Exception; use Symfony\Component\DependencyInjection\ContainerInterface; @@ -34,6 +35,7 @@ class LegacyListener private readonly TokenStorageInterface $tokenStorage, private readonly AccessUrlRepository $accessUrlRepository, private readonly RouterInterface $router, + private readonly AccessUrlHelper $accessUrlHelper, private readonly ParameterBagInterface $parameterBag, private readonly SettingsManager $settingsManager, private readonly ContainerInterface $container, @@ -147,16 +149,9 @@ class LegacyListener $session->set('cid_reset', false); } - $urlId = $this->accessUrlRepository->getFirstId(); - - if (1 === (int) $this->parameterBag->get('multiple_access_url')) { - $url = $this->router->generate('index', [], UrlGeneratorInterface::ABSOLUTE_URL); - $accessUrl = $this->accessUrlRepository->findOneBy(['url' => $url]); - if (null !== $accessUrl) { - $urlId = $accessUrl->getId(); - } - } - - $session->set('access_url_id', $urlId); + $session->set( + 'access_url_id', + $this->accessUrlHelper->getCurrent()->getId() + ); } } diff --git a/src/CoreBundle/Repository/Node/UsergroupRepository.php b/src/CoreBundle/Repository/Node/UsergroupRepository.php index af1f305994..3e43bd01f5 100644 --- a/src/CoreBundle/Repository/Node/UsergroupRepository.php +++ b/src/CoreBundle/Repository/Node/UsergroupRepository.php @@ -49,7 +49,7 @@ class UsergroupRepository extends ResourceRepository } } - if ($this->accessUrlHelper->isMultipleEnabled()) { + if ($this->accessUrlHelper->isMultiple()) { $accessUrl = $this->accessUrlHelper->getCurrent(); $qb->innerJoin('g.urls', 'u') @@ -88,7 +88,7 @@ class UsergroupRepository extends ResourceRepository ->setMaxResults($limit) ; - if ($this->accessUrlHelper->isMultipleEnabled()) { + if ($this->accessUrlHelper->isMultiple()) { $accessUrl = $this->accessUrlHelper->getCurrent(); $qb->innerJoin('g.urls', 'u') @@ -124,7 +124,7 @@ class UsergroupRepository extends ResourceRepository ->setMaxResults($limit) ; - if ($this->accessUrlHelper->isMultipleEnabled()) { + if ($this->accessUrlHelper->isMultiple()) { $accessUrl = $this->accessUrlHelper->getCurrent(); $qb->innerJoin('g.urls', 'u') @@ -311,7 +311,7 @@ class UsergroupRepository extends ResourceRepository $qb->select('g.id, g.title, g.description, g.url, g.picture'); } - if ($this->accessUrlHelper->isMultipleEnabled()) { + if ($this->accessUrlHelper->isMultiple()) { $accessUrl = $this->accessUrlHelper->getCurrent(); $qb->innerJoin('g.accessUrls', 'a', 'WITH', 'g.id = a.usergroup') diff --git a/src/CoreBundle/ServiceHelper/AccessUrlHelper.php b/src/CoreBundle/ServiceHelper/AccessUrlHelper.php index 2bb6c6f1ba..2e2a7ce879 100644 --- a/src/CoreBundle/ServiceHelper/AccessUrlHelper.php +++ b/src/CoreBundle/ServiceHelper/AccessUrlHelper.php @@ -8,7 +8,6 @@ namespace Chamilo\CoreBundle\ServiceHelper; use Chamilo\CoreBundle\Entity\AccessUrl; use Chamilo\CoreBundle\Repository\Node\AccessUrlRepository; -use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use Symfony\Component\Routing\RouterInterface; @@ -16,13 +15,18 @@ class AccessUrlHelper { public function __construct( private readonly AccessUrlRepository $accessUrlRepository, - private readonly ParameterBagInterface $parameterBag, private readonly RouterInterface $router, ) {} - public function isMultipleEnabled(): bool + public function isMultiple(): bool { - return 1 === (int) $this->parameterBag->get('multiple_access_url'); + static $accessUrlEnabled; + + if (!isset($accessUrlEnabled)) { + $accessUrlEnabled = $this->accessUrlRepository->count([]) > 1; + } + + return $accessUrlEnabled; } public function getFirstAccessUrl(): AccessUrl @@ -42,7 +46,7 @@ class AccessUrlHelper $accessUrl = $this->getFirstAccessUrl(); - if ($this->isMultipleEnabled()) { + if ($this->isMultiple()) { $url = $this->router->generate('index', [], UrlGeneratorInterface::ABSOLUTE_URL); /** @var AccessUrl $accessUrl */