/** * Creates a new Topic * * @param Courtyard\Forum\Entity\TopicInterface */ public function persist($topic) { if (!$topic->getPostFirst()) { throw new \InvalidArgumentException('Cannot persist a Topic without a first Post'); } $topic->setStatus(TopicStatuses::STATUS_PUBLISHED); $post = $topic->getPostFirst(); $post->setNumber(1); $post->setStatus(postStatuses::STATUS_PUBLISHED); $topic->getPostFirst()->setNumber(1); $topic->GetPostFirst()->setStatus(PostStatuses::STATUS_PUBLISHED); $topicEvent = new TopicEvent($topic); $topicEvent->addEntityToPersist($topic); $postEvent = new PostEvent($post); $postEvent->addEntityToPersist($post); $this->dispatcher->dispatch($this->dispatcher->newTransaction()->addFirstPass(ForumEvents::TOPIC_CREATE_PRE, $topicEvent)->addFirstPass(ForumEvents::POST_CREATE_PRE, $postEvent)->addSecondPass(ForumEvents::TOPIC_CREATE_POST, clone $topicEvent)->addSecondPass(ForumEvents::POST_CREATE_POST, clone $postEvent)); }
/** * Updates an existing Post * @param Courtyard\Forum\Entity\PostInterface */ public function update($post) { $postEvent = new PostEvent($post); $postEvent->addEntityToPersist($post); $this->dispatcher->dispatch($this->dispatcher->newTransaction()->addFirstPass(ForumEvents::POST_UPDATE_PRE, $postEvent)->addSecondPass(ForumEvents::POST_UPDATE_POST, clone $postEvent)); }