silverstripe-framework/tests/php/Security/InheritedPermissionsFlusherTest/TestCacheFlusher.php
2017-12-11 16:46:59 +13:00

69 lines
1.4 KiB
PHP

<?php
namespace SilverStripe\Security\Tests\InheritedPermissionsFlusherTest;
use Psr\SimpleCache\CacheInterface;
use SilverStripe\Core\Cache\MemberCacheFlusher;
class TestCacheFlusher implements MemberCacheFlusher
{
/**
* @var array
*/
public static $categories = [
'apples',
'pears',
'bananas',
];
/**
* @var CacheInterface
*/
public $cache;
/**
* TestCacheFlusher constructor.
* @param CacheInterface $cache
*/
public function __construct(CacheInterface $cache)
{
$this->cache = $cache;
}
/**
* Clear the cache for this instance only
*
* @param array $memberIDs A list of member IDs
*/
public function flushMemberCache($memberIDs = null)
{
if (!$this->cache) {
return;
}
// Hard flush, e.g. flush=1
if (!$memberIDs) {
$this->cache->clear();
}
if ($memberIDs && is_array($memberIDs)) {
foreach (self::$categories as $category) {
foreach ($memberIDs as $memberID) {
$key = $this->generateCacheKey($category, $memberID);
$this->cache->delete($key);
}
}
}
}
/**
* @param $category
* @param $memberID
* @return string
*/
public function generateCacheKey($category, $memberID)
{
return "{$category}__{$memberID}";
}
}