- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/volume/contact.php
- Класс: Bitrix\Crm\Volume\Contact
- Вызов: Contact::clearEvent
public function clearEvent()
{
if (!$this->canClearEvent())
{
return -1;
}
$eventVolume = new Volume\Event();
$eventVolume->setFilter($this->getFilter());
$query = $eventVolume->prepareRelationQuery(static::className());
$dropped = -1;
if ($eventVolume->prepareFilter($query))
{
$query
->addSelect('EVENT_ID')
->where('ENTITY_TYPE', '=', \CCrmOwnerType::ContactName)
->setLimit(self::MAX_ENTITY_PER_INTERACTION)
->setOrder(array('EVENT_ID' => 'ASC'));
if ($this->getProcessOffset() > 0)
{
$query->where('EVENT_ID', '>', $this->getProcessOffset());
}
$res = $query->exec();
$dropped = 0;
while ($event = $res->fetch())
{
$this->setProcessOffset($event['EVENT_ID']);
if (Volume\Event::dropEvent($event['EVENT_ID'], $this->getOwner()))
{
$this->incrementDroppedEventCount();
$dropped ++;
}
else
{
$this->collectError(new Main\Error('Deletion failed with event #'.$event['EVENT_ID'], self::ERROR_DELETION_FAILED));
$this->incrementFailCount();
}
if ($this->hasTimeLimitReached())
{
break;
}
}
}
else
{
$this->collectError(new Main\Error('Filter error', self::ERROR_DELETION_FAILED));
}
return $dropped;
}