ExpiryDateProviderTrait::getExpiryUTCTimestamp()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 15
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 15
ccs 0
cts 8
cp 0
rs 9.4285
cc 3
eloc 8
nc 3
nop 0
crap 12
1
<?php
2
/**
3
 * @author Stefano Torresi (http://stefanotorresi.it)
4
 * @license See the file LICENSE.txt for copying permission.
5
 * ************************************************
6
 */
7
8
namespace Thorr\OAuth2\Entity;
9
10
use DateTime;
11
use DateTimeZone;
12
13
trait ExpiryDateProviderTrait
14
{
15
    /**
16
     * @var DateTime
17
     */
18
    protected $expiryDate;
19
20
    /**
21
     * @param DateTime $expiryDate
22
     */
23
    public function setExpiryDate(DateTime $expiryDate = null)
24
    {
25
        if ($expiryDate instanceof DateTime) {
26
            $expiryDate->setTimezone(new DateTimeZone(date_default_timezone_get()));
27
        }
28
29
        $this->expiryDate = $expiryDate;
30
    }
31
32
    /**
33
     * @return DateTime
34
     */
35
    public function getExpiryDate()
36
    {
37
        return $this->expiryDate;
38
    }
39
40
    /**
41
     * @return bool
42
     */
43
    public function isExpired()
44
    {
45
        return $this->expiryDate !== null && $this->expiryDate < new DateTime('now');
46
    }
47
48
    /**
49
     * @return int
50
     */
51
    public function getExpiryUTCTimestamp()
52
    {
53
        if (! $this->expiryDate instanceof DateTime) {
54
            return;
55
        }
56
57
        if ($this->expiryDate->getTimezone()->getOffset($this->expiryDate) === 0) {
58
            return $this->expiryDate->getTimestamp();
59
        }
60
61
        $utcDate = clone $this->expiryDate;
62
        $utcDate->setTimezone(new DateTimeZone('UTC'));
63
64
        return $utcDate->getTimestamp();
65
    }
66
}
67