• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/classes/general/calendar_notify.php
  • Класс: CCalendarNotify
  • Вызов: CCalendarNotify::Invite
static function Invite($fields = [], $params = [])
{
	$fields['NOTIFY_EVENT'] = "invite";
	$fields['NOTIFY_TYPE'] = IM_NOTIFY_CONFIRM;
	$fields['NOTIFY_TAG'] = "CALENDAR|INVITE|".$params['eventId']."|".$fields['TO_USER_ID'];
	$fields['NOTIFY_SUB_TAG'] = "CALENDAR|INVITE|" . $params['eventId'] ?? null;

	if (!empty($params['rrule']))
	{
		$fromTs = CCalendar::Timestamp($params['fields']['DATE_FROM'] ?? null);
		$toTs = CCalendar::Timestamp($params['fields']['DATE_TO'] ?? null);

		if (($params['fields']['DT_SKIP_TIME'] ?? null) === "Y")
		{
			$toTs += CCalendar::DAY_LENGTH;
		}
		else
		{
			$fromTs = $fromTs
				- CCalendar::GetTimezoneOffset($params['fields']['TZ_FROM'] ?? null)
				+ CCalendar::GetCurrentOffsetUTC($fields['TO_USER_ID'] ?? null);
			$toTs = $toTs
				- CCalendar::GetTimezoneOffset($params['fields']['TZ_TO'] ?? null)
				+ CCalendar::GetCurrentOffsetUTC($fields['TO_USER_ID'] ?? null);
		}

		$params['from_to_html'] = CCalendar::GetFromToHtml(
			$fromTs,
			$toTs,
			($params['fields']['DT_SKIP_TIME'] ?? null) === 'Y',
			$params['fields']['DT_LENGTH'] ?? null,
			true
		);

		$fields['MESSAGE'] = Loc::getMessage('EC_MESS_REC_INVITE_SITE', [
			'#TITLE#' => $params["name"] ?? null,
			'#ACTIVE_FROM#' => $params['from_to_html'],
			'#RRULE#' => $params["rrule"] ?? null
		]);
		$fields['MESSAGE_OUT'] = Loc::getMessage('EC_MESS_REC_INVITE', [
			'#OWNER_NAME#' => CCalendar::GetUserName($params['userId']),
			'#TITLE#' => $params["name"],
			'#ACTIVE_FROM#' => $params['from_to_html'],
			'#RRULE#' => $params["rrule"]
		]);
	}
	else
	{
		$fields['MESSAGE'] = Loc::getMessage('EC_MESS_INVITE_SITE', [
			'#TITLE#' => $params["name"],
			'#ACTIVE_FROM#' => $params["from_formatted"]
		]);

		$fields['MESSAGE_OUT'] = Loc::getMessage('EC_MESS_INVITE', [
			'#OWNER_NAME#' => CCalendar::GetUserName($params['userId']),
			'#TITLE#' => $params["name"],
			'#ACTIVE_FROM#' => $params["from_formatted"]
		]);
	}

	if ($params['location'])
	{
		$fields['MESSAGE'] .= "nn" . Loc::getMessage('EC_EVENT_REMINDER_LOCATION', [
			'#LOCATION#' => $params['location']
		]);
		$fields['MESSAGE_OUT'] .= "nn" . Loc::getMessage('EC_EVENT_REMINDER_LOCATION', [
			'#LOCATION#' => $params['location']
		]);
	}

	if ($params['isSharing'] ?? false)
	{
		$fields['MESSAGE'] = Loc::getMessage('EC_MESS_INVITE_SITE_SHARING', [
			'#TITLE#' => $params["name"],
			'#ACTIVE_FROM#' => $params["from_formatted"],
		]);
	}

	$fields['PUSH_MESSAGE'] = str_replace(
			['[B]', '[/B]'],
			['', ''],
			$fields['MESSAGE']
		);

	$fields['MESSAGE'] .= "nn".Loc::getMessage('EC_MESS_INVITE_DETAILS_SITE', ['#LINK#' => $params["pathToEvent"]]);
	$fields['NOTIFY_LINK'] = $params["pathToEvent"];

	$fields['NOTIFY_BUTTONS'] = [
		['TITLE' => Loc::getMessage('EC_MESS_INVITE_CONF_Y_SITE'), 'VALUE' => 'Y', 'TYPE' => 'accept'],
		['TITLE' => Loc::getMessage('EC_MESS_INVITE_CONF_N_SITE'), 'VALUE' => 'N', 'TYPE' => 'cancel']
	];

	$fields['MESSAGE_OUT'] .= "nn".Loc::getMessage('EC_MESS_INVITE_CONF_Y', ['#LINK#' => $params["pathToEvent"].'&CONFIRM=Y']);
	$fields['MESSAGE_OUT'] .= "n".Loc::getMessage('EC_MESS_INVITE_CONF_N', ['#LINK#' => $params["pathToEvent"].'&CONFIRM=N']);
	$fields['MESSAGE_OUT'] .= "nn".Loc::getMessage('EC_MESS_INVITE_DETAILS', ['#LINK#' => $params["pathToEvent"]]);

	$fields['TITLE'] = Loc::getMessage('EC_MESS_INVITE_TITLE',
		[
			'#OWNER_NAME#' => CCalendar::GetUserName($params['userId']),
			'#TITLE#' => $params["name"]
		]
	);

	return $fields;
}