Ojs\OAIBundle\Controller\JournalController::listSetsAction PHP 메소드

listSetsAction() 공개 메소드

Action for the list sets verb
public listSetsAction ( Request $request ) : Response
$request Symfony\Component\HttpFoundation\Request
리턴 Symfony\Component\HttpFoundation\Response
    public function listSetsAction(Request $request)
    {
        /** @var EntityManager $em */
        $em = $this->getDoctrine()->getManager();
        $slug = $request->get('slug', false);
        $this->throw404IfNotFound($slug);
        $builder = $em->createQueryBuilder();
        $builder->select('section')->from('OjsJournalBundle:Section', 'section');
        $builder->join('section.journal', 'journal', 'WITH');
        $builder->where($builder->expr()->eq('journal.slug', ':slug'))->setParameter('slug', $slug);
        $fileCache = $this->get('file_cache');
        $resumptionToken = $request->get('resumptionToken');
        if ($resumptionToken) {
            $token = $fileCache->fetch($resumptionToken);
            $currentPage = (int) $token['page'];
        } else {
            $currentPage = 1;
        }
        $generatedToken = md5(StringHelper::generateKey());
        $paginator = $this->get('knp_paginator');
        /** @var AbstractPagination $records */
        $records = $paginator->paginate($builder->getQuery(), $currentPage, 100);
        $data = ['records' => $records, 'currentPage' => $currentPage, 'resumptionToken' => $generatedToken, 'isLast' => $records->getTotalItemCount() >= $currentPage * 100];
        return $this->response('OjsOAIBundle:Journal:sets.xml.twig', $data);
    }