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