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

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

public treeAction ( Request $request )
$request Symfony\Component\HttpFoundation\Request
    public function treeAction(Request $request)
    {
        $em = $this->get('em');
        $locale = $request->get('_code');
        $articleNumber = $request->get('_articleNumber');
        $topicService = $this->get('newscoop_newscoop.topic_service');
        $cacheService = $this->get('newscoop.cache');
        $topicsCount = $topicService->countBy();
        $attachedCount = $topicService->countArticleTopicsBy();
        $cacheKey = $cacheService->getCacheKey(array('topics', $topicsCount, $attachedCount, $articleNumber), 'topic');
        $repository = $em->getRepository('Newscoop\\NewscoopBundle\\Entity\\Topic');
        if ($cacheService->contains($cacheKey)) {
            $nodes = $cacheService->fetch($cacheKey);
        } else {
            $topicsQuery = $repository->getTranslatableTopics($locale);
            $nodes = $topicsQuery->getArrayResult();
            if ($articleNumber) {
                $nodes = $this->setAttachedKeysForArticleTopics($nodes, $articleNumber);
            }
            $cacheService->save($cacheKey, $nodes);
        }
        $tree = $repository->buildTreeArray($nodes);
        usort($tree, function ($node1, $node2) {
            return $node2['topicOrder'] - $node1['topicOrder'];
        });
        return new JsonResponse(array('tree' => $tree));
    }