Completed
Push — master ( 7f4fe5...70b2c3 )
by Peter
02:55
created

Comparator::compareYear()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 3
crap 1
1
<?php
2
/**
3
 * GpsLab component.
4
 *
5
 * @author    Peter Gribanov <[email protected]>
6
 * @copyright Copyright (c) 2016, Peter Gribanov
7
 * @license   http://opensource.org/licenses/MIT
8
 */
9
10
namespace GpsLab\Bundle\DateBundle\TimeZone;
11
12
use GpsLab\Bundle\DateBundle\Comparator as DateComparator;
13
use GpsLab\Bundle\DateBundle\TimeZone\Keeper\KeeperInterface;
14
15
class Comparator extends DateComparator
16
{
17
    /**
18
     * @var KeeperInterface
19
     */
20
    protected $keeper;
21
22
    /**
23
     * @param KeeperInterface $keeper
24
     */
25 79
    public function __construct(KeeperInterface $keeper)
26
    {
27 79
        $this->keeper = $keeper;
28 79
    }
29
30
    /**
31
     * Synonym for Comparator::compareDateTime().
32
     *
33
     * @param \DateTime $x
34
     * @param string $operator
35
     * @param \DateTime $y
36
     *
37
     * @return bool
38
     */
39 25
    public function compare(\DateTime $x, $operator, \DateTime $y)
40
    {
41 25
        return $this->compareDateTime($x, $operator, $y);
42
    }
43
44
    /**
45
     * Compare date and time.
46
     *
47
     * @param \DateTime $x
48
     * @param string $operator
49
     * @param \DateTime $y
50
     *
51
     * @return bool
52
     */
53 79
    public function compareDateTime(\DateTime $x, $operator, \DateTime $y)
54
    {
55 79
        return parent::compareDateTime($this->resetTimezone($x), $operator, $this->resetTimezone($y));
56
    }
57
58
    /**
59
     * Compare only date. Not compare time.
60
     *
61
     * @param \DateTime $x
62
     * @param string $operator
63
     * @param \DateTime $y
64
     *
65
     * @return bool
66
     */
67 13
    public function compareDate(\DateTime $x, $operator, \DateTime $y)
68
    {
69 13
        return parent::compareDate($this->resetTimezone($x), $operator, $this->resetTimezone($y));
70
    }
71
72
    /**
73
     * Compare only time. Not compare date.
74
     *
75
     * @param \DateTime $x
76
     * @param string $operator
77
     * @param \DateTime $y
78
     *
79
     * @return bool
80
     */
81 13
    public function compareTime(\DateTime $x, $operator, \DateTime $y)
82
    {
83 13
        return parent::compareTime($this->resetTimezone($x), $operator, $this->resetTimezone($y));
84
    }
85
86
    /**
87
     * @param \DateTime $x
88
     * @param string $operator
89
     * @param \DateTime $y
90
     *
91
     * @return bool
92
     */
93 13
    public function compareWeek(\DateTime $x, $operator, \DateTime $y)
94
    {
95 13
        return parent::compareWeek($this->resetTimezone($x), $operator, $this->resetTimezone($y));
96
    }
97
98
    /**
99
     * @param \DateTime $x
100
     * @param string $operator
101
     * @param \DateTime $y
102
     *
103
     * @return bool
104
     */
105 13
    public function compareMonth(\DateTime $x, $operator, \DateTime $y)
106
    {
107 13
        return parent::compareMonth($this->resetTimezone($x), $operator, $this->resetTimezone($y));
108
    }
109
110
    /**
111
     * @param \DateTime $x
112
     * @param string $operator
113
     * @param \DateTime $y
114
     *
115
     * @return bool
116
     */
117 13
    public function compareYear(\DateTime $x, $operator, \DateTime $y)
118
    {
119 13
        return parent::compareYear($this->resetTimezone($x), $operator, $this->resetTimezone($y));
120
    }
121
122
    /**
123
     * @param \DateTime $date
124
     *
125
     * @return \DateTime
126
     */
127 79
    protected function resetTimezone(\DateTime $date)
128
    {
129 79
        $date = clone $date;
130 79
        $date->setTimezone($this->keeper->getDefaultTimeZone());
131
132 79
        return $date;
133
    }
134
}
135