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));
}
}