public function __construct(Cursus $cursus)
 {
     $details = [];
     $details['id'] = $cursus->getId();
     $details['title'] = $cursus->getTitle();
     $details['code'] = $cursus->getCode();
     $details['blocking'] = $cursus->isBlocking();
     $details['details'] = $cursus->getDetails();
     $details['root'] = $cursus->getRoot();
     $details['lvl'] = $cursus->getLvl();
     $details['lft'] = $cursus->getLft();
     $details['rgt'] = $cursus->getRgt();
     $parent = $cursus->getParent();
     $course = $cursus->getCourse();
     $workspace = $cursus->getWorkspace();
     if (!is_null($parent)) {
         $details['parentId'] = $parent->getId();
         $details['parentTitle'] = $parent->getTitle();
         $details['parentCode'] = $parent->getCode();
     }
     if (!is_null($course)) {
         $details['courseId'] = $course->getId();
         $details['courseTitle'] = $course->getTitle();
         $details['courseCode'] = $course->getCode();
     }
     if (!is_null($workspace)) {
         $details['workspaceId'] = $workspace->getId();
         $details['workspaceName'] = $workspace->getName();
         $details['workspaceCode'] = $workspace->getCode();
         $details['workspaceGuid'] = $workspace->getGuid();
     }
     parent::__construct(self::ACTION, $details);
 }
 public function findDescendantSearchedCoursesByCursus(Cursus $cursus, $search = '', $orderedBy = 'title', $order = 'ASC', $executeQuery = true)
 {
     $dql = "\n            SELECT c\n            FROM Claroline\\CursusBundle\\Entity\\Course c\n            WHERE (\n                UPPER(c.title) LIKE :search\n                OR UPPER(c.code) LIKE :search\n            )\n            AND EXISTS (\n                SELECT cc\n                FROM Claroline\\CursusBundle\\Entity\\Cursus cc\n                WHERE cc.course = c\n                AND cc.root = :root\n                AND cc.lft >= :left\n                AND cc.rgt <= :right\n            )\n            ORDER BY c.{$orderedBy} {$order}\n        ";
     $query = $this->_em->createQuery($dql);
     $query->setParameter('root', $cursus->getRoot());
     $query->setParameter('left', $cursus->getLft());
     $query->setParameter('right', $cursus->getRgt());
     $upperSearch = strtoupper($search);
     $query->setParameter('search', "%{$upperSearch}%");
     return $executeQuery ? $query->getResult() : $query;
 }
 public function findDescendantHierarchyByCursus(Cursus $cursus, $orderedBy = 'cursusOrder', $order = 'ASC', $executeQuery = true)
 {
     $dql = "\n            SELECT DISTINCT c\n            FROM Claroline\\CursusBundle\\Entity\\Cursus c\n            WHERE c.root = :root\n            AND c.lft >= :left\n            AND c.rgt <= :right\n            ORDER BY c.{$orderedBy} {$order}\n        ";
     $query = $this->_em->createQuery($dql);
     $query->setParameter('root', $cursus->getRoot());
     $query->setParameter('left', $cursus->getLft());
     $query->setParameter('right', $cursus->getRgt());
     return $executeQuery ? $query->getResult() : $query;
 }
 public function deleteCursus(Cursus $cursus)
 {
     $details = [];
     $details['id'] = $cursus->getId();
     $details['title'] = $cursus->getTitle();
     $details['code'] = $cursus->getCode();
     $details['blocking'] = $cursus->isBlocking();
     $details['details'] = $cursus->getDetails();
     $details['root'] = $cursus->getRoot();
     $details['lvl'] = $cursus->getLvl();
     $details['lft'] = $cursus->getLft();
     $details['rgt'] = $cursus->getRgt();
     $parent = $cursus->getParent();
     $course = $cursus->getCourse();
     $workspace = $cursus->getWorkspace();
     if (!is_null($parent)) {
         $details['parentId'] = $parent->getId();
         $details['parentTitle'] = $parent->getTitle();
         $details['parentCode'] = $parent->getCode();
     }
     if (!is_null($course)) {
         $details['courseId'] = $course->getId();
         $details['courseTitle'] = $course->getTitle();
         $details['courseCode'] = $course->getCode();
     }
     if (!is_null($workspace)) {
         $details['workspaceId'] = $workspace->getId();
         $details['workspaceName'] = $workspace->getName();
         $details['workspaceCode'] = $workspace->getCode();
         $details['workspaceGuid'] = $workspace->getGuid();
     }
     $this->om->remove($cursus);
     $this->om->flush();
     $event = new LogCursusDeleteEvent($details);
     $this->eventDispatcher->dispatch('log', $event);
 }