1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
factorycomponents.php
См. документацию.
1<?php
2
3
4namespace Bitrix\Calendar\ICal\Parser;
5
6
8{
12 private $componentName;
16 private $component;
17
22 public static function createInstance(string $componentName): FactoryComponents
23 {
24 return new self($componentName);
25 }
26
31 public function __construct(string $componentName)
32 {
33 $this->componentName = $componentName;
34 }
35
43 public function createComponent($properties, $subComponents): FactoryComponents
44 {
45 switch ($this->componentName)
46 {
47 case 'standard':
48 $this->component = $this->getStandardComponent($properties);
49 break;
50 case 'daylight':
51 $this->component = $this->getDaylightComponent($properties);
52 break;
53 case 'vcalendar':
54 $this->component = $this->getCalendarComponent($properties, $subComponents);
55 break;
56 case 'vevent':
57 $this->component = $this->getEventComponent($properties, $subComponents);
58 break;
59 case 'vtimezone':
60 $this->component = $this->getTimezoneComponent($properties, $subComponents);
61 break;
62 //TODO: Add VALARM component support
63 default:
64 break;
65 }
66
67 return $this;
68 }
69
73 public function getComponent(): ?ParserComponent
74 {
75 return $this->component;
76 }
77
82 private function getStandardComponent(?array $properties): StandardObservance
83 {
85 ->setTzOffsetTo($properties['tzoffsetto'] ?? null)
86 ->setTzOffsetFrom($properties['tzoffsetfrom'] ?? null)
87 ->setDtStart($properties['dtstart'] ?? null);
88 }
89
94 private function getDaylightComponent(?array $properties): DaylightObservance
95 {
97 ->setTzOffsetTo($properties['tzoffsetto'] ?? null)
98 ->setTzOffsetFrom($properties['tzoffsetfrom'] ?? null)
99 ->setDtStart($properties['dtstart'] ?? null);
100 }
101
107 private function getCalendarComponent($properties, $subComponents): Calendar
108 {
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);
117 }
118
126 private function getEventComponent($properties, $subComponents): Event
127 {
128 if (empty($properties['uid']))
129 {
130 throw new IcalParserException("event identifier is not passed");
131 }
132 return (Event::createInstance($properties['uid']->getValue()))
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);
151 }
152
158 private function getTimezoneComponent($properties, $subComponents): Timezone
159 {
161 ->setTimezoneId($properties['tzid'] ?? null)
162 ->setTimezoneUrl($properties['tzurl'] ?? null)
163 ->setSubComponents($subComponents);
164 }
165}
static createInstance(string $uid)
Определения event.php:36
createComponent($properties, $subComponents)
Определения factorycomponents.php:43
__construct(string $componentName)
Определения factorycomponents.php:31
static createInstance(string $componentName)
Определения factorycomponents.php:22
setTzOffsetTo(?ParserPropertyType $tzOffsetTo)
Определения observance.php:77
static createInstance()
Определения timezone.php:29
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$name
Определения menu_edit.php:35