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 ( 97c43c...6b8cf1 )
by Robert
18:45
created

DbQueryDependency   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 80
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 90.48%

Importance

Changes 0
Metric Value
wmc 7
lcom 1
cbo 4
dl 0
loc 80
rs 10
c 0
b 0
f 0
ccs 19
cts 21
cp 0.9048

2 Methods

Rating   Name   Duplication   Size   Complexity  
B generateDependencyData() 0 23 4
A executeQuery() 0 10 3
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
use yii\base\InvalidConfigException;
11
use yii\db\QueryInterface;
12
use yii\di\Instance;
13
14
/**
15
 * DbQueryDependency represents a dependency based on the query result of an [[QueryInterface]] instance.
16
 *
17
 * If the query result changes, the dependency is considered as changed.
18
 * The query is specified via the [[query]] property.
19
 *
20
 * Object of any class which matches [[QueryInterface]] can be used, so this dependency can be used not only
21
 * with regular relational databases but with MongoDB, Redis and so on as well.
22
 *
23
 * For more details and usage information on Cache, see the [guide article on caching](guide:caching-overview).
24
 *
25
 * @see QueryInterface
26
 *
27
 * @author Paul Klimov <[email protected]>
28
 * @since 2.0.12
29
 */
30
class DbQueryDependency extends Dependency
31
{
32
    /**
33
     * @var string|array|object the application component ID of the database connection, connection object or
34
     * its array configuration.
35
     * This field can be left blank, allowing query to determine connection automatically.
36
     */
37
    public $db;
38
    /**
39
     * @var QueryInterface the query which result is used to determine if the dependency has been changed.
40
     * Actual query method to be invoked is determined by [[method]].
41
     */
42
    public $query;
43
    /**
44
     * @var string|callable method which should be invoked in over the [[query]] object.
45
     *
46
     * If specified as a string an own query method with such name will be invoked, passing [[db]] value as its
47
     * first argument. For example: `exists`, `all`.
48
     *
49
     * This field can be specified as a PHP callback of following signature:
50
     *
51
     * ```php
52
     * function (QueryInterface $query, mixed $db) {
53
     *     //return mixed;
54
     * }
55
     * ```
56
     *
57
     * If not set - [[QueryInterface::one()]] will be used.
58
     */
59
    public $method;
60
61
62
    /**
63
     * Generates the data needed to determine if dependency is changed.
64
     * This method returns the query result
65
     * @param Cache $cache the cache component that is currently evaluating this dependency
66
     * @return mixed the data needed to determine if dependency has been changed.
67
     * @throws InvalidConfigException on invalid configuration.
68
     */
69 3
    protected function generateDependencyData($cache)
70
    {
71 3
        $db = $this->db;
72 3
        if ($db !== null) {
73 3
            $db = Instance::ensure($db);
74 3
        }
75
76 3
        if (!$this->query instanceof QueryInterface) {
77
            throw new InvalidConfigException('"' . get_class($this) . '::$query" should be an instance of "yii\db\QueryInterface".');
78
        }
79
80 3
        if (!empty($db->enableQueryCache)) {
81
            // temporarily disable and re-enable query caching
82 3
            $originEnableQueryCache = $db->enableQueryCache;
83 3
            $db->enableQueryCache = false;
84 3
            $result = $this->executeQuery($this->query, $db);
85 3
            $db->enableQueryCache = $originEnableQueryCache;
86 3
        } else {
87
            $result = $this->executeQuery($this->query, $db);
88
        }
89
90 3
        return $result;
91
    }
92
93
    /**
94
     * Executes the query according to [[method]] specification.
95
     * @param QueryInterface $query query to be executed.
96
     * @param mixed $db connection.
97
     * @return mixed query result.
98
     */
99 3
    private function executeQuery($query, $db)
100
    {
101 3
        if ($this->method === null) {
102 1
            return $query->one($db);
103
        }
104 2
        if (is_string($this->method)) {
105 1
            return call_user_func([$query, $this->method], $db);
106
        }
107 1
        return call_user_func($this->method, $query, $db);
108
    }
109
}