- Модуль: 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;
}