public final function executeWithPager(AphrontIDPagerView $pager) { $this->setLimit($pager->getPageSize() + 1); if ($pager->getAfterID()) { $this->setAfterID($pager->getAfterID()); } else { if ($pager->getBeforeID()) { $this->setBeforeID($pager->getBeforeID()); } } $results = $this->execute(); $sliced_results = $pager->sliceResults($results); if ($this->beforeID || count($results) > $pager->getPageSize()) { $pager->setNextPageID($this->getPagingValue(last($sliced_results))); } if ($this->afterID || $this->beforeID && count($results) > $pager->getPageSize()) { $pager->setPrevPageID($this->getPagingValue(head($sliced_results))); } return $sliced_results; }