- Модуль: messageservice
- Путь к файлу: ~/bitrix/modules/messageservice/lib/internal/entity/restrictiontable.php
- Класс: BitrixMessageServiceInternalEntityRestrictionTable
- Вызов: RestrictionTable::insertCounterWithParam
static function insertCounterWithParam(string $code, string $additionalParam)
{
$helper = Application::getConnection()->getSqlHelper();
$table = static::getTableName();
$additionalParam = self::getMap()['ADDITIONAL_PARAMS']->encode([$additionalParam]);
$insert = $helper->prepareInsert($table, [
'CODE' => $code,
'COUNTER' => 1,
'DATE_CREATE' => new Date(),
'ADDITIONAL_PARAMS' => $additionalParam,
]);
[$columns, $values] = $insert;
$tableName = $helper->quote($table);
$sql = "
INSERT INTO {$tableName} ({$columns})
VALUES ({$values})
ON DUPLICATE KEY UPDATE
COUNTER = IF(
LOCATE('{$additionalParam}', ADDITIONAL_PARAMS) = 0,
COUNTER + 1,
COUNTER
),
ADDITIONAL_PARAMS = IF(
LOCATE('{$additionalParam}', ADDITIONAL_PARAMS) = 0,
'{$additionalParam}',
CONCAT_WS(' ', ADDITIONAL_PARAMS, '{$additionalParam}')
)
";
Application::getConnection()->queryExecute($sql);
}