/** * @return EntryView[] */ private function prepareEntries(int $page, Paginator $posts) : array { return array_map(function ($post) { $post['uriHelper'] = $this->uriHelper; return new EntryView($post); }, iterator_to_array($posts->getItemsByPage($page))); }
public function testExpectedBehaviour() { $form = $this->api->forms()->pagination->ref($this->api->master())->orderings('[my.pager-test-doc.priority]'); $adapter = new SearchFormAdapter($form); $pager = new Paginator($adapter); $pager->setCurrentPageNumber(1); $pager->setItemCountPerPage(4); $items = $pager->getItemsByPage(1); $this->assertCount(4, $items); $this->assertContainsOnlyInstancesOf('Prismic\\Document', $items); $this->assertEquals(10, $items[0]->get('pager-test-doc.priority')->asText()); $this->assertEquals(20, $items[1]->get('pager-test-doc.priority')->asText()); $this->assertEquals(30, $items[2]->get('pager-test-doc.priority')->asText()); $this->assertEquals(40, $items[3]->get('pager-test-doc.priority')->asText()); $items = $pager->getItemsByPage(2); $this->assertCount(2, $items); $this->assertContainsOnlyInstancesOf('Prismic\\Document', $items); $this->assertEquals(50, $items[0]->get('pager-test-doc.priority')->asText()); $this->assertEquals(60, $items[1]->get('pager-test-doc.priority')->asText()); }
public function getItemsByPage($pageNumber) { $items = parent::getItemsByPage($pageNumber); foreach ($items as $key => $item) { $entity = new $this->entity(); $entity->exchangeArray($item); // TODO: Implement Hydrator //$this->hydrator->hydrate($item, $this->entity); $items[$key] = $entity; } return $items; }
public function testCacheDoesNotDisturbResultsWhenChangingParam() { $this->paginator->setCurrentPageNumber(1)->getCurrentItems(); $pageItems = $this->paginator->setItemCountPerPage(5)->getCurrentItems(); $expected = new \ArrayIterator(range(1, 5)); $this->assertEquals($expected, $pageItems); $pageItems = $this->paginator->getItemsByPage(2); $expected = new \ArrayIterator(range(6, 10)); $this->assertEquals($expected, $pageItems); // change the inside Paginator scale $pageItems = $this->paginator->setItemCountPerPage(8)->setCurrentPageNumber(3)->getCurrentItems(); $pageItems = $this->paginator->getPageItemCache(); $expected = new \ArrayIterator(range(17, 24)); $this->assertEquals($expected, $pageItems[3]); // get back to already cached data $this->paginator->setItemCountPerPage(5); $pageItems = $this->paginator->getPageItemCache(); $expected = array(1 => new \ArrayIterator(range(1, 5)), 2 => new \ArrayIterator(range(6, 10))); $this->assertEquals($expected[1], $pageItems[1]); $this->assertEquals($expected[2], $pageItems[2]); }
/** * * {@inheritdoc} * * @see \ImmutableStateStatusTracker\StorageAdapterInterface::fetchAllJobs() */ public function fetchAllJobs($pageNum = 1) { /** * * @var QueryBuilder $qb */ $qb = $this->_em->createQueryBuilder(); $query = $qb->select('dj')->from('\\ImmutableStateStatusTracker\\StorageAdapter\\Doctrine\\Job', 'dj'); // $qb->setHydrationMode('\Doctrine\ORM\Query::HYDRATE_ARRAY'); $adapter = new DoctrineAdapter(new ORMPaginator($query)); $paginator = new Paginator($adapter); $paginator->setItemCountPerPage(50); $callBackAdapter = new Callback(function ($offset, $itemCountPerPage) use($paginator) { $arrOut = array(); foreach ($paginator->getItemsByPage($offset) as $obj) { $arrOut[] = new Job($obj->getJobId(), $obj->getComponents(), $obj->getCreatedAt()); } return $arrOut; }, function () use($paginator) { return $paginator->getTotalItemCount(); }); $jobPaginator = new Paginator($callBackAdapter); $jobPaginator->setItemCountPerPage(50); return $jobPaginator; }