From 523ad578f0ac57f830d7c7a40902dd7d918a3be9 Mon Sep 17 00:00:00 2001 From: christianbeeznst Date: Fri, 2 Aug 2024 18:30:07 -0500 Subject: [PATCH] Internal: Fix missing course association in CourseRelUser --- .../Extension/CourseRelUserExtension.php | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/CoreBundle/DataProvider/Extension/CourseRelUserExtension.php b/src/CoreBundle/DataProvider/Extension/CourseRelUserExtension.php index f7031b59202..b9fdfca78d7 100644 --- a/src/CoreBundle/DataProvider/Extension/CourseRelUserExtension.php +++ b/src/CoreBundle/DataProvider/Extension/CourseRelUserExtension.php @@ -13,6 +13,7 @@ use Chamilo\CoreBundle\Entity\CourseRelUser; use Chamilo\CoreBundle\Entity\User; use Chamilo\CoreBundle\ServiceHelper\AccessUrlHelper; +use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\QueryBuilder; use Symfony\Bundle\SecurityBundle\Security; use Symfony\Component\Security\Core\Exception\AccessDeniedException; @@ -21,7 +22,8 @@ final class CourseRelUserExtension implements QueryCollectionExtensionInterface { public function __construct( private readonly Security $security, - private readonly AccessUrlHelper $accessUrlHelper + private readonly AccessUrlHelper $accessUrlHelper, + private readonly EntityManagerInterface $entityManager ) {} public function applyToCollection( @@ -45,11 +47,14 @@ public function applyToCollection( ->andWhere('url_rel.url = :access_url_id') ->setParameter('access_url_id', $accessUrl->getId()); } else { - $queryBuilder - ->innerJoin("$rootAlias.course", 'c') - ->innerJoin('c.urls', 'url_rel') - ->andWhere('url_rel.url = :access_url_id') - ->setParameter('access_url_id', $accessUrl->getId()); + $metaData = $this->entityManager->getClassMetadata($resourceClass); + if ($metaData->hasAssociation('course')) { + $queryBuilder + ->innerJoin("$rootAlias.course", 'c') + ->innerJoin('c.urls', 'url_rel') + ->andWhere('url_rel.url = :access_url_id') + ->setParameter('access_url_id', $accessUrl->getId()); + } } }