• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/tracking/ad/index/indexbuilder.php
  • Класс: Bitrix\Crm\Tracking\Ad\Index\IndexBuilder
  • Вызов: IndexBuilder::getFetchDates
private function getFetchDates(): array
{
	$dateFrom = clone $this->dateFrom;
	$dateTo = clone $this->dateTo;

	$diff = ($dateTo->getTimestamp() - $dateFrom->getTimestamp()) / (3600 * 24);
	if ($diff < 0)
	{
		$this->errorCollection->setError(new Main\Error('Wrong period.'));
		return [];
	}

	if ($diff > 365)
	{
		$this->errorCollection->setError(new Main\Error('Period is too long. Set period less than 1 year.'));
		return [];
	}

	if ((time() - $dateFrom->getTimestamp()) / (3600 * 24) > 365)
	{
		$this->errorCollection->setError(new Main\Error('Period should be earlier than 1 year.'));
		return [];
	}

	if ($dateFrom->getTimestamp() >= time() || $dateTo->getTimestamp() >= time())
	{
		$this->errorCollection->setError(new Main\Error('Period should not contain today or future days.'));
		return [];
	}

	if ($this->minDate && $dateFrom->getTimestamp() < $this->minDate->getTimestamp())
	{
		$dateFrom = clone $this->minDate;
		$dateTo = clone $this->minDate;
		$dateTo->add('-1 day');
		for ($i = 1; $i < static::fetchDayLimit; $i++)
		{
			$dateFrom->add('-1 day');
			if ($dateFrom->getTimestamp() <= $this->dateFrom->getTimestamp())
			{
				break;
			}
		}

		return [$dateFrom, $dateTo];
	}

	if ($this->maxDate && $dateTo->getTimestamp() > $this->maxDate->getTimestamp())
	{
		$dateFrom = clone $this->maxDate;
		$dateTo = clone $this->maxDate;
		$dateFrom->add('1 day');
		for ($i = 1; $i < static::fetchDayLimit; $i++)
		{
			$dateTo->add('1 day');
			if ($dateTo->getTimestamp() >= $this->dateTo->getTimestamp())
			{
				break;
			}
		}

		return [$dateFrom, $dateTo];
	}

	// if no index
	return [$dateFrom, $dateTo];
}