|
<?php |
|
|
|
namespace Kanboard\Decorator; |
|
|
|
use Kanboard\Core\Cache\CacheInterface; |
|
use Kanboard\Model\MetadataModel; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class MetadataCacheDecorator |
|
{ |
|
|
|
|
|
|
|
protected $cache; |
|
|
|
|
|
|
|
|
|
protected $metadataModel; |
|
|
|
|
|
|
|
|
|
protected $cachePrefix; |
|
|
|
|
|
|
|
|
|
protected $entityId; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function __construct(CacheInterface $cache, MetadataModel $metadataModel, $cachePrefix, $entityId) |
|
{ |
|
$this->cache = $cache; |
|
$this->metadataModel = $metadataModel; |
|
$this->cachePrefix = $cachePrefix; |
|
$this->entityId = $entityId; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function get($key, $default) |
|
{ |
|
$metadata = $this->cache->get($this->getCacheKey()); |
|
|
|
if ($metadata === null) { |
|
$metadata = $this->metadataModel->getAll($this->entityId); |
|
$this->cache->set($this->getCacheKey(), $metadata); |
|
} |
|
|
|
return isset($metadata[$key]) ? $metadata[$key] : $default; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function set($key, $value) |
|
{ |
|
$this->metadataModel->save($this->entityId, array( |
|
$key => $value, |
|
)); |
|
|
|
$metadata = $this->metadataModel->getAll($this->entityId); |
|
$this->cache->set($this->getCacheKey(), $metadata); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
protected function getCacheKey() |
|
{ |
|
return $this->cachePrefix.$this->entityId; |
|
} |
|
} |
|
|