Newscoop\NewscoopBundle\Controller\CommentsController::setStatusAction PHP Метод

setStatusAction() публичный Метод

public setStatusAction ( Request $request )
$request Symfony\Component\HttpFoundation\Request
    public function setStatusAction(Request $request)
    {
        $translator = $this->container->get('translator');
        $user = $this->container->get('user');
        $em = $this->container->get('em');
        $commentService = $this->container->get('comment');
        $commentsRepository = $commentService->getRepository();
        $status = $request->request->get('status');
        $comments = $request->request->get('comment');
        if ($request->isMethod('POST')) {
            if (!is_array($comments)) {
                $comments = array($comments);
            }
            if ($status == "deleted") {
                $comments = array_unique(array_merge($comments, $commentService->getAllReplies($comments, $commentsRepository)));
            }
            try {
                foreach ($comments as $id) {
                    $comment = $em->getRepository('Newscoop\\Entity\\Comment')->find($id);
                    $thread = $em->getRepository('Newscoop\\Entity\\Article')->findOneBy(array('number' => $comment->getThread()));
                    if ($status == "deleted") {
                        $message = $translator->trans('comments.msg.error.deletefromarticle', array('$1' => $user->getCurrentUser()->getName(), '$2' => $thread->getName(), '$3' => $comment->getLanguage()->getCode()), 'new_comments');
                    } else {
                        $message = $translator->trans('comments.msg.commentinarticle', array('$1' => $user->getCurrentUser()->getName(), '$2' => $thread->getName(), '$3' => $comment->getLanguage()->getCode(), '$4' => $status), 'new_comments');
                    }
                }
                $em->getRepository('Newscoop\\Entity\\Comment')->setStatus($comments, $status);
                $em->flush();
                $cacheService = $this->container->get('newscoop.cache');
                $cacheService->clearNamespace('comment');
            } catch (\Exception $e) {
                return new JsonResponse(array('message' => $e->getMessage()));
            }
            return new JsonResponse(array('message' => $message, 'comments' => $comments, 'status' => $status));
        }
    }