Your IP : 18.118.216.112


Current Path : /home/bitrix/ext_www/ballu.in.ua/bitrix/components/bitrix/catalog.products.viewed/
Upload File :
Current File : /home/bitrix/ext_www/ballu.in.ua/bitrix/components/bitrix/catalog.products.viewed/.parameters.php

<?
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();

/** @var array $arCurrentValues */

use Bitrix\Main\Loader;
use Bitrix\Currency;
use Bitrix\Iblock;

if (!Loader::includeModule('iblock') || !Loader::includeModule('catalog'))
	return;

$usePropertyFeatures = Iblock\Model\PropertyFeature::isEnabledFeatures();

$arIBlockType = CIBlockParameters::GetIBlockTypes();
$arIBlock = array();
$iblockFilter = !empty($arCurrentValues['IBLOCK_TYPE'])
	? array('TYPE' => $arCurrentValues['IBLOCK_TYPE'], 'ACTIVE' => 'Y')
	: array('ACTIVE' => 'Y');

$rsIBlock = CIBlock::GetList(array('SORT' => 'ASC'), $iblockFilter);
while ($arr = $rsIBlock->Fetch())
{
	$arIBlock[$arr['ID']] = '['.$arr['ID'].'] '.$arr['NAME'];
}
unset($arr, $rsIBlock, $iblockFilter);

$arPrice = CCatalogIBlockParameters::getPriceTypesList();
$arAscDesc = array(
	'asc' => GetMessage('IBLOCK_SORT_ASC'),
	'desc' => GetMessage('IBLOCK_SORT_DESC'),
);

$singleIblockMode = !isset($arCurrentValues['IBLOCK_MODE']) || $arCurrentValues['IBLOCK_MODE'] === 'single';
$showFromSection = $singleIblockMode && isset($arCurrentValues['SHOW_FROM_SECTION']) && $arCurrentValues['SHOW_FROM_SECTION'] === 'Y';

$arComponentParameters = array(
	'GROUPS' => array(
		'ACTION_SETTINGS' => array(
			'NAME' => GetMessage('IBLOCK_ACTIONS')
		),
		'PRICES' => array(
			'NAME' => GetMessage('IBLOCK_PRICES'),
		),
		'BASKET' => array(
			'NAME' => GetMessage('IBLOCK_BASKET'),
		),
		'COMPARE' => array(
			'NAME' => GetMessage('IBLOCK_COMPARE')
		),
		'ANALYTICS_SETTINGS' => array(
			'NAME' => GetMessage('ANALYTICS_SETTINGS'),
			'SORT' => 11000
		)
	),
	'PARAMETERS' => array(
		'IBLOCK_MODE' => array(
			'PARENT' => 'DATA_SOURCE',
			'NAME' => GetMessage('CP_CPV_IBLOCK_MODE'),
			'TYPE' => 'LIST',
			'VALUES' => array(
				'single' => GetMessage('CP_CPV_IBLOCK_MODE_SINGLE'),
				'multi' => GetMessage('CP_CPV_IBLOCK_MODE_MULTI')
			),
			'DEFAULT' => 'single',
			'REFRESH' => 'Y',
		),
		'IBLOCK_TYPE' => array(
			'PARENT' => 'DATA_SOURCE',
			'NAME' => GetMessage('IBLOCK_TYPE'),
			'TYPE' => 'LIST',
			'VALUES' => $arIBlockType,
			'REFRESH' => 'Y',
			'HIDDEN' => $singleIblockMode ? 'N' : 'Y'
		),
		'IBLOCK_ID' => array(
			'PARENT' => 'DATA_SOURCE',
			'NAME' => GetMessage('IBLOCK_IBLOCK'),
			'TYPE' => 'LIST',
			'ADDITIONAL_VALUES' => 'Y',
			'VALUES' => $arIBlock,
			'REFRESH' => 'Y',
			'HIDDEN' => $singleIblockMode ? 'N' : 'Y'
		),
		'SHOW_FROM_SECTION' => array(
			'PARENT' => 'DATA_SOURCE',
			'NAME' => GetMessage('CP_CPV_SHOW_FROM_SECTION'),
			'TYPE' => 'CHECKBOX',
			'DEFAULT' => 'N',
			'REFRESH' => 'Y',
			'HIDDEN' => $singleIblockMode ? 'N' : 'Y'
		),
		'SECTION_ID' => array(
			'PARENT' => 'DATA_SOURCE',
			'NAME' => GetMessage('CP_CPV_SECTION_ID'),
			'TYPE' => 'STRING',
			'DEFAULT' => '={$GLOBALS["CATALOG_CURRENT_SECTION_ID"]}',
			'HIDDEN' => $showFromSection ? 'N' : 'Y'
		),
		'SECTION_CODE' => array(
			'PARENT' => 'DATA_SOURCE',
			'NAME' => GetMessage('CP_CPV_SECTION_CODE'),
			'TYPE' => 'STRING',
			'DEFAULT' => '',
			'HIDDEN' => $showFromSection ? 'N' : 'Y'
		),
		'SECTION_ELEMENT_ID' => array(
			'PARENT' => 'DATA_SOURCE',
			'NAME' => GetMessage('CP_CPV_SECTION_ELEMENT_ID'),
			'TYPE' => 'STRING',
			'DEFAULT' => '={$GLOBALS["CATALOG_CURRENT_ELEMENT_ID"]}',
			'HIDDEN' => $showFromSection ? 'N' : 'Y'
		),
		'SECTION_ELEMENT_CODE' => array(
			'PARENT' => 'DATA_SOURCE',
			'NAME' => GetMessage('CP_CPV_SECTION_ELEMENT_CODE'),
			'TYPE' => 'STRING',
			'DEFAULT' => '',
			'HIDDEN' => $showFromSection ? 'N' : 'Y'
		),
		'DEPTH' => array(
			'PARENT' => 'DATA_SOURCE',
			'NAME' => GetMessage('CP_CPV_DEPTH'),
			'TYPE' => 'STRING',
			'DEFAULT' => '2',
			'HIDDEN' => $showFromSection ? 'N' : 'Y'
		),
		'HIDE_NOT_AVAILABLE' => array(
			'PARENT' => 'DATA_SOURCE',
			'NAME' => GetMessage('CP_CPV_HIDE_NOT_AVAILABLE'),
			'TYPE' => 'LIST',
			'DEFAULT' => 'N',
			'VALUES' => array(
				'Y' => GetMessage('CP_CPV_HIDE_NOT_AVAILABLE_HIDE'),
				'L' => GetMessage('CP_CPV_HIDE_NOT_AVAILABLE_LAST'),
				'N' => GetMessage('CP_CPV_HIDE_NOT_AVAILABLE_SHOW')
			)
		),
		'HIDE_NOT_AVAILABLE_OFFERS' => array(
			'PARENT' => 'DATA_SOURCE',
			'NAME' => GetMessage('CP_CPV_HIDE_NOT_AVAILABLE_OFFERS'),
			'TYPE' => 'LIST',
			'DEFAULT' => 'N',
			'VALUES' => array(
				'Y' => GetMessage('CP_CPV_HIDE_NOT_AVAILABLE_OFFERS_HIDE'),
				'L' => GetMessage('CP_CPV_HIDE_NOT_AVAILABLE_OFFERS_SUBSCRIBE'),
				'N' => GetMessage('CP_CPV_HIDE_NOT_AVAILABLE_OFFERS_SHOW')
			)
		),
		'PAGE_ELEMENT_COUNT' => array(
			'PARENT' => 'VISUAL',
			'NAME' => GetMessage('IBLOCK_PAGE_ELEMENT_COUNT'),
			'TYPE' => 'STRING',
			'HIDDEN' => 'Y',
			'DEFAULT' => '9'
		),
		'PRICE_CODE' => array(
			'PARENT' => 'PRICES',
			'NAME' => GetMessage('IBLOCK_PRICE_CODE'),
			'TYPE' => 'LIST',
			'MULTIPLE' => 'Y',
			'VALUES' => $arPrice,
		),
		'USE_PRICE_COUNT' => array(
			'PARENT' => 'PRICES',
			'NAME' => GetMessage('IBLOCK_USE_PRICE_COUNT'),
			'TYPE' => 'CHECKBOX',
			'DEFAULT' => 'N',
		),
		'SHOW_PRICE_COUNT' => array(
			'PARENT' => 'PRICES',
			'NAME' => GetMessage('IBLOCK_SHOW_PRICE_COUNT'),
			'TYPE' => 'STRING',
			'DEFAULT' => '1',
		),
		'PRICE_VAT_INCLUDE' => array(
			'PARENT' => 'PRICES',
			'NAME' => GetMessage('IBLOCK_VAT_INCLUDE'),
			'TYPE' => 'CHECKBOX',
			'DEFAULT' => 'Y',
		),
		'CONVERT_CURRENCY' => array(
			'PARENT' => 'PRICES',
			'NAME' => GetMessage('CP_CPV_CONVERT_CURRENCY'),
			'TYPE' => 'CHECKBOX',
			'DEFAULT' => 'N',
			'REFRESH' => 'Y',
		),
		'BASKET_URL' => array(
			'PARENT' => 'BASKET',
			'NAME' => GetMessage('IBLOCK_BASKET_URL'),
			'TYPE' => 'STRING',
			'DEFAULT' => '/personal/basket.php',
		),
		'ACTION_VARIABLE' => array(
			'PARENT' => 'ACTION_SETTINGS',
			'NAME' => GetMessage('IBLOCK_ACTION_VARIABLE'),
			'TYPE' => 'STRING',
			'DEFAULT' => 'action_cpv',
		),
		'PRODUCT_ID_VARIABLE' => array(
			'PARENT' => 'ACTION_SETTINGS',
			'NAME' => GetMessage('IBLOCK_PRODUCT_ID_VARIABLE'),
			'TYPE' => 'STRING',
			'DEFAULT' => 'id',
		),
		'USE_PRODUCT_QUANTITY' => array(
			'PARENT' => 'BASKET',
			'NAME' => GetMessage('CP_CPV_USE_PRODUCT_QUANTITY'),
			'TYPE' => 'CHECKBOX',
			'DEFAULT' => 'N',
			'REFRESH' => 'Y',
		),
		'PRODUCT_QUANTITY_VARIABLE' => array(
			'PARENT' => 'BASKET',
			'NAME' => GetMessage('CP_CPV_PRODUCT_QUANTITY_VARIABLE'),
			'TYPE' => 'STRING',
			'DEFAULT' => 'quantity',
			'HIDDEN' => (isset($arCurrentValues['USE_PRODUCT_QUANTITY']) && $arCurrentValues['USE_PRODUCT_QUANTITY'] === 'Y' ? 'N' : 'Y')
		),
		'ADD_PROPERTIES_TO_BASKET' => array(
			'PARENT' => 'BASKET',
			'NAME' => GetMessage('CP_CPV_ADD_PROPERTIES_TO_BASKET'),
			'TYPE' => 'CHECKBOX',
			'DEFAULT' => 'Y',
			'REFRESH' => 'Y'
		),
		'PRODUCT_PROPS_VARIABLE' => array(
			'PARENT' => 'BASKET',
			'NAME' => GetMessage('CP_CPV_PRODUCT_PROPS_VARIABLE'),
			'TYPE' => 'STRING',
			'DEFAULT' => 'prop',
			'HIDDEN' => (isset($arCurrentValues['ADD_PROPERTIES_TO_BASKET']) && $arCurrentValues['ADD_PROPERTIES_TO_BASKET'] === 'N' ? 'Y' : 'N')
		),
		'PARTIAL_PRODUCT_PROPERTIES' => array(
			'PARENT' => 'BASKET',
			'NAME' => GetMessage('CP_CPV_PARTIAL_PRODUCT_PROPERTIES'),
			'TYPE' => 'CHECKBOX',
			'DEFAULT' => 'N',
			'HIDDEN' => (isset($arCurrentValues['ADD_PROPERTIES_TO_BASKET']) && $arCurrentValues['ADD_PROPERTIES_TO_BASKET'] === 'N' ? 'Y' : 'N')
		),
		'CACHE_TIME' => array('DEFAULT' => 3600),
		'CACHE_GROUPS' => array(
			'PARENT' => 'CACHE_SETTINGS',
			'NAME' => GetMessage('CP_CPV_CACHE_GROUPS'),
			'TYPE' => 'CHECKBOX',
			'DEFAULT' => 'Y',
		)
	),
);

if (isset($arCurrentValues['CONVERT_CURRENCY']) && $arCurrentValues['CONVERT_CURRENCY'] === 'Y')
{
	$arComponentParameters['PARAMETERS']['CURRENCY_ID'] = array(
		'PARENT' => 'PRICES',
		'NAME' => GetMessage('CP_CPV_CURRENCY_ID'),
		'TYPE' => 'LIST',
		'VALUES' => Currency\CurrencyManager::getCurrencyList(),
		'DEFAULT' => Currency\CurrencyManager::getBaseCurrency(),
		'ADDITIONAL_VALUES' => 'Y',
	);
}

if (
	$singleIblockMode && isset($arCurrentValues['IBLOCK_ID']) && (int)$arCurrentValues['IBLOCK_ID'] > 0
	|| !$singleIblockMode
)
{
	$iblockMap = array();
	$iblockFilter = array('ACTIVE' => 'Y');
	if ($singleIblockMode)
	{
		$catalogInfo = CCatalogSku::GetInfoByProductIBlock($arCurrentValues['IBLOCK_ID']);
		$iblockFilter['ID'] = array($catalogInfo['IBLOCK_ID'], $catalogInfo['PRODUCT_IBLOCK_ID']);
	}

	$iblockIterator = CIBlock::GetList(array('SORT' => 'ASC'), $iblockFilter);
	while ($iblock = $iblockIterator->fetch())
	{
		$iblockMap[$iblock['ID']] = $iblock;
	}

	$catalogs = array();
	$productsCatalogs = array();
	$skuCatalogs = array();
	$catalogIterator = CCatalog::GetList(
		array('IBLOCK_ID' => 'ASC'),
		array('@IBLOCK_ID' => array_keys($iblockMap)),
		false,
		false,
		array('IBLOCK_ID', 'PRODUCT_IBLOCK_ID', 'SKU_PROPERTY_ID')
	);
	while ($catalog = $catalogIterator->fetch())
	{
		$isOffersCatalog = (int)$catalog['PRODUCT_IBLOCK_ID'] > 0;
		if ($isOffersCatalog)
		{
			$skuCatalogs[$catalog['PRODUCT_IBLOCK_ID']] = $catalog;

			if (!isset($productsCatalogs[$catalog['PRODUCT_IBLOCK_ID']]))
			{
				$productsCatalogs[$catalog['PRODUCT_IBLOCK_ID']] = $catalog;
			}
		}
		else
		{
			$productsCatalogs[$catalog['IBLOCK_ID']] = $catalog;
		}
	}

	foreach ($productsCatalogs as $catalog)
	{
		if ($singleIblockMode)
		{
			$catalog['VISIBLE'] = !empty($catalogInfo);
		}
		else
		{
			$catalog['VISIBLE'] = isset($arCurrentValues['SHOW_PRODUCTS_'.$catalog['IBLOCK_ID']])
				&& $arCurrentValues['SHOW_PRODUCTS_'.$catalog['IBLOCK_ID']] === 'Y';
		}

		$catalogs[] = $catalog;

		if (isset($skuCatalogs[$catalog['IBLOCK_ID']]))
		{
			$skuCatalogs[$catalog['IBLOCK_ID']]['VISIBLE'] = $catalog['VISIBLE'];
			$catalogs[] = $skuCatalogs[$catalog['IBLOCK_ID']];
		}
	}

	$defaultListValues = array('-' => GetMessage('CP_CPV_UNDEFINED'));
	foreach ($catalogs as $catalog)
	{
		$catalogs[$catalog['IBLOCK_ID']] = $catalog;
		$iblock = $iblockMap[$catalog['IBLOCK_ID']];

		// sku
		if ((int)$catalog['SKU_PROPERTY_ID'] > 0)
		{
			$groupName = sprintf(GetMessage('CP_CPV_GROUP_OFFERS_CATALOG_PARAMS'), $iblock['NAME']);
		}
		else
		{
			$groupName = sprintf(GetMessage('CP_CPV_GROUP_PRODUCT_CATALOG_PARAMS'), $iblock['NAME']);
		}

		$groupId = 'CATALOG_PARAMS_'.$iblock['ID'];
		$arComponentParameters['GROUPS'][$groupId] = array(
			'NAME' => $groupName
		);

		// Params in group
		// 1. Display Properties
		$listProperties = array();
		$allProperties = array();
		$fileProperties = array();
		$treeProperties = array();

		$propertyIterator = CIBlockProperty::GetList(
			array('SORT' => 'ASC', 'NAME' => 'ASC'),
			array('IBLOCK_ID' => $iblock['ID'], 'ACTIVE' => 'Y')
		);
		while ($property = $propertyIterator->fetch())
		{
			$property['ID'] = (int)$property['ID'];
			$propertyName = '['.$property['ID'].']'.('' != $property['CODE'] ? '['.$property['CODE'].']' : '').' '.$property['NAME'];

			if ($property['CODE'] == '')
			{
				$property['CODE'] = $property['ID'];
			}

			$allProperties[$property['CODE']] = $propertyName;

			if ($property['PROPERTY_TYPE'] === 'F')
			{
				$fileProperties[$property['CODE']] = $propertyName;
			}

			if ($property['PROPERTY_TYPE'] === 'L')
			{
				$listProperties[$property['CODE']] = $propertyName;
			}

			// skip property id
			if ($property['ID'] == $catalog['SKU_PROPERTY_ID'])
				continue;

			if (
				$property['PROPERTY_TYPE'] === 'L'
				|| $property['PROPERTY_TYPE'] === 'E'
				|| ($property['PROPERTY_TYPE'] === 'S' && $property['USER_TYPE'] === 'directory')
			)
			{
				$treeProperties[$property['CODE']] = $propertyName;
			}
		}

		// Properties
		// Common Catalog options
		if (!$singleIblockMode && (int)$catalog['SKU_PROPERTY_ID'] <= 0)
		{
			$arComponentParameters['PARAMETERS']['SHOW_PRODUCTS_'.$iblock['ID']] = array(
				'PARENT' => $groupId,
				'NAME' => GetMessage('CP_CPV_SHOW_PRODUCTS'),
				'TYPE' => 'CHECKBOX',
				'REFRESH' => 'Y',
				'DEFAULT' => 'N'
			);
		}

		if (!$usePropertyFeatures)
		{
			$arComponentParameters['PARAMETERS']['PROPERTY_CODE_'.$iblock['ID']] = array(
				'PARENT' => $groupId,
				'NAME' => GetMessage('CP_CPV_PROPERTY_DISPLAY'),
				'TYPE' => 'LIST',
				'MULTIPLE' => 'Y',
				'REFRESH' => 'Y',
				'VALUES' => $allProperties,
				'ADDITIONAL_VALUES' => 'Y',
				'DEFAULT' => '',
				'HIDDEN' => !$catalog['VISIBLE'] ? 'Y' : 'N'
			);
		}

		// hack for correct sort
		if ((int)$catalog['SKU_PROPERTY_ID'] <= 0 && isset($templateProperties['PROPERTY_CODE_MOBILE_'.$iblock['ID']]))
		{
			$arComponentParameters['PARAMETERS']['PROPERTY_CODE_MOBILE_'.$iblock['ID']] = $templateProperties['PROPERTY_CODE_MOBILE_'.$iblock['ID']];
			unset($templateProperties['PROPERTY_CODE_MOBILE_'.$iblock['ID']]);
		}

		// 3. Cart properties
		if (!$usePropertyFeatures)
		{
			$arComponentParameters['PARAMETERS']['CART_PROPERTIES_'.$iblock['ID']] = array(
				'PARENT' => $groupId,
				'NAME' => GetMessage('CP_CPV_PROPERTY_ADD_TO_BASKET'),
				'TYPE' => 'LIST',
				'MULTIPLE' => 'Y',
				'VALUES' => $treeProperties,
				'ADDITIONAL_VALUES' => 'Y',
				'HIDDEN' => ((isset($arCurrentValues['ADD_PROPERTIES_TO_BASKET']) &&
					$arCurrentValues['ADD_PROPERTIES_TO_BASKET'] == 'N') || !$catalog['VISIBLE'] ? 'Y' : 'N')
			);
		}

		// 2. Additional Image
		$arComponentParameters['PARAMETERS']['ADDITIONAL_PICT_PROP_'.$iblock['ID']] = array(
			'PARENT' => $groupId,
			'NAME' => GetMessage('CP_CPV_ADDITIONAL_IMAGE'),
			'TYPE' => 'LIST',
			'MULTIPLE' => 'N',
			'VALUES' => array_merge($defaultListValues, $fileProperties),
			'ADDITIONAL_VALUES' => 'N',
			'DEFAULT' => '-',
			'HIDDEN' => !$catalog['VISIBLE'] ? 'Y' : 'N'
		);

		if ((int)$catalog['SKU_PROPERTY_ID'] > 0)
		{
			if (!$usePropertyFeatures)
			{
				$arComponentParameters['PARAMETERS']['OFFER_TREE_PROPS_'.$iblock['ID']] = array(
					'PARENT' => $groupId,
					'NAME' => GetMessage('CP_CPV_PROPERTY_GROUP'),
					'TYPE' => 'LIST',
					'MULTIPLE' => 'Y',
					'VALUES' => array_merge($defaultListValues, $treeProperties),
					'ADDITIONAL_VALUES' => 'N',
					'DEFAULT' => '-',
					'HIDDEN' => !$catalog['VISIBLE'] ? 'Y' : 'N'
				);
			}
		}
		else
		{
			$arComponentParameters['PARAMETERS']['LABEL_PROP_'.$iblock['ID']] = array(
				'PARENT' => $groupId,
				'NAME' => GetMessage('CP_CPV_PROPERTY_LABEL'),
				'TYPE' => 'LIST',
				'MULTIPLE' => 'Y',
				'ADDITIONAL_VALUES' => 'N',
				'REFRESH' => 'Y',
				'VALUES' => array_merge($defaultListValues, $listProperties),
				'HIDDEN' => !$catalog['VISIBLE'] ? 'Y' : 'N'
			);

			// hack for correct sort
			if (isset($templateProperties['LABEL_PROP_MOBILE_'.$iblock['ID']]))
			{
				$arComponentParameters['PARAMETERS']['LABEL_PROP_MOBILE_'.$iblock['ID']] = $templateProperties['LABEL_PROP_MOBILE_'.$iblock['ID']];
				unset($templateProperties['LABEL_PROP_MOBILE_'.$iblock['ID']]);
			}
		}
	}
}

$arComponentParameters['PARAMETERS']['DISPLAY_COMPARE'] = array(
	'PARENT' => 'COMPARE',
	'NAME' => GetMessage('CP_CPV_DISPLAY_COMPARE'),
	'TYPE' => 'CHECKBOX',
	'REFRESH' => 'Y',
	'DEFAULT' => 'N'
);

if (isset($arCurrentValues['DISPLAY_COMPARE']) && $arCurrentValues['DISPLAY_COMPARE'] === 'Y')
{
	$arComponentParameters['PARAMETERS']['COMPARE_PATH'] = array(
		'PARENT' => 'COMPARE',
		'NAME' => GetMessage('CP_CPV_COMPARE_PATH'),
		'TYPE' => 'STRING',
		'DEFAULT' => ''
	);
}