Пример #1
0
 /**
  * @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());
 }
Пример #3
0
 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;
 }
Пример #4
0
 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;
 }