protected function addPostLike(\Symbb\Core\ForumBundle\Entity\Post $post, \Symbb\Core\UserBundle\Entity\UserInterface $user, $asDislike = false) { if (!$this->get('security.authorization_checker')->isGranted(RatingVoter::CREATE_RATING, $post->getTopic()->getForum(), $user)) { throw $this->createAccessDeniedException(); } $likes = $this->get('doctrine')->getRepository('SymbbExtensionRatingBundle:Like', 'symbb')->findBy(array('post' => $post, 'user' => $user)); $dislikes = $this->get('doctrine')->getRepository('SymbbExtensionRatingBundle:Dislike', 'symbb')->findBy(array('post' => $post, 'user' => $user)); $myLikes = array(); $myDislikes = array(); $em = $this->get('doctrine')->getManager('symbb'); foreach ($likes as $like) { if ($like->getUser()->getId() === $user->getId()) { $myLikes[] = $like; } } foreach ($dislikes as $dislike) { if ($dislike->getUser()->getId() === $user->getId()) { $myDislikes[] = $dislike; } } // if the user "like" it if (!$asDislike) { // remove "dislikes" foreach ($myDislikes as $myDislike) { //$post->removeDislike($myDislike); $em->remove($myDislike); } // create a new "like" if no one exist if (empty($myLikes)) { $myLike = new \Symbb\Extension\RatingBundle\Entity\Like(); $myLike->setUser($user); $myLike->setPost($post); $em->persist($myLike); // i again then delete } else { foreach ($myLikes as $myLike) { $em->remove($myLike); } } } else { // remove "likes" foreach ($myLikes as $myLike) { //$post->removeLike($myLike); $em->remove($myLike); } // create a new "dislike" if no one exist if (empty($myDislikes)) { $myDislike = new \Symbb\Extension\RatingBundle\Entity\Dislike(); $myDislike->setUser($user); $myDislike->setPost($post); $em->persist($myDislike); // i again then delete } else { foreach ($myDislikes as $myDislike) { $em->remove($myDislike); } } } $em->flush(); }
public function getBreadcrumbData(Post $object, TopicManager $topicManager, ForumManager $forumManager) { $breadcrumb = $topicManager->getBreadcrumbData($object->getTopic(), $forumManager); return $breadcrumb; }