pager = $this->getVar('pager'); if($this->pager->haveToPaginate()) { $this->actualUrl = $request->getPathInfoPrefix().$request->getPathInfo().'?'.$this->getActualQueryStringWithPage($this->pager->getPage()); $this->firstUrl = str_ireplace('page='.$this->pager->getPage(), 'page='.$this->pager->getFirstPage(), $this->actualUrl); $this->lastUrl = str_ireplace('page='.$this->pager->getPage(), 'page='.$this->pager->getLastPage(), $this->actualUrl); $this->nextUrl = str_ireplace('page='.$this->pager->getPage(), 'page='.$this->pager->getNextPage(), $this->actualUrl); $this->previousUrl = str_ireplace('page='.$this->pager->getPage(), 'page='.$this->pager->getPreviousPage(), $this->actualUrl); } } protected function getActualQueryStringWithPage($actual_page) { $info = $this->getRequest()->getPathInfoArray(); $query_string = empty($info['QUERY_STRING']) ? '' : $info['QUERY_STRING']; if(strpos($query_string, 'page=') === false) { if(strlen($query_string) > 0) { $query_string .= '&'; } $query_string .= 'page=1'; } if($page = $this->getRequest()->getParameter('page', false)) { $query_string = str_ireplace('page='.$actual_page, 'page='.$page, $query_string); } return $query_string; } public function executePagesizeSwitcher(sfWebRequest $request) { $this->nbResults = $this->getVar('nbResults'); $this->pagesizeList = array(10, 20, 40, 80); $this->actualUrl = $request->getPathInfoPrefix().$request->getPathInfo().'?'.$this->getActualQueryStringWithPagesize(); $this->actualPagesize = $request->getParameter('pagesize', sfConfig::get('app_default_pagesize')); } protected function getActualQueryStringWithPagesize() { $info = $this->getRequest()->getPathInfoArray(); $query_string = empty($info['QUERY_STRING']) ? '' : $info['QUERY_STRING']; if(strpos($query_string, 'pagesize=') === false) { if(strlen($query_string) > 0) { $query_string .= '&'; } $query_string .='pagesize='.sfConfig::get('app_default_pagesize'); } if($pagesize = $this->getRequest()->getParameter('pagesize', false)) { $query_string = str_ireplace('pagesize='.sfConfig::get('app_default_pagesize'), 'pagesize='.$pagesize, $query_string); } return $query_string; } }