public function testTagable() { if (!$this->_storage instanceof TaggableInterface) { $this->markTestSkipped("Storage doesn't implement TaggableInterface"); } $this->assertSame(array(), $this->_storage->setItems(array('key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3'))); $this->assertTrue($this->_storage->setTags('key1', array('tag1a', 'tag1b'))); $this->assertTrue($this->_storage->setTags('key2', array('tag2a', 'tag2b'))); $this->assertTrue($this->_storage->setTags('key3', array('tag3a', 'tag3b'))); $this->assertFalse($this->_storage->setTags('missing', array('tag'))); // return tags $tags = $this->_storage->getTags('key1'); $this->assertInternalType('array', $tags); sort($tags); $this->assertSame(array('tag1a', 'tag1b'), $tags); // this should remove nothing $this->assertTrue($this->_storage->clearByTags(array('tag1a', 'tag2a'))); $this->assertTrue($this->_storage->hasItem('key1')); $this->assertTrue($this->_storage->hasItem('key2')); $this->assertTrue($this->_storage->hasItem('key3')); // this should remove key1 and key2 $this->assertTrue($this->_storage->clearByTags(array('tag1a', 'tag2b'), true)); $this->assertFalse($this->_storage->hasItem('key1')); $this->assertFalse($this->_storage->hasItem('key2')); $this->assertTrue($this->_storage->hasItem('key3')); // this should remove key3 $this->assertTrue($this->_storage->clearByTags(array('tag3a', 'tag3b'), true)); $this->assertFalse($this->_storage->hasItem('key1')); $this->assertFalse($this->_storage->hasItem('key2')); $this->assertFalse($this->_storage->hasItem('key3')); }
/** * @group 6878 */ public function testTaggableFunctionsOnEmptyStorage() { if (!$this->_storage instanceof TaggableInterface) { $this->markTestSkipped("Storage doesn't implement TaggableInterface"); } $this->assertFalse($this->_storage->setTags('unknown', ['no'])); $this->assertFalse($this->_storage->getTags('unknown')); $this->assertTrue($this->_storage->clearByTags(['unknown'])); }
/** * Returns the page item cache. * * @return array */ public function getPageItemCache() { $data = array(); if ($this->cacheEnabled()) { $prefixLength = strlen(self::CACHE_TAG_PREFIX); $cacheIterator = self::$cache->getIterator(); $cacheIterator->setMode(CacheIterator::CURRENT_AS_VALUE); foreach ($cacheIterator as $key => $value) { $tags = self::$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; } } } } return $data; }