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;
}