public function getList(Criteria $criteria = null, array $params = array()) { $page = array_key_exists('page', $params) ? (int) $params['page'] : 1; $itemsPerPage = array_key_exists('itemsPerPage', $params) ? (int) $params['itemsPerPage'] : $this->itemsPerPage; $pageInput = new PageInput($page, $itemsPerPage); $pageRange = new PageRange($pageInput); $sorting = array_key_exists('sorting', $params) ? $params['sorting'] : 'created'; $descending = array_key_exists('descending', $params) ? (bool) $params['descending'] : true; $criteria = $criteria ? $criteria : new Criteria(); $mode = $criteria->getMode() ? $criteria->getMode() : $this->mode; // criteria $criteria->setMode($mode); // get all scribbles $allScribbles = $this->getDirectory()->load()->getScribbles(); // set sorting if ($sorting == 'created') { $allScribbles->sortByCreationDate($descending); } else { if ($sorting == 'modified') { $allScribbles->sortByModificationDate($descending); } else { if ($sorting == 'slug') { $allScribbles->sortBySlug($descending); } } } // filter and paginate $filter = new Filter(); $scribbles = $filter->apply($allScribbles, $criteria)->getScribbles(); $paginator = new Paginator($pageRange->setTotalItems($scribbles->count())); $scribbles = new ScribbleCollection($scribbles->slice($pageRange->getOffset(), $pageRange->getNumItems())); return new ScribbleListBag($scribbles, $filter, $criteria, $paginator); }
public function testSecondPge() { $currentPage = 2; $numItemsPerPage = 10; $currentPageInput = new PageInput($currentPage, $numItemsPerPage); $pageRange = new PageRange($currentPageInput); $this->assertSame(10, $pageRange->getNumItems(), 'getNumItems()'); $this->assertSame(10, $pageRange->getOffset(), 'getOffset()'); $this->assertSame(19, $pageRange->getLast(), 'getLast()'); }