/** * * @access public * @param int $topicId * @param \Symfony\Component\Security\Core\User\UserInterface $userId * @return \Map2u\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; }