/** * @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; }
/** * @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()); }