Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.2.x will end 22 April 2024 (12 months).
  • Bug fixes for security issues in 4.2.x will end 7 October 2024 (18 months).
  • PHP version: minimum PHP 8.0.0 Note: minimum PHP version has increased since Moodle 4.1. PHP 8.1.x is supported too.
   1  <?php
   2  
   3  namespace Kevinrob\GuzzleCache\Storage;
   4  
   5  use Doctrine\Common\Cache\Cache;
   6  use Kevinrob\GuzzleCache\CacheEntry;
   7  
   8  class CompressedDoctrineCacheStorage implements CacheStorageInterface
   9  {
  10      /**
  11       * @var Cache
  12       */
  13      protected $cache;
  14  
  15      /**
  16       * @param Cache $cache
  17       */
  18      public function __construct(Cache $cache)
  19      {
  20          $this->cache = $cache;
  21      }
  22  
  23      /**
  24       * {@inheritdoc}
  25       */
  26      public function fetch($key)
  27      {
  28          try {
  29              $cache = unserialize(gzuncompress($this->cache->fetch($key)));
  30              if ($cache instanceof CacheEntry) {
  31                  return $cache;
  32              }
  33          } catch (\Exception $ignored) {
  34              return;
  35          }
  36  
  37          return;
  38      }
  39  
  40      /**
  41       * {@inheritdoc}
  42       */
  43      public function save($key, CacheEntry $data)
  44      {
  45          try {
  46              $lifeTime = $data->getTTL();
  47              if ($lifeTime >= 0) {
  48                  return $this->cache->save(
  49                      $key,
  50                      gzcompress(serialize($data)),
  51                      $lifeTime
  52                  );
  53              }
  54          } catch (\Exception $ignored) {
  55              // No fail if we can't save it the storage
  56          }
  57  
  58          return false;
  59      }
  60  
  61      /**
  62       * {@inheritdoc}
  63       */
  64      public function delete($key)
  65      {
  66          try {
  67              return $this->cache->delete($key);
  68          } catch (\Exception $ignored) {
  69              // Don't fail if we can't delete it
  70          }
  71  
  72          return false;
  73      }
  74  }