Exemplo n.º 1
0
 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();
 }
Exemplo n.º 2
0
 public function getBreadcrumbData(Post $object, TopicManager $topicManager, ForumManager $forumManager)
 {
     $breadcrumb = $topicManager->getBreadcrumbData($object->getTopic(), $forumManager);
     return $breadcrumb;
 }