Adapt to new MemberCacheFlusher interface

This commit is contained in:
Aaron Carlino 2017-12-07 16:15:55 +13:00 committed by Damian Mooyman
parent 45999e1133
commit 2be902ef2f
2 changed files with 9 additions and 9 deletions

View File

@ -9,7 +9,7 @@ use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\Hierarchy\Hierarchy; use SilverStripe\ORM\Hierarchy\Hierarchy;
use SilverStripe\Versioned\Versioned; use SilverStripe\Versioned\Versioned;
use Psr\SimpleCache\CacheInterface; use Psr\SimpleCache\CacheInterface;
use SilverStripe\Core\Cache\CacheFlusher; use SilverStripe\Core\Cache\MemberCacheFlusher;
/** /**
* Calculates batch permissions for nested objects for: * Calculates batch permissions for nested objects for:
* - canView: Supports 'Anyone' type * - canView: Supports 'Anyone' type
@ -17,7 +17,7 @@ use SilverStripe\Core\Cache\CacheFlusher;
* - canDelete: Includes special logic for ensuring parent objects can only be deleted if their children can * - canDelete: Includes special logic for ensuring parent objects can only be deleted if their children can
* be deleted also. * be deleted also.
*/ */
class InheritedPermissions implements PermissionChecker, CacheFlusher class InheritedPermissions implements PermissionChecker, MemberCacheFlusher
{ {
use Injectable; use Injectable;
@ -127,20 +127,20 @@ class InheritedPermissions implements PermissionChecker, CacheFlusher
* Clear the cache for this instance only * Clear the cache for this instance only
* @param array $ids A list of member IDs * @param array $ids A list of member IDs
*/ */
public function flushCache($ids = null) public function flushMemberCache($memberIDs = null)
{ {
if (!$this->cacheService) { if (!$this->cacheService) {
return; return;
} }
// Hard flush, e.g. flush=1 // Hard flush, e.g. flush=1
if (!$ids) { if (!$memberIDs) {
$this->cacheService->clear(); $this->cacheService->clear();
} }
if ($ids && is_array($ids)) { if ($memberIDs && is_array($memberIDs)) {
foreach ([self::VIEW, self::EDIT, self::DELETE] as $type) { foreach ([self::VIEW, self::EDIT, self::DELETE] as $type) {
foreach ($ids as $memberID) { foreach ($memberIDs as $memberID) {
$key = $this->generateCacheKey($type, $memberID); $key = $this->generateCacheKey($type, $memberID);
$this->cacheService->delete($key); $this->cacheService->delete($key);
} }

View File

@ -347,13 +347,13 @@ class InheritedPermissionsTest extends SapphireTest
$permissionChecker = new InheritedPermissions(TestPermissionNode::class, $cache); $permissionChecker = new InheritedPermissions(TestPermissionNode::class, $cache);
// Non existent ID // Non existent ID
$permissionChecker->flushCache('dummy'); $permissionChecker->flushMemberCache('dummy');
foreach([$editKey1, $editKey2, $viewKey1, $viewKey2] as $key) { foreach([$editKey1, $editKey2, $viewKey1, $viewKey2] as $key) {
$this->assertNotNull($cache->get($key)); $this->assertNotNull($cache->get($key));
} }
// Precision strike // Precision strike
$permissionChecker->flushCache([$member1->ID]); $permissionChecker->flushMemberCache([$member1->ID]);
// Member1 should be clear // Member1 should be clear
$this->assertNull($cache->get($editKey1)); $this->assertNull($cache->get($editKey1));
$this->assertNull($cache->get($viewKey1)); $this->assertNull($cache->get($viewKey1));
@ -362,7 +362,7 @@ class InheritedPermissionsTest extends SapphireTest
$this->assertNotNull($cache->get($viewKey2)); $this->assertNotNull($cache->get($viewKey2));
// Nuclear // Nuclear
$permissionChecker->flushCache(); $permissionChecker->flushMemberCache();
foreach([$editKey1, $editKey2, $viewKey1, $viewKey2] as $key) { foreach([$editKey1, $editKey2, $viewKey1, $viewKey2] as $key) {
$this->assertNull($cache->get($key)); $this->assertNull($cache->get($key));
} }