• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/product/systemfield.php
  • Класс: BitrixCatalogProductSystemField
  • Вызов: SystemField::getFieldsByRestrictions
static function getFieldsByRestrictions(array $restrictions, array $config = []): array
{
	$fieldList = self::getBuildedFieldList();
	if (empty($fieldList))
	{
		return [];
	}

	$resultMode = self::DESCRIPTION_MODE_FULL;
	if (isset($config['RESULT_MODE']) && is_string($config['RESULT_MODE']))
	{
		$resultMode = $config['RESULT_MODE'];
	}

	$result = [];
	foreach ($fieldList as $field)
	{
		if (
			$field::checkRestictions($restrictions)
			&& $field::isExists()
		)
		{
			$data = $field::getUserFieldBaseParam();
			switch ($resultMode)
			{
				case self::DESCRIPTION_MODE_FIELD_NAME:
					$result[] = $data['FIELD_NAME'];
					break;
				case self::DESCRIPTION_MODE_UI_LIST:
					$result[] = [
						$data['FIELD_NAME'] => $field::getTitle(),
					];
					break;
				case self::DESCRIPTION_MODE_UI_FORM_EDITOR:
					$result[] = [
						'name' => $data['FIELD_NAME'],
					];
					break;
				case self::DESCRIPTION_MODE_UI_FIELDS:
					$result[] = $field::getUiDescription($restrictions);
					break;
				case self::DESCRIPTION_MODE_CLASSNAME:
					$result[$data['FIELD_NAME']] = $field;
					break;
				case self::DESCRIPTION_MODE_FULL:
				default:
					$result[$data['FIELD_NAME']] = $data;
					break;
			}
		}
	}
	unset($field, $fieldList);

	return $result;
}