예제 #1
0
 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);
 }
예제 #2
0
 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()');
 }