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 Kevinrob\GuzzleCache\CacheEntry;
   6  use League\Flysystem\AdapterInterface;
   7  use League\Flysystem\Filesystem;
   8  use League\Flysystem\FileNotFoundException;
   9  
  10  class FlysystemStorage implements CacheStorageInterface
  11  {
  12  
  13      /**
  14       * @var Filesystem
  15       */
  16      protected $filesystem;
  17  
  18      public function __construct(AdapterInterface $adapter)
  19      {
  20          $this->filesystem = new Filesystem($adapter);
  21      }
  22  
  23      /**
  24       * @inheritdoc
  25       */
  26      public function fetch($key)
  27      {
  28          if ($this->filesystem->has($key)) {
  29              // The file exist, read it!
  30              $data = @unserialize(
  31                  $this->filesystem->read($key)
  32              );
  33  
  34              if ($data instanceof CacheEntry) {
  35                  return $data;
  36              }
  37          }
  38  
  39          return;
  40      }
  41  
  42      /**
  43       * @inheritdoc
  44       */
  45      public function save($key, CacheEntry $data)
  46      {
  47          return $this->filesystem->put($key, serialize($data));
  48      }
  49  
  50      /**
  51       * {@inheritdoc}
  52       */
  53      public function delete($key)
  54      {
  55          try {
  56              return $this->filesystem->delete($key);
  57          } catch (FileNotFoundException $ex) {
  58              return true;
  59          }
  60      }
  61  }