- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/Model/Dynamic/PrototypeItemIndex.php
- Класс: Bitrix\Crm\Model\Dynamic\PrototypeItemIndex
- Вызов: PrototypeItemIndex::merge
static function merge(int $itemId, string $searchContent): Result
{
$result = new Result();
global $DB;
$helper = Application::getConnection()->getSqlHelper();
$updatedTime = new DateTime();
$insertData = [
'SEARCH_CONTENT' => $searchContent,
'UPDATED_TIME' => $updatedTime,
'ITEM_ID' => $itemId,
];
$preparedSearchContent = $DB->forSql($searchContent);
$encryptedSearchContent = sha1($searchContent);
$updateData = [
'SEARCH_CONTENT' => new SqlExpression("IF(SHA1(SEARCH_CONTENT) = '{$encryptedSearchContent}', SEARCH_CONTENT, '{$preparedSearchContent}')"),
'UPDATED_TIME' => $updatedTime,
];
$merge = $helper->prepareMerge(
static::getEntity()->getDBTableName(),
['ITEM_ID'],
$insertData,
$updateData
);
if ($merge[0] !== '')
{
Application::getConnection()->query($merge[0]);
}
else
{
$result->addError(new Error('Error constructing item index merge query'));
}
return $result;
}