/** * If there is a draft version it'll try to publish the draft first. Makse snese because if you want to publish the public version you don't publish but you save. * * @param NodeTranslation $nodeTranslation * * @throws AccessDeniedException */ public function publish(NodeTranslation $nodeTranslation, $user = null) { if (false === $this->authorizationChecker->isGranted(PermissionMap::PERMISSION_PUBLISH, $nodeTranslation->getNode())) { throw new AccessDeniedException(); } if (is_null($user)) { $user = $this->tokenStorage->getToken()->getUser(); } $node = $nodeTranslation->getNode(); $nodeVersion = $nodeTranslation->getNodeVersion('draft'); if (!is_null($nodeVersion)) { $page = $nodeVersion->getRef($this->em); /** @var $nodeVersion NodeVersion */ $nodeVersion = $this->createPublicVersion($page, $nodeTranslation, $nodeVersion, $user); $nodeTranslation = $nodeVersion->getNodeTranslation(); } else { $nodeVersion = $nodeTranslation->getPublicNodeVersion(); } $page = $nodeVersion->getRef($this->em); $this->eventDispatcher->dispatch(Events::PRE_PUBLISH, new NodeEvent($node, $nodeTranslation, $nodeVersion, $page)); $nodeTranslation->setOnline(true)->setPublicNodeVersion($nodeVersion)->setUpdated(new \DateTime()); $this->em->persist($nodeTranslation); $this->em->flush(); // Remove scheduled task $this->unSchedulePublish($nodeTranslation); $this->eventDispatcher->dispatch(Events::POST_PUBLISH, new NodeEvent($node, $nodeTranslation, $nodeVersion, $page)); }
/** * @covers Kunstmaan\NodeBundle\Entity\NodeTranslation::getNodeVersion */ public function testGetNonExistentNodeVersion() { $this->assertNull($this->object->getNodeVersion('draft')); }