3namespace Bitrix\Calendar\ICal\Builder;
5use Bitrix\Calendar\ICal\Basic\BasicComponent;
6use Bitrix\Calendar\ICal\Basic\Content;
7use Bitrix\Calendar\ICal\Basic\LengthPropertyType;
8use Bitrix\Calendar\ICal\Basic\Parameter;
9use Bitrix\Calendar\ICal\MailInvitation\Helper;
15 private $timezones = [];
18 private $withTimezone =
false;
19 private $refreshInterval;
20 private $productIdentifier;
29 return new self($name);
66 $this->method = $method;
88 $this->description = $description;
99 $this->productIdentifier = $identifier;
115 $events = array_map(
function ($eventToResolve) {
116 if (! is_callable($eventToResolve)) {
117 return $eventToResolve;
119 $newEvent =
new Event(Helper::getUniqId());
121 $eventToResolve($newEvent);
126 $this->events = array_merge($this->events, $events);
137 if (is_null($timezone)) {
141 $timezones = array_map(
function ($eventToResolve) {
142 if (! is_callable($eventToResolve)) {
143 return $eventToResolve;
148 $eventToResolve($newTimezone);
151 }, is_array($timezone) ? $timezone : [$timezone]);
153 $this->timezones = array_merge($this->timezones, $timezones);
163 $this->withTimezone =
true;
182 public function get(): string
192 $events = $this->events;
193 $timezones = $this->timezones;
195 if ($this->withTimezone) {
198 $event->setWithTimezone();
203 ->textProperty(
'VERSION',
'2.0')
204 ->textProperty(
'METHOD', $this->method)
205 ->textProperty(
'CALSCALE',
'GREGORIAN')
206 ->textProperty(
'PRODID', $this->productIdentifier ??
'-//Bitrix//Bitrix Calendar//EN')
207 ->textProperty([
'NAME',
'X-WR-CALNAME'], $this->name)
208 ->textProperty([
'DESCRIPTION',
'X-WR-CALDESC'], $this->description)
209 ->subComponent(...$timezones)
210 ->subComponent(...$events);
215 LengthPropertyType::getInstance(
'REFRESH-INTERVAL', $this->
refreshInterval)
216 ->addParameter(
new Parameter(
'VALUE',
'DURATION'))
218 ->property(LengthPropertyType::getInstance(
'X-PUBLISHED-TTL', $this->
refreshInterval));
__construct(string $name=null)
setIdentifier(string $identifier)
setDescription(string $description)
setMethod(string $method)
refreshInterval(int $min)
static createInstance(string $name=null)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)