• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/userindexselector.php
  • Класс: BitrixMainUserIndexSelectorTable
  • Вызов: UserIndexSelectorTable::merge
static function merge(array $data)
{
	global $DB;

	$result = new EntityAddResult();

	$helper = Application::getConnection()->getSqlHelper();
	$insertData = $data;
	$updateData = $data;
	$mergeFields = static::getMergeFields();

	foreach ($mergeFields as $field)
	{
		unset($updateData[$field]);
	}

	if (isset($updateData['SEARCH_SELECTOR_CONTENT']))
	{
		$value = $DB->forSql($updateData['SEARCH_SELECTOR_CONTENT']);
		$encryptedValue = sha1($updateData['SEARCH_SELECTOR_CONTENT']);
		$updateData['SEARCH_SELECTOR_CONTENT'] = new BitrixMainDBSqlExpression("IF(SHA1(SEARCH_SELECTOR_CONTENT) = '{$encryptedValue}', SEARCH_SELECTOR_CONTENT, '{$value}')");
	}

	$merge = $helper->prepareMerge(
		static::getTableName(),
		static::getMergeFields(),
		$insertData,
		$updateData
	);

	if ($merge[0] != "")
	{
		Application::getConnection()->query($merge[0]);
		$id = Application::getConnection()->getInsertedId();
		$result->setId($id);
		$result->setData($data);
	}
	else
	{
		$result->addError(new Error('Error constructing query'));
	}

	return $result;
}