ExpiryDateProviderTrait   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 54
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Test Coverage

Coverage 0%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 8
c 2
b 0
f 0
lcom 1
cbo 0
dl 0
loc 54
ccs 0
cts 18
cp 0
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A setExpiryDate() 0 8 2
A getExpiryDate() 0 4 1
A isExpired() 0 4 2
A getExpiryUTCTimestamp() 0 15 3
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