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

	// Was changed only one field in this case we could be more specific
	if (count($params['entryChanges']) === 1)
	{
		$change = $params['entryChanges'][0];
		switch($change['fieldKey'])
		{
			case 'NAME':
				$fields['MESSAGE'] = Loc::getMessage('EC_NOTIFY_TITLE_CHANGED',
					[
						'#OLD_TITLE#' => $change['oldValue'],
						'#NEW_TITLE#' => "[url=".$params["pathToEvent"]."]".$change['newValue']."[/url]",
						'#ACTIVE_FROM#' => $params["from_formatted"]
					]
				);

				$fields['MESSAGE_OUT'] = Loc::getMessage('EC_NOTIFY_TITLE_CHANGED',
					[
						'#OLD_TITLE#' => $change['oldValue'],
						'#NEW_TITLE#' => $change['newValue'],
						'#ACTIVE_FROM#' => $params["from_formatted"]
					]
				);
				break;

			case 'DATE_FROM':
				if ($params['fields']['DT_SKIP_TIME'] === 'N')
				{
					$userOffset = CCalendar::GetTimezoneOffset($params['fields']['TZ_FROM'])
									 - CCalendar::GetCurrentOffsetUTC($params['guestId']);

					$change['oldValue'] = CCalendar::Date(CCalendar::Timestamp($change['oldValue'])
											   - $userOffset, true, true, true);
					$change['newValue'] = CCalendar::Date(CCalendar::Timestamp($change['newValue'])
											   - $userOffset, true, true, true);
				}

				$fields['MESSAGE'] = Loc::getMessage('EC_NOTIFY_DATE_FROM_CHANGED',
					[
						'#TITLE#' => "[url=".$params["pathToEvent"]."]".$params["name"]."[/url]",
						'#OLD_DATE_FROM#' => $change['oldValue'],
						'#NEW_DATE_FROM#' => $change['newValue']
					]
				);

				$fields['MESSAGE_OUT'] = Loc::getMessage('EC_NOTIFY_DATE_FROM_CHANGED',
					[
						'#TITLE#' => $params["name"],
						'#OLD_DATE_FROM#' => $change['oldValue'],
						'#NEW_DATE_FROM#' => $change['newValue']
					]
				);
				break;

			case 'DATE_TO':
				if ($params['fields']['DT_SKIP_TIME'] === 'N')
				{
					$userOffset = CCalendar::GetTimezoneOffset($params['fields']['TZ_TO'])
								  - CCalendar::GetCurrentOffsetUTC($params['guestId']);

					$change['oldValue'] = CCalendar::Date(CCalendar::Timestamp($change['oldValue'])
														   - $userOffset, true, true, true);
					$change['newValue'] = CCalendar::Date(CCalendar::Timestamp($change['newValue'])
														   - $userOffset, true, true, true);
				}

				$fields['MESSAGE'] = Loc::getMessage('EC_NOTIFY_DATE_TO_CHANGED',
					[
						'#TITLE#' => "[url=".$params["pathToEvent"]."]".$params["name"]."[/url]",
						'#OLD_DATE_TO#' => $change['oldValue'],
						'#NEW_DATE_TO#' => $change['newValue']
					]
				);

				$fields['MESSAGE_OUT'] = Loc::getMessage('EC_NOTIFY_DATE_TO_CHANGED',
					[
						'#TITLE#' => $params["name"],
						'#OLD_DATE_TO#' => $change['oldValue'],
						'#NEW_DATE_TO#' => $change['newValue']
					]
				);
				break;
			case 'LOCATION':
				$locationMessageCode = empty($change['newValue']) ? 'EC_NOTIFY_LOCATION_CHANGED_NONE' : 'EC_NOTIFY_LOCATION_CHANGED';
				$fields['MESSAGE'] = Loc::getMessage($locationMessageCode,
					[
						'#TITLE#' => "[url=".$params["pathToEvent"]."]".$params["name"]."[/url]",
						'#ACTIVE_FROM#' => $params["from"],
						'#NEW_VALUE#' => CCalendar::GetTextLocation($change['newValue'])
					]
				);

				$fields['MESSAGE_OUT'] = Loc::getMessage($locationMessageCode,
					[
						'#TITLE#' => $params["name"],
						'#ACTIVE_FROM#' => $params["from"],
						'#NEW_VALUE#' => CCalendar::GetTextLocation($change['newValue'])
					]
				);
				break;
			case 'ATTENDEES':
				$fields['MESSAGE'] = Loc::getMessage('EC_NOTIFY_ATTENDEES_CHANGED',
					[
						'#TITLE#' => "[url=".$params["pathToEvent"]."]".$params["name"]."[/url]",
						'#ACTIVE_FROM#' => $params["from_formatted"]
					]
				);

				$fields['MESSAGE_OUT'] = Loc::getMessage('EC_NOTIFY_ATTENDEES_CHANGED',
					[
						'#TITLE#' => $params["name"],
						'#ACTIVE_FROM#' => $params["from_formatted"]
					]
				);
				break;
			case 'DESCRIPTION':
				$fields['MESSAGE'] = Loc::getMessage('EC_NOTIFY_DESCRIPTION_CHANGED',
					[
						'#TITLE#' => "[url=".$params["pathToEvent"]."]".$params["name"]."[/url]",
						'#ACTIVE_FROM#' => $params["from_formatted"]
					]
				);

				$fields['MESSAGE_OUT'] = Loc::getMessage('EC_NOTIFY_DESCRIPTION_CHANGED',
					[
						'#TITLE#' => $params["name"],
						'#ACTIVE_FROM#' => $params["from_formatted"]
					]
				);
				break;
			case 'RRULE':
			case 'EXDATE':
				$fields['MESSAGE'] = Loc::getMessage('EC_NOTIFY_RRULE_CHANGED',
					[
						'#TITLE#' => "[url=".$params["pathToEvent"]."]".$params["name"]."[/url]"
					]
				);

				$fields['MESSAGE_OUT'] = Loc::getMessage('EC_NOTIFY_RRULE_CHANGED',
					[
						'#TITLE#' => $params["name"]
					]
				);
				break;
			case 'IMPORTANCE':
				$fields['MESSAGE'] = Loc::getMessage('EC_NOTIFY_IMPORTANCE_CHANGED',
					[
						'#TITLE#' => "[url=".$params["pathToEvent"]."]".$params["name"]."[/url]",
						'#ACTIVE_FROM#' => $params["from_formatted"]
					]
				);
				$fields['MESSAGE_OUT'] = Loc::getMessage('EC_NOTIFY_IMPORTANCE_CHANGED',
					[
						'#TITLE#' => $params["name"],
						'#ACTIVE_FROM#' => $params["from_formatted"]
					]
				);
				break;
		}
	}
	else // Two or more changes
	{
		$changedFieldsList = [];
		foreach ($params['entryChanges'] as $change)
		{
			$key = $change['fieldKey'];
			$changedFieldsList[] = Loc::getMessage('EC_NOTIFY_FIELD_'.$key);
		}
		$changedFieldsListMessage = implode(', ', array_unique($changedFieldsList));

		$fields['MESSAGE'] = Loc::getMessage('EC_NOTIFY_ENTRY_CHANGED',
			[
				'#TITLE#' => "[url=".$params["pathToEvent"]."]".$params["name"]."[/url]",
				'#ACTIVE_FROM#' => $params["from_formatted"],
				'#CHANGED_FIELDS_LIST#' => $changedFieldsListMessage
			]
		);

		$fields['MESSAGE_OUT'] = Loc::getMessage('EC_NOTIFY_ENTRY_CHANGED',
			[
				'#TITLE#' => $params["name"],
				'#ACTIVE_FROM#' => $params["from_formatted"],
				'#CHANGED_FIELDS_LIST#' => $changedFieldsListMessage
			]
		);
	}

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

	$fields['TITLE'] = Loc::getMessage('EC_MESS_INVITE_CHANGED_TITLE',['#TITLE#' => $params["name"]]);
	return $fields;
}