* @link http://www.pradosoft.com/ * @copyright Copyright © 2006 PradoSoft * @license http://www.pradosoft.com/license/ * @version $Id$ */ /** * ListPost class * * @author Qiang Xue * @link http://www.pradosoft.com/ * @copyright Copyright © 2006 PradoSoft * @license http://www.pradosoft.com/license/ */ class ListPost extends BlogPage { private $_posts; private $_category; public function onInit($param) { parent::onInit($param); $this->_posts=$this->DataAccess->queryPosts( $this->getPostFilter(), $this->getCategoryFilter(), 'ORDER BY a.status DESC, create_time DESC', 'LIMIT '.$this->getPageOffset().','.$this->getPageSize()); if($this->Request['cat']!==null) { $catID=TPropertyValue::ensureInteger($this->Request['cat']); $this->_category=$this->DataAccess->queryCategoryByID($catID); $this->CategoryPanel->Visible=true; } $this->Title=$this->Application->Parameters['SiteTitle']; } private function getPageOffset() { if(($offset=TPropertyValue::ensureInteger($this->Request['offset']))<=0) $offset=0; return $offset; } private function getPageSize() { if(($limit=TPropertyValue::ensureInteger($this->Request['limit']))<=0) $limit=TPropertyValue::ensureInteger($this->Application->Parameters['PostPerPage']); return $limit; } private function getTimeFilter() { if(($time=TPropertyValue::ensureInteger($this->Request['time']))>0) { $year=(integer)($time/100); $month=$time%100; $startTime=mktime(0,0,0,$month,1,$year); if(++$month>12) { $month=1; $year++; } $endTime=mktime(0,0,0,$month,1,$year); return "create_time>=$startTime AND create_time<$endTime"; } else return ''; } private function getPostFilter() { $filter='(a.status=0 OR a.status=3)'; if(($timeFilter=$this->getTimeFilter())!=='') return "$filter AND $timeFilter"; else return $filter; } private function getCategoryFilter() { if(($catID=$this->Request['cat'])!==null) { $catID=TPropertyValue::ensureInteger($catID); return "category_id=$catID"; } else return ''; } private function formUrl($newOffset) { $gets=array(); $gets['offset']=$newOffset; if($this->Request['limit']!==null) $gets['limit']=$this->Request['limit']; if($this->Request['time']!==null) $gets['time']=$this->Request['time']; if($this->Request['cat']!==null) $gets['cat']=$this->Request['cat']; return $this->Service->constructUrl('Posts.ListPost',$gets); } public function getCategory() { return $this->_category; } public function onLoad($param) { parent::onLoad($param); $this->PostList->DataSource=$this->_posts; $this->PostList->dataBind(); if($this->getPageOffset()>0) { if(($offset=$this->getPageOffset()-$this->getPageSize())<0) $offset=0; $this->PrevPage->NavigateUrl=$this->formUrl($offset); $this->PrevPage->Visible=true; } if(count($this->_posts)===$this->getPageSize()) { $this->NextPage->NavigateUrl=$this->formUrl($this->getPageOffset()+$this->getPageSize()); $this->NextPage->Visible=true; } } public function deleteButtonClicked($sender,$param) { if($this->User->IsAdmin) { $this->DataAccess->deleteCategory($this->Category->ID); $this->gotoDefaultPage(); } } } ?>