- Модуль: calendar
- Путь к файлу: ~/bitrix/modules/calendar/lib/ical/usercontroller.php
- Класс: BitrixCalendarICalUserController
- Вызов: UserController::inviteUser
static function inviteUser($userId, $params)
{
$eventFields = $params['arFields'];
$invitedUser = $params['userIndex'][$userId];
$email = $invitedUser['EMAIL'];
$nameFormatted = str_replace(['<', '>', '"'], '', CCalendar::GetUserName($invitedUser));
$mailMessageId = "";
$mailMessageInReplyTo = "";
$siteId = SITE_ID;
$fromName = Loc::getMessage('CALENDAR_SERVICE_NAME');
$responseEmailAddress = "CALENDAR_INVITE_".$eventFields["PARENT_ID"]."@".$GLOBALS["SERVER_NAME"];
$res = BitrixMailUser::getReplyTo(
$siteId,
$userId,
'CALENDAR_EVENT',
$eventFields["PARENT_ID"],
self::getPublicUrl()
);
if (is_array($res))
{
list($replyTo, $backUrl) = $res;
if (
$replyTo
&& $backUrl
)
{
$icsAttachment = self::getIcsFileAttachment($eventFields,
[
'attendees' => self::prepareAttendeesData(
$eventFields['ATTENDEES'],
$params['currentAttendees'],
$params['userIndex'],
$params['userId']
),
'responseEmailAddress' => $responseEmailAddress
]);
$attachments = [$icsAttachment];
// 1. create ical-content
// 2. save file ($APPLICATION->SaveFileContent($abs_path, $filesrc_for_save))
// 3. add b_file entry
// 4. clear file after sending
$fromName = str_replace(['<', '>', '"'], '', $fromName);
$id = CEvent::Send(
self::$MAIL_TYPE_EXTERNAL,
$siteId,
[
"=Reply-To" => $fromName.' <'.$replyTo.'>',
"=Message-Id" => $mailMessageId,
"=In-Reply-To" => $mailMessageInReplyTo == $mailMessageId ? '' : $mailMessageInReplyTo,
"EMAIL_FROM" => $fromName.' <'.BitrixMailUser::getDefaultEmailFrom().'>',
"EMAIL_TO" => (!empty($nameFormatted) ? ''.$nameFormatted.' <'.$email.'>' : $email),
"RECIPIENT_ID" => $userId,
"COMMENT_ID" => '',
"POST_ID" => intval($eventFields["PARENT_ID"]),
"POST_TITLE" => 'calendar invitation',
"URL" => self::getPublicUrl()
],
'Y',
'',
$attachments
);
}
}
}