Newscoop\NewscoopBundle\Controller\TopicsController::moveAction PHP 메소드

moveAction() 공개 메소드

public moveAction ( Request $request, $id )
$request Symfony\Component\HttpFoundation\Request
    public function moveAction(Request $request, $id)
    {
        $em = $this->get('em');
        $repository = $em->getRepository('Newscoop\\NewscoopBundle\\Entity\\Topic');
        $topicService = $this->get('newscoop_newscoop.topic_service');
        $translator = $this->get('translator');
        $cacheService = $this->get('newscoop.cache');
        $node = $this->findOr404($id);
        if (is_array($node)) {
            return new JsonResponse($node, 404);
        }
        $params = $request->request->all();
        $parent = isset($params['parent']) && $params['parent'] ? $params['parent'] : null;
        $result = $topicService->saveTopicPosition($node, $params);
        if (!$result) {
            return new JsonResponse(array('status' => false, 'message' => $translator->trans('topics.failedfind', array('%id%' => $id), 'topics')));
        }
        if (($request->get('last') || $request->get('first') || $request->get('middle')) && !$parent) {
            $rootNodes = $repository->getRootNodesQuery()->getResult();
            $order = array_reverse(explode(',', $request->get('order')));
            $topicService->reorderRootNodes($rootNodes, $order);
        }
        $cacheService->clearNamespace('topic');
        return new JsonResponse(array('status' => true, 'message' => $translator->trans('topics.alerts.ordersaved', array(), 'topics')), 200);
    }