- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/classes/general/tasktemplates.php
- Класс: CTaskTemplates
- Вызов: CTaskTemplates::parseReplicationParams
static function parseReplicationParams(array $params = []): array
{
// todo: use BitrixTasksItemTaskTemplateFieldReplicateParams::createValueStructure() here
$allowed = [
'PERIOD' => true,
'EVERY_DAY' => true,
'WORKDAY_ONLY' => true,
'EVERY_WEEK' => true,
'WEEK_DAYS' => true,
'MONTHLY_TYPE' => true,
'MONTHLY_DAY_NUM' => true,
'MONTHLY_MONTH_NUM_1' => true,
'MONTHLY_WEEK_DAY_NUM' => true,
'MONTHLY_WEEK_DAY' => true,
'MONTHLY_MONTH_NUM_2' => true,
'YEARLY_TYPE' => true,
'YEARLY_DAY_NUM' => true,
'YEARLY_MONTH_1' => true,
'YEARLY_WEEK_DAY_NUM' => true,
'YEARLY_WEEK_DAY' => true,
'YEARLY_MONTH_2' => true,
'START_DATE' => true,
'END_DATE' => true,
'TIME' => true,
'TIMEZONE_OFFSET' => true,
'DAILY_MONTH_INTERVAL' => true,
'REPEAT_TILL' => true,
'TIMES' => true,
'NEXT_EXECUTION_TIME' => true,
];
foreach ($params as $fld => $value)
{
if (!($allowed[$fld] ?? null))
{
unset($params[$fld]);
}
}
$params['EVERY_DAY'] = ((int)($params['EVERY_DAY'] ?? null) ?: 1);
$params['EVERY_WEEK'] = ((int)($params['EVERY_WEEK'] ?? null) ?: 1);
$params['MONTHLY_DAY_NUM'] = ((int)($params['MONTHLY_DAY_NUM'] ?? null) ?: 1);
$params['MONTHLY_MONTH_NUM_1'] = ((int)($params['MONTHLY_MONTH_NUM_1'] ?? null) ?: 1);
$params['MONTHLY_MONTH_NUM_2'] = ((int)($params['MONTHLY_MONTH_NUM_2'] ?? null) ?: 1);
$params['YEARLY_DAY_NUM'] = ((int)($params['YEARLY_DAY_NUM'] ?? null) ?: 1);
$params['PERIOD'] = (string)($params['PERIOD'] ?? null);
$params['WEEK_DAYS'] = ($params['WEEK_DAYS'] ?? null);
$params['TIME'] = ($params['TIME'] ?? '');
$params['WORKDAY_ONLY'] = (($params['WORKDAY_ONLY'] ?? null) === 'Y' ? 'Y' : 'N');
$params['END_DATE'] = ($params['END_DATE'] ?? null);
$params['MONTHLY_TYPE'] = static::parseTypeSelector($params['MONTHLY_TYPE'] ?? null);
$params['YEARLY_TYPE'] = static::parseTypeSelector($params['YEARLY_TYPE'] ?? null);
if ($params['PERIOD'] === '')
{
$params['PERIOD'] = 'daily';
}
if (!is_array($params['WEEK_DAYS']))
{
$params['WEEK_DAYS'] = [];
}
$time = 3600 * 5; // five hours
if (trim($params['TIME']) !== '')
{
$time = BitrixTasksUI::parseTimeAmount($params['TIME'], 'HH:MI');
}
$params['TIME'] = BitrixTasksUI::formatTimeAmount($time, 'HH:MI');
if (array_key_exists('TIMEZONE_OFFSET', $params))
{
$params['TIMEZONE_OFFSET'] = (int)$params['TIMEZONE_OFFSET'];
}
// for old templates
if (!array_key_exists('REPEAT_TILL', $params) && (string)$params['END_DATE'] !== '')
{
$params['REPEAT_TILL'] = 'date';
}
return $params;
}