Failed Conditions
Pull Request — 2.8.x (#7919)
by
unknown
07:31
created

TimestampQueryCacheValidator::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
/*
4
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
5
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
6
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
7
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
8
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
9
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
10
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
11
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
12
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
13
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
14
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
15
 *
16
 * This software consists of voluntary contributions made by many individuals
17
 * and is licensed under the MIT license. For more information, see
18
 * <http://www.doctrine-project.org>.
19
 */
20
21
namespace Doctrine\ORM\Cache;
22
23
/**
24
 * @since   2.5
25
 * @author  Fabio B. Silva <[email protected]>
26
 */
27
class TimestampQueryCacheValidator implements QueryCacheValidator
28
{
29
    /**
30
     * @var TimestampRegion
31
     */
32
    private $timestampRegion;
33
34
    /**
35
     * @param TimestampRegion $timestampRegion
36
     */
37 47
    public function __construct(TimestampRegion $timestampRegion)
38
    {
39 47
        $this->timestampRegion = $timestampRegion;
40 47
    }
41
42
    /**
43
     * {@inheritdoc}
44
     */
45 1
    public function isValid(QueryCacheKey $key, QueryCacheEntry $entry)
46
    {
47 1
        if ($this->regionUpdated($key, $entry)) {
48
            return false;
49
        }
50
51 1
        if ($key->lifetime == 0) {
52
            return true;
53
        }
54
55 1
        return ($entry->time + $key->lifetime) > microtime(true);
56
    }
57
58
    /**
59
     * @param QueryCacheKey   $key
60
     * @param QueryCacheEntry $entry
61
     *
62
     * @return bool
63
     */
64 1
    private function regionUpdated(QueryCacheKey $key, QueryCacheEntry $entry)
65
    {
66 1
        if ($key->timestampKey === null) {
67 1
            return false;
68
        }
69
70
        $timestamp = $this->timestampRegion->get($key->timestampKey);
71
72
        return $timestamp && $timestamp->time > $entry->time;
0 ignored issues
show
Bug introduced by
Accessing time on the interface Doctrine\ORM\Cache\CacheEntry suggest that you code against a concrete implementation. How about adding an instanceof check?
Loading history...
73
    }
74
}
75