/**
  * @param HasNodeInterface $hasNode      The object to link to
  * @param string           $lang         The locale
  * @param BaseUser         $owner        The user
  * @param string           $internalName The internal name (may be null)
  *
  * @throws \InvalidArgumentException
  *
  * @return Node
  */
 public function createNodeFor(HasNodeInterface $hasNode, $lang, BaseUser $owner, $internalName = null)
 {
     $em = $this->getEntityManager();
     $node = new Node();
     $node->setRef($hasNode);
     if (!$hasNode->getId() > 0) {
         throw new \InvalidArgumentException("the entity of class " . $node->getRefEntityName() . " has no id, maybe you forgot to flush first");
     }
     $node->setDeleted(false);
     $node->setInternalName($internalName);
     $parent = $hasNode->getParent();
     if ($parent) {
         /* @var NodeVersion $parentNodeVersion */
         $parentNodeVersion = $em->getRepository('KunstmaanNodeBundle:NodeVersion')->findOneBy(array('refId' => $parent->getId(), 'refEntityName' => ClassLookup::getClass($parent)));
         if ($parentNodeVersion) {
             $node->setParent($parentNodeVersion->getNodeTranslation()->getNode());
         }
     }
     if ($hasNode instanceof HiddenFromNavInterface) {
         $node->setHiddenFromNav($hasNode->isHiddenFromNav());
     }
     $em->persist($node);
     $em->flush();
     $em->refresh($node);
     $em->getRepository('KunstmaanNodeBundle:NodeTranslation')->createNodeTranslationFor($hasNode, $lang, $node, $owner);
     return $node;
 }
예제 #2
0
 /**
  * @covers Kunstmaan\NodeBundle\Entity\Node::setRef
  * @covers Kunstmaan\NodeBundle\Entity\Node::setRefEntityName
  * @covers Kunstmaan\NodeBundle\Entity\Node::getRefEntityName
  */
 public function testSetRefAndGetRefEntityName()
 {
     $entity = new TestEntity();
     $this->object->setRef($entity);
     $this->assertEquals('Kunstmaan\\NodeBundle\\Tests\\Entity\\TestEntity', $this->object->getRefEntityName());
 }