• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/userindex.php
  • Класс: BitrixMainUserIndexTable
  • Вызов: UserIndexTable::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_USER_CONTENT']))
	{
		$value = $DB->forSql($updateData['SEARCH_USER_CONTENT']);
		$encryptedValue = sha1($updateData['SEARCH_USER_CONTENT']);
		$updateData['SEARCH_USER_CONTENT'] = new BitrixMainDBSqlExpression("case when " . $helper->getSha1Function(static::getTableName().".SEARCH_USER_CONTENT") . " = '{$encryptedValue}' then ".static::getTableName().".SEARCH_USER_CONTENT else '{$value}' end");
	}

	if (isset($updateData['SEARCH_DEPARTMENT_CONTENT']))
	{
		$value = $DB->forSql($updateData['SEARCH_DEPARTMENT_CONTENT']);
		$encryptedValue = sha1($updateData['SEARCH_DEPARTMENT_CONTENT']);
		$updateData['SEARCH_DEPARTMENT_CONTENT'] = new BitrixMainDBSqlExpression("case when " . $helper->getSha1Function(static::getTableName().".SEARCH_DEPARTMENT_CONTENT") ." = '{$encryptedValue}' then ".static::getTableName().".SEARCH_DEPARTMENT_CONTENT else '{$value}' end");
	}

	if (isset($updateData['SEARCH_ADMIN_CONTENT']))
	{
		$value = $DB->forSql($updateData['SEARCH_ADMIN_CONTENT']);
		$encryptedValue = sha1($updateData['SEARCH_ADMIN_CONTENT']);
		$updateData['SEARCH_ADMIN_CONTENT'] = new BitrixMainDBSqlExpression("case when " . $helper->getSha1Function(static::getTableName().".SEARCH_ADMIN_CONTENT") . " = '{$encryptedValue}' then ".static::getTableName().".SEARCH_ADMIN_CONTENT else '{$value}' end");
	}

	$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;
}