- Модуль: rest
- Путь к файлу: ~/bitrix/modules/rest/lib/eventoffline.php
- Класс: BitrixRestEventOfflineTable
- Вызов: EventOfflineTable::markError
static function markError($processId, $appId, $connectorId, array $listIds)
{
if(count($listIds) > 0)
{
$connection = MainApplication::getConnection();
$helper = $connection->getSqlHelper();
foreach($listIds as $key => $id)
{
$listIds[$key] = $helper->forSql($id);
}
$queryWhere = array(
"APP_ID='".intval($appId)."'",
"CONNECTOR_ID='".$helper->forSql($connectorId)."'",
"MESSAGE_ID IN ('".implode("', '", $listIds)."')",
);
$sqlTable = static::getTableName();
$sqlWhere = implode(" AND ", $queryWhere);
$sqlProcessId = $helper->forSql($processId);
$sql = array();
$sql[] = "DELETE FROM {$sqlTable} WHERE {$sqlWhere} AND ERROR=0 AND PROCESS_ID <> '{$sqlProcessId}'";
$sql[] = "UPDATE {$sqlTable} SET ERROR=1, PROCESS_ID=IF(PROCESS_ID='{$sqlProcessId}', '', 'fake_process_id') WHERE {$sqlWhere} AND ERROR=0 ORDER BY PROCESS_ID ASC";
$sql[] = "DELETE FROM {$sqlTable} WHERE {$sqlWhere} AND PROCESS_ID='fake_process_id'";
foreach($sql as $query)
{
$connection->query($query);
}
}
}