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 ( b4985c...2d21f4 )
by Ruben
03:45
created

Event::getRequiredProperties()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 8
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace Spatie\IcalendarGenerator\Components;
4
5
use DateTime;
6
use DateInterval;
7
use DateTimeImmutable;
8
use DateTimeInterface;
9
use Spatie\IcalendarGenerator\ComponentPayload;
10
11
final class Event extends Component
12
{
13
    /** @var array */
14
    private $alerts = [];
15
16
    /** @var \DateTimeInterface */
17
    private $starts;
18
19
    /** @var \DateTimeInterface */
20
    private $ends;
21
22
    /** @var string */
23
    private $name;
24
25
    /** @var string|null */
26
    private $description;
27
28
    /** @var string|null */
29
    private $location;
30
31
    /** @var string */
32
    private $uuid;
33
34
    /** @var \DateTimeInterface */
35
    private $created;
36
37
    /** @var bool */
38
    private $withTimezone = false;
39
40
    /** @var bool */
41
    private $isFullDay = false;
42
43
    public static function create(string $name = null): Event
44
    {
45
        return new self($name);
46
    }
47
48
    public function __construct(string $name = null)
49
    {
50
        $this->name = $name;
51
        $this->uuid = uniqid();
52
        $this->created = new DateTimeImmutable();
53
    }
54
55
    public function getComponentType(): string
56
    {
57
        return 'EVENT';
58
    }
59
60
    public function getRequiredProperties(): array
61
    {
62
        return [
63
            'UID',
64
            'DTSTAMP',
65
            'DTSTART',
66
        ];
67
    }
68
69
    public function startsAt(DateTimeInterface $starts): Event
70
    {
71
        $this->starts = $starts;
72
73
        return $this;
74
    }
75
76
    public function endsAt(DateTimeInterface $ends): Event
77
    {
78
        $this->ends = $ends;
79
80
        return $this;
81
    }
82
83
    public function period(DateTimeInterface $starts, DateTimeInterface $ends): Event
84
    {
85
        $this->starts = $starts;
86
        $this->ends = $ends;
87
88
        return $this;
89
    }
90
91
    public function name(string $name): Event
92
    {
93
        $this->name = $name;
94
95
        return $this;
96
    }
97
98
    public function description(string $description): Event
99
    {
100
        $this->description = $description;
101
102
        return $this;
103
    }
104
105
    public function location(string $location): Event
106
    {
107
        $this->location = $location;
108
109
        return $this;
110
    }
111
112
    public function uniqueIdentifier(string $uid): Event
113
    {
114
        $this->uuid = $uid;
115
116
        return $this;
117
    }
118
119
    public function createdAt(DateTimeInterface $created): Event
120
    {
121
        $this->created = $created;
122
123
        return $this;
124
    }
125
126
    public function withTimezone(): Event
127
    {
128
        $this->withTimezone = true;
129
130
        return $this;
131
    }
132
133
    public function fullDay(): Event
134
    {
135
        $this->isFullDay = true;
136
137
        return $this;
138
    }
139
140
    public function alertMinutesBefore(int $minutes, string $message = null): Event
141
    {
142
        $trigger = new DateTime($this->starts);
143
144
        $this->alerts[] = Alert::create(
145
            $trigger->add(new DateInterval("PT${$minutes}M")),
146
            $message ?? $this->name
147
        );
148
    }
149
150
    public function getPayload(): ComponentPayload
151
    {
152
        return ComponentPayload::create($this->getComponentType())
153
            ->textProperty('UID', $this->uuid)
154
            ->textProperty('SUMMARY', $this->name)
155
            ->textProperty('DESCRIPTION', $this->description)
156
            ->textProperty('LOCATION', $this->location)
157
            ->dateTimeProperty('DTSTART', $this->starts, ! $this->isFullDay, $this->withTimezone)
158
            ->dateTimeProperty('DTEND', $this->ends, ! $this->isFullDay, $this->withTimezone)
159
            ->dateTimeProperty('DTSTAMP', $this->created, true, $this->withTimezone)
160
            ->subComponent(...$this->alerts);
161
    }
162
}
163