Your IP : 3.138.124.234


Current Path : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/components/bitrix/crm.product.show/
Upload File :
Current File : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/components/bitrix/crm.product.show/component.php

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

if (!CModule::IncludeModule('crm'))
{
	ShowError(GetMessage('CRM_MODULE_NOT_INSTALLED'));
	return;
}

global $USER, $APPLICATION;

$CrmPerms = new CCrmPerms($USER->GetID());
if (!$CrmPerms->HavePerm('CONFIG', BX_CRM_PERM_CONFIG, 'READ'))
{
	ShowError(GetMessage('CRM_PERMISSION_DENIED'));
	return;
}

$arParams['PATH_TO_PRODUCT_LIST'] = CrmCheckPath('PATH_TO_PRODUCT_LIST', $arParams['PATH_TO_PRODUCT_LIST'], '');
$arParams['PATH_TO_PRODUCT_FILE'] = CrmCheckPath(
	'PATH_TO_PRODUCT_FILE', $arParams['PATH_TO_PRODUCT_FILE'],
	$APPLICATION->GetCurPage().'?product_id=#product_id#&field_id=#field_id#&file_id=#file_id#&file'
);
$arParams['PATH_TO_PRODUCT_SHOW'] = CrmCheckPath('PATH_TO_PRODUCT_SHOW', $arParams['PATH_TO_PRODUCT_SHOW'], '');

//CUtil::InitJSCore(array('ajax', 'tooltip'));

$bVatMode = CCrmTax::isVatMode();

$vatRateListItems = array();
if ($bVatMode)
	$vatRateListItems = CCrmVat::GetVatRatesListItems();

// measure list items
$measureListItems = array('' => GetMessage('CRM_MEASURE_NOT_SELECTED'));
$measures = \Bitrix\Crm\Measure::getMeasures(100);
if (is_array($measures))
{
	foreach ($measures as $measure)
		$measureListItems[$measure['ID']] = $measure['SYMBOL'];
	unset($measure);
}
unset($measures);

$productID = isset($arParams['PRODUCT_ID']) ? intval($arParams['PRODUCT_ID']) : 0;
if($productID <= 0)
{
	$productIDParName = isset($arParams['PRODUCT_ID_PAR_NAME']) ? strval($arParams['PRODUCT_ID_PAR_NAME']) : '';
	if($productIDParName == '')
	{
		$productIDParName = 'product_id';
	}

	$productID = isset($_REQUEST[$productIDParName]) ? intval($_REQUEST[$productIDParName]) : 0;
}

$arResult['PRODUCT_ID'] = $productID;
$product = $productID > 0 ? CCrmProduct::GetByID($productID, true) : false;
$arResult['CATALOG_ID'] = $catalogID = isset($product['CATALOG_ID']) ?
	intval($product['CATALOG_ID']) :
	(isset($arParams['CATALOG_ID']) ? intval($arParams['CATALOG_ID']) : CCrmCatalog::EnsureDefaultExists());

if(!$product)
{
	ShowError(GetMessage('CRM_PRODUCT_NOT_FOUND'));
	@define('ERROR_404', 'Y');
	if($arParams['SET_STATUS_404'] === 'Y')
	{
		CHTTP::SetStatus("404 Not Found");
	}
	return;
}

// Product properties
$arPropUserTypeList = CCrmProductPropsHelper::GetPropsTypesByOperations(false, 'edit');
$arResult['EDITABLE_PROP_USER_TYPES'] = $arPropUserTypeList;
$arResult['EDITABLE_PROPS'] = CCrmProductPropsHelper::GetProps($catalogID, $arPropUserTypeList);
$arPropUserTypeList = CCrmProductPropsHelper::GetPropsTypesByOperations(false, 'view');
$arResult['PROP_USER_TYPES'] = $arPropUserTypeList;
$arProps = CCrmProductPropsHelper::GetProps($catalogID, $arPropUserTypeList);
$arResult['PROPS'] = $arProps;

$arResult['PRODUCT'] = $product;

$arResult['FORM_ID'] = 'CRM_PRODUCT_SHOW';
$arResult['GRID_ID'] = 'CRM_PRODUCT_LIST';

// Product properties values
/*$arResult['PRODUCT_PROPS'] = array();*/
$arPropertyValues = array();
if ($productID > 0/* && count($arProps) > 0*/)
{
	$rsProperties = CIBlockElement::GetProperty(
		$catalogID,
		$productID,
		array(
			'sort' => 'asc',
			'id' => 'asc',
			'enum_sort' => 'asc',
			'value_id' => 'asc',
		),
		array(
			'ACTIVE' => 'Y',
			'EMPTY' => 'N',
			'CHECK_PERMISSIONS' => 'N'
		)
	);
	$prevPropID = '';
	$prevPropMultipleValuesInfo = array();
	while ($arProperty = $rsProperties->Fetch())
	{
		if (isset($arProperty['USER_TYPE']) && !empty($arProperty['USER_TYPE'])
			&& !array_key_exists($arProperty['USER_TYPE'], $arPropUserTypeList))
			continue;

		$propID = 'PROPERTY_' . $arProperty['ID'];

		// region Prepare multiple values
		if (!empty($prevPropID) && $propID !== $prevPropID && !empty($prevPropMultipleValuesInfo))
		{
			foreach ($prevPropMultipleValuesInfo as $valueInfo)
			{
				$methodName = $prevPropMultipleValuesInfo['methodName'];
				$method = $prevPropMultipleValuesInfo['propertyInfo']['PROPERTY_USER_TYPE'][$methodName];
				$params = [
					$prevPropMultipleValuesInfo['propertyInfo'],
					[
						"VALUE" => $prevPropMultipleValuesInfo['value'],
					],
					[],
				];
				$arPropertyValues[$prevPropID] = call_user_func_array($method, $params);
			}
		}
		// endregion Prepare multiple values

		if ($propID !== $prevPropID)
		{
			$prevPropID = $propID;
			$prevPropMultipleValuesInfo = array();
		}

		if(!isset($arPropertyValues[$propID]))
			$arPropertyValues[$propID] = array();

		$userTypeMultipleWithMultipleMethod = $userTypeMultipleWithSingleMethod =
		$userTypeSingleWithSingleMethod = false;
		if (isset($arProperty['USER_TYPE']) && !empty($arProperty['USER_TYPE'])
			&& is_array($arPropUserTypeList[$arProperty['USER_TYPE']]))
		{
			$userTypeMultipleWithMultipleMethod = (
				isset($arProperty['MULTIPLE']) && $arProperty['MULTIPLE'] === 'Y'
				&& array_key_exists('GetPublicViewHTMLMulty', $arPropUserTypeList[$arProperty['USER_TYPE']])
			);
			$userTypeMultipleWithSingleMethod = (
				isset($arProperty['MULTIPLE']) && $arProperty['MULTIPLE'] === 'Y'
				&& array_key_exists('GetPublicViewHTML', $arPropUserTypeList[$arProperty['USER_TYPE']])
			);
			$userTypeSingleWithSingleMethod = (
				(!isset($arProperty['MULTIPLE']) || $arProperty['MULTIPLE'] !== 'Y')
				&& array_key_exists('GetPublicViewHTML', $arPropUserTypeList[$arProperty['USER_TYPE']])
			);
		}
		if ($userTypeMultipleWithMultipleMethod || $userTypeMultipleWithSingleMethod
			|| $userTypeSingleWithSingleMethod)
		{
			$propertyInfo = $arProps[$propID];
			$propertyInfo['PROPERTY_USER_TYPE'] = $arPropUserTypeList[$arProperty['USER_TYPE']];
			$methodName = $userTypeMultipleWithMultipleMethod ? 'GetPublicViewHTMLMulty' : 'GetPublicViewHTML';
			if ($userTypeMultipleWithMultipleMethod)
			{
				if (is_array($prevPropMultipleValuesInfo['value']))
				{
					$prevPropMultipleValuesInfo['value'][] = $arProperty["VALUE"];
				}
				else
				{
					$prevPropMultipleValuesInfo['propertyInfo'] = $propertyInfo;
					$prevPropMultipleValuesInfo['methodName'] = $methodName;
					$prevPropMultipleValuesInfo['value'] = array($arProperty["VALUE"]);
				}
			}
			else
			{
				$htmlControlName = [];
				if (CCrmProductPropsHelper::isTypeSupportingUrlTemplate($propertyInfo))
				{
					$htmlControlName = [
						'DETAIL_URL' => CComponentEngine::MakePathFromTemplate(
							$arParams['PATH_TO_PRODUCT_SHOW'],
							[
								'product_id' => $arProperty['VALUE'],
							]
						),
					];
				}

				$method = $arPropUserTypeList[$arProperty['USER_TYPE']][$methodName];
				$params = [
					$propertyInfo,
					[
						"VALUE" => $arProperty["VALUE"]
					],
					$htmlControlName,
				];
				$arPropertyValues[$propID][] = call_user_func_array($method, $params);
			}
			unset($propertyInfo);
		}
		elseif($arProperty["PROPERTY_TYPE"] == "L")
		{
			$arPropertyValues[$propID][] = htmlspecialcharsex($arProperty["VALUE_ENUM"]);
		}
		else
		{
			$arPropertyValues[$propID][] = nl2br(htmlspecialcharsex($arProperty["VALUE"]));
		}
	}

	// region Prepare multiple values for last property
	if (!empty($prevPropID) && !empty($prevPropMultipleValuesInfo))
	{
		foreach ($prevPropMultipleValuesInfo as $valueInfo)
		{
			$methodName = $prevPropMultipleValuesInfo['methodName'];
			$method = $prevPropMultipleValuesInfo['propertyInfo']['PROPERTY_USER_TYPE'][$methodName];
			$params = [
				$prevPropMultipleValuesInfo['propertyInfo'],
				[
					"VALUE" => $prevPropMultipleValuesInfo['value'],
				],
				[],
			];
			$arPropertyValues[$prevPropID] = call_user_func_array($method, $params);
		}
	}
	// endregion Prepare multiple values for last property

	unset($rsProperties, $arProperty, $propID, $prevPropID, $prevPropMultipleValuesInfo);
}
$arResult['PROPERTY_VALUES'] = $arPropertyValues;
unset($arPropertyValues);

$arResult['FIELDS'] = array();
$arResult['FIELDS']['tab_1'][] = array(
	'id' => 'product_info',
	'name' => GetMessage('CRM_SECTION_PRODUCT_INFO'),
	'type' => 'section',
	'isTactile' => true
);

$arResult['FIELDS']['tab_1'][] = array(
	'id' => 'ID',
	'name' => 'ID',
	'type' => 'label',
	'params' => array('size' => 50),
	'value' => $product['ID'],
	'isTactile' => true
);

$arResult['FIELDS']['tab_1'][] = array(
	'id' => 'NAME',
	'name' => GetMessage('CRM_PRODUCT_FIELD_NAME'),
	'params' => array('size' => 50),
	'type' => 'label',
	'value' => isset($product['~NAME']) ? $product['~NAME'] : '',
	'isTactile' => true
);

$arResult['FIELDS']['tab_1'][] = array(
	'id' => 'DESCRIPTION',
	'name' => GetMessage('CRM_FIELD_DESCRIPTION'),
	'type' => 'custom',
	'value' => (isset($product['DESCRIPTION_TYPE']) && $product['DESCRIPTION_TYPE'] === 'text') ?
		htmlspecialcharsEx($product['~DESCRIPTION']) : HTMLToTxt($product['~DESCRIPTION']),
	'params' => array(),
	'isTactile' => true,
	'isHidden' => !(isset($product['~DESCRIPTION']) && $product['~DESCRIPTION'] <> '')

);

$arResult['FIELDS']['tab_1'][] = array(
	'id' => 'ACTIVE',
	'name' => GetMessage('CRM_FIELD_ACTIVE'),
	'type' => 'label',
	'params' => array(),
	'value' => GetMessage(isset($product['ACTIVE']) && $product['ACTIVE'] == 'Y' ? 'MAIN_YES' : 'MAIN_NO'),
	'isTactile' => true
);

$arResult['FIELDS']['tab_1'][] = array(
	'id' => 'CURRENCY',
	'name' => GetMessage('CRM_FIELD_CURRENCY'),
	'type' => 'label',
	'params' => array(),
	'value' => '',
	'isTactile' => true,
	'isHidden' => true
);

$price = CCrmProduct::FormatPrice($product);
if($price <> '')
{
	$arResult['FIELDS']['tab_1'][] = array(
		'id' => 'PRICE',
		'name' => GetMessage('CRM_FIELD_PRICE'),
		'type' => 'label',
		'params' => array(),
		'value' => $price,
		'isTactile' => true
	);
}

if ($bVatMode)
{
	$arResult['FIELDS']['tab_1'][] = array(
		'id' => 'VAT_ID',
		'name' => GetMessage('CRM_FIELD_VAT_ID'),
		'type' => 'label',
		'params' => array(),
		'value' => htmlspecialcharsbx((isset($product['VAT_ID']) && $product['VAT_ID'] > 0) ? $vatRateListItems[$product['VAT_ID']] : $vatRateListItems['']),
		'isTactile' => true
	);

	$arResult['FIELDS']['tab_1'][] = array(
		'id' => 'VAT_INCLUDED',
		'name' => GetMessage('CRM_FIELD_VAT_INCLUDED'),
		'type' => 'label',
		'params' => array(),
		'value' => GetMessage(isset($product['VAT_INCLUDED']) && $product['VAT_INCLUDED'] == 'Y' ? 'MAIN_YES' : 'MAIN_NO'),
		'isTactile' => true
	);
}

$arResult['FIELDS']['tab_1'][] = array(
	'id' => 'MEASURE',
	'name' => GetMessage('CRM_FIELD_MEASURE'),
	'type' => 'label',
	'params' => array(),
	'value' => htmlspecialcharsbx(isset($product['MEASURE']) ? $measureListItems[$product['MEASURE']] : $measureListItems['']),
	'isTactile' => true
);

$productSectionID = isset($product['SECTION_ID']) ? $product['SECTION_ID'] : 0;
$productSectionName = '';
if($productSectionID > 0)
{
	$sectionListItems = array();
	$rsSection = CIBlockSection::GetByID($productSectionID);
	if($arSection = $rsSection->Fetch())
	{
		$productSectionName = $arSection['NAME'];
	}
}

$arResult['FIELDS']['tab_1'][] = array(
	'id' => 'SECTION',
	'name' => GetMessage('CRM_FIELD_SECTION'),
	'type' => 'label',
	'value' => htmlspecialcharsbx(empty($productSectionName) ? GetMessage('CRM_SECTION_NOT_SELECTED') : $productSectionName),
	'isTactile' => true
);

$arResult['FIELDS']['tab_1'][] = array(
	'id' => 'SORT',
	'name' => GetMessage('CRM_FIELD_SORT'),
	'type' => 'label',
	'params' => array(),
	'value' => isset($product['SORT']) ? $product['SORT'] : '',
	'isTactile' => true
);

$arFields = array(
	'PREVIEW_PICTURE' => GetMessage('CRM_PRODUCT_FIELD_PREVIEW_PICTURE'),
	'DETAIL_PICTURE' => GetMessage('CRM_PRODUCT_FIELD_DETAIL_PICTURE')
);
$html = '';
$obFileControl = $obFile = null;
foreach ($arFields as $fieldID => $fieldName)
{
	$html = '';
	if (isset($product['~'.$fieldID]))
	{
		$obFile = new CCrmProductFile(
			$arResult['PRODUCT_ID'],
			$fieldID,
			$product['~'.$fieldID]
		);

		$obFileControl = new CCrmProductFileControl($obFile, $fieldID);

		$html = '<nobr>'.$obFileControl->GetHTML(array(
				'show_input' => false,
				'max_size' => 102400,
				'max_width' => 150,
				'max_height' => 150,
				'url_template' => $arParams['PATH_TO_PRODUCT_FILE'],
				'a_title' => GetMessage('CRM_PRODUCT_PROP_ENLARGE'),
				'download_text' => GetMessage("CRM_PRODUCT_PROP_DOWNLOAD"),
			)).'</nobr>';
	}
	$arResult['FIELDS']['tab_1'][] = array(
		'id' => $fieldID,
		'name' => $fieldName,
		'type' => 'custom',
		'value' => $html,
		'isTactile' => true,
		'isHidden' => !($html <> '')
	);
}
unset($arFields, $fieldID, $fieldName, $obFile, $obFileControl, $html);

/*if($FIELD_ID == "PREVIEW_PICTURE" || $FIELD_ID == "DETAIL_PICTURE")
{
	$obFile = new CListFile(
		$arResult["IBLOCK_ID"],
		0, //section_id
		$arRow["data"]["ID"],
		$FIELD_ID,
		$value
	);
	$obFile->SetSocnetGroup($arParams["SOCNET_GROUP_ID"]);

	$obFileControl = new CListFileControl($obFile, $FIELD_ID);

	$value = '<nobr>'.$obFileControl->GetHTML(array(
			'show_input' => false,
			'max_size' => 102400,
			'max_width' => 50,
			'max_height' => 50,
			'url_template' => $arParams["~LIST_FILE_URL"],
			'a_title' => GetMessage("CT_BLL_ENLARGE"),
			'download_text' => GetMessage("CT_BLL_DOWNLOAD"),
		)).'</nobr>';
}*/

$this->IncludeComponentTemplate();
include_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/components/bitrix/crm.product/include/nav.php');