public function handleCommentContent(BaseComment $comment) { $content = $this->escape($comment->getCommentBody()); $replacements = []; $users = []; $mentions = Tags::parseMentionTags($content); foreach ($mentions as $username) { $tag = '@' . $username; if (!isset($replacements[$tag])) { $user = $this->userRepo->findOneByUsername($username); if ($user) { $users[$username] = $user; $replacements[$tag] = "<a data-user-id=\"{$user->getId()}\">{$tag}</a>"; } } } $content = UrlConverter::wrapLinks($content); $content = Tags::replaceMentionTags($content, $replacements); $content = Tags::wrapHashTags($content); $comment->setCommentBodyHtml($content); return $users; }
public function noticeCommentMentioned(BaseComment $comment, $recipients) { $group = null; if ($comment instanceof MicropetitionComment) { $micropetition = $comment->getPetition(); $group = $micropetition->getGroup(); $target = ['id' => $micropetition->getId(), 'preview' => $this->preparePreview($comment->getCommentBody()), 'type' => $micropetition->getType(), 'label' => $micropetition->getType() === $micropetition::TYPE_QUORUM ? 'post' : 'petition']; } else { if ($comment instanceof Comment) { $question = $comment->getQuestion(); $target = ['id' => $question->getId(), 'type' => $question->getType()]; $target['label'] = $this->getLabelByPoll($question); $group = $question->getUser(); } } if ($comment->getParentComment()->getUser()) { $target['comment_id'] = $comment->getId(); } $user = $comment->getUser(); $target['user_id'] = $user->getId(); $target['first_name'] = $user->getFirstName(); $target['last_name'] = $user->getLastName(); foreach ($recipients as $recipient) { if ($group instanceof Group && $this->em->getRepository(UserGroup::class)->isJoinedUser($group, $recipient)) { $socialActivity = (new SocialActivity(SocialActivity::TYPE_COMMENT_MENTIONED, null, $group))->setTarget($target)->setRecipient($recipient); $this->em->persist($socialActivity); $this->em->flush($socialActivity); $this->pt->addToQueue('sendSocialActivity', [$socialActivity->getId()]); } else { if ($this->em->getRepository(UserFollow::class)->findActiveFollower($user, $recipient)) { $socialActivity = (new SocialActivity(SocialActivity::TYPE_COMMENT_MENTIONED, $user, null))->setTarget($target)->setRecipient($recipient); $this->em->persist($socialActivity); $this->em->flush($socialActivity); $this->pt->addToQueue('sendSocialActivity', [$socialActivity->getId()]); } } } }
public function getRateDown() { $this->__load(); return parent::getRateDown(); }
/** * Add rate to comment * @Route( * "/comments/rate/{id}/{action}", * requirements={"id"="\d+", "action"="up|down|delete"}, * name="api_question_rate_comment" * ) * @ParamConverter("comment", class="CivixCoreBundle:BaseComment") * @Method("POST") * @ApiDoc( * resource=true, * description="Add rate to comment", * statusCodes={ * 200="Returns comment with new rate", * 401="Authorization required", * 405="Method Not Allowed" * } * ) */ public function rateCommentAction(\Civix\CoreBundle\Entity\BaseComment $comment, $action) { $user = $this->getUser(); $rateActionConstant = 'Civix\\CoreBundle\\Entity\\Poll\\CommentRate::RATE_' . strtoupper($action); if ($comment->getUser() == $user) { throw new BadRequestHttpException('You can\'t rate your comment'); } $comment = $this->get('civix_core.poll.comment_manager')->updateRateToComment($comment, $user, constant($rateActionConstant)); if ($comment instanceof \Civix\CoreBundle\Entity\Poll\Comment && !$comment->getParentComment() && $comment->getQuestion() instanceof \Civix\CoreBundle\Entity\Poll\Question\LeaderNews) { $this->get('civix_core.activity_update')->updateEntityRateCount($comment); } $response = new Response($this->jmsSerialization($comment, array('api-comments', 'api-comments-parent'))); return $response; }