• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/usertype.php
  • Класс: CAllUserTypeEntity
  • Вызов: CAllUserTypeEntity::Update
function Update($ID, $arFields)
{
	global $DB, $USER_FIELD_MANAGER, $CACHE_MANAGER, $APPLICATION;
	$ID = intval($ID);

	unset($arFields["ENTITY_ID"]);
	unset($arFields["FIELD_NAME"]);
	unset($arFields["USER_TYPE_ID"]);
	unset($arFields["MULTIPLE"]);

	if(!$this->CheckFields($ID, $arFields))
		return false;

	if(array_key_exists("SETTINGS", $arFields))
		$arFields["SETTINGS"] = serialize($USER_FIELD_MANAGER->PrepareSettings($ID, $arFields));
	if(array_key_exists("MANDATORY", $arFields) && $arFields["MANDATORY"] !== "Y")
		$arFields["MANDATORY"] = "N";
	if(array_key_exists("SHOW_FILTER", $arFields))
	{
		$arFields["SHOW_FILTER"] = mb_substr($arFields["SHOW_FILTER"], 0, 1);
		if(mb_strpos("NIES", $arFields["SHOW_FILTER"]) === false)
			$arFields["SHOW_FILTER"] = "N";
	}
	if(array_key_exists("SHOW_IN_LIST", $arFields) && $arFields["SHOW_IN_LIST"] !== "N")
		$arFields["SHOW_IN_LIST"] = "Y";
	if(array_key_exists("EDIT_IN_LIST", $arFields) && $arFields["EDIT_IN_LIST"] !== "N")
		$arFields["EDIT_IN_LIST"] = "Y";
	if(array_key_exists("IS_SEARCHABLE", $arFields) && $arFields["IS_SEARCHABLE"] !== "Y")
		$arFields["IS_SEARCHABLE"] = "N";

	// events
	foreach(GetModuleEvents("main", "OnBeforeUserTypeUpdate", true) as $arEvent)
	{
		if(ExecuteModuleEventEx($arEvent, array(&$arFields)) === false)
		{
			if($e = $APPLICATION->GetException())
			{
				return false;
			}

			$aMsg = array();
			$aMsg[] = array(
				"id" => "FIELD_NAME",
				"text" => GetMessage("USER_TYPE_UPDATE_ERROR", array(
					"#FIELD_NAME#" => htmlspecialcharsbx($arFields["FIELD_NAME"]),
					"#ENTITY_ID#" => htmlspecialcharsbx($arFields["ENTITY_ID"]),
				))
			);

			$e = new CAdminException($aMsg);
			$APPLICATION->ThrowException($e);

			return false;
		}
	}

	if(is_object($USER_FIELD_MANAGER))
		$USER_FIELD_MANAGER->CleanCache();

	$strUpdate = $DB->PrepareUpdate("b_user_field", $arFields);

	static $arLabels = array("EDIT_FORM_LABEL", "LIST_COLUMN_LABEL", "LIST_FILTER_LABEL", "ERROR_MESSAGE", "HELP_MESSAGE");
	$arLangs = array();
	foreach($arLabels as $label)
	{
		if(is_array($arFields[$label]))
		{
			foreach($arFields[$label] as $lang => $value)
			{
				$arLangs[$lang][$label] = $value;
			}
		}
	}

	if($strUpdate <> "" || !empty($arLangs))
	{
		if(CACHED_b_user_field !== false)
		{
			$CACHE_MANAGER->CleanDir("b_user_field");
		}

		if($strUpdate <> "")
		{
			$strSql = "UPDATE b_user_field SET " . $strUpdate . " WHERE ID = " . $ID;
			if(array_key_exists("SETTINGS", $arFields))
				$arBinds = array("SETTINGS" => $arFields["SETTINGS"]);
			else
				$arBinds = array();
			$DB->QueryBind($strSql, $arBinds);
		}

		if(!empty($arLangs))
		{
			$DB->Query("DELETE FROM b_user_field_lang WHERE USER_FIELD_ID = " . $ID, false, "FILE: " . __FILE__ . "
LINE: " . __LINE__); foreach($arLangs as $lang => $arLangFields) { $arLangFields["USER_FIELD_ID"] = $ID; $arLangFields["LANGUAGE_ID"] = $lang; $arInsert = $DB->PrepareInsert("b_user_field_lang", $arLangFields); $DB->Query("INSERT INTO b_user_field_lang (".$arInsert[0].") VALUES (".$arInsert[1].")"); } } foreach(GetModuleEvents("main", "OnAfterUserTypeUpdate", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($arFields, $ID)); } } return true; }