• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/activity/todocreatenotification.php
  • Класс: Bitrix\Crm\Activity\TodoCreateNotification
  • Вызов: TodoCreateNotification::isSkipped
public function isSkipped(): bool
{
	$value = \CUserOptions::GetOption('crm', $this->getOptionName(), '');
	if ($value === '' || mb_strpos($value, '.') === false)
	{
		$skipFrom = 0;
		$period = '';
	}
	else
	{
		[$period, $skipFrom] = explode('.', $value, 2);
	}
	if (!$this->isPeriodExists($period))
	{
		\CUserOptions::DeleteOption('crm', $this->getOptionName());

		return false;
	}

	if ($period === self::SKIP_PERIOD_FOREVER)
	{
		return true;
	}

	$skipFrom = (int)$skipFrom;
	$skipFromDate = DateTime::createFromTimestamp($skipFrom);
	$skipFromDate->toUserTime();
	$now = (new DateTime())->toUserTime();

	$isSkipped = false;
	switch ($period)
	{
		case self::SKIP_PERIOD_DAY:
			$isSkipped =
				$skipFromDate->format('j') === $now->format('j')
				&& $now->getTimestamp() - $skipFromDate->getTimestamp() < 60*60*24
			;
			break;
		case self::SKIP_PERIOD_WEEK:
			$isSkipped =
				$skipFromDate->format('W') === $now->format('W')
				&& $now->getTimestamp() - $skipFromDate->getTimestamp() < 60*60*24*7
			;
			break;
		case self::SKIP_PERIOD_MONTH:
			$isSkipped =
				$skipFromDate->format('n') === $now->format('n')
				&& $now->getTimestamp() - $skipFromDate->getTimestamp() < 60*60*24*7*31
			;
			break;
	}

	if (!$isSkipped)
	{
		\CUserOptions::DeleteOption('crm', $this->getOptionName());
	}

	return $isSkipped;
}