/**
  * Build iterator
  *
  * NOTE : The submission fields are added as export fields as well ...
  */
 public function buildIterator()
 {
     $qb = $this->em->createQueryBuilder();
     $qb->select('fs')->from('KunstmaanFormBundle:FormSubmission', 'fs')->innerJoin('fs.node', 'n', 'WITH', 'fs.node = n.id')->andWhere('n.id = :node')->andWhere('fs.lang = :lang')->setParameter('node', $this->nodeTranslation->getNode()->getId())->setParameter('lang', $this->nodeTranslation->getLang())->addOrderBy('fs.created', 'DESC');
     $iterableResult = $qb->getQuery()->iterate();
     $isHeaderWritten = false;
     $collection = new ArrayCollection();
     foreach ($iterableResult as $row) {
         /* @var FormSubmission $submission */
         $submission = $row[0];
         // Write row data
         $data = array('id' => $submission->getId(), 'date' => $submission->getCreated()->format('d/m/Y H:i:s'), 'language' => $submission->getLang());
         foreach ($submission->getFields() as $field) {
             $header = $this->translator->trans($field->getLabel());
             if (!$isHeaderWritten) {
                 $this->addExportField($header, $header);
             }
             $data[$header] = $field->__toString();
         }
         $isHeaderWritten = true;
         $collection->add(array($data));
     }
     $this->iterator = $collection->getIterator();
 }
 /**
  * Add page content to the index document
  *
  * @param NodeTranslation  $nodeTranslation
  * @param HasNodeInterface $page
  * @param array            $doc
  *
  * @return array
  */
 protected function addPageContent(NodeTranslation $nodeTranslation, $page, &$doc)
 {
     $this->enterRequestScope($nodeTranslation->getLang());
     if ($this->logger) {
         $this->logger->debug(sprintf('Indexing page "%s" / lang : %s / type : %s / id : %d / node id : %d', $page->getTitle(), $nodeTranslation->getLang(), get_class($page), $page->getId(), $nodeTranslation->getNode()->getId()));
     }
     $renderer = $this->container->get('templating');
     $doc['content'] = '';
     if ($page instanceof SearchViewTemplateInterface) {
         $doc['content'] = $this->renderCustomSearchView($nodeTranslation, $page, $renderer);
         return;
     }
     if ($page instanceof HasPagePartsInterface) {
         $doc['content'] = $this->renderDefaultSearchView($nodeTranslation, $page, $renderer);
         return;
     }
 }
 /**
  * Checks if a nodetranslation has children and update their url
  * @param NodeTranslation $node The node
  * @param EntityManager   $em   The entity manager
  */
 private function updateNodeChildren(NodeTranslation $node, EntityManager $em)
 {
     $children = $node->getNode()->getChildren();
     if (count($children) > 0) {
         /* @var Node $child */
         foreach ($children as $child) {
             $translation = $child->getNodeTranslation($node->getLang(), true);
             if ($translation) {
                 $translation = $this->updateUrl($translation, $em);
                 if ($translation !== false) {
                     $em->persist($translation);
                     $em->flush($translation);
                     $this->updateNodeChildren($translation, $em);
                 }
             }
         }
     }
 }
 public function getParentNodeTranslation(NodeTranslation $nodeTranslation)
 {
     $parent = $nodeTranslation->getNode()->getParent();
     if (is_null($parent)) {
         return null;
     }
     $qb = $this->createQueryBuilder('nt')->select('nt,n')->innerJoin('nt.publicNodeVersion', 'nv')->innerJoin('nt.node', 'n')->where('nt.node = :parent')->andWhere('n.deleted = 0')->andWhere('nt.lang = :lang')->setParameter('parent', $parent)->setParameter('lang', $nodeTranslation->getLang());
     return $qb->getQuery()->getOneOrNullResult();
 }
 /**
  * @covers Kunstmaan\NodeBundle\Entity\NodeTranslation::setNode
  * @covers Kunstmaan\NodeBundle\Entity\NodeTranslation::getNode
  */
 public function testSetGetNode()
 {
     $node = new Node();
     $this->object->setNode($node);
     $this->assertEquals($node, $this->object->getNode());
 }
 /**
  * @param NodeTranslation $nodeTranslation The NodeTranslation
  * @param \DateTime       $date            The date to unpublish
  *
  * @throws AccessDeniedException
  */
 public function unPublishLater(NodeTranslation $nodeTranslation, \DateTime $date)
 {
     $node = $nodeTranslation->getNode();
     if (false === $this->authorizationChecker->isGranted(PermissionMap::PERMISSION_UNPUBLISH, $node)) {
         throw new AccessDeniedException();
     }
     //remove existing first
     $this->unSchedulePublish($nodeTranslation);
     $user = $this->tokenStorage->getToken()->getUser();
     $queuedNodeTranslationAction = new QueuedNodeTranslationAction();
     $queuedNodeTranslationAction->setNodeTranslation($nodeTranslation)->setAction(QueuedNodeTranslationAction::ACTION_UNPUBLISH)->setUser($user)->setDate($date);
     $this->em->persist($queuedNodeTranslationAction);
     $this->em->flush();
 }
 /**
  * Make some modifications to the default created query builder
  *
  * @param QueryBuilder $queryBuilder The query builder
  * @param array        $params       The parameters
  */
 public function adaptQueryBuilder(QueryBuilder $queryBuilder, array $params = array())
 {
     parent::adaptQueryBuilder($queryBuilder);
     $queryBuilder->innerJoin('b.node', 'n', 'WITH', 'b.node = n.id')->andWhere('n.id = :node')->andWhere('b.lang = :lang')->setParameter('node', $this->nodeTranslation->getNode()->getId())->setParameter('lang', $this->nodeTranslation->getLang())->addOrderBy('b.created', 'DESC');
 }
 private function nodeTranslationToCategory(NodeTranslation $nt)
 {
     return new Category($nt->getTitle(), $nt->getNode()->getId(), $nt->getUrl());
 }