• Модуль: 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);
}