Code Duplication    Length = 176-176 lines in 2 locations

src/Event/Events/EventCreated.php 1 location

@@ 18-193 (lines=176) @@
15
/**
16
 * Event when an event is created.
17
 */
18
class EventCreated extends EventEvent
19
{
20
    /**
21
     * @var Language
22
     */
23
    private $mainLanguage;
24
25
    /**
26
     * @var Title
27
     */
28
    private $title;
29
30
    /**
31
     * @var EventType
32
     */
33
    private $eventType = null;
34
35
    /**
36
     * @var Theme
37
     */
38
    private $theme = null;
39
40
    /**
41
     * @var Location
42
     */
43
    private $location;
44
45
    /**
46
     * @var CalendarInterface
47
     */
48
    private $calendar;
49
50
    /**
51
     * @var DateTimeImmutable|null
52
     */
53
    private $publicationDate = null;
54
55
    /**
56
     * @param string $eventId
57
     * @param Language $mainLanguage
58
     * @param Title $title
59
     * @param EventType $eventType
60
     * @param Location $location
61
     * @param CalendarInterface $calendar
62
     * @param Theme|null $theme
63
     * @param DateTimeImmutable|null $publicationDate
64
     */
65
    public function __construct(
66
        $eventId,
67
        Language $mainLanguage,
68
        Title $title,
69
        EventType $eventType,
70
        Location $location,
71
        CalendarInterface $calendar,
72
        Theme $theme = null,
73
        DateTimeImmutable $publicationDate = null
74
    ) {
75
        parent::__construct($eventId);
76
77
        $this->mainLanguage = $mainLanguage;
78
        $this->title = $title;
79
        $this->eventType = $eventType;
80
        $this->location = $location;
81
        $this->calendar = $calendar;
82
        $this->theme = $theme;
83
        $this->publicationDate = $publicationDate;
84
    }
85
86
    /**
87
     * @return Language
88
     */
89
    public function getMainLanguage()
90
    {
91
        return $this->mainLanguage;
92
    }
93
94
    /**
95
     * @return Title
96
     */
97
    public function getTitle()
98
    {
99
        return $this->title;
100
    }
101
102
    /**
103
     * @return EventType
104
     */
105
    public function getEventType()
106
    {
107
        return $this->eventType;
108
    }
109
110
    /**
111
     * @return Theme
112
     */
113
    public function getTheme()
114
    {
115
        return $this->theme;
116
    }
117
118
    /**
119
     * @return CalendarInterface
120
     */
121
    public function getCalendar()
122
    {
123
        return $this->calendar;
124
    }
125
126
    /**
127
     * @return Location
128
     */
129
    public function getLocation()
130
    {
131
        return $this->location;
132
    }
133
134
    /**
135
     * @return DateTimeImmutable|null
136
     */
137
    public function getPublicationDate()
138
    {
139
        return $this->publicationDate;
140
    }
141
142
    /**
143
     * @return array
144
     */
145
    public function serialize()
146
    {
147
        $theme = null;
148
        if ($this->getTheme() !== null) {
149
            $theme = $this->getTheme()->serialize();
150
        }
151
        $publicationDate = null;
152
        if (!is_null($this->getPublicationDate())) {
153
            $publicationDate = $this->getPublicationDate()->format(\DateTime::ATOM);
154
        }
155
        return parent::serialize() + array(
156
            'main_language' => $this->mainLanguage->getCode(),
157
            'title' => (string)$this->getTitle(),
158
            'event_type' => $this->getEventType()->serialize(),
159
            'theme' => $theme,
160
            'location' => $this->getLocation()->serialize(),
161
            'calendar' => $this->getCalendar()->serialize(),
162
            'publication_date' => $publicationDate,
163
        );
164
    }
165
166
    /**
167
     * @return static
168
     */
169
    public static function deserialize(array $data)
170
    {
171
        $theme = null;
172
        if (!empty($data['theme'])) {
173
            $theme = Theme::deserialize($data['theme']);
174
        }
175
        $publicationDate = null;
176
        if (!empty($data['publication_date'])) {
177
            $publicationDate = DateTimeImmutable::createFromFormat(
178
                \DateTime::ATOM,
179
                $data['publication_date']
180
            );
181
        }
182
        return new static(
183
            $data['event_id'],
184
            new Language($data['main_language']),
185
            new Title($data['title']),
186
            EventType::deserialize($data['event_type']),
187
            Location::deserialize($data['location']),
188
            Calendar::deserialize($data['calendar']),
189
            $theme,
190
            $publicationDate
191
        );
192
    }
193
}
194

src/Place/Events/PlaceCreated.php 1 location

@@ 18-193 (lines=176) @@
15
/**
16
 * Event when a place is created.
17
 */
18
class PlaceCreated extends PlaceEvent
19
{
20
    /**
21
     * @var Language
22
     */
23
    private $mainLanguage;
24
25
    /**
26
     * @var Title
27
     */
28
    private $title;
29
30
    /**
31
     * @var EventType
32
     */
33
    private $eventType;
34
35
    /**
36
     * @var Theme
37
     */
38
    private $theme = null;
39
40
    /**
41
     * @var Address
42
     */
43
    private $address;
44
45
    /**
46
     * @var CalendarInterface
47
     */
48
    private $calendar;
49
50
    /**
51
     * @var DateTimeImmutable|null
52
     */
53
    private $publicationDate = null;
54
55
    /**
56
     * @param string $placeId
57
     * @param Language $mainLanguage
58
     * @param Title $title
59
     * @param EventType $eventType
60
     * @param Address $address
61
     * @param CalendarInterface $calendar
62
     * @param Theme|null $theme
63
     * @param DateTimeImmutable|null $publicationDate
64
     */
65
    public function __construct(
66
        $placeId,
67
        Language $mainLanguage,
68
        Title $title,
69
        EventType $eventType,
70
        Address $address,
71
        CalendarInterface $calendar,
72
        Theme $theme = null,
73
        DateTimeImmutable $publicationDate = null
74
    ) {
75
        parent::__construct($placeId);
76
77
        $this->mainLanguage = $mainLanguage;
78
        $this->title = $title;
79
        $this->eventType = $eventType;
80
        $this->address = $address;
81
        $this->calendar = $calendar;
82
        $this->theme = $theme;
83
        $this->publicationDate = $publicationDate;
84
    }
85
86
    /**
87
     * @return Language
88
     */
89
    public function getMainLanguage()
90
    {
91
        return $this->mainLanguage;
92
    }
93
94
    /**
95
     * @return Title
96
     */
97
    public function getTitle()
98
    {
99
        return $this->title;
100
    }
101
102
    /**
103
     * @return EventType
104
     */
105
    public function getEventType()
106
    {
107
        return $this->eventType;
108
    }
109
110
    /**
111
     * @return Theme
112
     */
113
    public function getTheme()
114
    {
115
        return $this->theme;
116
    }
117
118
    /**
119
     * @return CalendarInterface
120
     */
121
    public function getCalendar()
122
    {
123
        return $this->calendar;
124
    }
125
126
    /**
127
     * @return Address
128
     */
129
    public function getAddress()
130
    {
131
        return $this->address;
132
    }
133
134
    /**
135
     * @return DateTimeImmutable|null
136
     */
137
    public function getPublicationDate()
138
    {
139
        return $this->publicationDate;
140
    }
141
142
    /**
143
     * @return array
144
     */
145
    public function serialize()
146
    {
147
        $theme = null;
148
        if ($this->getTheme() !== null) {
149
            $theme = $this->getTheme()->serialize();
150
        }
151
        $publicationDate = null;
152
        if (!is_null($this->getPublicationDate())) {
153
            $publicationDate = $this->getPublicationDate()->format(\DateTime::ATOM);
154
        }
155
        return parent::serialize() + array(
156
            'main_language' => $this->mainLanguage->getCode(),
157
            'title' => (string) $this->getTitle(),
158
            'event_type' => $this->getEventType()->serialize(),
159
            'theme' => $theme,
160
            'address' => $this->getAddress()->serialize(),
161
            'calendar' => $this->getCalendar()->serialize(),
162
            'publication_date' => $publicationDate,
163
        );
164
    }
165
166
    /**
167
     * @return static
168
     */
169
    public static function deserialize(array $data)
170
    {
171
        $theme = null;
172
        if (!empty($data['theme'])) {
173
            $theme = Theme::deserialize($data['theme']);
174
        }
175
        $publicationDate = null;
176
        if (!empty($data['publication_date'])) {
177
            $publicationDate = DateTimeImmutable::createFromFormat(
178
                \DateTime::ATOM,
179
                $data['publication_date']
180
            );
181
        }
182
        return new static(
183
            $data['place_id'],
184
            new Language($data['main_language']),
185
            new Title($data['title']),
186
            EventType::deserialize($data['event_type']),
187
            Address::deserialize($data['address']),
188
            Calendar::deserialize($data['calendar']),
189
            $theme,
190
            $publicationDate
191
        );
192
    }
193
}
194