• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/classes/mysql/iblockproperty.php
  • Класс: CIBlockProperty
  • Вызов: CIBlockProperty::_Add
function _Add($ID, $arFields)
{
	global $DB;

	$ID = (int)$ID;
	if ($ID <= 0)
	{
		return false;
	}

	$arFields['IBLOCK_ID'] = (int)($arFields['IBLOCK_ID'] ?? 0);
	if ($arFields['IBLOCK_ID'] <= 0)
	{
		return false;
	}

	$arFields['PROPERTY_TYPE'] ??= PropertyTable::TYPE_STRING;
	$arFields['MULTIPLE'] ??= 'N';
	$arFields['WITH_DESCRIPTION'] ??= 'N';

	if ($arFields["MULTIPLE"] === "Y")
	{
		$strType = "longtext";
	}
	else
	{
		switch($arFields["PROPERTY_TYPE"])
		{
			case PropertyTable::TYPE_STRING:
				$strType = "text";
				break;
			case PropertyTable::TYPE_NUMBER:
				$strType = "numeric(18,4)";
				break;
			case PropertyTable::TYPE_LIST:
			case PropertyTable::TYPE_FILE:
			case PropertyTable::TYPE_SECTION:
			case PropertyTable::TYPE_ELEMENT:
				$strType = "int(11)";
				break;
			default://s - small string
				$strType = "varchar(255)";
		}
	}
	$strSql = "
		ALTER TABLE b_iblock_element_prop_s".$arFields["IBLOCK_ID"]."
		ADD PROPERTY_".$ID." ".$strType."
		".($arFields["WITH_DESCRIPTION"] == "Y"? ", ADD DESCRIPTION_".$ID." varchar(255)": "")."
	";

	return $DB->DDL($strSql, true);
}