diff options
Diffstat (limited to 'app/ServiceProvider/CacheProvider.php')
-rw-r--r-- | app/ServiceProvider/CacheProvider.php | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/app/ServiceProvider/CacheProvider.php b/app/ServiceProvider/CacheProvider.php new file mode 100644 index 00000000..fac44d53 --- /dev/null +++ b/app/ServiceProvider/CacheProvider.php @@ -0,0 +1,51 @@ +<?php + +namespace Kanboard\ServiceProvider; + +use Kanboard\Core\Cache\FileCache; +use Kanboard\Core\Cache\MemoryCache; +use Kanboard\Decorator\MetadataCacheDecorator; +use Pimple\Container; +use Pimple\ServiceProviderInterface; + +/** + * Cache Provider + * + * @package Kanboard\ServiceProvider + * @author Frederic Guillot + */ +class CacheProvider implements ServiceProviderInterface +{ + /** + * Register providers + * + * @access public + * @param \Pimple\Container $container + * @return \Pimple\Container + */ + public function register(Container $container) + { + $container['memoryCache'] = function() { + return new MemoryCache(); + }; + + if (CACHE_DRIVER === 'file') { + $container['cacheDriver'] = function() { + return new FileCache(); + }; + } else { + $container['cacheDriver'] = $container['memoryCache']; + } + + $container['userMetadataCacheDecorator'] = function($c) { + return new MetadataCacheDecorator( + $c['cacheDriver'], + $c['userMetadataModel'], + 'user.metadata.', + $c['userSession']->getId() + ); + }; + + return $container; + } +} |