• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/util/replicator/task/fromtemplate.php
  • Класс: BitrixTasksUtilReplicatorTaskFromTemplate
  • Вызов: FromTemplate::getMonthlyDate
static function getMonthlyDate($startDate, $replicateParams, $preferredTime, $ordinals, $weekDays)
{
	$subType = $replicateParams["MONTHLY_TYPE"] == 2 ? "weekday" : "monthday";
	if ($subType == "weekday")
	{
		$ordinal = array_key_exists($replicateParams["MONTHLY_WEEK_DAY_NUM"], $ordinals) ? $ordinals[$replicateParams["MONTHLY_WEEK_DAY_NUM"]] : $ordinals[0];
		$weekDay = array_key_exists($replicateParams["MONTHLY_WEEK_DAY"], $weekDays) ? $weekDays[$replicateParams["MONTHLY_WEEK_DAY"]] : $weekDays[0];
		$num = intval($replicateParams["MONTHLY_MONTH_NUM_2"]) > 0 ? intval($replicateParams["MONTHLY_MONTH_NUM_2"]) : 1;

		$date = strtotime($ordinal." ".$weekDay." of this month") + $preferredTime;

		if ($date <= $startDate)
		{
			$date = static::addMonths(new DateTime(date('Y-m-d H:i:s', $date)), $num)->getTimestamp();
			$date = strtotime($ordinal." ".$weekDay." of ".date("Y-m-d", $date)) + $preferredTime;
		}
	}
	else
	{
		$day = intval($replicateParams["MONTHLY_DAY_NUM"]) >= 1 && intval($replicateParams["MONTHLY_DAY_NUM"]) <= 31 ? intval($replicateParams["MONTHLY_DAY_NUM"]) : 1;
		$num = intval($replicateParams["MONTHLY_MONTH_NUM_1"]) > 0 ? intval($replicateParams["MONTHLY_MONTH_NUM_1"]) : 1;

		$date = static::stripTime(strtotime(date("Y-m-".sprintf("%02d", $day), $startDate))) + $preferredTime;

		if ($date <= $startDate)
		{
			$date = static::addMonths(new DateTime(date('Y-m-d H:i:s', $date)), $num)->getTimestamp();
			$date = strtotime(date("Y-m-".sprintf("%02d", $day), $date)) + $preferredTime;
		}
	}

	return $date;
}