diff -r 5e7a0fedabdf -r 877f952ae2bd web/lib/Zend/Paginator.php --- a/web/lib/Zend/Paginator.php Thu Mar 21 17:31:31 2013 +0100 +++ b/web/lib/Zend/Paginator.php Thu Mar 21 19:50:53 2013 +0100 @@ -14,9 +14,9 @@ * * @category Zend * @package Zend_Paginator - * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License - * @version $Id: Paginator.php 22865 2010-08-21 12:28:09Z ramon $ + * @version $Id: Paginator.php 24754 2012-05-05 02:30:56Z adamlundrigan $ */ /** @@ -32,7 +32,7 @@ /** * @category Zend * @package Zend_Paginator - * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ class Zend_Paginator implements Countable, IteratorAggregate @@ -524,13 +524,26 @@ } /** - * Returns the total number of items available. + * Returns the total number of items available. Uses cache if caching is enabled. * * @return integer */ public function getTotalItemCount() { - return count($this->getAdapter()); + if (!$this->_cacheEnabled()) { + return count($this->getAdapter()); + } else { + $cacheId = md5($this->_getCacheInternalId(). '_itemCount'); + $itemCount = self::$_cache->load($cacheId); + + if ($itemCount === false) { + $itemCount = count($this->getAdapter()); + + self::$_cache->save($itemCount, $cacheId, array($this->_getCacheInternalId())); + } + + return $itemCount; + } } /** @@ -1044,10 +1057,18 @@ */ protected function _getCacheInternalId() { - return md5(serialize(array( - $this->getAdapter(), - $this->getItemCountPerPage() - ))); + $adapter = $this->getAdapter(); + + if (method_exists($adapter, 'getCacheIdentifier')) { + return md5(serialize(array( + $adapter->getCacheIdentifier(), $this->getItemCountPerPage() + ))); + } else { + return md5(serialize(array( + $adapter, + $this->getItemCountPerPage() + ))); + } } /** @@ -1057,7 +1078,7 @@ */ protected function _calculatePageCount() { - return (integer) ceil($this->getAdapter()->count() / $this->getItemCountPerPage()); + return (integer) ceil($this->getTotalItemCount() / $this->getItemCountPerPage()); } /**