3namespace Bitrix\Calendar\Core\Builders;
5use Bitrix\Calendar\Core\Base\BaseException;
6use Bitrix\Calendar\Core\Base\Date;
7use Bitrix\Calendar\Core\Base\DateTimeZone;
8use Bitrix\Calendar\Core\Event\Event;
9use Bitrix\Calendar\Core\Event\Properties\AttendeeCollection;
10use Bitrix\Calendar\Core\Event\Properties\ExcludedDatesCollection;
11use Bitrix\Calendar\Core\Event\Properties\Location;
12use Bitrix\Calendar\Core\Event\Properties\MeetingDescription;
13use Bitrix\Calendar\Core\Event\Properties\RecurringEventRules;
14use Bitrix\Calendar\Core\Event\Properties\Relations;
15use Bitrix\Calendar\Core\Event\Properties\RemindCollection;
16use Bitrix\Calendar\Core\eventoption\EventOption;
17use Bitrix\Calendar\Core\Role\Helper;
18use Bitrix\Calendar\Core\Role\Role;
19use Bitrix\Calendar\Core\Role\User;
20use Bitrix\Calendar\Core\Section\Section;
21use Bitrix\Calendar\Util;
22use Bitrix\Main\ArgumentException;
23use Bitrix\Main\EO_User;
24use Bitrix\Main\ObjectException;
25use Bitrix\Main\ObjectPropertyException;
26use Bitrix\Main\SystemException;
27use Bitrix\Main\UserTable;
35 $this->
event = $event;
47 ->setId($this->
getId())
96 if (empty($this->event))
98 $this->
event =
new Event();
112 if (empty($ruleData))
117 if (is_string($ruleData))
119 $ruleData = \CCalendarEvent::ParseRRULE($ruleData);
123 isset($ruleData[
'FREQ'])
124 && $ruleData[
'FREQ'] !==
'NONE'
129 if (isset($ruleData[
'COUNT']))
131 $rule->setCount((
int)$ruleData[
'COUNT']);
134 if (is_string($ruleData[
'UNTIL'] ??
null))
136 $ruleData[
'UNTIL'] = \CCalendarEvent::convertDateToCulture($ruleData[
'UNTIL']);
140 if (isset($ruleData[
'INTERVAL']))
142 $rule->setInterval((
int)$ruleData[
'INTERVAL']);
145 if (!empty($ruleData[
'BYDAY']) && $ruleData[
'FREQ'] === RecurringEventRules::FREQUENCY_WEEKLY)
148 is_string($ruleData[
'BYDAY'])
151 $rule->setByDay(explode(
",", $ruleData[
'BYDAY']));
154 is_array($ruleData[
'BYDAY'])
157 $rule->setByDay($ruleData[
'BYDAY']);
179 if (is_array($locationData) && isset($locationData[
'NEW']))
182 if (isset($locationData[
'OLD']))
184 $location->setOriginalLocation($locationData[
'OLD']);
190 if (is_string($locationData))
217 return Helper::getUserRole(
$userId);
236 return User::$users[
$userId] = UserTable::query()
252 abstract protected function getId(): ?int;
262 abstract protected function getName(): string;
382 abstract protected function getUid(): ?string;
447 if (!isset($meeting))
452 $meeting = is_string($meeting)
453 ? unserialize($meeting, [
'allowed_classes' =>
false])
456 if ($meeting && !empty($meeting[
'HOST_NAME']))
459 ->setAllowInvite((
bool)($meeting[
'ALLOW_INVITE'] ??
null))
460 ->setReInvite((
bool)($meeting[
'REINVITE'] ??
null))
461 ->setHideGuests((
bool)($meeting[
'HIDE_GUESTS'] ??
null))
462 ->setHostName($meeting[
'HOST_NAME'])
463 ->setIsNotify((
bool)($meeting[
'NOTIFY'] ??
null))
464 ->setMeetingCreator((
int)($meeting[
'MEETING_CREATOR'] ??
null))
465 ->setLanguageId($meeting[
'LANGUAGE_ID'] ??
null)
466 ->setMailFrom($meeting[
'MAIL_FROM'] ??
null)
467 ->setChatId($meeting[
'CHAT_ID'] ??
null)
476 if (!isset($relations))
481 $relations = is_string($relations)
482 ? unserialize($relations, [
'allowed_classes' =>
false])
486 if ($relations && !empty($relations[
'COMMENT_XML_ID']))
488 return (
new Relations($relations[
'COMMENT_XML_ID']));
508 foreach (explode(
";", $dates) as $exDate)
525 if ($date[2] ===
'.' && $date[5] ===
'.')
527 return Date::createDateFromFormat(
529 ExcludedDatesCollection::EXCLUDED_DATE_FORMAT
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
prepareEventHost(int $hostId=null)
prepareLocation($locationData='')
prepareUserInstance(int $userId)
setBaseEvent(Event $event)
prepareRelations($relations)
prepareMeetingDescription($meeting=null)
createDateForRecurrence(string $date)
fillAttendeeCollection(AttendeeCollection $collection, $hostEventId)
prepareRecurringRule($ruleData=null)
prepareExcludedDates(string $dates='')
static getDateObject(string $date=null, ?bool $fullDay=true, ?string $tz='UTC')
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)