/**
  * @param NodeTranslation $value
  *
  * @return string
  */
 public function transform($value)
 {
     if (null === $value) {
         return "";
     }
     if (false === $value instanceof NodeTranslation) {
         throw new TransformationFailedException("Value must be instance of NodeTranslation");
     }
     return $this->router->generate('_slug', ['_locale' => $value->getLang(), 'url' => $value->getUrl()]);
 }
 /**
  * @inheritDoc
  * @todo: remove after PR #1108 is merged
  *
  * @see https://github.com/Kunstmaan/KunstmaanBundlesCMS/pull/1108
  */
 protected function renderCustomSearchView(NodeTranslation $nodeTranslation, SearchViewTemplateInterface $page, EngineInterface $renderer)
 {
     $view = $page->getSearchView();
     $renderContext = new RenderContext(['locale' => $nodeTranslation->getLang(), 'page' => $page, 'indexMode' => true, 'nodetranslation' => $nodeTranslation]);
     if ($page instanceof PageInterface) {
         $request = $this->container->get('request_stack')->getCurrentRequest();
         $page->service($this->container, $request, $renderContext);
     }
     $content = $this->removeHtml($renderer->render($view, $renderContext->getArrayCopy()));
     return $content;
 }
 /**
  * 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();
 }
 /**
  * Render default search view (all indexable pageparts in the main context
  * of the page)
  *
  * @param NodeTranslation       $nodeTranslation
  * @param HasPagePartsInterface $page
  * @param EngineInterface       $renderer
  *
  * @return string
  */
 protected function renderDefaultSearchView(NodeTranslation $nodeTranslation, HasPagePartsInterface $page, EngineInterface $renderer)
 {
     $pageparts = $this->indexablePagePartsService->getIndexablePageParts($page);
     $view = 'KunstmaanNodeSearchBundle:PagePart:view.html.twig';
     $content = $this->removeHtml($renderer->render($view, array('locale' => $nodeTranslation->getLang(), 'page' => $page, 'pageparts' => $pageparts, 'indexMode' => true)));
     return $content;
 }
 /**
  * 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::setLang
  * @covers Kunstmaan\NodeBundle\Entity\NodeTranslation::getLang
  */
 public function testSetGetLang()
 {
     $this->object->setLang('nl');
     $this->assertEquals('nl', $this->object->getLang());
 }
 /**
  * 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');
 }