First commit
This commit is contained in:
commit
c6e2478c40
13918 changed files with 2303184 additions and 0 deletions
1702
sites/all/modules/civicrm/packages/Pager/Common.php
Normal file
1702
sites/all/modules/civicrm/packages/Pager/Common.php
Normal file
File diff suppressed because it is too large
Load diff
283
sites/all/modules/civicrm/packages/Pager/HtmlWidgets.php
Normal file
283
sites/all/modules/civicrm/packages/Pager/HtmlWidgets.php
Normal file
|
@ -0,0 +1,283 @@
|
|||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Contains the Pager_HtmlWidgets 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.alberton@quipo.it>
|
||||
* @copyright 2003-2007 Lorenzo Alberton
|
||||
* @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
|
||||
* @version CVS: $Id: HtmlWidgets.php,v 1.7 2009/03/13 16:51:37 quipo Exp $
|
||||
* @link http://pear.php.net/package/Pager
|
||||
*/
|
||||
|
||||
/**
|
||||
* Pager_HtmlWidgets
|
||||
*
|
||||
* @category HTML
|
||||
* @package Pager
|
||||
* @author Lorenzo Alberton <l.alberton@quipo.it>
|
||||
* @copyright 2003-2007 Lorenzo Alberton
|
||||
* @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
|
||||
* @link http://pear.php.net/package/Pager
|
||||
*/
|
||||
class Pager_HtmlWidgets
|
||||
{
|
||||
var $pager = null;
|
||||
|
||||
// {{{ constructor
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param object &$pager Pager instance
|
||||
*/
|
||||
function __construct(&$pager)
|
||||
{
|
||||
$this->pager =& $pager;
|
||||
}
|
||||
|
||||
// }}}
|
||||
// {{{ getPerPageSelectBox()
|
||||
|
||||
/**
|
||||
* Returns a string with a XHTML SELECT menu,
|
||||
* useful for letting the user choose how many items per page should be
|
||||
* displayed. If parameter useSessions is TRUE, this value is stored in
|
||||
* a session var. The string isn't echoed right now so you can use it
|
||||
* with template engines.
|
||||
*
|
||||
* @param integer $start starting value for the select menu
|
||||
* @param integer $end ending value for the select menu
|
||||
* @param integer $step step between values in the select menu
|
||||
* @param boolean $showAllData If true, perPage is set equal to totalItems.
|
||||
* @param array $extraParams (or string $optionText for BC reasons)
|
||||
* - 'optionText': text to show in each option.
|
||||
* Use '%d' where you want to see the number of pages selected.
|
||||
* - 'attributes': (html attributes) Tag attributes or
|
||||
* HTML attributes (id="foo" pairs), will be inserted in the
|
||||
* <select> tag
|
||||
* - 'checkMaxLimit': if true, Pager checks if $end is bigger
|
||||
* than $totalItems, and doesn't show the extra select options
|
||||
* - 'autoSubmit': if TRUE, add some js code
|
||||
* to submit the form on the onChange event
|
||||
*
|
||||
* @return string xhtml select box
|
||||
* @access public
|
||||
*/
|
||||
function getPerPageSelectBox($start=5, $end=30, $step=5, $showAllData=false, $extraParams=array())
|
||||
{
|
||||
// FIXME: needs POST support
|
||||
$optionText = '%d';
|
||||
$attributes = '';
|
||||
$checkMaxLimit = false;
|
||||
if (is_string($extraParams)) {
|
||||
//old behavior, BC maintained
|
||||
$optionText = $extraParams;
|
||||
} else {
|
||||
if (array_key_exists('optionText', $extraParams)) {
|
||||
$optionText = $extraParams['optionText'];
|
||||
}
|
||||
if (array_key_exists('attributes', $extraParams)) {
|
||||
$attributes = $extraParams['attributes'];
|
||||
}
|
||||
if (array_key_exists('checkMaxLimit', $extraParams)) {
|
||||
$checkMaxLimit = $extraParams['checkMaxLimit'];
|
||||
}
|
||||
}
|
||||
|
||||
if (!strstr($optionText, '%d')) {
|
||||
return $this->pager->raiseError(
|
||||
$this->pager->errorMessage(ERROR_PAGER_INVALID_PLACEHOLDER),
|
||||
ERROR_PAGER_INVALID_PLACEHOLDER
|
||||
);
|
||||
}
|
||||
$start = (int)$start;
|
||||
$end = (int)$end;
|
||||
$step = (int)$step;
|
||||
if (!empty($_SESSION[$this->pager->_sessionVar])) {
|
||||
$selected = (int)$_SESSION[$this->pager->_sessionVar];
|
||||
} else {
|
||||
$selected = $this->pager->_perPage;
|
||||
}
|
||||
|
||||
if ($checkMaxLimit && $this->pager->_totalItems >= 0 && $this->pager->_totalItems < $end) {
|
||||
$end = $this->pager->_totalItems;
|
||||
}
|
||||
|
||||
$tmp = '<select name="'.$this->pager->_sessionVar.'"';
|
||||
if (!empty($attributes)) {
|
||||
$tmp .= ' '.$attributes;
|
||||
}
|
||||
if (!empty($extraParams['autoSubmit'])) {
|
||||
if ('GET' == $this->pager->_httpMethod) {
|
||||
$selector = '\' + '.'this.options[this.selectedIndex].value + \'';
|
||||
if ($this->pager->_append) {
|
||||
$tmpLinkData = $this->pager->_linkData;
|
||||
if (isset($tmpLinkData[$this->pager->_urlVar])) {
|
||||
$tmpLinkData[$this->pager->_urlVar] = $this->pager->getCurrentPageID();
|
||||
}
|
||||
$tmpLinkData[$this->pager->_sessionVar] = '1';
|
||||
$href = '?' . $this->pager->_http_build_query_wrapper($tmpLinkData);
|
||||
$href = htmlentities($this->pager->_url, ENT_COMPAT, 'UTF-8'). preg_replace(
|
||||
'/(&|&|\?)('.$this->pager->_sessionVar.'=)(\d+)/',
|
||||
'\\1\\2'.$selector,
|
||||
htmlentities($href, ENT_COMPAT, 'UTF-8')
|
||||
);
|
||||
} else {
|
||||
$href = htmlentities($this->pager->_url . str_replace('%d', $selector, $this->pager->_fileName), ENT_COMPAT, 'UTF-8');
|
||||
}
|
||||
$tmp .= ' onchange="document.location.href=\''
|
||||
. $href .'\''
|
||||
. '"';
|
||||
} elseif ($this->pager->_httpMethod == 'POST') {
|
||||
$tmp .= " onchange='"
|
||||
. $this->pager->_generateFormOnClick($this->pager->_url, $this->pager->_linkData)
|
||||
. "'";
|
||||
$tmp = preg_replace(
|
||||
'/(input\.name = \"'.$this->pager->_sessionVar.'\"; input\.value =) \"(\d+)\";/',
|
||||
'\\1 this.options[this.selectedIndex].value;',
|
||||
$tmp
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$tmp .= '>';
|
||||
$last = $start;
|
||||
for ($i=$start; $i<=$end; $i+=$step) {
|
||||
$last = $i;
|
||||
$tmp .= '<option value="'.$i.'"';
|
||||
if ($i == $selected) {
|
||||
$tmp .= ' selected="selected"';
|
||||
}
|
||||
$tmp .= '>'.sprintf($optionText, $i).'</option>';
|
||||
}
|
||||
if ($showAllData && $last != $this->pager->_totalItems) {
|
||||
$tmp .= '<option value="'.$this->pager->_totalItems.'"';
|
||||
if ($this->pager->_totalItems == $selected) {
|
||||
$tmp .= ' selected="selected"';
|
||||
}
|
||||
$tmp .= '>';
|
||||
if (empty($this->pager->_showAllText)) {
|
||||
$tmp .= str_replace('%d', $this->pager->_totalItems, $optionText);
|
||||
} else {
|
||||
$tmp .= $this->pager->_showAllText;
|
||||
}
|
||||
$tmp .= '</option>';
|
||||
}
|
||||
if (substr($tmp, -9, 9) !== '</option>') {
|
||||
//empty select
|
||||
$tmp .= '<option />';
|
||||
}
|
||||
$tmp .= '</select>';
|
||||
return $tmp;
|
||||
}
|
||||
|
||||
// }}}
|
||||
// {{{ getPageSelectBox()
|
||||
|
||||
/**
|
||||
* Returns a string with a XHTML SELECT menu with the page numbers,
|
||||
* useful as an alternative to the links
|
||||
*
|
||||
* @param array $params - 'optionText': text to show in each option.
|
||||
* Use '%d' where you want to see the number
|
||||
* of pages selected.
|
||||
* - 'autoSubmit': if TRUE, add some js code
|
||||
* to submit the form on the onChange event
|
||||
* @param string $extraAttributes (html attributes) Tag attributes or
|
||||
* HTML attributes (id="foo" pairs), will be
|
||||
* inserted in the <select> tag
|
||||
*
|
||||
* @return string xhtml select box
|
||||
* @access public
|
||||
*/
|
||||
function getPageSelectBox($params = array(), $extraAttributes = '')
|
||||
{
|
||||
$optionText = '%d';
|
||||
if (array_key_exists('optionText', $params)) {
|
||||
$optionText = $params['optionText'];
|
||||
}
|
||||
|
||||
if (!strstr($optionText, '%d')) {
|
||||
return $this->pager->raiseError(
|
||||
$this->pager->errorMessage(ERROR_PAGER_INVALID_PLACEHOLDER),
|
||||
ERROR_PAGER_INVALID_PLACEHOLDER
|
||||
);
|
||||
}
|
||||
|
||||
$tmp = '<select name="'.$this->pager->_urlVar.'"';
|
||||
if (!empty($extraAttributes)) {
|
||||
$tmp .= ' '.$extraAttributes;
|
||||
}
|
||||
if (!empty($params['autoSubmit'])) {
|
||||
if ($this->pager->_httpMethod == 'GET') {
|
||||
$selector = '\' + '.'this.options[this.selectedIndex].value + \'';
|
||||
if ($this->pager->_append) {
|
||||
$href = '?' . $this->pager->_http_build_query_wrapper($this->pager->_linkData);
|
||||
$href = htmlentities($this->pager->_url, ENT_COMPAT, 'UTF-8'). preg_replace(
|
||||
'/(&|&|\?)('.$this->pager->_urlVar.'=)(\d+)/',
|
||||
'\\1\\2'.$selector,
|
||||
htmlentities($href, ENT_COMPAT, 'UTF-8')
|
||||
);
|
||||
} else {
|
||||
$href = htmlentities($this->pager->_url . str_replace('%d', $selector, $this->pager->_fileName), ENT_COMPAT, 'UTF-8');
|
||||
}
|
||||
$tmp .= ' onchange="document.location.href=\''
|
||||
. $href .'\''
|
||||
. '"';
|
||||
} elseif ($this->pager->_httpMethod == 'POST') {
|
||||
$tmp .= " onchange='"
|
||||
. $this->pager->_generateFormOnClick($this->pager->_url, $this->pager->_linkData)
|
||||
. "'";
|
||||
$tmp = preg_replace(
|
||||
'/(input\.name = \"'.$this->pager->_urlVar.'\"; input\.value =) \"(\d+)\";/',
|
||||
'\\1 this.options[this.selectedIndex].value;',
|
||||
$tmp
|
||||
);
|
||||
}
|
||||
}
|
||||
$tmp .= '>';
|
||||
$start = 1;
|
||||
$end = $this->pager->numPages();
|
||||
$selected = $this->pager->getCurrentPageID();
|
||||
for ($i=$start; $i<=$end; $i++) {
|
||||
$tmp .= '<option value="'.$i.'"';
|
||||
if ($i == $selected) {
|
||||
$tmp .= ' selected="selected"';
|
||||
}
|
||||
$tmp .= '>'.sprintf($optionText, $i).'</option>';
|
||||
}
|
||||
$tmp .= '</select>';
|
||||
return $tmp;
|
||||
}
|
||||
|
||||
// }}}
|
||||
}
|
||||
?>
|
260
sites/all/modules/civicrm/packages/Pager/Jumping.php
Normal file
260
sites/all/modules/civicrm/packages/Pager/Jumping.php
Normal file
|
@ -0,0 +1,260 @@
|
|||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Contains the Pager_Jumping 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.alberton@quipo.it>
|
||||
* @author Richard Heyes <richard@phpguru.org>
|
||||
* @copyright 2003-2008 Lorenzo Alberton, Richard Heyes
|
||||
* @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
|
||||
* @version CVS: $Id: Jumping.php,v 1.20 2008/03/05 13:57:45 quipo Exp $
|
||||
* @link http://pear.php.net/package/Pager
|
||||
*/
|
||||
|
||||
/**
|
||||
* require PEAR::Pager_Common base class
|
||||
*/
|
||||
require_once 'Pager/Common.php';
|
||||
|
||||
/**
|
||||
* Pager_Jumping - Generic data paging class ("jumping window" style)
|
||||
* Handles paging a set of data. For usage see the example.php provided.
|
||||
*
|
||||
* @category HTML
|
||||
* @package Pager
|
||||
* @author Lorenzo Alberton <l.alberton@quipo.it>
|
||||
* @author Richard Heyes <richard@phpguru.org>
|
||||
* @copyright 2003-2008 Lorenzo Alberton, Richard Heyes
|
||||
* @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
|
||||
* @link http://pear.php.net/package/Pager
|
||||
*/
|
||||
class Pager_Jumping extends Pager_Common
|
||||
{
|
||||
// {{{ Pager_Jumping()
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param array $options Associative array of option names and their values
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
function __construct($options = array())
|
||||
{
|
||||
$err = $this->setOptions($options);
|
||||
if ($err !== PAGER_OK) {
|
||||
return $this->raiseError($this->errorMessage($err), $err);
|
||||
}
|
||||
$this->build();
|
||||
}
|
||||
|
||||
// }}}
|
||||
// {{{ getPageIdByOffset()
|
||||
|
||||
/**
|
||||
* Returns pageID for given offset
|
||||
*
|
||||
* @param integer $index Offset to get pageID for
|
||||
*
|
||||
* @return int PageID for given offset
|
||||
*/
|
||||
function getPageIdByOffset($index)
|
||||
{
|
||||
if (!isset($this->_pageData)) {
|
||||
$this->_generatePageData();
|
||||
}
|
||||
|
||||
if (($index % $this->_perPage) > 0) {
|
||||
$pageID = ceil((float)$index / (float)$this->_perPage);
|
||||
} else {
|
||||
$pageID = $index / $this->_perPage;
|
||||
}
|
||||
return $pageID;
|
||||
}
|
||||
|
||||
// }}}
|
||||
// {{{ 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=3 and delta=10, it will return (1, 10).
|
||||
* PageID of 8 would give you (1, 10) as well, because 1 <= 8 <= 10.
|
||||
* PageID of 11 would give you (11, 20).
|
||||
* If the method is called without parameter, pageID is set to currentPage#.
|
||||
*
|
||||
* @param integer $pageid PageID to get offsets for
|
||||
*
|
||||
* @return array First and last offsets
|
||||
* @access public
|
||||
*/
|
||||
function getPageRangeByPageId($pageid = null)
|
||||
{
|
||||
$pageid = isset($pageid) ? (int)$pageid : $this->_currentPage;
|
||||
if (isset($this->_pageData[$pageid]) || is_null($this->_itemData)) {
|
||||
// I'm sure I'm missing something here, but this formula works
|
||||
// so I'm using it until I find something simpler.
|
||||
$start = ((($pageid + (($this->_delta - ($pageid % $this->_delta))) % $this->_delta) / $this->_delta) - 1) * $this->_delta +1;
|
||||
return array(
|
||||
max($start, 1),
|
||||
min($start+$this->_delta-1, $this->_totalPages)
|
||||
);
|
||||
} else {
|
||||
return array(0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
// }}}
|
||||
// {{{ getLinks()
|
||||
|
||||
/**
|
||||
* Returns back/next/first/last and page links,
|
||||
* both as ordered and associative array.
|
||||
*
|
||||
* NB: in original PEAR::Pager this method accepted two parameters,
|
||||
* $back_html and $next_html. Now the only parameter accepted is
|
||||
* an integer ($pageID), since the html text for prev/next links can
|
||||
* be set in the constructor. If a second parameter is provided, then
|
||||
* the method act as it previously did. This hack's only purpose is to
|
||||
* mantain backward compatibility.
|
||||
*
|
||||
* @param integer $pageID Optional pageID. If specified, links for that
|
||||
* page are provided instead of current one.
|
||||
* [ADDED IN NEW PAGER VERSION]
|
||||
* @param string $next_html HTML to put inside the next link
|
||||
* [deprecated: use the factory instead]
|
||||
*
|
||||
* @return array Back/pages/next links
|
||||
*/
|
||||
function getLinks($pageID=null, $next_html='')
|
||||
{
|
||||
//BC hack
|
||||
if (!empty($next_html)) {
|
||||
$back_html = $pageID;
|
||||
$pageID = null;
|
||||
} else {
|
||||
$back_html = '';
|
||||
}
|
||||
|
||||
if (!is_null($pageID)) {
|
||||
$this->links = '';
|
||||
if ($this->_totalPages > $this->_delta) {
|
||||
$this->links .= $this->_printFirstPage();
|
||||
}
|
||||
|
||||
$_sav = $this->_currentPage;
|
||||
$this->_currentPage = $pageID;
|
||||
|
||||
$this->links .= $this->_getBackLink('', $back_html);
|
||||
$this->links .= $this->_getPageLinks();
|
||||
$this->links .= $this->_getNextLink('', $next_html);
|
||||
if ($this->_totalPages > $this->_delta) {
|
||||
$this->links .= $this->_printLastPage();
|
||||
}
|
||||
}
|
||||
|
||||
$back = str_replace(' ', '', $this->_getBackLink());
|
||||
$next = str_replace(' ', '', $this->_getNextLink());
|
||||
$pages = $this->_getPageLinks();
|
||||
$first = $this->_printFirstPage();
|
||||
$last = $this->_printLastPage();
|
||||
$all = $this->links;
|
||||
$linkTags = $this->linkTags;
|
||||
$linkTagsRaw = $this->linkTagsRaw;
|
||||
|
||||
if (!is_null($pageID)) {
|
||||
$this->_currentPage = $_sav;
|
||||
}
|
||||
|
||||
return array(
|
||||
$back,
|
||||
$pages,
|
||||
trim($next),
|
||||
$first,
|
||||
$last,
|
||||
$all,
|
||||
$linkTags,
|
||||
'back' => $back,
|
||||
'pages' => $pages,
|
||||
'next' => $next,
|
||||
'first' => $first,
|
||||
'last' => $last,
|
||||
'all' => $all,
|
||||
'linktags' => $linkTags,
|
||||
'linkTagsRaw' => $linkTagsRaw,
|
||||
);
|
||||
}
|
||||
|
||||
// }}}
|
||||
// {{{ _getPageLinks()
|
||||
|
||||
/**
|
||||
* Returns pages link
|
||||
*
|
||||
* @param string $url URL to use in the link
|
||||
* [deprecated: use the constructor instead]
|
||||
*
|
||||
* @return string Links
|
||||
* @access private
|
||||
*/
|
||||
function _getPageLinks($url = '')
|
||||
{
|
||||
//legacy setting... the preferred way to set an option now
|
||||
//is adding it to the constuctor
|
||||
if (!empty($url)) {
|
||||
$this->_path = $url;
|
||||
}
|
||||
|
||||
//If there's only one page, don't display links
|
||||
if ($this->_clearIfVoid && ($this->_totalPages < 2)) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$links = '';
|
||||
$limits = $this->getPageRangeByPageId($this->_currentPage);
|
||||
|
||||
for ($i=$limits[0]; $i<=min($limits[1], $this->_totalPages); $i++) {
|
||||
if ($i != $this->_currentPage) {
|
||||
$this->range[$i] = false;
|
||||
$this->_linkData[$this->_urlVar] = $i;
|
||||
$links .= $this->_renderLink(str_replace('%d', $i, $this->_altPage), $i);
|
||||
} else {
|
||||
$this->range[$i] = true;
|
||||
$links .= $this->_curPageSpanPre . $i . $this->_curPageSpanPost;
|
||||
}
|
||||
$links .= $this->_spacesBefore
|
||||
. (($i != $this->_totalPages) ? $this->_separator.$this->_spacesAfter : '');
|
||||
}
|
||||
return $links;
|
||||
}
|
||||
|
||||
// }}}
|
||||
}
|
||||
?>
|
19
sites/all/modules/civicrm/packages/Pager/Pager.php
Normal file
19
sites/all/modules/civicrm/packages/Pager/Pager.php
Normal file
|
@ -0,0 +1,19 @@
|
|||
<?php
|
||||
/**
|
||||
* Dummy file, used to maintain backward compatibility.
|
||||
* The real file was moved to the PEAR root directory
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* @category HTML
|
||||
* @package Pager
|
||||
* @author Lorenzo Alberton <l.alberton@quipo.it>
|
||||
* @author Richard Heyes <richard@phpguru.org>
|
||||
* @copyright 2003-2007 Lorenzo Alberton, Richard Heyes
|
||||
* @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
|
||||
* @version CVS: $Id: Pager_savebc.php,v 1.3 2007/10/28 22:37:01 quipo Exp $
|
||||
* @link http://pear.php.net/package/Pager
|
||||
*/
|
||||
|
||||
require_once 'Pager.php';
|
||||
?>
|
301
sites/all/modules/civicrm/packages/Pager/Sliding.php
Normal file
301
sites/all/modules/civicrm/packages/Pager/Sliding.php
Normal file
|
@ -0,0 +1,301 @@
|
|||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Contains the Pager_Sliding 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.alberton@quipo.it>
|
||||
* @copyright 2003-2008 Lorenzo Alberton
|
||||
* @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
|
||||
* @version CVS: $Id: Sliding.php,v 1.18 2008/01/06 13:36:22 quipo Exp $
|
||||
* @link http://pear.php.net/package/Pager
|
||||
*/
|
||||
|
||||
/**
|
||||
* require PEAR::Pager_Common base class
|
||||
*/
|
||||
require_once 'Pager/Common.php';
|
||||
|
||||
/**
|
||||
* Pager_Sliding - Generic data paging class ("sliding window" style)
|
||||
* Usage examples can be found in the PEAR manual
|
||||
*
|
||||
* @category HTML
|
||||
* @package Pager
|
||||
* @author Lorenzo Alberton <l.alberton@quipo.it>
|
||||
* @copyright 2003-2008 Lorenzo Alberton
|
||||
* @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
|
||||
* @link http://pear.php.net/package/Pager
|
||||
*/
|
||||
class Pager_Sliding extends Pager_Common
|
||||
{
|
||||
// {{{ Pager_Sliding()
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param array $options Associative array of option names and their values
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
function __construct($options = array())
|
||||
{
|
||||
//set default Pager_Sliding options
|
||||
$this->_delta = 2;
|
||||
$this->_prevImg = '«';
|
||||
$this->_nextImg = '»';
|
||||
$this->_separator = '|';
|
||||
$this->_spacesBeforeSeparator = 3;
|
||||
$this->_spacesAfterSeparator = 3;
|
||||
$this->_curPageSpanPre = '<b>';
|
||||
$this->_curPageSpanPost = '</b>';
|
||||
|
||||
//set custom options
|
||||
$err = $this->setOptions($options);
|
||||
if ($err !== PAGER_OK) {
|
||||
return $this->raiseError($this->errorMessage($err), $err);
|
||||
}
|
||||
$this->build();
|
||||
}
|
||||
|
||||
// }}}
|
||||
// {{{ getPageIdByOffset()
|
||||
|
||||
/**
|
||||
* "Overload" PEAR::Pager method. VOID. Not needed here...
|
||||
*
|
||||
* @param integer $index Offset to get pageID for
|
||||
*
|
||||
* @return void
|
||||
* @deprecated
|
||||
* @access public
|
||||
*/
|
||||
function getPageIdByOffset($index)
|
||||
{
|
||||
}
|
||||
|
||||
// }}}
|
||||
// {{{ 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 PageID to get offsets for
|
||||
*
|
||||
* @return array First and last offsets
|
||||
* @access public
|
||||
*/
|
||||
function getPageRangeByPageId($pageid = null)
|
||||
{
|
||||
$pageid = isset($pageid) ? (int)$pageid : $this->_currentPage;
|
||||
if (!isset($this->_pageData)) {
|
||||
$this->_generatePageData();
|
||||
}
|
||||
if (isset($this->_pageData[$pageid]) || is_null($this->_itemData)) {
|
||||
if ($this->_expanded) {
|
||||
$min_surplus = ($pageid <= $this->_delta) ? ($this->_delta - $pageid + 1) : 0;
|
||||
$max_surplus = ($pageid >= ($this->_totalPages - $this->_delta)) ?
|
||||
($pageid - ($this->_totalPages - $this->_delta)) : 0;
|
||||
} else {
|
||||
$min_surplus = $max_surplus = 0;
|
||||
}
|
||||
return array(
|
||||
max($pageid - $this->_delta - $max_surplus, 1),
|
||||
min($pageid + $this->_delta + $min_surplus, $this->_totalPages)
|
||||
);
|
||||
}
|
||||
return array(0, 0);
|
||||
}
|
||||
|
||||
// }}}
|
||||
// {{{ getLinks()
|
||||
|
||||
/**
|
||||
* 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.
|
||||
* @param string $dummy used to comply with parent signature (leave empty)
|
||||
*
|
||||
* @return array back/pages/next/first/last/all links
|
||||
* @access public
|
||||
*/
|
||||
function getLinks($pageID = null, $dummy='')
|
||||
{
|
||||
if (!is_null($pageID)) {
|
||||
$_sav = $this->_currentPage;
|
||||
$this->_currentPage = $pageID;
|
||||
|
||||
$this->links = '';
|
||||
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();
|
||||
$all = $this->links;
|
||||
$linkTags = $this->linkTags;
|
||||
$linkTagsRaw = $this->linkTagsRaw;
|
||||
|
||||
if (!is_null($pageID)) {
|
||||
$this->_currentPage = $_sav;
|
||||
}
|
||||
|
||||
return array(
|
||||
$back,
|
||||
$pages,
|
||||
trim($next),
|
||||
$first,
|
||||
$last,
|
||||
$all,
|
||||
$linkTags,
|
||||
'back' => $back,
|
||||
'pages' => $pages,
|
||||
'next' => $next,
|
||||
'first' => $first,
|
||||
'last' => $last,
|
||||
'all' => $all,
|
||||
'linktags' => $linkTags,
|
||||
'linkTagsRaw' => $linkTagsRaw,
|
||||
);
|
||||
}
|
||||
|
||||
// }}}
|
||||
// {{{ _getPageLinks()
|
||||
|
||||
/**
|
||||
* Returns pages link
|
||||
*
|
||||
* @param string $url URL string [deprecated]
|
||||
*
|
||||
* @return string Links
|
||||
* @access private
|
||||
*/
|
||||
function _getPageLinks($url = '')
|
||||
{
|
||||
//legacy setting... the preferred way to set an option now
|
||||
//is adding it to the constuctor
|
||||
if (!empty($url)) {
|
||||
$this->_path = $url;
|
||||
}
|
||||
|
||||
//If there's only one page, don't display links
|
||||
if ($this->_clearIfVoid && ($this->_totalPages < 2)) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$links = '';
|
||||
if ($this->_totalPages > (2 * $this->_delta + 1)) {
|
||||
if ($this->_expanded) {
|
||||
if (($this->_totalPages - $this->_delta) <= $this->_currentPage) {
|
||||
$expansion_before = $this->_currentPage - ($this->_totalPages - $this->_delta);
|
||||
} else {
|
||||
$expansion_before = 0;
|
||||
}
|
||||
for ($i = $this->_currentPage - $this->_delta - $expansion_before; $expansion_before; $expansion_before--, $i++) {
|
||||
$print_separator_flag = ($i != $this->_currentPage + $this->_delta); // && ($i != $this->_totalPages - 1)
|
||||
|
||||
$this->range[$i] = false;
|
||||
$this->_linkData[$this->_urlVar] = $i;
|
||||
$links .= $this->_renderLink(str_replace('%d', $i, $this->_altPage), $i)
|
||||
. $this->_spacesBefore
|
||||
. ($print_separator_flag ? $this->_separator.$this->_spacesAfter : '');
|
||||
}
|
||||
}
|
||||
|
||||
$expansion_after = 0;
|
||||
for ($i = $this->_currentPage - $this->_delta; ($i <= $this->_currentPage + $this->_delta) && ($i <= $this->_totalPages); $i++) {
|
||||
if ($i < 1) {
|
||||
++$expansion_after;
|
||||
continue;
|
||||
}
|
||||
|
||||
// check when to print separator
|
||||
$print_separator_flag = (($i != $this->_currentPage + $this->_delta) && ($i != $this->_totalPages));
|
||||
|
||||
if ($i == $this->_currentPage) {
|
||||
$this->range[$i] = true;
|
||||
$links .= $this->_curPageSpanPre . $i . $this->_curPageSpanPost;
|
||||
} else {
|
||||
$this->range[$i] = false;
|
||||
$this->_linkData[$this->_urlVar] = $i;
|
||||
$links .= $this->_renderLink(str_replace('%d', $i, $this->_altPage), $i);
|
||||
}
|
||||
$links .= $this->_spacesBefore
|
||||
. ($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++) {
|
||||
$print_separator_flag = ($expansion_after != 1);
|
||||
$this->range[$i] = false;
|
||||
$this->_linkData[$this->_urlVar] = $i;
|
||||
$links .= $this->_renderLink(str_replace('%d', $i, $this->_altPage), $i)
|
||||
. $this->_spacesBefore
|
||||
. ($print_separator_flag ? $this->_separator.$this->_spacesAfter : '');
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
//if $this->_totalPages <= (2*Delta+1) show them all
|
||||
for ($i=1; $i<=$this->_totalPages; $i++) {
|
||||
if ($i != $this->_currentPage) {
|
||||
$this->range[$i] = false;
|
||||
$this->_linkData[$this->_urlVar] = $i;
|
||||
$links .= $this->_renderLink(str_replace('%d', $i, $this->_altPage), $i);
|
||||
} else {
|
||||
$this->range[$i] = true;
|
||||
$links .= $this->_curPageSpanPre . $i . $this->_curPageSpanPost;
|
||||
}
|
||||
$links .= $this->_spacesBefore
|
||||
. (($i != $this->_totalPages) ? $this->_separator.$this->_spacesAfter : '');
|
||||
}
|
||||
}
|
||||
return $links;
|
||||
}
|
||||
|
||||
// }}}
|
||||
}
|
||||
?>
|
Loading…
Add table
Add a link
Reference in a new issue