GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( 940f7c...e69234 )
by Robert
09:36
created

TagDependency::isChanged()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 5
ccs 3
cts 3
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 1
crap 1
1
<?php
2
/**
3
 * @link http://www.yiiframework.com/
4
 * @copyright Copyright (c) 2008 Yii Software LLC
5
 * @license http://www.yiiframework.com/license/
6
 */
7
8
namespace yii\caching;
9
10
/**
11
 * TagDependency associates a cached data item with one or multiple [[tags]].
12
 *
13
 * By calling [[invalidate()]], you can invalidate all cached data items that are associated with the specified tag name(s).
14
 *
15
 * ```php
16
 * // setting multiple cache keys to store data forever and tagging them with "user-123"
17
 * Yii::$app->cache->set('user_42_profile', '', 0, new TagDependency(['tags' => 'user-123']));
18
 * Yii::$app->cache->set('user_42_stats', '', 0, new TagDependency(['tags' => 'user-123']));
19
 *
20
 * // invalidating all keys tagged with "user-123"
21
 * TagDependency::invalidate(Yii::$app->cache, 'user-123');
22
 * ```
23
 *
24
 * For more details and usage information on Cache, see the [guide article on caching](guide:caching-overview).
25
 *
26
 * @author Qiang Xue <[email protected]>
27
 * @since 2.0
28
 */
29
class TagDependency extends Dependency
30
{
31
    /**
32
     * @var string|array a list of tag names for this dependency. For a single tag, you may specify it as a string.
33
     */
34
    public $tags = [];
35
36
37
    /**
38
     * Generates the data needed to determine if dependency has been changed.
39
     * This method does nothing in this class.
40
     * @param Cache $cache the cache component that is currently evaluating this dependency
41
     * @return mixed the data needed to determine if dependency has been changed.
42
     */
43 8
    protected function generateDependencyData($cache)
44
    {
45 8
        $timestamps = $this->getTimestamps($cache, (array) $this->tags);
46
47 8
        $newKeys = [];
48 8
        foreach ($timestamps as $key => $timestamp) {
49 8
            if ($timestamp === false) {
50 5
                $newKeys[] = $key;
51 5
            }
52 8
        }
53 8
        if (!empty($newKeys)) {
54 5
            $timestamps = array_merge($timestamps, static::touchKeys($cache, $newKeys));
55 5
        }
56
57 8
        return $timestamps;
58
    }
59
60
    /**
61
     * @inheritdoc
62
     */
63 2
    public function isChanged($cache)
64
    {
65 2
        $timestamps = $this->getTimestamps($cache, (array) $this->tags);
66 2
        return $timestamps !== $this->data;
67
    }
68
69
    /**
70
     * Invalidates all of the cached data items that are associated with any of the specified [[tags]].
71
     * @param Cache $cache the cache component that caches the data items
72
     * @param string|array $tags
73
     */
74 2
    public static function invalidate($cache, $tags)
75
    {
76 2
        $keys = [];
77 2
        foreach ((array) $tags as $tag) {
78 2
            $keys[] = $cache->buildKey([__CLASS__, $tag]);
79 2
        }
80 2
        static::touchKeys($cache, $keys);
81 2
    }
82
83
    /**
84
     * Generates the timestamp for the specified cache keys.
85
     * @param Cache $cache
86
     * @param string[] $keys
87
     * @return array the timestamp indexed by cache keys
88
     */
89 5
    protected static function touchKeys($cache, $keys)
90
    {
91 5
        $items = [];
92 5
        $time = microtime();
93 5
        foreach ($keys as $key) {
94 5
            $items[$key] = $time;
95 5
        }
96 5
        $cache->multiSet($items);
97 5
        return $items;
98
    }
99
100
    /**
101
     * Returns the timestamps for the specified tags.
102
     * @param Cache $cache
103
     * @param string[] $tags
104
     * @return array the timestamps indexed by the specified tags.
105
     */
106 8
    protected function getTimestamps($cache, $tags)
107
    {
108 8
        if (empty($tags)) {
109
            return [];
110
        }
111
112 8
        $keys = [];
113 8
        foreach ($tags as $tag) {
114 8
            $keys[] = $cache->buildKey([__CLASS__, $tag]);
115 8
        }
116
117 8
        return $cache->multiGet($keys);
118
    }
119
}
120