diff options
Diffstat (limited to 'library/vendor/Zend/Paginator')
-rw-r--r-- | library/vendor/Zend/Paginator/Adapter/Array.php | 80 | ||||
-rw-r--r-- | library/vendor/Zend/Paginator/Adapter/DbSelect.php | 285 | ||||
-rw-r--r-- | library/vendor/Zend/Paginator/Adapter/DbTableSelect.php | 47 | ||||
-rw-r--r-- | library/vendor/Zend/Paginator/Adapter/Interface.php | 40 | ||||
-rw-r--r-- | library/vendor/Zend/Paginator/Adapter/Iterator.php | 99 | ||||
-rw-r--r-- | library/vendor/Zend/Paginator/Adapter/Null.php | 79 | ||||
-rw-r--r-- | library/vendor/Zend/Paginator/AdapterAggregate.php | 40 | ||||
-rw-r--r-- | library/vendor/Zend/Paginator/Exception.php | 34 | ||||
-rw-r--r-- | library/vendor/Zend/Paginator/ScrollingStyle/All.php | 49 | ||||
-rw-r--r-- | library/vendor/Zend/Paginator/ScrollingStyle/Elastic.php | 62 | ||||
-rw-r--r-- | library/vendor/Zend/Paginator/ScrollingStyle/Interface.php | 38 | ||||
-rw-r--r-- | library/vendor/Zend/Paginator/ScrollingStyle/Jumping.php | 62 | ||||
-rw-r--r-- | library/vendor/Zend/Paginator/ScrollingStyle/Sliding.php | 77 | ||||
-rw-r--r-- | library/vendor/Zend/Paginator/SerializableLimitIterator.php | 159 |
14 files changed, 1151 insertions, 0 deletions
diff --git a/library/vendor/Zend/Paginator/Adapter/Array.php b/library/vendor/Zend/Paginator/Adapter/Array.php new file mode 100644 index 0000000..b4d0c09 --- /dev/null +++ b/library/vendor/Zend/Paginator/Adapter/Array.php @@ -0,0 +1,80 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Paginator_Adapter_Interface + */ + +/** + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Paginator_Adapter_Array implements Zend_Paginator_Adapter_Interface +{ + /** + * Array + * + * @var array + */ + protected $_array = null; + + /** + * Item count + * + * @var integer + */ + protected $_count = null; + + /** + * Constructor. + * + * @param array $array Array to paginate + */ + public function __construct(array $array) + { + $this->_array = $array; + $this->_count = count($array); + } + + /** + * Returns an array of items for a page. + * + * @param integer $offset Page offset + * @param integer $itemCountPerPage Number of items per page + * @return array + */ + public function getItems($offset, $itemCountPerPage) + { + return array_slice($this->_array, $offset, $itemCountPerPage); + } + + /** + * Returns the total number of rows in the array. + * + * @return integer + */ + public function count() + { + return $this->_count; + } +} diff --git a/library/vendor/Zend/Paginator/Adapter/DbSelect.php b/library/vendor/Zend/Paginator/Adapter/DbSelect.php new file mode 100644 index 0000000..ebd7142 --- /dev/null +++ b/library/vendor/Zend/Paginator/Adapter/DbSelect.php @@ -0,0 +1,285 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Paginator_Adapter_Interface + */ + +/** + * @see Zend_Db + */ + +/** + * @see Zend_Db_Select + */ + +/** + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Paginator_Adapter_DbSelect implements Zend_Paginator_Adapter_Interface +{ + /** + * Name of the row count column + * + * @var string + */ + const ROW_COUNT_COLUMN = 'zend_paginator_row_count'; + + /** + * The COUNT query + * + * @var Zend_Db_Select + */ + protected $_countSelect = null; + + /** + * Database query + * + * @var Zend_Db_Select + */ + protected $_select = null; + + /** + * Total item count + * + * @var integer + */ + protected $_rowCount = null; + + /** + * Identifies this adapter for caching purposes. This value will remain constant for + * the entire life of this adapter regardless of how many different pages are queried. + * + * @var string + */ + protected $_cacheIdentifier = null; + + /** + * Constructor. + * + * @param Zend_Db_Select $select The select query + */ + public function __construct(Zend_Db_Select $select) + { + $this->_select = $select; + $this->_cacheIdentifier = md5($select->assemble()); + } + + /** + * Returns the cache identifier. + * + * @return string + */ + public function getCacheIdentifier() + { + return $this->_cacheIdentifier; + } + + /** + * Sets the total row count, either directly or through a supplied + * query. Without setting this, {@link getPages()} selects the count + * as a subquery (SELECT COUNT ... FROM (SELECT ...)). While this + * yields an accurate count even with queries containing clauses like + * LIMIT, it can be slow in some circumstances. For example, in MySQL, + * subqueries are generally slow when using the InnoDB storage engine. + * Users are therefore encouraged to profile their queries to find + * the solution that best meets their needs. + * + * @param Zend_Db_Select|integer $totalRowCount Total row count integer + * or query + * @return Zend_Paginator_Adapter_DbSelect $this + * @throws Zend_Paginator_Exception + */ + public function setRowCount($rowCount) + { + if ($rowCount instanceof Zend_Db_Select) { + $columns = $rowCount->getPart(Zend_Db_Select::COLUMNS); + + $countColumnPart = empty($columns[0][2]) + ? $columns[0][1] + : $columns[0][2]; + + if ($countColumnPart instanceof Zend_Db_Expr) { + $countColumnPart = $countColumnPart->__toString(); + } + + $rowCountColumn = $this->_select->getAdapter()->foldCase(self::ROW_COUNT_COLUMN); + + // The select query can contain only one column, which should be the row count column + if (false === strpos($countColumnPart, $rowCountColumn)) { + /** + * @see Zend_Paginator_Exception + */ + + throw new Zend_Paginator_Exception('Row count column not found'); + } + + $result = $rowCount->query(Zend_Db::FETCH_ASSOC)->fetch(); + + $this->_rowCount = count($result) > 0 ? $result[$rowCountColumn] : 0; + } else if (is_integer($rowCount)) { + $this->_rowCount = $rowCount; + } else { + /** + * @see Zend_Paginator_Exception + */ + + throw new Zend_Paginator_Exception('Invalid row count'); + } + + return $this; + } + + /** + * Returns an array of items for a page. + * + * @param integer $offset Page offset + * @param integer $itemCountPerPage Number of items per page + * @return array + */ + public function getItems($offset, $itemCountPerPage) + { + $this->_select->limit($itemCountPerPage, $offset); + + return $this->_select->query()->fetchAll(); + } + + /** + * Returns the total number of rows in the result set. + * + * @return integer + */ + public function count() + { + if ($this->_rowCount === null) { + $this->setRowCount( + $this->getCountSelect() + ); + } + + return $this->_rowCount; + } + + /** + * Get the COUNT select object for the provided query + * + * TODO: Have a look at queries that have both GROUP BY and DISTINCT specified. + * In that use-case I'm expecting problems when either GROUP BY or DISTINCT + * has one column. + * + * @return Zend_Db_Select + */ + public function getCountSelect() + { + /** + * We only need to generate a COUNT query once. It will not change for + * this instance. + */ + if ($this->_countSelect !== null) { + return $this->_countSelect; + } + + $rowCount = clone $this->_select; + $rowCount->__toString(); // Workaround for ZF-3719 and related + + $db = $rowCount->getAdapter(); + + $countColumn = $db->quoteIdentifier($db->foldCase(self::ROW_COUNT_COLUMN)); + $countPart = 'COUNT(1) AS '; + $groupPart = null; + $unionParts = $rowCount->getPart(Zend_Db_Select::UNION); + + /** + * If we're dealing with a UNION query, execute the UNION as a subquery + * to the COUNT query. + */ + if (!empty($unionParts)) { + $expression = new Zend_Db_Expr($countPart . $countColumn); + + $rowCount = $db + ->select() + ->bind($rowCount->getBind()) + ->from($rowCount, $expression); + } else { + $columnParts = $rowCount->getPart(Zend_Db_Select::COLUMNS); + $groupParts = $rowCount->getPart(Zend_Db_Select::GROUP); + $havingParts = $rowCount->getPart(Zend_Db_Select::HAVING); + $isDistinct = $rowCount->getPart(Zend_Db_Select::DISTINCT); + + /** + * If there is more than one column AND it's a DISTINCT query, more + * than one group, or if the query has a HAVING clause, then take + * the original query and use it as a subquery os the COUNT query. + */ + if (($isDistinct && ((count($columnParts) == 1 && $columnParts[0][1] == Zend_Db_Select::SQL_WILDCARD) + || count($columnParts) > 1)) || count($groupParts) > 1 || !empty($havingParts)) { + $rowCount->reset(Zend_Db_Select::ORDER); + $rowCount = $db + ->select() + ->bind($rowCount->getBind()) + ->from($rowCount); + } else if ($isDistinct) { + $part = $columnParts[0]; + + if ($part[1] !== Zend_Db_Select::SQL_WILDCARD && !($part[1] instanceof Zend_Db_Expr)) { + $column = $db->quoteIdentifier($part[1], true); + + if (!empty($part[0])) { + $column = $db->quoteIdentifier($part[0], true) . '.' . $column; + } + + $groupPart = $column; + } + } else if (!empty($groupParts)) { + $groupPart = $db->quoteIdentifier($groupParts[0], true); + } + + /** + * If the original query had a GROUP BY or a DISTINCT part and only + * one column was specified, create a COUNT(DISTINCT ) query instead + * of a regular COUNT query. + */ + if (!empty($groupPart)) { + $countPart = 'COUNT(DISTINCT ' . $groupPart . ') AS '; + } + + /** + * Create the COUNT part of the query + */ + $expression = new Zend_Db_Expr($countPart . $countColumn); + + $rowCount->reset(Zend_Db_Select::COLUMNS) + ->reset(Zend_Db_Select::ORDER) + ->reset(Zend_Db_Select::LIMIT_OFFSET) + ->reset(Zend_Db_Select::GROUP) + ->reset(Zend_Db_Select::DISTINCT) + ->reset(Zend_Db_Select::HAVING) + ->columns($expression); + } + + $this->_countSelect = $rowCount; + + return $rowCount; + } +} diff --git a/library/vendor/Zend/Paginator/Adapter/DbTableSelect.php b/library/vendor/Zend/Paginator/Adapter/DbTableSelect.php new file mode 100644 index 0000000..dac467f --- /dev/null +++ b/library/vendor/Zend/Paginator/Adapter/DbTableSelect.php @@ -0,0 +1,47 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Paginator_Adapter_DbSelect + */ + +/** + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Paginator_Adapter_DbTableSelect extends Zend_Paginator_Adapter_DbSelect +{ + /** + * Returns a Zend_Db_Table_Rowset_Abstract of items for a page. + * + * @param integer $offset Page offset + * @param integer $itemCountPerPage Number of items per page + * @return Zend_Db_Table_Rowset_Abstract + */ + public function getItems($offset, $itemCountPerPage) + { + $this->_select->limit($itemCountPerPage, $offset); + + return $this->_select->getTable()->fetchAll($this->_select); + } +} diff --git a/library/vendor/Zend/Paginator/Adapter/Interface.php b/library/vendor/Zend/Paginator/Adapter/Interface.php new file mode 100644 index 0000000..7ec1ee2 --- /dev/null +++ b/library/vendor/Zend/Paginator/Adapter/Interface.php @@ -0,0 +1,40 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Interface for pagination adapters. + * + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Paginator_Adapter_Interface extends Countable +{ + /** + * Returns an collection of items for a page. + * + * @param integer $offset Page offset + * @param integer $itemCountPerPage Number of items per page + * @return array + */ + public function getItems($offset, $itemCountPerPage); +} diff --git a/library/vendor/Zend/Paginator/Adapter/Iterator.php b/library/vendor/Zend/Paginator/Adapter/Iterator.php new file mode 100644 index 0000000..ad10da9 --- /dev/null +++ b/library/vendor/Zend/Paginator/Adapter/Iterator.php @@ -0,0 +1,99 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Paginator_Adapter_Interface + */ + +/** + * @see Zend_Paginator_SerializableLimitIterator + */ + +/** + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Paginator_Adapter_Iterator implements Zend_Paginator_Adapter_Interface +{ + /** + * Iterator which implements Countable + * + * @var Iterator + */ + protected $_iterator = null; + + /** + * Item count + * + * @var integer + */ + protected $_count = null; + + /** + * Constructor. + * + * @param Iterator $iterator Iterator to paginate + * @throws Zend_Paginator_Exception + */ + public function __construct(Iterator $iterator) + { + if (!$iterator instanceof Countable) { + /** + * @see Zend_Paginator_Exception + */ + + throw new Zend_Paginator_Exception('Iterator must implement Countable'); + } + + $this->_iterator = $iterator; + $this->_count = count($iterator); + } + + /** + * Returns an iterator of items for a page, or an empty array. + * + * @param integer $offset Page offset + * @param integer $itemCountPerPage Number of items per page + * @return LimitIterator|array + */ + public function getItems($offset, $itemCountPerPage) + { + if ($this->_count == 0) { + return array(); + } + + // @link http://bugs.php.net/bug.php?id=49906 | ZF-8084 + // return new LimitIterator($this->_iterator, $offset, $itemCountPerPage); + return new Zend_Paginator_SerializableLimitIterator($this->_iterator, $offset, $itemCountPerPage); + } + + /** + * Returns the total number of rows in the collection. + * + * @return integer + */ + public function count() + { + return $this->_count; + } +} diff --git a/library/vendor/Zend/Paginator/Adapter/Null.php b/library/vendor/Zend/Paginator/Adapter/Null.php new file mode 100644 index 0000000..da91d4d --- /dev/null +++ b/library/vendor/Zend/Paginator/Adapter/Null.php @@ -0,0 +1,79 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Paginator_Adapter_Interface + */ + +/** + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Paginator_Adapter_Null implements Zend_Paginator_Adapter_Interface +{ + /** + * Item count + * + * @var integer + */ + protected $_count = null; + + /** + * Constructor. + * + * @param array $count Total item count + */ + public function __construct($count = 0) + { + $this->_count = $count; + } + + /** + * Returns an array of items for a page. + * + * @param integer $offset Page offset + * @param integer $itemCountPerPage Number of items per page + * @return array + */ + public function getItems($offset, $itemCountPerPage) + { + if ($offset >= $this->count()) { + return array(); + } + + $remainItemCount = $this->count() - $offset; + $currentItemCount = $remainItemCount > $itemCountPerPage ? $itemCountPerPage : $remainItemCount; + + return array_fill(0, $currentItemCount, null); + } + + /** + * Returns the total number of rows in the array. + * + * @return integer + */ + public function count() + { + return $this->_count; + } +} diff --git a/library/vendor/Zend/Paginator/AdapterAggregate.php b/library/vendor/Zend/Paginator/AdapterAggregate.php new file mode 100644 index 0000000..fe209d4 --- /dev/null +++ b/library/vendor/Zend/Paginator/AdapterAggregate.php @@ -0,0 +1,40 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Paginator + * @subpackage Adapter + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Interface that aggregates a Zend_Paginator_Adapter_Abstract just like IteratorAggregate does for Iterators. + * + * @category Zend + * @package Zend_Paginator + * @subpackage Adapter + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Paginator_AdapterAggregate +{ + /** + * Return a fully configured Paginator Adapter from this method. + * + * @return Zend_Paginator_Adapter_Interface + */ + public function getPaginatorAdapter(); +} diff --git a/library/vendor/Zend/Paginator/Exception.php b/library/vendor/Zend/Paginator/Exception.php new file mode 100644 index 0000000..85513fa --- /dev/null +++ b/library/vendor/Zend/Paginator/Exception.php @@ -0,0 +1,34 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Exception + */ + +/** + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Paginator_Exception extends Zend_Exception +{ +} diff --git a/library/vendor/Zend/Paginator/ScrollingStyle/All.php b/library/vendor/Zend/Paginator/ScrollingStyle/All.php new file mode 100644 index 0000000..6ef5427 --- /dev/null +++ b/library/vendor/Zend/Paginator/ScrollingStyle/All.php @@ -0,0 +1,49 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Paginator_ScrollingStyle_Interface + */ + +/** + * A scrolling style that returns every page in the collection. + * Useful when it is necessary to make every page available at + * once--for example, when using a dropdown menu pagination control. + * + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Paginator_ScrollingStyle_All implements Zend_Paginator_ScrollingStyle_Interface +{ + /** + * Returns an array of all pages given a page number and range. + * + * @param Zend_Paginator $paginator + * @param integer $pageRange Unused + * @return array + */ + public function getPages(Zend_Paginator $paginator, $pageRange = null) + { + return $paginator->getPagesInRange(1, $paginator->count()); + } +} diff --git a/library/vendor/Zend/Paginator/ScrollingStyle/Elastic.php b/library/vendor/Zend/Paginator/ScrollingStyle/Elastic.php new file mode 100644 index 0000000..6e103f6 --- /dev/null +++ b/library/vendor/Zend/Paginator/ScrollingStyle/Elastic.php @@ -0,0 +1,62 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Paginator_ScrollingStyle_Sliding + */ + +/** + * A Google-like scrolling style. Incrementally expands the range to about + * twice the given page range, then behaves like a slider. See the example + * link. + * + * @link http://www.google.com/search?q=Zend+Framework + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Paginator_ScrollingStyle_Elastic extends Zend_Paginator_ScrollingStyle_Sliding +{ + /** + * Returns an array of "local" pages given a page number and range. + * + * @param Zend_Paginator $paginator + * @param integer $pageRange Unused + * @return array + */ + public function getPages(Zend_Paginator $paginator, $pageRange = null) + { + $pageRange = $paginator->getPageRange(); + $pageNumber = $paginator->getCurrentPageNumber(); + + $originalPageRange = $pageRange; + $pageRange = $pageRange * 2 - 1; + + if ($originalPageRange + $pageNumber - 1 < $pageRange) { + $pageRange = $originalPageRange + $pageNumber - 1; + } else if ($originalPageRange + $pageNumber - 1 > count($paginator)) { + $pageRange = $originalPageRange + count($paginator) - $pageNumber; + } + + return parent::getPages($paginator, $pageRange); + } +} diff --git a/library/vendor/Zend/Paginator/ScrollingStyle/Interface.php b/library/vendor/Zend/Paginator/ScrollingStyle/Interface.php new file mode 100644 index 0000000..7871d89 --- /dev/null +++ b/library/vendor/Zend/Paginator/ScrollingStyle/Interface.php @@ -0,0 +1,38 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Paginator_ScrollingStyle_Interface +{ + /** + * Returns an array of "local" pages given a page number and range. + * + * @param Zend_Paginator $paginator + * @param integer $pageRange (Optional) Page range + * @return array + */ + public function getPages(Zend_Paginator $paginator, $pageRange = null); +} diff --git a/library/vendor/Zend/Paginator/ScrollingStyle/Jumping.php b/library/vendor/Zend/Paginator/ScrollingStyle/Jumping.php new file mode 100644 index 0000000..93c1b79 --- /dev/null +++ b/library/vendor/Zend/Paginator/ScrollingStyle/Jumping.php @@ -0,0 +1,62 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Paginator_ScrollingStyle_Interface + */ + +/** + * A scrolling style in which the cursor advances to the upper bound + * of the page range, the page range "jumps" to the next section, and + * the cursor moves back to the beginning of the range. + * + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Paginator_ScrollingStyle_Jumping implements Zend_Paginator_ScrollingStyle_Interface +{ + /** + * Returns an array of "local" pages given a page number and range. + * + * @param Zend_Paginator $paginator + * @param integer $pageRange Unused + * @return array + */ + public function getPages(Zend_Paginator $paginator, $pageRange = null) + { + $pageRange = $paginator->getPageRange(); + $pageNumber = $paginator->getCurrentPageNumber(); + + $delta = $pageNumber % $pageRange; + + if ($delta == 0) { + $delta = $pageRange; + } + + $offset = $pageNumber - $delta; + $lowerBound = $offset + 1; + $upperBound = $offset + $pageRange; + + return $paginator->getPagesInRange($lowerBound, $upperBound); + } +} diff --git a/library/vendor/Zend/Paginator/ScrollingStyle/Sliding.php b/library/vendor/Zend/Paginator/ScrollingStyle/Sliding.php new file mode 100644 index 0000000..8bc6962 --- /dev/null +++ b/library/vendor/Zend/Paginator/ScrollingStyle/Sliding.php @@ -0,0 +1,77 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Paginator_ScrollingStyle_Interface + */ + +/** + * A Yahoo! Search-like scrolling style. The cursor will advance to + * the middle of the range, then remain there until the user reaches + * the end of the page set, at which point it will continue on to + * the end of the range and the last page in the set. + * + * @link http://search.yahoo.com/search?p=Zend+Framework + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Paginator_ScrollingStyle_Sliding implements Zend_Paginator_ScrollingStyle_Interface +{ + /** + * Returns an array of "local" pages given a page number and range. + * + * @param Zend_Paginator $paginator + * @param integer $pageRange (Optional) Page range + * @return array + */ + public function getPages(Zend_Paginator $paginator, $pageRange = null) + { + if ($pageRange === null) { + $pageRange = $paginator->getPageRange(); + } + + $pageNumber = $paginator->getCurrentPageNumber(); + $pageCount = count($paginator); + + if ($pageRange > $pageCount) { + $pageRange = $pageCount; + } + + $delta = ceil($pageRange / 2); + + if ($pageNumber - $delta > $pageCount - $pageRange) { + $lowerBound = $pageCount - $pageRange + 1; + $upperBound = $pageCount; + } else { + if ($pageNumber - $delta < 0) { + $delta = $pageNumber; + } + + $offset = $pageNumber - $delta; + $lowerBound = $offset + 1; + $upperBound = $offset + $pageRange; + } + + return $paginator->getPagesInRange($lowerBound, $upperBound); + } +} diff --git a/library/vendor/Zend/Paginator/SerializableLimitIterator.php b/library/vendor/Zend/Paginator/SerializableLimitIterator.php new file mode 100644 index 0000000..0e2e3d0 --- /dev/null +++ b/library/vendor/Zend/Paginator/SerializableLimitIterator.php @@ -0,0 +1,159 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Paginator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Paginator_SerializableLimitIterator extends LimitIterator implements Serializable, ArrayAccess +{ + + /** + * Offset to first element + * + * @var int + */ + private $_offset; + + /** + * Maximum number of elements to show or -1 for all + * + * @var int + */ + private $_count; + + /** + * Construct a Zend_Paginator_SerializableLimitIterator + * + * @param Iterator $it Iterator to limit (must be serializable by un-/serialize) + * @param int $offset Offset to first element + * @param int $count Maximum number of elements to show or -1 for all + * @see LimitIterator::__construct + */ + public function __construct (Iterator $it, $offset=0, $count=-1) + { + parent::__construct($it, $offset, $count); + $this->_offset = $offset; + $this->_count = $count; + } + + /** + * @return string representation of the instance + */ + public function serialize() + { + return serialize(array( + 'it' => $this->getInnerIterator(), + 'offset' => $this->_offset, + 'count' => $this->_count, + 'pos' => $this->getPosition(), + )); + } + + public function __serialize(): array + { + return array( + 'it' => $this->getInnerIterator(), + 'offset' => $this->_offset, + 'count' => $this->_count, + 'pos' => $this->getPosition(), + ); + } + + /** + * @param string $data representation of the instance + */ + public function unserialize($data) + { + $dataArr = unserialize($data); + $this->__construct($dataArr['it'], $dataArr['offset'], $dataArr['count']); + $this->seek($dataArr['pos']+$dataArr['offset']); + } + + public function __unserialize(array $data): void + { + $this->__construct($data['it'], $data['offset'], $data['count']); + $this->seek($data['pos']+$data['offset']); + } + + /** + * Returns value of the Iterator + * + * @param int $offset + * @return mixed + */ + #[\ReturnTypeWillChange] + public function offsetGet($offset) + { + $currentOffset = $this->key(); + $this->seek($offset); + $current = $this->current(); + $this->seek($currentOffset); + return $current; + } + + /** + * Does nothing + * Required by the ArrayAccess implementation + * + * @param int $offset + * @param mixed $value + */ + public function offsetSet($offset, $value): void + { + } + + /** + * Determine if a value of Iterator is set and is not NULL + * + * @param int $offset + */ + public function offsetExists($offset): bool + { + if ($offset > 0 && $offset < $this->_count) { + try { + $currentOffset = $this->key(); + $this->seek($offset); + $current = $this->current(); + $this->seek($currentOffset); + return null !== $current; + } catch (OutOfBoundsException $e) { + // reset position in case of exception is assigned null + $this->rewind(); + $this->seek($currentOffset); + return false; + } + } + return false; + } + + /** + * Does nothing + * Required by the ArrayAccess implementation + * + * @param int $offset + */ + public function offsetUnset($offset): void + { + } +} |