Skip to content
This repository has been archived by the owner on Jan 30, 2020. It is now read-only.

Commit

Permalink
Merge pull request zendframework/zendframework#7181 from hver/paginat…
Browse files Browse the repository at this point in the history
…or-cache-interfaces

Remove hidden TaggableInterface dependencies from paginator
  • Loading branch information
weierophinney committed Feb 25, 2015
184 parents 1e897c6 + 339cf31 + 3833182 + fd8deb8 + 4cda17f + b678d4c + e07a576 + ace2d81 + 77f83ca + 130a50a + f12feba + 4452247 + 2630a49 + 43cba4d + e4204b5 + d05ccf2 + e604cfb + ca97c01 + 287eb63 + 51a49db + a59e5dc + 548a07d + 8505b4c + 2716d1a + 37045c3 + 6903d5f + cdad453 + 9db7df2 + 9bb9d9a + 41b2dc0 + 5295cf8 + 27f9b6d + b273434 + 5b111b1 + ee4a022 + 5130ae3 + aff706f + f73a53d + d4a913a + b29f072 + 651a727 + 430d154 + 1839a34 + 0d5d64e + 5cde84e + dc8ee4d + 85d900a + 887c312 + 9c949ae + 0fc5669 + e29d393 + e25c698 + ca5bdbb + 18e54b8 + 73cc878 + a514416 + 778823f + fff1957 + 35beb1b + ecb2a1a + 67a31fa + c0ee14a + 7273469 + 62e104e + 293b0d0 + c59092f + b3e8431 + 615f1cb + 198a3b9 + 1630584 + 7627438 + 84a5bf6 + ad86c9d + a84a8ca + 4198a62 + e822871 + 431867b + 200dbe0 + 7277f0b + 2408da8 + 2413f67 + 4731ffc + d177c96 + b27c24b + ec13154 + 8e7b30c + 6c4437a + 2a2ed86 + 366d656 + 5f3d390 + 666d47b + dd0e03b + 1a5602a + c01cd9c + 6849552 + 8b79ca2 + e84f0d1 + 9f1b34e + c453b3e + 3d74be7 + 999502e + a46d96f + fba87c0 + ce665da + ef2dd94 + a66c89a + b997097 + da0e97d + 1302f0b + a1bbaa9 + 6bfa503 + b4b9ece + 9b1ac2d + 30880b8 + e308f6d + 8da89be + 199755f + 2310cd0 + 4e7316f + 1d6c476 + c2593db + c6ff37b + 5344902 + a35c230 + 39052a9 + 8152f2f + e0f8777 + d1f068b + 006fb88 + 6261074 + 8bf6181 + 33e79d4 + a778f16 + 57199ed + 3653e0c + 5b5a61e + 082fd49 + d56f4bf + d4ad9b4 + c2442b4 + a56d05b + 7400cfb + 8794fff + 0877be7 + 9c75f77 + 261c157 + 94f1dd4 + ae538e5 + bf68265 + c222657 + 56e71f6 + b95fff7 + 7736317 + 8a3b848 + e18ea15 + ae1a095 + a18a97f + c3ef55c + 09f0424 + 6369f0d + bbce3db + e7612d4 + af38e3f + cd3f4d4 + 498edd0 + a792bd9 + 9922da0 + 350dc8b + d9ed179 + 622be5c + 7960d27 + a406fa3 + b68216d + 0ff2c31 + 9b14073 + 3983ab0 + f028776 + 60ef0d1 + 76edd11 + a72a9a7 + cd04c57 + a0d5cbd + f0a6e98 + 7f1c971 commit 3e94e0a
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 11 deletions.
15 changes: 4 additions & 11 deletions src/Paginator.php
Original file line number Diff line number Diff line change
Expand Up @@ -372,11 +372,8 @@ public function clearPageItemCache($pageNumber = null)
$cacheIterator = static::$cache->getIterator();
$cacheIterator->setMode(CacheIterator::CURRENT_AS_KEY);
foreach ($cacheIterator as $key) {
$tags = static::$cache->getTags($key);
if ($tags && in_array($this->_getCacheInternalId(), $tags)) {
if (substr($key, 0, $prefixLength) == self::CACHE_TAG_PREFIX) {
static::$cache->removeItem($this->_getCacheId((int)substr($key, $prefixLength)));
}
if (substr($key, 0, $prefixLength) == self::CACHE_TAG_PREFIX) {
static::$cache->removeItem($this->_getCacheId((int)substr($key, $prefixLength)));
}
}
} else {
Expand Down Expand Up @@ -617,7 +614,6 @@ public function getItemsByPage($pageNumber)
if ($this->cacheEnabled()) {
$cacheId = $this->_getCacheId($pageNumber);
static::$cache->setItem($cacheId, $items);
static::$cache->setTags($cacheId, array($this->_getCacheInternalId()));
}

return $items;
Expand Down Expand Up @@ -710,11 +706,8 @@ public function getPageItemCache()
$cacheIterator = static::$cache->getIterator();
$cacheIterator->setMode(CacheIterator::CURRENT_AS_VALUE);
foreach ($cacheIterator as $key => $value) {
$tags = static::$cache->getTags($key);
if ($tags && in_array($this->_getCacheInternalId(), $tags)) {
if (substr($key, 0, $prefixLength) == self::CACHE_TAG_PREFIX) {
$data[(int) substr($key, $prefixLength)] = $value;
}
if (substr($key, 0, $prefixLength) == self::CACHE_TAG_PREFIX) {
$data[(int) substr($key, $prefixLength)] = $value;
}
}
}
Expand Down
13 changes: 13 additions & 0 deletions test/PaginatorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
use ArrayObject;
use ReflectionMethod;
use stdClass;
use Zend\Cache\Storage\StorageInterface;
use Zend\Cache\StorageFactory as CacheFactory;
use Zend\Config;
use Zend\Db\ResultSet\ResultSet;
Expand Down Expand Up @@ -41,6 +42,9 @@ class PaginatorTest extends \PHPUnit_Framework_TestCase

protected $testCollection = null;

/**
* @var StorageInterface
*/
protected $cache;
protected $cacheDir;

Expand Down Expand Up @@ -573,6 +577,9 @@ public function testCachedItem()
$this->paginator->setCurrentPageNumber(2)->getCurrentItems();
$this->paginator->setCurrentPageNumber(3)->getCurrentItems();

// cache entry to check that paginator loads only own items
$this->cache->addItem('not_paginator_item', 42);

$pageItems = $this->paginator->getPageItemCache();
$expected = array(
1 => new \ArrayIterator(range(1, 10)),
Expand All @@ -588,6 +595,9 @@ public function testClearPageItemCache()
$this->paginator->setCurrentPageNumber(2)->getCurrentItems();
$this->paginator->setCurrentPageNumber(3)->getCurrentItems();

// cache entry to check that paginator deletes only own items
$this->cache->addItem('not_paginator_item', 42);

// clear only page 2 items
$this->paginator->clearPageItemCache(2);
$pageItems = $this->paginator->getPageItemCache();
Expand All @@ -601,6 +611,9 @@ public function testClearPageItemCache()
$this->paginator->clearPageItemCache();
$pageItems = $this->paginator->getPageItemCache();
$this->assertEquals(array(), $pageItems);

// assert that cache items not from paginator are not cleared
$this->assertEquals(42, $this->cache->getItem('not_paginator_item'));
}

public function testWithCacheDisabled()
Expand Down

0 comments on commit 3e94e0a

Please sign in to comment.