- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/order/buyer/agent/updateuserexternalidagent.php
- Класс: Bitrix\Crm\Order\Buyer\Agent\UpdateUserExternalIdAgent
- Вызов: UpdateUserExternalIdAgent::run
private function run(): bool
{
if (!Loader::includeModule('sale') || Loader::includeModule('bitrix24'))
{
return true;
}
$lastId = $this->getLastProcessUserId();
$extranetUsersWithoutExternalIds = $this->getExtranetUsersWithoutExternalIds($lastId);
if (empty($extranetUsersWithoutExternalIds))
{
return true;
}
$this->setLastProcessUserId(end($extranetUsersWithoutExternalIds));
$usersWithOrdersIds = OrderTable::getList([
'select' => [
'USER_ID',
],
'filter' => [
'=USER_ID' => $extranetUsersWithoutExternalIds,
],
]);
$usersWithOrdersIds = array_column($usersWithOrdersIds->fetchAll(), 'USER_ID');
if (empty($usersWithOrdersIds))
{
return false;
}
$usersWithOrdersIds = join(',', $usersWithOrdersIds);
$sql = new SqlExpression(
"UPDATE ?# SET `EXTERNAL_AUTH_ID` = ? WHERE ID IN ({$usersWithOrdersIds})",
UserTable::getTableName(),
Buyer::AUTH_ID
);
Application::getConnection()->queryExecute($sql);
UserTable::getEntity()->cleanCache();
return false;
}