12 private $componentName;
24 return new self($componentName);
33 $this->componentName = $componentName;
45 switch ($this->componentName)
48 $this->component = $this->getStandardComponent($properties);
51 $this->component = $this->getDaylightComponent($properties);
54 $this->component = $this->getCalendarComponent($properties, $subComponents);
57 $this->component = $this->getEventComponent($properties, $subComponents);
60 $this->component = $this->getTimezoneComponent($properties, $subComponents);
75 return $this->component;
86 ->setTzOffsetFrom($properties[
'tzoffsetfrom'] ??
null)
87 ->setDtStart($properties[
'dtstart'] ??
null);
94 private function getDaylightComponent(?
array $properties): DaylightObservance
97 ->setTzOffsetTo($properties[
'tzoffsetto'] ??
null)
98 ->setTzOffsetFrom($properties[
'tzoffsetfrom'] ??
null)
99 ->setDtStart($properties[
'dtstart'] ??
null);
107 private function getCalendarComponent($properties, $subComponents):
Calendar
110 $name = isset($properties[
'name']) ? $properties[
'name']->getValue() :
'Outer Calendar';
111 return (Calendar::createInstance(
$name))
112 ->setMethod($properties[
'method'] ??
null)
113 ->setProdId($properties[
'prodid'] ??
null)
114 ->setCalScale($properties[
'calscale'] ??
null)
115 ->setVersion($properties[
'version'] ??
null)
116 ->setSubComponents($subComponents);
126 private function getEventComponent($properties, $subComponents): Event
128 if (empty($properties[
'uid']))
130 throw new IcalParserException(
"event identifier is not passed");
133 ->setStart($properties[
'dtstart'] ??
null)
134 ->setEnd($properties[
'dtend'] ??
null)
135 ->setDescription($properties[
'description'] ??
null)
136 ->setSummary($properties[
'summary'] ??
null)
137 ->setSequence($properties[
'sequence'] ??
null)
138 ->setCreated($properties[
'created'] ??
null)
139 ->setDTStamp($properties[
'dtstamp'] ??
null)
140 ->setLocation($properties[
'location'] ??
null)
141 ->setUrl($properties[
'url'] ??
null)
142 ->setRRule($properties[
'rrule'] ??
null)
143 ->setTransparent($properties[
'transp'] ??
null)
144 ->setCategories($properties[
'categories'] ??
null)
145 ->setOrganizer($properties[
'organizer'] ??
null)
146 ->setAttendees($properties[
'attendee'] ??
null)
147 ->setModified($properties[
'last-modified'] ??
null)
148 ->setStatus($properties[
'status'] ??
null)
149 ->setRecurrenceId($properties[
'recurrence-id'] ??
null)
150 ->setAttachment($properties[
'attach'] ??
null);
158 private function getTimezoneComponent($properties, $subComponents): Timezone
161 ->setTimezoneId($properties[
'tzid'] ??
null)
162 ->setTimezoneUrl($properties[
'tzurl'] ??
null)
163 ->setSubComponents($subComponents);