• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/product/propertycatalogfeature.php
  • Класс: BitrixCatalogProductPropertyCatalogFeature
  • Вызов: PropertyCatalogFeature::checkBasketProperty
static function checkBasketProperty(array $property, array $description): bool
	{
		if (!isset($property['IBLOCK_ID']))
			return false;
		$catalogType = null;
		if ((int)$property['IBLOCK_ID'] > 0)
		{
			$catalog = CCatalogSku::GetInfoByIBlock($property['IBLOCK_ID']);
			if (empty($catalog))
				return false;
			$catalogType = $catalog['CATALOG_TYPE'];
		}
		else
		{
			return false;
		}
		if ($catalogType === null)
			return false;
		if (!isset($property['PROPERTY_TYPE']))
			return false;
		if (!isset($property['MULTIPLE']))
			return false;

		switch ($catalogType)
		{
			case CCatalogSku::TYPE_PRODUCT:
			case CCatalogSku::TYPE_CATALOG:
			case CCatalogSku::TYPE_FULL:
				if ($property['MULTIPLE'] == 'Y')
				{
					if (
						$property['PROPERTY_TYPE'] !== IblockPropertyTable::TYPE_ELEMENT
						&& $property['PROPERTY_TYPE'] !== IblockPropertyTable::TYPE_SECTION
						&& $property['PROPERTY_TYPE'] !== IblockPropertyTable::TYPE_LIST
						&& $property['PROPERTY_TYPE'] !== IblockPropertyTable::TYPE_NUMBER
						&& $property['PROPERTY_TYPE'] !== IblockPropertyTable::TYPE_STRING
					)
						return false;
				}
				elseif ($property['MULTIPLE'] == 'N')
				{
					if (
						$property['PROPERTY_TYPE'] !== IblockPropertyTable::TYPE_ELEMENT
						&& $property['PROPERTY_TYPE'] !== IblockPropertyTable::TYPE_LIST
					)
						return false;
				}
				else
				{
					return false;
				}
				break;
			case CCatalogSku::TYPE_OFFERS:
				if ($property['PROPERTY_TYPE'] == IblockPropertyTable::TYPE_FILE)
					return false;
				break;
		}

		return true;
	}