• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/activity/provider/eventable/pingqueue.php
  • Класс: Bitrix\Crm\Activity\Provider\Eventable\PingQueue
  • Вызов: PingQueue::register
public function register(int $activityId, bool $isCompleted = false, ?string $deadLine = null): void
{
	if (empty($deadLine) || $isCompleted)
	{
		$this->unregister($activityId);

		return;
	}

	$offsets = ActivityPingOffsetsTable::getOffsetsByActivityId($activityId);
	if (empty($offsets))
	{
		return;
	}

	$deadLine = DateTime::createFromUserTime($deadLine);
	$offsets = array_values(array_unique($offsets));
	$existedIds = $this->getIdsByActivityId($activityId);
	if (empty($existedIds))
	{
		$this->addToQueue($activityId, $deadLine, $offsets);
	}
	else
	{
		if (count($existedIds) === count($offsets))
		{
			$this->updateQueue($deadLine, $existedIds, $offsets);
		}
		else
		{
			// clear all for activity and add again
			ActivityPingQueueTable::deleteByActivityId($activityId);
			$this->addToQueue($activityId, $deadLine, $offsets);
		}
	}
}