/**
  *
  */
 public function remove(TopicInterface $topic, $andFlush = true)
 {
     $category = $topic->getCategory();
     $this->logger->debug(sprintf('Removing all posts associated with topic: %s.', $topic->getId()));
     $posts = $this->TopicManager->findAllByTopic($topic);
     $this->TopicManager->removeAll($posts);
     $this->logger->debug(sprintf('Removing topic: %s.', $topic->getId()));
     $this->objectManager->remove($topic);
     if ($andFlush) {
         $this->objectManager->flush();
         //$this->categoryUpdater->update($category);
     }
 }
 public function findPositionByTopicAndPost(TopicInterface $topic, PostInterface $post)
 {
     $qb = $this->createQueryBuilder()->field('_id')->lt(new \MongoId($post->getId()))->field('topic.$id')->equals(new \MongoId($topic->getId()))->sort('created', 'ASC')->count();
     $query = $qb->getQuery();
     return $query->execute();
 }
 public function createPost(PostInterface $post, TopicInterface $topic, $user)
 {
     $socialContext = $topic->getSocialContext();
     $post->setAuthor($user);
     $post->setSocialContext($socialContext);
     $post->setTopic($topic);
     $this->update($post);
     return $post;
 }
 /**
  * Returns the uniform resource location (URL) of the topic.
  *
  * @param ForumInterface $forum the forum.
  * @param TopicInterface $topic the topic.
  * @return the uniform resource location (URL) of the topic.
  */
 protected function getTopicUrl(ForumInterface $forum, TopicInterface $topic)
 {
     $route = 'rhapsody_forum_topic_view';
     $url = $this->router->generate($route, array('forum' => $forum->getId(), 'topic' => $topic->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
     return $url;
 }