• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/classes/general/calendar_reminder.php
  • Класс: CCalendarReminder
  • Вызов: CCalendarReminder::getReminderTimestamp
static function getReminderTimestamp($eventTimestamp, $reminder, $timezoneName = null)
{
	$reminderTimestamp = null;

	if (is_array($reminder) && isset($reminder['type']))
	{
		$type = $reminder['type'];

		if (in_array($type, self::SIMPLE_TYPE_LIST))
		{
			$delta = intval($reminder['count']) * 60;
			if ($reminder['type'] == 'hour')
			{
				$delta = $delta * 60; //Hour
			}
			elseif ($reminder['type'] == 'day')
			{
				$delta =  $delta * 60 * 24; //Day
			}

			$reminderTimestamp = $eventTimestamp - $delta;
		}
		elseif($type === self::TYPE_DAY_BEFORE)
		{
			$daysBefore = intval($reminder['before']);
			$hour = floor(intval($reminder['time']) / 60);
			$min = intval($reminder['time'] - $hour * 60);

			$reminderTimestamp = mktime($hour, $min, 0, date("m", $eventTimestamp), date("d", $eventTimestamp) - $daysBefore, date("Y", $eventTimestamp));

			if ($timezoneName)
			{
				$timezoneServerOffset = CCalendar::GetTimezoneOffset($timezoneName, $eventTimestamp) - date("Z", $eventTimestamp);
				$reminderTimestamp -= $timezoneServerOffset;
			}
		}
		elseif($type === self::TYPE_SPECIFIC_DATETIME)
		{
			$reminderTimestamp = CCalendar::Timestamp($reminder['value'], false, true);
			$reminderTimestamp = $reminderTimestamp - CCalendar::GetTimezoneOffset($timezoneName, $reminderTimestamp) + date("Z", $reminderTimestamp);
		}
	}

	return $reminderTimestamp;
}