📄 common.php
字号:
<?php/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: *//** * Contains the Pager_Common class * * PHP versions 4 and 5 * * LICENSE: Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE FREEBSD PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @category HTML * @package Pager * @author Lorenzo Alberton <l dot alberton at quipo dot it> * @author Richard Heyes <richard@phpguru.org> * @copyright 2003-2005 Lorenzo Alberton, Richard Heyes * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause) * @version CVS: $Id: Common.php,v 1.40 2005/09/27 07:49:14 quipo Exp $ * @link http://pear.php.net/package/Pager *//** * Two constants used to guess the path- and file-name of the page * when the user doesn't set any other value */if (substr($_SERVER['PHP_SELF'], -1) == '/') { define('CURRENT_FILENAME', ''); define('CURRENT_PATHNAME', str_replace('\\', '/', $_SERVER['PHP_SELF']));} else { define('CURRENT_FILENAME', preg_replace('/(.*)\?.*/', '\\1', basename($_SERVER['PHP_SELF']))); define('CURRENT_PATHNAME', str_replace('\\', '/', dirname($_SERVER['PHP_SELF'])));}/** * Error codes */define('PAGER_OK', 0);define('ERROR_PAGER', -1);define('ERROR_PAGER_INVALID', -2);define('ERROR_PAGER_INVALID_PLACEHOLDER', -3);define('ERROR_PAGER_INVALID_USAGE', -4);define('ERROR_PAGER_NOT_IMPLEMENTED', -5);/** * Pager_Common - Common base class for [Sliding|Jumping] Window Pager * Extend this class to write a custom paging class * * @category HTML * @package Pager * @author Lorenzo Alberton <l dot alberton at quipo dot it> * @author Richard Heyes <richard@phpguru.org> * @copyright 2003-2005 Lorenzo Alberton, Richard Heyes * @license http://www.php.net/license/3_0.txt PHP License 3.0 * @link http://pear.php.net/package/Pager */class Pager_Common{ // {{{ class vars /** * @var integer number of items * @access private */ var $_totalItems; /** * @var integer number of items per page * @access private */ var $_perPage = 10; /** * @var integer number of page links for each window * @access private */ var $_delta = 10; /** * @var integer current page number * @access private */ var $_currentPage = 1; /** * @var integer total pages number * @access private */ var $_totalPages = 1; /** * @var string CSS class for links * @access private */ var $_linkClass = ''; /** * @var string wrapper for CSS class name * @access private */ var $_classString = ''; /** * @var string path name * @access private */ var $_path = CURRENT_PATHNAME; /** * @var string file name * @access private */ var $_fileName = CURRENT_FILENAME; /** * @var boolean you have to use FALSE with mod_rewrite * @access private */ var $_append = true; /** * @var string specifies which HTTP method to use * @access private */ var $_httpMethod = 'GET'; /** * @var boolean whether or not to import submitted data * @access private */ var $_importQuery = true; /** * @var string name of the querystring var for pageID * @access private */ var $_urlVar = 'pageID'; /** * @var array data to pass through the link * @access private */ var $_linkData = array(); /** * @var array additional URL vars * @access private */ var $_extraVars = array(); /** * @var array URL vars to ignore * @access private */ var $_excludeVars = array(); /** * @var boolean TRUE => expanded mode (for Pager_Sliding) * @access private */ var $_expanded = true; /** * @var string alt text for "first page" (use "%d" placeholder for page number) * @access private */ var $_altFirst = 'first page'; /** * @var string alt text for "previous page" * @access private */ var $_altPrev = 'previous page'; /** * @var string alt text for "next page" * @access private */ var $_altNext = 'next page'; /** * @var string alt text for "last page" (use "%d" placeholder for page number) * @access private */ var $_altLast = 'last page'; /** * @var string alt text for "page" * @access private */ var $_altPage = 'page'; /** * @var string image/text to use as "prev" link * @access private */ var $_prevImg = '<< Back'; /** * @var string image/text to use as "next" link * @access private */ var $_nextImg = 'Next >>'; /** * @var string link separator * @access private */ var $_separator = ''; /** * @var integer number of spaces before separator * @access private */ var $_spacesBeforeSeparator = 0; /** * @var integer number of spaces after separator * @access private */ var $_spacesAfterSeparator = 1; /** * @var string CSS class name for current page link * @access private */ var $_curPageLinkClassName = ''; /** * @var string Text before current page link * @access private */ var $_curPageSpanPre = ''; /** * @var string Text after current page link * @access private */ var $_curPageSpanPost = ''; /** * @var string Text before first page link * @access private */ var $_firstPagePre = '['; /** * @var string Text to be used for first page link * @access private */ var $_firstPageText = ''; /** * @var string Text after first page link * @access private */ var $_firstPagePost = ']'; /** * @var string Text before last page link * @access private */ var $_lastPagePre = '['; /** * @var string Text to be used for last page link * @access private */ var $_lastPageText = ''; /** * @var string Text after last page link * @access private */ var $_lastPagePost = ']'; /** * @var string Will contain the HTML code for the spaces * @access private */ var $_spacesBefore = ''; /** * @var string Will contain the HTML code for the spaces * @access private */ var $_spacesAfter = ''; /** * @var string $_firstLinkTitle * @access private */ var $_firstLinkTitle = 'first page'; /** * @var string $_nextLinkTitle * @access private */ var $_nextLinkTitle = 'next page'; /** * @var string $_prevLinkTitle * @access private */ var $_prevLinkTitle = 'previous page'; /** * @var string $_lastLinkTitle * @access private */ var $_lastLinkTitle = 'last page'; /** * @var string Text to be used for the 'show all' option in the select box * @access private */ var $_showAllText = ''; /** * @var array data to be paged * @access private */ var $_itemData = null; /** * @var boolean If TRUE and there's only one page, links aren't shown * @access private */ var $_clearIfVoid = true; /** * @var boolean Use session for storing the number of items per page * @access private */ var $_useSessions = false; /** * @var boolean Close the session when finished reading/writing data * @access private */ var $_closeSession = false; /** * @var string name of the session var for number of items per page * @access private */ var $_sessionVar = 'setPerPage'; /** * Pear error mode (when raiseError is called) * (see PEAR doc) * * @var int $_pearErrorMode * @access private */ var $_pearErrorMode = null; // }}} // {{{ public vars /** * @var string Complete set of links * @access public */ var $links = ''; /** * @var string Complete set of link tags * @access public */ var $linkTags = ''; /** * @var array Array with a key => value pair representing * page# => bool value (true if key==currentPageNumber). * can be used for extreme customization. * @access public */ var $range = array(); // }}} // {{{ getPageData() /** * Returns an array of current pages data * * @param $pageID Desired page ID (optional) * @return array Page data * @access public */ function getPageData($pageID = null) { $pageID = empty($pageID) ? $this->_currentPage : $pageID; if (!isset($this->_pageData)) { $this->_generatePageData(); } if (!empty($this->_pageData[$pageID])) { return $this->_pageData[$pageID]; } return false; } // }}} // {{{ getPageIdByOffset() /** * Returns pageID for given offset * * @param $index Offset to get pageID for * @return int PageID for given offset */ function getPageIdByOffset($index) { $msg = '<b>PEAR::Pager Error:</b>' .' function "getPageIdByOffset()" not implemented.'; return $this->raiseError($msg, ERROR_PAGER_NOT_IMPLEMENTED); } // }}} // {{{ getOffsetByPageId() /** * Returns offsets for given pageID. Eg, if you * pass it pageID one and your perPage limit is 10 * it will return (1, 10). PageID of 2 would * give you (11, 20). * * @param integer PageID to get offsets for * @return array First and last offsets * @access public */ function getOffsetByPageId($pageid = null) { $pageid = isset($pageid) ? $pageid : $this->_currentPage; if (!isset($this->_pageData)) { $this->_generatePageData(); } if (isset($this->_pageData[$pageid]) || is_null($this->_itemData)) { return array( max(($this->_perPage * ($pageid - 1)) + 1, 1), min($this->_totalItems, $this->_perPage * $pageid) ); } else { return array(0, 0); } } // }}} // {{{ getPageRangeByPageId() /** * @param integer PageID to get offsets for * @return array First and last offsets
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -