Example #1
0
 protected function getPagination()
 {
     $filter = new RokGallery_Site_DetailFilter($this->gallery_id, $this->order_by, $this->order_direction);
     $query = $filter->getQuery();
     $current_pager = new Doctrine_Pager($query, $this->current_page, $this->items_per_page);
     $current_page_ids = $current_pager->execute(array(), Doctrine_Core::HYDRATE_SCALAR);
     $current_index = 0;
     foreach ($current_page_ids as $index => $id_holder) {
         if ($this->id == $id_holder['s_id']) {
             $current_index = $index;
             break;
         }
     }
     if ($current_pager->getFirstIndice() + $current_index > $current_pager->getFirstIndice()) {
         $this->prev_page = $this->current_page;
         $this->prev_id = $current_page_ids[$current_index - 1]['s_id'];
     }
     if ($current_pager->getFirstIndice() + $current_index < $current_pager->getLastIndice()) {
         $this->next_page = $this->current_page;
         $this->next_id = $current_page_ids[$current_index + 1]['s_id'];
     }
     if ($current_pager->getFirstIndice() + $current_index == $current_pager->getFirstIndice()) {
         $this->prev_page = $current_pager->getPreviousPage();
         if ($current_pager->getFirstPage() != $this->current_page) {
             $prev_pager = new Doctrine_Pager($query, $this->current_page - 1, $this->items_per_page);
             $prev_page_ids = $prev_pager->execute(array(), Doctrine_Core::HYDRATE_SCALAR);
             $this->prev_id = $prev_page_ids[count($prev_page_ids) - 1]['s_id'];
         }
     }
     if ($current_pager->getFirstIndice() + $current_index == $current_pager->getLastIndice()) {
         $this->next_page = $current_pager->getNextPage();
         if ($current_pager->getLastPage() != $this->current_page) {
             $next_pager = new Doctrine_Pager($query, $this->current_page + 1, $this->items_per_page);
             $next_page_ids = $next_pager->execute(array(), Doctrine_Core::HYDRATE_SCALAR);
             $this->next_id = $next_page_ids[0]['s_id'];
         }
     }
 }