/**
  * @param Event  $e
  * @param string $class
  * @param string $event
  * @return void
  */
 public function invalidate(Event $e, $class, $event)
 {
     $term = $e->getParam('term');
     $result = false;
     if ($term instanceof TaxonomyTermInterface) {
         $result = $this->cacheService->clearByTags(['route_taxonomy/term/get', 'param_term_' . $term->getId()]);
         $this->cacheService->clearByTags(['navigation/render']);
         $this->clearParents($term);
     }
     if ($this->storage instanceof FlushableInterface && !$result) {
         $this->storage->flush();
     }
 }
 /**
  * @param Event  $e
  * @param string $class
  * @param string $event
  * @return void
  */
 public function invalidate(Event $e, $class, $event)
 {
     $repository = $e->getParam('repository');
     $result = false;
     if ($repository instanceof EntityInterface) {
         $result = $this->cacheService->clearByTags(['route_entity/page', 'param_entity_' . $repository->getId()]);
         $this->clearTaxonomyTerms($repository->getTaxonomyTerms());
     } elseif ($repository instanceof PageRepositoryInterface) {
         $result = $this->cacheService->clearByTags(['route_page/view', 'param_page_' . $repository->getId()]);
     }
     if ($this->storage instanceof FlushableInterface && !$result) {
         $this->storage->flush();
     }
 }
Пример #3
0
 /**
  * Object destructor
  *
  * Clean up cache storage
  */
 public function __destruct()
 {
     if ($this->cache !== null) {
         if ($this->cache instanceof ClearByNamespaceCacheStorage) {
             $this->cache->clearByNamespace($this->cache->getOptions()->getNamespace());
         } elseif ($this->cache instanceof FlushableCacheStorage) {
             $this->cache->flush();
         }
     }
 }
Пример #4
0
 public function testFlush()
 {
     if (!$this->_storage instanceof FlushableInterface) {
         $this->markTestSkipped("Storage doesn't implement OptimizableInterface");
     }
     $this->assertSame(array(), $this->_storage->setItems(array('key1' => 'value1', 'key2' => 'value2')));
     $this->assertTrue($this->_storage->flush());
     $this->assertFalse($this->_storage->hasItem('key1'));
     $this->assertFalse($this->_storage->hasItem('key2'));
 }
 /**
  * Deletes all items in the pool.
  *
  * @return bool
  *   True if the pool was successfully cleared. False if there was an error.
  */
 public function clear()
 {
     $cleared = false;
     try {
         /* @todo Not at all sure about this... do we really want to flush()? What happens if the storage supports
            /*       namespaces, but none has been provided? */
         $options = $this->storage->getOptions();
         $namespace = $options->getNamespace();
         if ($this->storage instanceof ClearByNamespaceInterface && $namespace) {
             $cleared = $this->storage->clearByNamespace($namespace);
         } elseif ($this->storage instanceof FlushableInterface) {
             $cleared = $this->storage->flush();
         } else {
             throw new CacheException(sprintf("Storage %s does not support clear()", get_class($this->storage)));
         }
     } catch (Exception\InvalidArgumentException $e) {
         throw new InvalidArgumentException($e->getMessage(), $e->getCode(), $e);
     } catch (Exception\ExceptionInterface $e) {
         throw new CacheException($e->getMessage(), $e->getCode(), $e);
     }
     return $cleared;
 }
 /**
  * @param Event  $e
  * @param string $class
  * @param string $event
  * @return void
  */
 public function invalidate(Event $e, $class, $event)
 {
     if ($this->storage instanceof FlushableInterface) {
         $this->storage->flush();
     }
 }