• Модуль: lists
  • Путь к файлу: ~/bitrix/modules/lists/classes/general/listfield.php
  • Класс: CListField
  • Вызов: CListField::SetSettings
public function SetSettings($arSettings)
{
	global $DB;

	$arStore = false;
	switch($this->_field_id)
	{
		case "PREVIEW_TEXT":
			if(preg_match('/s*(d+)s*(px|%|)/', $arSettings["WIDTH"], $match) && ($match[1] > 0))
				$width = $match[1].$match[2];
			else
				$width = "40";

			if(preg_match('/s*(d+)s*(px|%|)/', $arSettings["HEIGHT"], $match) && ($match[1] > 0))
				$height = $match[1].$match[2];
			else
				$height = "3";

			$arStore = array(
				"USE_EDITOR" => $arSettings["USE_EDITOR"]=="Y"? "Y": "N",
				"WIDTH" => $width,
				"HEIGHT" => $height,
				"SHOW_ADD_FORM" => $arSettings["SHOW_ADD_FORM"],
				"SHOW_EDIT_FORM" => $arSettings["SHOW_EDIT_FORM"],
				"ADD_READ_ONLY_FIELD" => $arSettings["ADD_READ_ONLY_FIELD"],
				"EDIT_READ_ONLY_FIELD" => $arSettings["EDIT_READ_ONLY_FIELD"],
				"SHOW_FIELD_PREVIEW" => $arSettings["SHOW_FIELD_PREVIEW"]
			);
			break;
		default:
			$arStore = $arSettings;
	}

	$arFields = array();
	if(is_array($arStore))
		$arFields["SETTINGS"] = serialize($arStore);
	else
		$arFields["SETTINGS"] = false;

	$strUpdate = $DB->PrepareUpdate("b_lists_field", $arFields);
	if($strUpdate!="")
	{
		$strSql = "
			UPDATE b_lists_field
			SET ".$strUpdate."
			WHERE IBLOCK_ID = ".$this->_iblock_id."
			AND FIELD_ID = '".$DB->ForSQL($this->_field_id)."'
		";
		$arBinds = array(
			"SETTINGS" => $arFields["SETTINGS"],
		);
		$DB->QueryBind($strSql, $arBinds);

		$this->_clear_cache();
	}
}