/**
  *
  * @access public
  * @param  int                                                 $topicId
  * @param  \Symfony\Component\Security\Core\User\UserInterface $userId
  * @return \CCDNForum\ForumBundle\Manager\ManagerInterface
  */
 public function subscribe(Topic $topic, UserInterface $user)
 {
     $subscription = $this->model->findOneSubscriptionForTopicByIdAndUserById($topic->getId(), $user->getId());
     if (!$subscription) {
         $subscription = new Subscription();
     }
     if (!$subscription->isSubscribed()) {
         $subscription->setSubscribed(true);
         $subscription->setOwnedBy($user);
         $subscription->setTopic($topic);
         $subscription->setRead(true);
         $subscription->setForum($topic->getBoard()->getCategory()->getForum());
         $this->gateway->saveSubscription($subscription);
     }
     return $this;
 }
 public function canUnsubscribeFromTopic(Topic $topic, Forum $forum = null, Subscription $subscription = null)
 {
     if (!$this->securityContext->isGranted('ROLE_USER')) {
         return false;
     }
     if (!$this->canShowTopic($topic, $forum)) {
         return false;
     }
     if ($subscription) {
         if ($subscription->getTopic()) {
             if ($subscription->getTopic()->getId() != $topic->getId()) {
                 return false;
             }
         }
         if (!$subscription->isSubscribed()) {
             return false;
         }
     } else {
         return false;
     }
     return true;
 }