Your IP : 18.221.145.198


Current Path : /home/bitrix/ext_www/easy-comfort.com.ua/local/classes/
Upload File :
Current File : /home/bitrix/ext_www/easy-comfort.com.ua/local/classes/Rusklimat.php

<?

class Rusklimat {
	public static $arExcludeProps = array(
		'410bf94d-d687-11e6-bef2-ac162d7b6f40' // Бренд
	);
	public static function getPictPropertyCodes(){
		return array(
			PROPERTY_CODE_CATALOG_PLATE_IMG,
			"filter_00478",
			"filter_00479",
			"filter_00480",
			"filter_00481",
			"filter_00482",
			"filter_00483",
			"filter_00484"
		);
	}

	/** Получает список ключевых свойств для раздела **/
	public static function getKeyProperties($sectionXmlId){
		$ob = CIBlockElement::GetList(array("SORT" => "asc"), array(
			"IBLOCK_ID" => CATALOG_PROPERTIES_IBLOCK_ID,
			"PROPERTY_TILE_CATS_XML" => $sectionXmlId,
			"ACTIVE" => "Y"
		));
		$arProperties = array();
		while($ar = $ob->GetNextElement()){
			$prop = array_merge($ar->GetFields(), $ar->GetProperties());
			$arProperties[$prop['XML_ID']] = array(
				'NAME' => $prop['NAME'],
				'CODE' => $prop['CODE'],
				'XML_ID' => $prop['XML_ID'],
				'SORT' => $prop['SORT'],
				'MEASURE_XML' => $prop['MEASURE_XML']['VALUE'],
				'TILE_CATS_XML' => $prop['TILE_CATS_XML']['VALUE'],
				'FILTER_CATS_XML' => $prop['FILTER_CATS_XML']['VALUE'],
				'FILTER_N_CATS_XML' => $prop['FILTER_N_CATS_XML']['VALUE'],
			);
		}
		return $arProperties;
	}

	public static function getProperty($SECTION_ID,$FILTER_CATS='PROPERTY_FILTER_CATS'){
		$Property=array();
		$s=array();
		if(!is_array($SECTION_ID)){
			$s[]=$SECTION_ID;
		}else{
			$s=$SECTION_ID;
		}
		$obCache = new CPHPCache();
		if ($obCache->InitCache(3600, 'Property_'.serialize($s).'_'.$FILTER_CATS, "/")) {	
			$Property = $obCache->GetVars();
		}
		elseif ($obCache->StartDataCache())
		{
			$arFilter1 = Array("IBLOCK_ID"=>CATALOG_PROPERTIES_IBLOCK_ID,$FILTER_CATS=>$s);
			$arSelect1 = Array("ID", "NAME", "CODE", "XML_ID");
			$res = CIBlockElement::GetList(Array('SORT'=>'ASC'), $arFilter1, false, false, $arSelect1);  
			while($arFields = $res->Fetch()) { 
				$Property[]=$arFields['CODE'];
			}
			$obCache->EndDataCache($Property);
		}
		return $Property;
	}
	public static function getParent($SECTION){
		$sect=array();
		$obCache = new CPHPCache();
		if ($obCache->InitCache(3600, 'Parent_'.serialize($SECTION), "/")) {	
			$sect = $obCache->GetVars();
		}
		elseif ($obCache->StartDataCache())
		{
			$arFilter2 = Array("IBLOCK_ID"=>$SECTION['IBLOCK_ID'], '>LEFT_MARGIN' =>$SECTION['LEFT_MARGIN'],'<RIGHT_MARGIN' => $SECTION['RIGHT_MARGIN'],'>DEPTH_LEVEL' => $SECTION['DEPTH_LEVEL']);
			$arSelect2 = Array("ID", "IBLOCK_SECTION_ID", "DEPTH_LEVEL","NAME","SECTION_PAGE_URL" , "DEPTH_LEVEL");
			$res = CIBlockSection::GetList(array(), $arFilter2, false, $arSelect2);
			while($arFields=$res->GetNext()){
				$sect['ID'][]=$arFields['ID'];
				$sect['SECTIONS'][$arFields['ID']]['NAME']=$arFields['NAME'];
				$sect['SECTIONS'][$arFields['ID']]['DETAIL_PAGE_URL']=$arFields['SECTION_PAGE_URL'];
			}
			$obCache->EndDataCache($sect);
		}
		return $sect;
	}
	public static function getGroupProp(){
		$GroupProp=[];
		
		$obCache = new CPHPCache();
		if ($obCache->InitCache(86400, 'GroupProp', "/")) {	
			$GroupProp = $obCache->GetVars();
		}
		elseif ($obCache->StartDataCache())
		{
			$arSort = array('SORT'=>'ASC');
			$arFilter = Array("IBLOCK_ID"=>CATALOG_PROPERTIES_GROUPS_IBLOCK_ID,'<SORT'=>700);
			$arSelect = ['ID','NAME','SORT','PROPERTY_PROPS','XML_ID'];
			$res = CIBlockElement::GetList($arSort, $arFilter, false, false, $arSelect);
			while($arElement = $res->Fetch()) {
				
				$GroupProp[]=$arElement;
			}
			$obCache->EndDataCache($GroupProp);
		}
		return $GroupProp;		
	}
	public static function prepareProperties($arItem){
		// Свойства и группы свойств
		$propsGroups = self::getGroupProp();
		foreach($propsGroups as $key => $value){
			if($value['SORT'] == 0 || $value['SORT'] >= AVAILABLE_GROUP_SORT)
		        unset($propsGroups[$key]);
		}
		$propsXmlIds = array();
		foreach($arItem['PROPERTIES'] as $arProp){
			if(in_array($arProp['XML_ID'], self::$arExcludeProps)){
				continue;
			}
			$arProp['HINT'] = str_replace(array("м2", "м3"), array("м²", "м³"), $arProp['HINT']);
		    if($arProp['XML_ID']){
		        $propsXmlIds[$arProp['XML_ID']] = $arProp;
		    }
		}

		if($arItem['SECTION']['XML_ID']){
			$arKeyProps = self::getKeyProperties($arItem['SECTION']['XML_ID']);
		}

		foreach($propsGroups as $key => $value){
		    foreach($value['PROPERTY_PROPS_VALUE'] as $xmlId){
		        if($propsXmlIds[$xmlId]['VALUE'] != ''){
		        	$propsGroups[$key]['PROPERTIES'][] = $propsXmlIds[$xmlId];
		            $counter ++;
		        }
		    }
		    if(count($propsGroups[$key]['PROPERTIES']) == 0){
		        unset($propsGroups[$key]);
		    }
		}

		$keyProps = array(
			'ID' => 0,
			'NAME' => 'Ключевые характеристики',
			'PROPERTIES' => array()
		);

		if($arItem['SECTION']['XML_ID']){
			$arKeyProps = self::getKeyProperties($arItem['SECTION']['XML_ID']);
			foreach ($arKeyProps as $xmlId => $prop) {
				if($propsXmlIds[$xmlId]['VALUE'] != ''){
		        	$keyProps['PROPERTIES'][] = $propsXmlIds[$xmlId];
		        }
			}
			if($keyProps['PROPERTIES']){
				$propsGroups[0] = $keyProps;
			}
		}

		return $propsGroups;
	}
	public static function prepareCompareProperties($arShowProperties){
		// Свойства и группы свойств
		$propsGroups = self::getGroupProp();
		foreach($propsGroups as $key => $value){
		    if($value['SORT'] == 0 || $value['SORT'] > 6)
		        unset($propsGroups[$key]);
		}
		$propsXmlIds = array();
		foreach($arShowProperties as $arProp){
			if(in_array($arProp['XML_ID'], self::$arExcludeProps)){
				continue;
			}
			$arProp['HINT'] = str_replace(array("м2", "м3"), array("м²", "м³"), $arProp['HINT']);
		    if($arProp['XML_ID']){
		        $propsXmlIds[$arProp['XML_ID']] = $arProp;
		    }
		}

		foreach($propsGroups as $key => $value){
		    foreach($value['PROPERTY_PROPS_VALUE'] as $xmlId){
		        if($propsXmlIds[$xmlId] && ! $propsXmlIds[$xmlId]['SKIP']){
		        	$propsGroups[$key]['PROPERTIES'][$propsXmlIds[$xmlId]['CODE']] = $propsXmlIds[$xmlId];
		            $counter ++;
		        }
		    }
		    if(count($propsGroups[$key]['PROPERTIES']) == 0){
		        unset($propsGroups[$key]);
		    }
		}

		$keyProps = array(
			'ID' => 0,
			'NAME' => 'Ключевые характеристики',
			'PROPERTIES' => array()
		);

		if($arItem['SECTION']['XML_ID']){
			$arKeyProps = self::getKeyProperties($arItem['SECTION']['XML_ID']);
			foreach ($arKeyProps as $xmlId => $prop) {
				if($propsXmlIds[$xmlId]['VALUE'] != ''){
		        	$keyProps['PROPERTIES'][] = $propsXmlIds[$xmlId];
		        }
			}
			if($keyProps['PROPERTIES']){
				$propsGroups[0] = $keyProps;
			}
		}

		return $propsGroups;
	}
	public static function prepareFileProperties($arItem){
		$pdfs = [];
		foreach($arItem['PROPERTIES'] as $PROPERTY) {
		    if (!empty($PROPERTY['VALUE'])) {
		        if (substr($PROPERTY['CODE'], 0, 4) == 'pdf_') {
		            $pdf = CFile::GetFileArray($PROPERTY['VALUE']);
		            $nameAndFormat = explode(".", $pdf['ORIGINAL_NAME']);
		            
		            $pdf['NAME'] = $nameAndFormat[0];
		            $pdf['FORMAT'] = $nameAndFormat[1];
		            $pdf['PROP'] = $PROPERTY;
		            $pdf['WEIGHT'] = CFile::FormatSize($pdf['FILE_SIZE']);
		            $pdfs[] = $pdf;
		        }
		    }
		}
		return $pdfs;
	}

	public static function getSectionImageTile($arSection) {
		// Возвращает изображение для плитки товара. На входе массив arSection или ID.
		// Сначала проверяет свойство PICTURE раздела, если картинки нет — возвращает изображение самого дорогого товара

		if(!is_array($arSection)){
			$ob = CIBlockSection::GetByID($arSection);
			if(!$arSection = $ob->GetNext()){
				return null;
			}
		}
		if(!$arSection['ID']){
			throw new Exception('Wrong arSection array');
		}
		if($arSection['PICTURE'] != ''){
			return $arSection['PICTURE'];
		} else {
			$pictPropCodes = self::getPictPropertyCodes();
			$mainPictPropCode = $pictPropCodes[0];
			
			$pictureLogicOr = array(
			    "LOGIC" => "OR"
			);
			
			$arSelect = array('ID', 'IBLOCK_ID');
			
			foreach ($pictPropCodes as $picCode)
			{
			    $pictureLogicOr[] = array("!PROPERTY_".$picCode => false);
			    $arSelect[] = 'PROPERTY_'.$picCode;
			}
			
			$ob = CIBlockElement::GetList(
			    array('CATALOG_PRICE_'.CATALOG_PRICE_ID => 'desc'),
			    array('IBLOCK_ID' => CATALOG_IBLOCK_ID, 'ACTIVE' => 'Y', 'SECTION_ID' => $arSection['ID'], 'INCLUDE_SUBSECTIONS' => 'Y', $pictureLogicOr),
			    false,
			    array('nTopCount' => 1),
			    $arSelect
		    );
			if($arElement = $ob->GetNext()){
			    foreach ($pictPropCodes as $picCode)
			    {
			        if($arElement['PROPERTY_'.strtoupper($picCode).'_VALUE']) {
			            return $arElement['PROPERTY_'.strtoupper($picCode).'_VALUE'];
			        }
			    }
				
			} else {
				return null;
			}
		}
	}

	public static function getSectionImageDetail($arSection) {
		// Возвращает изображение для шапки раздела. На входе массив arSection или ID.
		// Сначала проверяет свойство DETAIL_PICTURE раздела, затем ищет фотку в родительских разделах

		if(!is_array($arSection)){
			$ob = CIBlockSection::GetByID($arSection);
			if(!$arSection = $ob->GetNext()){
				return null;
			}
		}
		if(!$arSection['ID']){
			throw new Exception('Wrong arSection array');
		}
		if($arSection['DETAIL_PICTURE'] != ''){
			return $arSection['DETAIL_PICTURE'];
		} else {
			$ob = CIBlockSection::GetNavChain(CATALOG_IBLOCK_ID, $arSection['ID']);
			while($ar = $ob->GetNext()){
				if($ar['DETAIL_PICTURE'] != ''){
					$image = $ar['DETAIL_PICTURE'];
				}
			}
			return $image;
		}
	}

	/**
	 * @return array
	 * XML_ID свойств каталога, которые Не отображаются в умном фильтре
	 */
	public static function getExcludePropertiesXmlId()
	{
		return array(
			'410bf94d-d687-11e6-bef2-ac162d7b6f40',//это свойство было в result_modifier
			'103a479e-6104-11e5-b5fc-ac162d7b6f40',//это свойство было в result_modifier
			'48a186bb-637f-11e5-b5fc-ac162d7b6f40',
			'4da34975-60d5-11e7-8762-ac162d7b6f40',
			'539b6674-60d5-11e7-8762-ac162d7b6f40',
			'5a140a23-60d5-11e7-8762-ac162d7b6f40',
			'5a140b31-60d5-11e7-8762-ac162d7b6f40',
			'600c2712-60d5-11e7-8762-ac162d7b6f40',
			'600c2908-60d5-11e7-8762-ac162d7b6f40',
			'660444ed-60d5-11e7-8762-ac162d7b6f40',
			'66044568-60d5-11e7-8762-ac162d7b6f40',
			'5964c4d7-6e14-11e7-b675-ac162d7b6f40',
			'6554feb5-6e14-11e7-b675-ac162d7b6f40',
			'6b99482a-6e14-11e7-b675-ac162d7b6f40',
			'6b9948e3-6e14-11e7-b675-ac162d7b6f40',
			'719167a9-6e14-11e7-b675-ac162d7b6f40',
			'778985c9-6e14-11e7-b675-ac162d7b6f40',
			'778986e4-6e14-11e7-b675-ac162d7b6f40',
			'8385aa20-6e14-11e7-b675-ac162d7b6f40',
			'897dc89f-6e14-11e7-b675-ac162d7b6f40',
			'8f75e763-6e14-11e7-b675-ac162d7b6f40',
			'8f75ea83-6e14-11e7-b675-ac162d7b6f40',
			'956e066f-6e14-11e7-b675-ac162d7b6f40',
			'25d349a4-6380-11e5-b5fc-ac162d7b6f40',
			'31ff036f-6380-11e5-b5fc-ac162d7b6f40',
			'381f965f-6380-11e5-b5fc-ac162d7b6f40',
			'381f9678-6380-11e5-b5fc-ac162d7b6f40',
			'4454d5a0-6380-11e5-b5fc-ac162d7b6f40',
			'8125f1e0-6380-11e5-b5fc-ac162d7b6f40',
			'8828a3f5-6380-11e5-b5fc-ac162d7b6f40',
			'8e2582af-6380-11e5-b5fc-ac162d7b6f40',
			'944ad853-6380-11e5-b5fc-ac162d7b6f40',
			'1b706634-abeb-11e6-be4f-ac162d7b6f40',
			'7bdfa509-1a1c-11e7-be81-ac162d7b6f40',
			'e7d6a5b1-9234-11e7-a499-ac162d7b6f40',
			'73ad50bb-e69a-11e5-b14a-ac162d7b6f40',
			'd2a56176-e605-11e5-b14a-ac162d7b6f40',
			'015cb1f0-e605-11e5-b14a-ac162d7b6f40',
			'fcb88cb1-6103-11e5-b5fc-ac162d7b6f40',
			'fcb88ca0-6103-11e5-b5fc-ac162d7b6f40',
			'b28f8784-637f-11e5-b5fc-ac162d7b6f40',
			'e8d292e3-637f-11e5-b5fc-ac162d7b6f40',
			'b28f87b1-637f-11e5-b5fc-ac162d7b6f40',
			'b887a3dd-637f-11e5-b5fc-ac162d7b6f40',
			'c477dc0f-637f-11e5-b5fc-ac162d7b6f40',
			'ca7259e1-637f-11e5-b5fc-ac162d7b6f40',
			'd073fb2e-637f-11e5-b5fc-ac162d7b6f40',
			'd6c428f2-637f-11e5-b5fc-ac162d7b6f40',
			'dcc82bcb-637f-11e5-b5fc-ac162d7b6f40',
			'e2c76bfe-637f-11e5-b5fc-ac162d7b6f40',
			'e16b8129-e69c-11e5-b14a-ac162d7b6f40',
			'd68f68c3-e0b5-11e6-a540-ac162d7b6f40',
			'b240239e-de61-11e6-a540-ac162d7b6f40',
			'a5cecda9-e69d-11e5-b14a-ac162d7b6f40',
			'e8980588-e69d-11e5-b14a-ac162d7b6f40',
			'4da39211-e08d-11e6-a540-ac162d7b6f40',
			'b4288700-e69c-11e5-b14a-ac162d7b6f40',
			'bb77ee3b-de47-11e6-a540-ac162d7b6f40',
			'cabf7cfd-e69d-11e5-b14a-ac162d7b6f40',
			'4f4b4a61-e173-11e6-a540-ac162d7b6f40',
			'667540b3-e69e-11e5-b14a-ac162d7b6f40',
			'a3b901bd-e091-11e6-a540-ac162d7b6f40',
			'b5a14c11-e091-11e6-a540-ac162d7b6f40',
			'665c18ab-e69d-11e5-b14a-ac162d7b6f40',
			'07200862-e252-11e6-a540-ac162d7b6f40',
			'e59d7974-de48-11e6-a540-ac162d7b6f40',
			'5c043fe7-e093-11e6-a540-ac162d7b6f40',
			'b0567f7f-fd8d-11e5-a04f-ac162d7b6f40',
			'c49efb30-e166-11e6-a540-ac162d7b6f40',
			'724c5136-e69d-11e5-b14a-ac162d7b6f40',
			'41d1c5fc-e69d-11e5-b14a-ac162d7b6f40',
			'ed14ea36-2297-11e7-b65e-ac162d7b6f40',
			'5f7aa542-2294-11e7-b65e-ac162d7b6f40',
			'c9472ad5-a660-11e6-be4f-ac162d7b6f40',
			'cf3f451d-a660-11e6-be4f-ac162d7b6f40',
			'cf3f45e5-a660-11e6-be4f-ac162d7b6f40',
			'd5375ee6-a660-11e6-be4f-ac162d7b6f40',
			'db2f77eb-a660-11e6-be4f-ac162d7b6f40',
			'98b2a44b-f744-11e6-bf60-ac162d7b6f40',
			'9115e4d6-5a58-11e2-a22e-d8d38563fb1a',
			'2c3526d5-637f-11e5-b5fc-ac162d7b6f40',
			'96bddeb5-637f-11e5-b5fc-ac162d7b6f40',
			'552a14d6-637f-11e5-b5fc-ac162d7b6f40',
			'5b5b5137-637f-11e5-b5fc-ac162d7b6f40',
			'6dd014bc-637f-11e5-b5fc-ac162d7b6f40',
			'80153d81-637f-11e5-b5fc-ac162d7b6f40',
			'80153d84-637f-11e5-b5fc-ac162d7b6f40',
			'88711207-637f-11e5-b5fc-ac162d7b6f40',
			'8ff90f4d-637f-11e5-b5fc-ac162d7b6f40',
			'96bddeb4-637f-11e5-b5fc-ac162d7b6f40',
			'24ce7c42-637f-11e5-b5fc-ac162d7b6f40',
			'ee2c9083-6380-11e5-b5fc-ac162d7b6f40',
			'5ff37c37-6381-11e5-b5fc-ac162d7b6f40',
			'7a3c67f5-6381-11e5-b5fc-ac162d7b6f40',
			'8f87242b-6381-11e5-b5fc-ac162d7b6f40',
			'c0da4812-6381-11e5-b5fc-ac162d7b6f40',
			'1dc03b9d-5282-11e7-9c2c-ac162d7b6f40',
			'05ebae8f-6381-11e5-b5fc-ac162d7b6f40',
			'b6e70f13-6e04-11e7-b675-ac162d7b6f40',
			'25bf27f9-5e10-11e5-b5fc-ac162d7b6f40',
			'e728c9a7-6103-11e5-b5fc-ac162d7b6f40',
			'569e9815-780a-11e5-b5fc-ac162d7b6f40',
			'6c43bf21-bace-11e5-b14a-ac162d7b6f40',
			'1453f3c3-5e11-11e5-b5fc-ac162d7b6f40',
			'b68fbf3f-0553-11e6-a04f-ac162d7b6f40',
			'20e34e16-087c-11e6-97dd-ac162d7b6f40',
			'7bf92976-0e12-11e6-97dd-ac162d7b6f40',
			'9555400c-0611-11e6-a04f-ac162d7b6f40',
			'e67bbbaf-ba05-11e5-b14a-ac162d7b6f40',
			'd7ff4cf3-baa9-11e5-b14a-ac162d7b6f40',
			'b2e169a1-baa9-11e5-b14a-ac162d7b6f40',
			'319e5ef4-baaa-11e5-b14a-ac162d7b6f40',
			'295a57d5-baaa-11e5-b14a-ac162d7b6f40',
			'3d8e994c-baaa-11e5-b14a-ac162d7b6f40',
			'4386b580-baaa-11e5-b14a-ac162d7b6f40',
			'4f76ec1b-baaa-11e5-b14a-ac162d7b6f40',
			'4f76f496-baaa-11e5-b14a-ac162d7b6f40',
			'8f895ce7-780b-11e5-b5fc-ac162d7b6f40',
			'74657585-780b-11e5-b5fc-ac162d7b6f40',
			'7d67e7e0-780b-11e5-b5fc-ac162d7b6f40',
			'83600653-780b-11e5-b5fc-ac162d7b6f40',
			'7d796aa8-bb68-11e5-b14a-ac162d7b6f40',
			'774f51a8-bb68-11e5-b14a-ac162d7b6f40',
			'70e9b753-bb68-11e5-b14a-ac162d7b6f40',
			'5dd0ba69-bb68-11e5-b14a-ac162d7b6f40',
			'4c7755cc-2d57-11e6-b9b4-ac162d7b6f40',
			'b3094ee9-ba0b-11e5-b14a-ac162d7b6f40',
			'e70f9dd1-5e0f-11e5-b5fc-ac162d7b6f40',
		);
	}
}