Passed
Push — 4.1.1 ( 01ed8a )
by Robbie
09:45
created

TestCacheFlusher::flushMemberCache()   B

Complexity

Conditions 7
Paths 9

Size

Total Lines 16
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 7
eloc 9
nc 9
nop 1
dl 0
loc 16
rs 8.2222
c 0
b 0
f 0
1
<?php
2
3
namespace SilverStripe\Security\Tests\InheritedPermissionsFlusherTest;
4
5
use Psr\SimpleCache\CacheInterface;
6
use SilverStripe\Core\Cache\MemberCacheFlusher;
7
8
class TestCacheFlusher implements MemberCacheFlusher
9
{
10
    /**
11
     * @var array
12
     */
13
    public static $categories = [
14
        'apples',
15
        'pears',
16
        'bananas',
17
    ];
18
19
    /**
20
     * @var CacheInterface
21
     */
22
    public $cache;
23
24
    /**
25
     * TestCacheFlusher constructor.
26
     * @param CacheInterface $cache
27
     */
28
    public function __construct(CacheInterface $cache)
29
    {
30
        $this->cache = $cache;
31
    }
32
33
    /**
34
     * Clear the cache for this instance only
35
     *
36
     * @param array $memberIDs A list of member IDs
37
     */
38
    public function flushMemberCache($memberIDs = null)
39
    {
40
        if (!$this->cache) {
41
            return;
42
        }
43
44
        // Hard flush, e.g. flush=1
45
        if (!$memberIDs) {
46
            $this->cache->clear();
47
        }
48
49
        if ($memberIDs && is_array($memberIDs)) {
50
            foreach (self::$categories as $category) {
51
                foreach ($memberIDs as $memberID) {
52
                    $key = $this->generateCacheKey($category, $memberID);
53
                    $this->cache->delete($key);
54
                }
55
            }
56
        }
57
    }
58
59
    /**
60
     * @param $category
61
     * @param $memberID
62
     * @return string
63
     */
64
    public function generateCacheKey($category, $memberID)
65
    {
66
        return "{$category}__{$memberID}";
67
    }
68
}
69