• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/classes/general/iblock.php
  • Класс: CAllIBlock
  • Вызов: CAllIBlock::GetFields
static function GetFields($ID)
{
	/** @global CDatabase $DB */
	global $DB;
	$ID = (int)$ID;
	$fields = static::GetFieldsDefaults();
	$defaultValues = static::getFieldsDefaultValues();

	$res = $DB->Query("
		SELECT
			F.*
		FROM
			b_iblock B
			LEFT JOIN b_iblock_fields F ON B.ID = F.IBLOCK_ID
		WHERE
			B.ID = ".$ID."
	");
	while ($ar = $res->Fetch())
	{
		$fieldId = $ar['FIELD_ID'];
		if (isset($fields[$fieldId]))
		{
			if ($fields[$fieldId]['IS_REQUIRED'] === false)
			{
				$fields[$fieldId]['IS_REQUIRED'] = $ar['IS_REQUIRED'] === 'Y' ? 'Y' : 'N';
			}
			$fields[$fieldId]['DEFAULT_VALUE'] = $ar['DEFAULT_VALUE'];
		}
	}
	unset($res);

	foreach ($fields as $FIELD_ID => $default)
	{
		if ($default['IS_REQUIRED'] === false)
		{
			$fields[$FIELD_ID]['IS_REQUIRED'] = 'N';
		}

		if (isset($defaultValues[$FIELD_ID]) && is_array($defaultValues[$FIELD_ID]))
		{
			$a = &$fields[$FIELD_ID]['DEFAULT_VALUE'];

			if (is_string($a) && $a !== '')
			{
				if (CheckSerializedData($a))
				{
					$a = unserialize($a, ['allowed_classes' => false]);
				}
			}
			if (!is_array($a))
			{
				$a = [];
			}
			$a = array_merge($defaultValues[$FIELD_ID], $a);

			if (array_key_exists('TRANS_LEN', $a))
			{
				$trans_len = (int)$a['TRANS_LEN'];
				if ($trans_len > 255)
				{
					$trans_len = 255;
				}
				elseif ($trans_len < 1)
				{
					$trans_len = 100;
				}
				$a['TRANS_LEN'] = $trans_len;
			}
		}
	}

	return $fields;
}