Exemplo n.º 1
0
 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 __construct(Cursus $cursus, User $user)
 {
     $details = [];
     $details['username'] = $user->getUsername();
     $details['firsName'] = $user->getFirstName();
     $details['lastName'] = $user->getLastName();
     $details['cursusId'] = $cursus->getId();
     $details['cursusTitle'] = $cursus->getTitle();
     $details['cursusCode'] = $cursus->getCode();
     parent::__construct(self::ACTION, $details, $user);
 }
Exemplo n.º 3
0
 public function cursus($name, Cursus $parent = null, Course $course = null, $order = 0, $blocking = false)
 {
     $cursus = new Cursus();
     $cursus->setTitle($name);
     $cursus->setCode($name);
     $cursus->setDescription($name);
     $cursus->setParent($parent);
     $cursus->setCourse($course);
     $cursus->setCursusOrder($order);
     $cursus->setBlocking($blocking);
     $this->om->persist($cursus);
     return $cursus;
 }
Exemplo n.º 4
0
 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;
 }
Exemplo n.º 5
0
 /**
  * @EXT\Route(
  *     "cursus/{cursus}/order/update/with/cursus/{otherCursus}/mode/{mode}",
  *     name="claro_cursus_update_order",
  *     options={"expose"=true}
  * )
  * @EXT\ParamConverter("authenticatedUser", options={"authenticatedUser" = true})
  */
 public function updateCursusOrderAction(Cursus $cursus, Cursus $otherCursus, $mode)
 {
     $this->checkToolAccess();
     if ($cursus->getParent() === $otherCursus->getParent()) {
         $newOrder = $otherCursus->getCursusOrder();
         if ($mode === 'next') {
             $this->cursusManager->updateCursusOrder($cursus, $newOrder);
         } else {
             $cursus->setCursusOrder($newOrder + 1);
             $this->cursusManager->persistCursus($cursus);
         }
         return new JsonResponse('success', 204);
     } else {
         return new JsonResponse('Forbidden', 403);
     }
 }
Exemplo n.º 6
0
 private function importCursusChildren(array $parent, array $children, array $courses, array $codes, array &$createdCursus, &$index)
 {
     if (isset($parent['id']) && isset($children[$parent['id']])) {
         foreach ($children[$parent['id']] as $child) {
             $cursus = new Cursus();
             $cursus->setTitle($child['title']);
             $cursus->setDescription($child['description']);
             $cursus->setBlocking($child['blocking']);
             $cursus->setCursusOrder($child['cursus_order']);
             $cursus->setDetails($child['details']);
             if (isset($createdCursus[$parent['id']])) {
                 $cursus->setParent($createdCursus[$parent['id']]);
             }
             if (!empty($child['course']) && isset($courses[$child['course']])) {
                 $cursus->setCourse($courses[$child['course']]);
             }
             if (!empty($child['code'])) {
                 $code = $this->generateValidCode($child['code'], $codes);
                 $cursus->setCode($code);
             }
             $this->om->persist($cursus);
             $createdCursus[$child['id']] = $cursus;
             $index++;
             if ($index % 50 === 0) {
                 $this->om->forceFlush();
             }
             if (isset($children[$child['id']])) {
                 $this->importCursusChildren($child, $children, $courses, $codes, $createdCursus, $index);
             }
         }
     }
 }
 /**
  * @EXT\Route(
  *     "/api/cursus/{cursus}/edit",
  *     name="api_put_cursus_edition",
  *     options = {"expose"=true}
  * )
  * @EXT\ParamConverter("user", converter="current_user")
  *
  * Edits a cursus
  *
  * @return \Symfony\Component\HttpFoundation\JsonResponse
  */
 public function putCursusEditionAction(Cursus $cursus)
 {
     $cursusDatas = $this->request->request->get('cursusDatas', false);
     $cursus->setTitle($cursusDatas['title']);
     $cursus->setCode($cursusDatas['code']);
     $cursus->setDescription($cursusDatas['description']);
     $cursus->setBlocking((bool) $cursusDatas['blocking']);
     $color = $cursusDatas['color'];
     $details = ['color' => $color];
     $cursus->setDetails($details);
     if ($cursusDatas['workspace']) {
         $worskpace = $this->workspaceManager->getWorkspaceById($cursusDatas['workspace']);
         $cursus->setWorkspace($worskpace);
     }
     if ($this->request->files->get('cursusDatas')['icon']) {
         $icon = $this->cursusManager->saveIcon($this->request->files->get('cursusDatas')['icon']);
         $cursus->setIcon($icon);
     }
     $this->cursusManager->persistCursus($cursus);
     $event = new LogCursusEditEvent($cursus);
     $this->eventDispatcher->dispatch('log', $event);
     $serializedCursus = $this->serializer->serialize($cursus, 'json', SerializationContext::create()->setGroups(['api_workspace_min']));
     return new JsonResponse($serializedCursus, 200);
 }
Exemplo n.º 8
0
 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);
 }