- Модуль: calendar
- Путь к файлу: ~/bitrix/modules/calendar/lib/sync/googleapisync.php
- Класс: BitrixCalendarSyncGoogleApiSync
- Вызов: GoogleApiSync::prepareToSaveEvent
private function prepareToSaveEvent($eventData, $params = null): array
{
$newEvent = [];
$newEvent['summary'] = $eventData['NAME'];
if (!empty($eventData['ATTENDEES_CODES']) && is_string($eventData['ATTENDEES_CODES']))
{
$eventData['ATTENDEES_CODES'] = explode(",", $eventData['ATTENDEES_CODES']);
}
if (is_string($eventData['MEETING']))
{
$eventData['MEETING'] = unserialize($eventData['MEETING'], ['allowed_classes' => false]);
}
if (empty($eventData['MEETING']['LANGUAGE_ID']))
{
$eventData['MEETING']['LANGUAGE_ID'] = CCalendar::getUserLanguageId((int)$eventData['OWNER_ID']);
}
if (isset($eventData['ATTENDEES_CODES']) && is_countable($eventData['ATTENDEES_CODES']) && count($eventData['ATTENDEES_CODES']) > 1)
{
$users = Util::getAttendees($eventData['ATTENDEES_CODES']);
$newEvent['description'] = Loc::getMessage('ATTENDEES_EVENT', null, $eventData['MEETING']['LANGUAGE_ID']).': '
. stripcslashes(implode(', ', $users))
. "rn"
. $eventData["DESCRIPTION"];
}
elseif (!empty($eventData['DESCRIPTION']) && is_string($eventData['DESCRIPTION']))
{
$newEvent['description'] = $eventData['DESCRIPTION'];
}
if (!empty($eventData['ACCESSIBILITY']) && $eventData['ACCESSIBILITY'] === 'busy')
{
$newEvent['transparency'] = 'opaque';
}
else
{
$newEvent['transparency'] = 'transparent';
}
if (!empty($eventData['LOCATION']['NEW']) && is_string($eventData['LOCATION']['NEW']))
{
$newEvent['location'] = CCalendar::GetTextLocation($eventData['LOCATION']['NEW']);
}
elseif (!empty($eventData['LOCATION']) && is_string($eventData['LOCATION']))
{
$newEvent['location'] = CCalendar::GetTextLocation($eventData['LOCATION']);
}
if (!empty($eventData['REMIND']))
{
$newEvent['reminders'] = $this->prepareRemind($eventData);
}
if ($eventData['DT_SKIP_TIME'] === "Y")
{
$newEvent['start']['date'] = Util::getDateObject($eventData['DATE_FROM'])
->format('Y-m-d');
$newEvent['end']['date'] = Util::getDateObject($eventData['DATE_TO'])
->add('+1 day')
->format('Y-m-d');
if (!empty($eventData['G_EVENT_ID']))
{
$newEvent['start']['dateTime'] = null;
$newEvent['end']['dateTime'] = null;
$newEvent['start']['timeZone'] = null;
$newEvent['end']['timeZone'] = null;
}
}
else
{
$newEvent['start']['dateTime'] = Util::getDateObject($eventData['DATE_FROM'], false, $eventData['TZ_FROM'])
->format(self::DATE_TIME_FORMAT);
$newEvent['start']['timeZone'] = Util::prepareTimezone($eventData['TZ_FROM'])->getName();
$newEvent['end']['dateTime'] = Util::getDateObject($eventData['DATE_TO'], false, $eventData['TZ_TO'])
->format(self::DATE_TIME_FORMAT);
$newEvent['end']['timeZone'] = Util::prepareTimezone($eventData['TZ_TO'])->getName();
if (!empty($eventData['G_EVENT_ID']))
{
$newEvent['start']['date'] = null;
$newEvent['end']['date'] = null;
}
}
if (
!empty($eventData['RRULE'])
&& is_array($eventData['RRULE'])
&& isset($eventData['RRULE']['FREQ'])
&& $eventData['RRULE']['FREQ'] !== 'NONE'
)
{
$newEvent['recurrence'] = $this->prepareRRule($eventData, $params['editNextEvents']);
}
if (isset($eventData['ORIGINAL_DATE_FROM']))
{
$newEvent['originalStartTime'] = Util::getDateObject($eventData['ORIGINAL_DATE_FROM'], false, $eventData['TZ_FROM'])
->format(self::DATE_TIME_FORMAT);
}
if (isset($eventData['G_EVENT_ID']) && isset($eventData['RECURRENCE_ID']))
{
$newEvent['recurringEventId'] = $eventData['G_EVENT_ID'];
}
if ($params['syncCaldav'] || isset($eventData['DAV_XML_ID']))
{
$newEvent['iCalUID'] = $eventData['DAV_XML_ID'];
}
if (isset($eventData['G_EVENT_ID']))
{
$newEvent['id'] = $eventData['G_EVENT_ID'];
}
if (!empty($eventData['PRIVATE_EVENT']))
{
$newEvent['visibility'] = "private";
}
else
{
$newEvent['visibility'] = "public";
}
if (isset($eventData['VERSION']))
{
$newEvent['sequence'] = $eventData['VERSION'] - Util::VERSION_DIFFERENCE;
}
return $newEvent;
}