- Модуль: calendar
- Путь к файлу: ~/bitrix/modules/calendar/lib/ical/mailinvitation/helper.php
- Класс: BitrixCalendarICalMailInvitationHelper
- Вызов: Helper::getIcalTemplateRRule
static function getIcalTemplateRRule(array $rrule = null, array $params = null): string
{
$res = '';
if ($rrule['BYDAY'] ?? false)
{
$rrule['BYDAY'] = CCalendarEvent::sortByDay($rrule['BYDAY']);
}
switch($rrule['FREQ'] ?? null)
{
case 'DAILY':
$res = (int)$rrule['INTERVAL'] === 1
? Loc::getMessage('EC_RRULE_EVERY_DAY')
: Loc::getMessage('EC_RRULE_EVERY_DAY_1', ['#DAY#' => $rrule['INTERVAL']])
;
break;
case 'WEEKLY':
if (!isset($rrule['BYDAY']) || !is_array($rrule['BYDAY']))
{
$rrule['BYDAY'] = ['MO'];
}
$daysList = implode(', ', array_map(static function($day) {return Loc::getMessage('EC_' . $day);}, $rrule['BYDAY']));
$res = (int)$rrule['INTERVAL'] === 1
? Loc::getMessage('EC_RRULE_EVERY_WEEK', ['#DAYS_LIST#' => $daysList])
: Loc::getMessage('EC_RRULE_EVERY_WEEK_1', ['#WEEK#' => $rrule['INTERVAL'], '#DAYS_LIST#' => $daysList])
;
break;
case 'MONTHLY':
$res = (int)$rrule['INTERVAL'] === 1
? Loc::getMessage('EC_RRULE_EVERY_MONTH')
: Loc::getMessage('EC_RRULE_EVERY_MONTH_1', ['#MONTH#' => $rrule['INTERVAL']])
;
break;
case 'YEARLY':
$fromTs = CCalendar::Timestamp($params['DATE_FROM']);
$res = (int)$rrule['INTERVAL'] === 1
? Loc::getMessage('EC_RRULE_EVERY_YEAR', [
'#DAY#' => FormatDate('j', $fromTs),
'#MONTH#' => FormatDate('n', $fromTs)
])
: Loc::getMessage('EC_RRULE_EVERY_YEAR_1', [
'#YEAR#' => $rrule['INTERVAL'],
'#DAY#' => FormatDate('j', $fromTs),
'#MONTH#' => FormatDate('n', $fromTs)
])
;
break;
}
if ($rrule['COUNT'] ?? false)
{
$res .= ' ' . Loc::getMessage('EC_RRULE_COUNT', ['#COUNT#' => $rrule['COUNT']]);
}
elseif (isset($rrule['UNTIL']) && $rrule['UNTIL'] && self::isNotEndOfTime($rrule['UNTIL']))
{
$res .= ' ' . Loc::getMessage('EC_RRULE_UNTIL', ['#UNTIL_DATE#' => $rrule['UNTIL']]);
}
return $res;
}