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

		$date = strtotime($ordinal." ".$weekDay." of ".date("Y", $startDate)."-".sprintf("%02d", $month)."-01") + $preferredTime;

		if ($date <= $startDate)
		{
			$date = strtotime($ordinal." ".$weekDay." of ".(date("Y", $startDate) + 1)."-".sprintf("%02d", $month)."-01") + $preferredTime;
		}
	}
	else
	{
		$day = intval($replicateParams["YEARLY_DAY_NUM"]) >= 1 && intval($replicateParams["YEARLY_DAY_NUM"]) <= 31 ? intval($replicateParams["YEARLY_DAY_NUM"]) : 1;
		$month = intval($replicateParams["YEARLY_MONTH_1"]) >= 0 && intval($replicateParams["YEARLY_MONTH_1"]) < 12 ? intval($replicateParams["YEARLY_MONTH_1"]) : 0;
		$month += 1;

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

		if ($date <= $startDate)
		{
			$date = strtotime((date("Y", $startDate) + 1)."-".sprintf("%02d", $month)."-".sprintf("%02d", $day)) + $preferredTime;
		}
	}

	return $date;
}