You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
2.6 KiB
131 lines
2.6 KiB
<?php |
|
/** |
|
* Typecho Blog Platform |
|
* |
|
* @copyright Copyright (c) 2008 Typecho team (http://www.typecho.org) |
|
* @license GNU General Public License 2.0 |
|
* @version $Id$ |
|
*/ |
|
|
|
/** |
|
* 内容分页抽象类 |
|
* |
|
* @package Widget |
|
*/ |
|
abstract class Typecho_Widget_Helper_PageNavigator |
|
{ |
|
/** |
|
* 记录总数 |
|
* |
|
* @access protected |
|
* @var integer |
|
*/ |
|
protected $_total; |
|
|
|
/** |
|
* 页面总数 |
|
* |
|
* @access protected |
|
* @var integer |
|
*/ |
|
protected $_totalPage; |
|
|
|
/** |
|
* 当前页面 |
|
* |
|
* @access protected |
|
* @var integer |
|
*/ |
|
protected $_currentPage; |
|
|
|
/** |
|
* 每页内容数 |
|
* |
|
* @access protected |
|
* @var integer |
|
*/ |
|
protected $_pageSize; |
|
|
|
/** |
|
* 页面链接模板 |
|
* |
|
* @access protected |
|
* @var string |
|
*/ |
|
protected $_pageTemplate; |
|
|
|
/** |
|
* 链接锚点 |
|
* |
|
* @access protected |
|
* @var string |
|
*/ |
|
protected $_anchor; |
|
|
|
/** |
|
* 页面占位符 |
|
* |
|
* @access protected |
|
* @var mixed |
|
*/ |
|
protected $_pageHolder = array('{page}', '%7Bpage%7D'); |
|
|
|
/** |
|
* 构造函数,初始化页面基本信息 |
|
* |
|
* @access public |
|
* @param integer $total 记录总数 |
|
* @param integer $page 当前页面 |
|
* @param integer $pageSize 每页记录数 |
|
* @param string $pageTemplate 页面链接模板 |
|
* @return void |
|
*/ |
|
public function __construct($total, $currentPage, $pageSize, $pageTemplate) |
|
{ |
|
$this->_total = $total; |
|
$this->_totalPage = ceil($total / $pageSize); |
|
$this->_currentPage = $currentPage; |
|
$this->_pageSize = $pageSize; |
|
$this->_pageTemplate = $pageTemplate; |
|
|
|
if (($currentPage > $this->_totalPage || $currentPage < 1) && $total > 0) { |
|
throw new Typecho_Widget_Exception('Page Not Exists', 404); |
|
} |
|
} |
|
|
|
/** |
|
* 设置页面占位符 |
|
* |
|
* @access protected |
|
* @param string $holder 页面占位符 |
|
* @return void |
|
*/ |
|
public function setPageHolder($holder) |
|
{ |
|
$this->_pageHolder = array('{' . $holder . '}', |
|
str_replace(array('{', '}'), array('%7B', '%7D'), $holder)); |
|
} |
|
|
|
/** |
|
* 设置锚点 |
|
* |
|
* @access public |
|
* @param string $anchor 锚点 |
|
* @return void |
|
*/ |
|
public function setAnchor($anchor) |
|
{ |
|
$this->_anchor = '#' . $anchor; |
|
} |
|
|
|
/** |
|
* 输出方法 |
|
* |
|
* @access public |
|
* @return void |
|
*/ |
|
public function render() |
|
{ |
|
throw new Typecho_Widget_Exception(get_class($this) . ':' . __METHOD__, 500); |
|
} |
|
}
|
|
|