Newscoop\NewscoopBundle\Controller\TopicsController::detachTopicAction PHP Метод

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

public detachTopicAction ( Request $request )
$request Symfony\Component\HttpFoundation\Request
    public function detachTopicAction(Request $request)
    {
        $translator = $this->get('translator');
        $em = $this->get('em');
        $userService = $this->get('user');
        $cacheService = $this->get('newscoop.cache');
        $user = $userService->getCurrentUser();
        $topicService = $this->get('newscoop_newscoop.topic_service');
        if (!$user->hasPermission('AttachTopicToArticle')) {
            return new JsonResponse(array('status' => false, 'message' => $translator->trans('You do not have the right to detach topics from articles.', array(), 'article_topics')), 403);
        }
        $articleNumber = $request->get('articleNumber');
        $topicId = $request->get('topicId');
        $language = $request->get('language');
        $articleObj = $em->getRepository('Newscoop\\Entity\\Article')->findOneBy(array('number' => $articleNumber, 'language' => $language));
        if (!$articleObj) {
            return new JsonResponse(array('status' => false, 'message' => $translator->trans('Article does not exist.')), 404);
        }
        $topicObj = $em->getRepository('Newscoop\\NewscoopBundle\\Entity\\Topic')->getSingleTopicQuery($topicId)->getOneOrNullResult();
        if (!$topicObj) {
            return new JsonResponse(array('status' => false, 'message' => $translator->trans('Topic does not exist.')), 404);
        }
        $topicService->removeTopicFromArticle($topicObj, $articleObj);
        $cacheService->clearNamespace('topic');
        return new JsonResponse(array('status' => true, 'message' => $translator->trans('The topic $1 has been removed from article.', array('$1' => $topicObj->getTitle()), 'article_topics')));
    }