|
<?php |
|
|
|
namespace Kanboard\ServiceProvider; |
|
|
|
use Kanboard\Core\Cache\FileCache; |
|
use Kanboard\Core\Cache\MemoryCache; |
|
use Kanboard\Decorator\ColumnMoveRestrictionCacheDecorator; |
|
use Kanboard\Decorator\ColumnRestrictionCacheDecorator; |
|
use Kanboard\Decorator\MetadataCacheDecorator; |
|
use Kanboard\Decorator\ProjectRoleRestrictionCacheDecorator; |
|
use Kanboard\Decorator\UserCacheDecorator; |
|
use Pimple\Container; |
|
use Pimple\ServiceProviderInterface; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CacheProvider implements ServiceProviderInterface |
|
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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['userCacheDecorator'] = function($c) { |
|
return new UserCacheDecorator( |
|
$c['memoryCache'], |
|
$c['userModel'] |
|
); |
|
}; |
|
|
|
$container['userMetadataCacheDecorator'] = function($c) { |
|
return new MetadataCacheDecorator( |
|
$c['cacheDriver'], |
|
$c['userMetadataModel'], |
|
'user.metadata.', |
|
$c['userSession']->getId() |
|
); |
|
}; |
|
|
|
$container['columnMoveRestrictionCacheDecorator'] = function($c) { |
|
return new ColumnMoveRestrictionCacheDecorator( |
|
$c['memoryCache'], |
|
$c['columnMoveRestrictionModel'] |
|
); |
|
}; |
|
|
|
$container['columnRestrictionCacheDecorator'] = function($c) { |
|
return new ColumnRestrictionCacheDecorator( |
|
$c['memoryCache'], |
|
$c['columnRestrictionModel'] |
|
); |
|
}; |
|
|
|
$container['projectRoleRestrictionCacheDecorator'] = function($c) { |
|
return new ProjectRoleRestrictionCacheDecorator( |
|
$c['memoryCache'], |
|
$c['projectRoleRestrictionModel'] |
|
); |
|
}; |
|
|
|
return $container; |
|
} |
|
} |
|
|