- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/update/activity/compressmailstepper.php
- Класс: Bitrix\Crm\Update\Activity\CompressMailStepper
- Вызов: CompressMailStepper::execute
public function execute(array &$option)
{
//return self::FINISH_EXECUTION; -- ON EMERGENCY
$lastId = (int)($option['lastId'] ?? 0);
$maxResult = \Bitrix\Crm\ActivityTable::getList([
'order' => ['ID' => 'DESC'],
'limit' => 1,
'select' => ['ID'],
])->fetch();
$maxID = (int) $maxResult['ID'];
if ($lastId >= $maxID)
{
return self::FINISH_EXECUTION;
}
$ids = [];
$listIDResult = \Bitrix\Crm\ActivityTable::getList([
'order' => ['ID' => 'ASC'],
'limit' => self::LIMIT,
'filter' => ['>ID' => $lastId],
'select' => ['ID', 'TYPE_ID', 'ASSOCIATED_ENTITY_ID'],
]);
foreach ($listIDResult as $row)
{
$row['ASSOCIATED_ENTITY_ID'] = (int) $row['ASSOCIATED_ENTITY_ID'];
if ($row['TYPE_ID'] == \CCrmActivityType::Email && $row['ASSOCIATED_ENTITY_ID'] == 0)
{
$ids[] = $row['ID'];
}
$option['lastId'] = $row['ID'];
}
if (!empty($ids))
{
$listResult = \Bitrix\Crm\ActivityTable::getList([
'order' => ['ID' => 'ASC'],
'filter' => ['@ID' => $ids],
'select' => ['ID', 'DESCRIPTION', 'DESCRIPTION_TYPE', 'DIRECTION', 'SETTINGS'],
]);
foreach ($listResult as $row)
{
$id = $row['ID'];
unset($row['ID']);
if ($this->isRobotMail($row))
{
Crm\Activity\Provider\Email::compressActivity($row);
Crm\ActivityTable::update($id, $row);
}
}
}
return self::CONTINUE_EXECUTION;
}