getRepository(); $criteria = ['shortCutNode' => $resource->getResourceNode()]; return $repo->findOneBy($criteria); } public function addShortCut(AbstractResource $resource, $parent, Course $course, Session $session = null) { $em = $this->getRepository()->getEntityManager(); $shortcut = $this->getShortcutFromResource($resource); if (null === $shortcut) { $shortcut = new CShortcut(); $shortcut ->setName($resource->getResourceName()) ->setShortCutNode($resource->getResourceNode()) ->setParent($parent) ->addCourseLink($course, $session); $em->persist($shortcut); $em->flush(); } } public function removeShortCut(AbstractResource $resource) { $em = $this->getRepository()->getEntityManager(); $shortcut = $this->getShortcutFromResource($resource); if (null !== $shortcut) { $em->remove($shortcut); $em->flush(); } } public function getResources(User $user, ResourceNode $parentNode, Course $course = null, Session $session = null, CGroup $group = null): QueryBuilder { $repo = $this->getRepository(); $className = $repo->getClassName(); $qb = $repo->getEntityManager()->createQueryBuilder() ->select('resource') ->from($className, 'resource') ->innerJoin( 'resource.resourceNode', 'node' ) ->leftJoin('node.resourceFile', 'file') //->innerJoin('node.resourceLinks', 'links') //->where('node.resourceType = :type') //->setParameter('type',$type) ; /*$qb ->andWhere('links.visibility = :visibility') ->setParameter('visibility', ResourceLink::VISIBILITY_PUBLISHED) ;*/ if (null !== $parentNode) { $qb->andWhere('node.parent = :parentNode'); $qb->setParameter('parentNode', $parentNode); } return $qb; } public function setResourceProperties(FormInterface $form, $course, $session, $fileType) { $newResource = $form->getData(); $newResource ->setCourse($course) ->setSession($session) ->setFiletype($fileType) //->setTitle($title) // already added in $form->getData() ->setReadonly(false) ; return $newResource; } }