Newscoop\NewscoopBundle\Controller\TopicsController::editAction PHP Method

editAction() public method

public editAction ( Request $request, $id )
$request Symfony\Component\HttpFoundation\Request
    public function editAction(Request $request, $id)
    {
        $em = $this->get('em');
        $translator = $this->get('translator');
        $topicService = $this->get('newscoop_newscoop.topic_service');
        $cacheService = $this->get('newscoop.cache');
        if (!$this->get('form.csrf_provider')->isCsrfTokenValid('default', $request->get('_csrf_token'))) {
            return new JsonResponse(array('status' => false, 'message' => $translator->trans('topics.csrfinvalid', array(), 'topics')), 403);
        }
        $node = $this->findOr404($id);
        if (is_array($node)) {
            return new JsonResponse($node, 404);
        }
        $locale = $request->get('_code', $request->getLocale());
        $form = $this->createForm(new TopicType());
        $form->handleRequest($request);
        if ($form->isValid()) {
            $data = $form->getData();
            if ($topicService->checkTopicName($locale, $data['title'])) {
                return new JsonResponse(array('status' => false, 'message' => $translator->trans('topics.existsname', array(), 'topics')));
            }
            foreach ($node->getTranslations() as $translation) {
                if ($translation->getLocale() == $locale && $translation->getField() == 'title') {
                    $translation->setContent($data['title']);
                    $exists = true;
                }
            }
            $em->flush();
            $cacheService->clearNamespace('topic');
            return new JsonResponse(array('status' => true, 'message' => $translator->trans('topics.updated', array(), 'topics')));
        }
        return new JsonResponse(array('status' => false, 'message' => $translator->trans('topics.error', array(), 'topics')));
    }