/** * @param RZ\Roadiz\Core\Entities\Translation $translation * @param RZ\Roadiz\Core\Entities\Node $parent * @param AuthorizationChecker|null $authorizationChecker When not null, only PUBLISHED node * will be request or with a lower status * * @return Doctrine\Common\Collections\ArrayCollection */ public function findByParentWithTranslation(Translation $translation, Node $parent = null, AuthorizationChecker $authorizationChecker = null) { $txtQuery = 'SELECT n, ns FROM RZ\\Roadiz\\Core\\Entities\\Node n INNER JOIN n.nodeSources ns INNER JOIN ns.translation t'; if ($parent === null) { $txtQuery .= PHP_EOL . 'WHERE n.parent IS NULL'; } else { $txtQuery .= PHP_EOL . 'WHERE n.parent = :parent'; } $txtQuery .= ' AND t.id = :translation_id'; $this->alterQueryWithAuthorizationChecker($txtQuery, $authorizationChecker); $txtQuery .= ' ORDER BY n.position ASC'; if ($parent === null) { $query = $this->_em->createQuery($txtQuery)->setParameter('translation_id', (int) $translation->getId()); } else { $query = $this->_em->createQuery($txtQuery)->setParameter('parent', $parent)->setParameter('translation_id', (int) $translation->getId()); } if (null !== $authorizationChecker) { $query->setParameter('status', Node::PUBLISHED); } try { return $query->getResult(); } catch (\Doctrine\ORM\NoResultException $e) { return null; } }
/** * @param RZ\Roadiz\Core\Entities\Translation $translation * @param RZ\Roadiz\Core\Entities\Tag $parent * * @return array Doctrine result array */ public function findByParentWithTranslation(Translation $translation, Tag $parent = null) { $query = null; if ($parent === null) { $query = $this->_em->createQuery(' SELECT t, tt FROM RZ\\Roadiz\\Core\\Entities\\Tag t INNER JOIN t.translatedTags tt INNER JOIN tt.translation tr WHERE t.parent IS NULL AND tr.id = :translation_id ORDER BY t.position ASC')->setParameter('translation_id', (int) $translation->getId()); } else { $query = $this->_em->createQuery(' SELECT t, tt FROM RZ\\Roadiz\\Core\\Entities\\Tag t INNER JOIN t.translatedTags tt INNER JOIN tt.translation tr INNER JOIN t.parent pt WHERE pt.id = :parent AND tr.id = :translation_id ORDER BY t.position ASC')->setParameter('parent', $parent->getId())->setParameter('translation_id', (int) $translation->getId()); } try { return $query->getResult(); } catch (\Doctrine\ORM\NoResultException $e) { return null; } }
/** * @param RZ\Roadiz\Core\Entities\Translation $translation * * @return \Symfony\Component\Form\Form */ private function buildMakeDefaultForm(Translation $translation) { $builder = $this->createFormBuilder()->add('translationId', 'hidden', ['data' => $translation->getId(), 'constraints' => [new NotBlank()]]); return $builder->getForm(); }