1313use Chamilo \CoreBundle \Entity \CourseRelUser ;
1414use Chamilo \CoreBundle \Entity \User ;
1515use Chamilo \CoreBundle \ServiceHelper \AccessUrlHelper ;
16+ use Doctrine \ORM \EntityManagerInterface ;
1617use Doctrine \ORM \QueryBuilder ;
1718use Symfony \Bundle \SecurityBundle \Security ;
1819use Symfony \Component \Security \Core \Exception \AccessDeniedException ;
@@ -21,7 +22,8 @@ final class CourseRelUserExtension implements QueryCollectionExtensionInterface
2122{
2223 public function __construct (
2324 private readonly Security $ security ,
24- private readonly AccessUrlHelper $ accessUrlHelper
25+ private readonly AccessUrlHelper $ accessUrlHelper ,
26+ private readonly EntityManagerInterface $ entityManager
2527 ) {}
2628
2729 public function applyToCollection (
@@ -45,11 +47,14 @@ public function applyToCollection(
4547 ->andWhere ('url_rel.url = :access_url_id ' )
4648 ->setParameter ('access_url_id ' , $ accessUrl ->getId ());
4749 } else {
48- $ queryBuilder
49- ->innerJoin ("$ rootAlias.course " , 'c ' )
50- ->innerJoin ('c.urls ' , 'url_rel ' )
51- ->andWhere ('url_rel.url = :access_url_id ' )
52- ->setParameter ('access_url_id ' , $ accessUrl ->getId ());
50+ $ metaData = $ this ->entityManager ->getClassMetadata ($ resourceClass );
51+ if ($ metaData ->hasAssociation ('course ' )) {
52+ $ queryBuilder
53+ ->innerJoin ("$ rootAlias.course " , 'c ' )
54+ ->innerJoin ('c.urls ' , 'url_rel ' )
55+ ->andWhere ('url_rel.url = :access_url_id ' )
56+ ->setParameter ('access_url_id ' , $ accessUrl ->getId ());
57+ }
5358 }
5459 }
5560
0 commit comments