These values are calculated from the request paramaters.
Inheritance: implements Sulu\Component\Rest\ListBuilder\ListRestHelperInterface
Beispiel #1
0
 /**
  * Perform a search and return a JSON response.
  *
  * @param Request $request
  *
  * @return JsonResponse
  */
 public function searchAction(Request $request)
 {
     $queryString = $request->query->get('q');
     $category = $request->query->get('category', null);
     $locale = $request->query->get('locale', null);
     $page = $this->listRestHelper->getPage();
     $limit = $this->listRestHelper->getLimit();
     $aggregateHits = [];
     $startTime = microtime(true);
     $categories = $category ? [$category] : $this->searchManager->getCategoryNames();
     foreach ($categories as $category) {
         $query = $this->searchManager->createSearch($queryString);
         if ($locale) {
             $query->locale($locale);
         }
         if ($category) {
             $query->category($category);
         }
         foreach ($query->execute() as $hit) {
             $aggregateHits[] = $hit;
         }
     }
     $time = microtime(true) - $startTime;
     $adapter = new ArrayAdapter($aggregateHits);
     $pager = new Pagerfanta($adapter);
     $pager->setMaxPerPage($limit);
     $pager->setCurrentPage($page);
     $representation = new SearchResultRepresentation(new CollectionRepresentation($pager->getCurrentPageResults(), 'result'), 'sulu_search_search', ['locale' => $locale, 'query' => $query, 'category' => $category], (int) $page, (int) $limit, $pager->getNbPages(), 'page', 'limit', false, count($aggregateHits), $this->getCategoryTotals($aggregateHits), number_format($time, 8));
     $view = View::create($representation);
     $context = SerializationContext::create();
     $context->enableMaxDepthChecks();
     $context->setSerializeNull(true);
     $view->setSerializationContext($context);
     return $this->viewHandler->handle($view);
 }
Beispiel #2
0
 /**
  * Perform a search and return a JSON response.
  *
  * @param Request $request
  *
  * @return Response
  */
 public function searchAction(Request $request)
 {
     $queryString = $request->query->get('q');
     $index = $request->query->get('index', null);
     $locale = $request->query->get('locale', null);
     $page = $this->listRestHelper->getPage();
     $limit = $this->listRestHelper->getLimit();
     $startTime = microtime(true);
     $indexes = $index ? [$index] : $this->getAllowedIndexes();
     $query = $this->searchManager->createSearch($queryString);
     if ($locale) {
         $query->locale($locale);
     }
     $query->indexes($indexes);
     $time = microtime(true) - $startTime;
     $adapter = new ArrayAdapter($query->execute());
     $pager = new Pagerfanta($adapter);
     $pager->setMaxPerPage($limit);
     $pager->setCurrentPage($page);
     $representation = new SearchResultRepresentation(new CollectionRepresentation($pager->getCurrentPageResults(), 'result'), 'sulu_search_search', ['locale' => $locale, 'query' => $query, 'index' => $index], (int) $page, (int) $limit, $pager->getNbPages(), 'page', 'limit', false, $adapter->getNbResults(), $this->getIndexTotals($adapter->getArray()), number_format($time, 8));
     $view = View::create($representation);
     $context = SerializationContext::create();
     $context->enableMaxDepthChecks();
     $context->setSerializeNull(true);
     $view->setSerializationContext($context);
     return $this->viewHandler->handle($view);
 }
Beispiel #3
0
 /**
  * @dataProvider dataFieldsProvider
  */
 public function testGetFields($request)
 {
     $helper = new ListRestHelper($request, $this->em);
     $this->assertEquals(explode(',', $request->get('fields')), $helper->getFields());
     $this->assertEquals($request->get('sortBy'), $helper->getSortColumn());
     $this->assertEquals($request->get('sortOrder', 'asc'), $helper->getSortOrder());
     $this->assertEquals($request->get('search'), $helper->getSearchPattern());
     $this->assertEquals(explode(',', $request->get('searchFields')), $helper->getSearchFields());
     $this->assertEquals($request->get('limit'), $helper->getLimit());
     $this->assertEquals($request->get('limit') * ($request->get('page') - 1), $helper->getOffset());
 }
Beispiel #4
0
 public function testGetFields()
 {
     $request = new Request(['fields' => 'field1,field2,field3', 'sortBy' => 'id', 'sortOrder' => 'desc', 'search' => 'test', 'searchFields' => 'title', 'limit' => 10, 'page' => 3]);
     $helper = new ListRestHelper($request, $this->em);
     $this->assertEquals(['field1', 'field2', 'field3'], $helper->getFields());
     $this->assertEquals('id', $helper->getSortColumn());
     $this->assertEquals('desc', $helper->getSortOrder());
     $this->assertEquals('test', $helper->getSearchPattern());
     $this->assertEquals(['title'], $helper->getSearchFields());
     $this->assertEquals(10, $helper->getLimit());
     $this->assertEquals(20, $helper->getOffset());
 }
Beispiel #5
0
 /**
  * Returns list of snippets.
  *
  * @param Request $request
  *
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function getSnippetsAction(Request $request)
 {
     $this->initEnv($request);
     $listRestHelper = new ListRestHelper($request);
     // if the type parameter is falsy, assign NULL to $type
     $type = $request->query->get('type', null) ?: null;
     $uuidsString = $request->get('ids');
     if ($uuidsString) {
         $uuids = explode(',', $uuidsString);
         $snippets = $this->snippetRepository->getSnippetsByUuids($uuids, $this->languageCode);
         $total = count($snippets);
     } else {
         $snippets = $this->snippetRepository->getSnippets($this->languageCode, $type, $listRestHelper->getOffset(), $listRestHelper->getLimit(), $listRestHelper->getSearchPattern(), $listRestHelper->getSortColumn(), $listRestHelper->getSortOrder());
         $total = $this->snippetRepository->getSnippetsAmount($this->languageCode, $type, $listRestHelper->getSearchPattern(), $listRestHelper->getSortColumn(), $listRestHelper->getSortOrder());
     }
     $data = array();
     foreach ($snippets as $snippet) {
         $data[] = $snippet->toArray();
     }
     $data = new ListRepresentation($this->decorateSnippets($data, $this->languageCode), 'snippets', 'get_snippets', $request->query->all(), $listRestHelper->getPage(), $listRestHelper->getLimit(), $total);
     return $this->viewHandler->handle(View::create($data));
 }
Beispiel #6
0
 /**
  * Returns list of snippets.
  *
  * @param Request $request
  *
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function cgetAction(Request $request)
 {
     $locale = $this->getLocale($request);
     // if the type parameter is falsy, assign NULL to $type
     $type = $request->query->get('type', null) ?: null;
     $uuidsString = $request->get('ids');
     if ($uuidsString) {
         $uuids = explode(',', $uuidsString);
         $snippets = $this->snippetRepository->getSnippetsByUuids($uuids, $locale);
         $total = count($snippets);
     } else {
         $snippets = $this->snippetRepository->getSnippets($locale, $type, $this->listRestHelper->getOffset(), $this->listRestHelper->getLimit(), $this->listRestHelper->getSearchPattern(), $this->listRestHelper->getSortColumn(), $this->listRestHelper->getSortOrder());
         $total = $this->snippetRepository->getSnippetsAmount($locale, $type, $this->listRestHelper->getSearchPattern(), $this->listRestHelper->getSortColumn(), $this->listRestHelper->getSortOrder());
     }
     $data = new ListRepresentation($snippets, 'snippets', 'get_snippets', $request->query->all(), $this->listRestHelper->getPage(), $this->listRestHelper->getLimit(), $total);
     return $this->viewHandler->handle(View::create($data));
 }