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