You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.5 KiB
54 lines
1.5 KiB
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/* For licensing terms, see /license.txt */
|
|
|
|
namespace Chamilo\CourseBundle\Repository;
|
|
|
|
use Chamilo\CoreBundle\Traits\NonResourceRepository;
|
|
use Chamilo\CoreBundle\Traits\Repository\ORM\NestedTreeRepositoryTrait;
|
|
use Chamilo\CourseBundle\Entity\CLpItem;
|
|
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
|
use Doctrine\Persistence\ManagerRegistry;
|
|
|
|
final class CLpItemRepository extends ServiceEntityRepository
|
|
{
|
|
use NestedTreeRepositoryTrait;
|
|
use NonResourceRepository;
|
|
|
|
public function __construct(ManagerRegistry $registry)
|
|
{
|
|
parent::__construct($registry, CLpItem::class);
|
|
|
|
$this->initializeTreeRepository($this->getEntityManager(), $this->getClassMetadata());
|
|
}
|
|
|
|
public function create(CLpItem $item): void
|
|
{
|
|
$this->getEntityManager()->persist($item);
|
|
$this->getEntityManager()->flush();
|
|
}
|
|
|
|
public function getRootItem(int $lpId): ?CLpItem
|
|
{
|
|
return $this->findOneBy([
|
|
'path' => 'root',
|
|
'lp' => $lpId,
|
|
]);
|
|
}
|
|
|
|
public function findItemsByLearningPathAndType(int $learningPathId, string $itemType): array
|
|
{
|
|
$qb = $this->createQueryBuilder('i')
|
|
->where('i.lp = :learningPathId')
|
|
->andWhere('i.itemType = :itemType')
|
|
->setParameter('learningPathId', $learningPathId)
|
|
->setParameter('itemType', $itemType)
|
|
;
|
|
|
|
$query = $qb->getQuery();
|
|
|
|
return $query->getResult();
|
|
}
|
|
}
|
|
|