Your IP : 18.191.212.245
<?
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',
);
}
}