Chamilo is a learning management system focused on ease of use and accessibility
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.
chamilo-lms/src/CourseBundle/Repository/CShortcutRepository.php

91 lines
2.7 KiB

<?php
5 years ago
declare(strict_types=1);
/* For licensing terms, see /license.txt */
namespace Chamilo\CourseBundle\Repository;
use Chamilo\CoreBundle\Entity\AbstractResource;
use Chamilo\CoreBundle\Entity\Course;
5 years ago
use Chamilo\CoreBundle\Entity\ResourceInterface;
use Chamilo\CoreBundle\Entity\ResourceNode;
use Chamilo\CoreBundle\Entity\Session;
use Chamilo\CoreBundle\Repository\ResourceRepository;
use Chamilo\CourseBundle\Entity\CGroup;
use Chamilo\CourseBundle\Entity\CShortcut;
use Doctrine\ORM\QueryBuilder;
use Doctrine\Persistence\ManagerRegistry;
final class CShortcutRepository extends ResourceRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, CShortcut::class);
}
public function getShortcutFromResource(AbstractResource $resource): ?CShortcut
{
5 years ago
$criteria = [
'shortCutNode' => $resource->getResourceNode(),
];
return $this->findOneBy($criteria);
}
public function addShortCut(AbstractResource $resource, ResourceInterface $parent, Course $course, Session $session = null): CShortcut
{
$shortcut = $this->getShortcutFromResource($resource);
if (null === $shortcut) {
$shortcut = new CShortcut();
$shortcut
->setName($resource->getResourceName())
->setShortCutNode($resource->getResourceNode())
->setParent($parent)
5 years ago
->addCourseLink($course, $session)
;
$this->create($shortcut);
}
5 years ago
return $shortcut;
}
5 years ago
public function removeShortCut(AbstractResource $resource): bool
{
$em = $this->getEntityManager();
$shortcut = $this->getShortcutFromResource($resource);
if (null !== $shortcut) {
$em->remove($shortcut);
$em->flush();
5 years ago
return true;
}
5 years ago
return false;
}
/*public function getResources(ResourceNode $parentNode, Course $course = null, Session $session = null, CGroup $group = null): QueryBuilder
{
$qb = $this->createQueryBuilder('resource')
->select('resource')
//->from($className, 'resource')
->innerJoin(
'resource.resourceNode',
'node'
)
->leftJoin('node.resourceFile', 'file')
//->innerJoin('node.resourceLinks', 'links')
//->where('node.resourceType = :type')
//->setParameter('type',$type)
;
if (null !== $parentNode) {
$qb->andWhere('node.parent = :parentNode');
$qb->setParameter('parentNode', $parentNode);
}
return $qb;
}*/
}