Source for file Sliding.php
Documentation is available at Sliding.php
// +----------------------------------------------------------------------+
// | PEAR :: Pager_Sliding |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2003 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.0 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | http://www.php.net/license/2_02.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Author: Lorenzo Alberton <l.alberton at quipo.it> |
// +----------------------------------------------------------------------+
// $Id: Sliding.php,v 1.5 2004/01/16 10:29:57 quipo Exp $
require_once 'Pager/Common.php';
* Pager_Sliding - Generic data paging class ("sliding window" style)
* Usage examples can be found in the doc provided
* @author Lorenzo Alberton <l.alberton at quipo.it>
* @version $Id: Sliding.php,v 1.5 2004/01/16 10:29:57 quipo Exp $
* @param mixed $options An associative array of option names
//set default Pager_Sliding options
$this->_prevImg = '«';
$this->_nextImg = '»';
$this->_spacesBeforeSeparator = 3;
$this->_spacesAfterSeparator = 3;
$this->_curPageSpanPre = '<b><u>';
$this->_curPageSpanPost = '</u></b>';
$err = $this->_setOptions ($options);
$this->_generatePageData ();
$this->_setFirstLastText ();
if ($this->_totalPages > (2 * $this->_delta + 1 )) {
$this->links .= $this->_printFirstPage ();
$this->links .= $this->_getBackLink ();
$this->links .= $this->_getPageLinks ();
$this->links .= $this->_getNextLink ();
$this->linkTags .= $this->_getFirstLinkTag ();
$this->linkTags .= $this->_getPrevLinkTag ();
$this->linkTags .= $this->_getNextLinkTag ();
$this->linkTags .= $this->_getLastLinkTag ();
if ($this->_totalPages > (2 * $this->_delta + 1 )) {
$this->links .= $this->_printLastPage ();
// {{{ getPageIdByOffset()
* "Overload" PEAR::Pager method. VOID. Not needed here...
* @param integer $index Offset to get pageID for
// {{{ getPageRangeByPageId()
* Given a PageId, it returns the limits of the range of pages displayed.
* While getOffsetByPageId() returns the offset of the data within the
* current page, this method returns the offsets of the page numbers interval.
* E.g., if you have pageId=5 and delta=2, it will return (3, 7).
* PageID of 9 would give you (4, 8).
* If the method is called without parameter, pageID is set to currentPage#.
* @param integer PageID to get offsets for
* @return array First and last offsets
$pageid = isset ($pageid) ? (int) $pageid : $this->_currentPage;
if (!isset ($this->_pageData)) {
$this->_generatePageData ();
if (isset ($this->_pageData[$pageid]) || is_null($this->_itemData)) {
$min_surplus = ($pageid <= $this->_delta) ? ($this->_delta - $pageid + 1 ) : 0;
$max_surplus = ($pageid >= ($this->_totalPages - $this->_delta)) ?
($pageid - ($this->_totalPages - $this->_delta)) : 0;
return array ( max($pageid - $this->_delta - $max_surplus, 1 ),
min($pageid + $this->_delta + $min_surplus, $this->_totalPages));
* Returns back/next/first/last and page links,
* both as ordered and associative array.
* @param integer $pageID Optional pageID. If specified, links
* for that page are provided instead of current one.
* @return array back/pages/next/first/last/all links
$_sav = $this->_currentPage;
$this->_currentPage = $pageID;
if ($this->_totalPages > (2 * $this->_delta + 1 )) {
$this->links .= $this->_printFirstPage ();
$this->links .= $this->_getBackLink ();
$this->links .= $this->_getPageLinks ();
$this->links .= $this->_getNextLink ();
if ($this->_totalPages > (2 * $this->_delta + 1 )) {
$this->links .= $this->_printLastPage ();
$back = str_replace(' ', '', $this->_getBackLink ());
$next = str_replace(' ', '', $this->_getNextLink ());
$pages = $this->_getPageLinks ();
$first = $this->_printFirstPage ();
$last = $this->_printLastPage ();
$this->_currentPage = $_sav;
//legacy setting... the preferred way to set an option now
//is adding it to the constuctor
if ($this->_totalPages > (2 * $this->_delta + 1 )) {
if (($this->_totalPages - $this->_delta) <= $this->_currentPage) {
$_expansion_before = $this->_currentPage - ($this->_totalPages - $this->_delta);
for ($i = $this->_currentPage - $this->_delta - $_expansion_before; $_expansion_before; $_expansion_before-- , $i++ ) {
if (($i != $this->_currentPage + $this->_delta)){ // && ($i != $this->_totalPages - 1)) {
$_print_separator_flag = true;
$_print_separator_flag = false;
$this->range[$i] = false;
$links .= sprintf('<a href="%s" %s title="%s">%d</a>',
( $this->_append ? $this->_url. $i : $this->_url. sprintf($this->_fileName, $i) ),
. ($_print_separator_flag ? $this->_separator. $this->_spacesAfter : '');
for ($i = $this->_currentPage - $this->_delta; ($i <= $this->_currentPage + $this->_delta) && ($i <= $this->_totalPages); $i++ ) {
// check when to print separator
if (($i != $this->_currentPage + $this->_delta) && ($i != $this->_totalPages )) {
$_print_separator_flag = true;
$_print_separator_flag = false;
if ($i == $this->_currentPage) {
$links .= $this->_curPageSpanPre . $i . $this->_curPageSpanPost
. ($_print_separator_flag ? $this->_separator. $this->_spacesAfter : '');
$this->range[$i] = false;
$links .= sprintf('<a href="%s" %s title="%s">%d</a>',
( $this->_append ? $this->_url. $i : $this->_url. sprintf($this->_fileName, $i) ),
. ($_print_separator_flag ? $this->_separator. $this->_spacesAfter : '');
if ($this->_expanded && $_expansion_after) {
$links .= $this->_separator . $this->_spacesAfter;
for ($i = $this->_currentPage + $this->_delta +1; $_expansion_after; $_expansion_after-- , $i++ ) {
if (($_expansion_after != 1 )) {
$_print_separator_flag = true;
$_print_separator_flag = false;
$this->range[$i] = false;
$links .= sprintf('<a href="%s" %s title="%s">%d</a>',
( $this->_append ? $this->_url. $i : $this->_url. sprintf($this->_fileName, $i) ),
. ($_print_separator_flag ? $this->_separator. $this->_spacesAfter : '');
//if $this->_totalPages <= (2*Delta+1) show them all
for ($i=1; $i<= $this->_totalPages; $i++ ) {
if ($i != $this->_currentPage) {
$this->range[$i] = false;
$links .= sprintf('<a href="%s" %s title="%s">%d</a>',
( $this->_append ? $this->_url. $i : $this->_url. sprintf($this->_fileName, $i) ),
$links .= $this->_curPageSpanPre . $i . $this->_curPageSpanPost;
$links .= $this->_spacesBefore
. (($i != $this->_totalPages) ? $this->_separator. $this->_spacesAfter : '');
if ($this->_clearIfVoid) {
//If there's only one page, don't display links
if ($this->_totalPages < 2 ) $links = '';
Documentation generated on Mon, 11 Mar 2019 14:30:26 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.
|