/**
  * TODO optimize that one !
  * @param Berthe_AbstractVO $vo
  * @param Fetcher $paginator
  * @param int $nbBefore
  * @param int $nbAfter
  * @param bool $loop
  * @return array array[voBefore[], voAfter[]]  BEFORE / AFTER
  */
 public function getNextAndPreviousByPaginator(Berthe_AbstractVO $vo, Fetcher $paginator, $nbBefore = 1, $nbAfter = 1, $loop = false)
 {
     $page = $paginator->getPage();
     $nbByPage = $paginator->getNbByPage();
     $paginator->setPage(-1);
     $paginator->setNbByPage(-1);
     $ids = $this->_reader->selectByPaginator($paginator);
     $paginator->setPage($page);
     $paginator->setNbByPage($nbByPage);
     $_keys = array_keys($ids, $vo->id);
     $position = reset($_keys);
     $beforeIds = $this->_fetchPrevious($position, $ids, $nbBefore, $loop);
     $afterIds = $this->_fetchNext($position, $ids, $nbAfter, $loop);
     return $this->_fetchNextAndPrevious($beforeIds, $afterIds);
 }
Beispiel #2
0
 /**
  * @param array $ids
  * @return array id=>object
  */
 protected function _load(array $ids = array())
 {
     return $this->_reader->selectByIds($ids);
 }