uawdijnntqw1x1x1
IP : 216.73.216.180
Hostname : xhost1.intravision.ru
Kernel : Linux xhost1.intravision.ru 3.16.0-7-amd64 #1 SMP Debian 3.16.59-1 (2018-10-03) x86_64
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
OS : Linux
PATH:
/
var
/
.
/
.
/
backup
/
.
/
.
/
external_www
/
new02.medcomp.ru
/
.
/
bitrix
/
.
/
php_interface
/
intra
/
intra_seo.php
/
/
<? class IntraSeo { //в этой переменной отмечаем выводился ли текст для патерна или нет. var $glob = 0; /* обработчик заголовков */ public function SeoFilterTitle($str) { return preg_replace_callback('/{params:{\s*(.*?)}}/i', array(self, 'convertGetParams'), $str); } /* конвертер параметров */ public function convertGetParams($params) { // $ar2 - массив параметров $ar2 = array(); $tmp = explode(",", $params[1]); foreach ($tmp as $data) { $row = explode(":", $data); if(!empty($row[2])){ } $ar2[$row[0]][empty($row[2])?'0':$row[2]] = empty($row[1])?'':$row[1];//собираем массив со всеми параметрами if(($row[0] != 'all') && (stristr($row[0], 'text') === FALSE) && ($row[0] != 'default'))$ar2temp[$row[0]] = '';//собираем массив для будущей проверки паттерна с запросами } if(count($ar2temp)>0)$textcount = true; else $textcount = false; //print_r($ar2); // Прогон по GET и сборка заголовка $get = array(); foreach($_GET as $key => $data) { $tmp = explode("_", $key); //print_r($tmp); if(!empty($tmp[0]) && $tmp[0] == 'arrFilter') { $gettemp[] = $tmp[1];//собираем массив всех фильтров if(isset($ar2[$tmp[1]])) $get[$tmp[1]][] = $tmp[2]; } } //print_r($gettemp); //print_r($get); //Проверка совпадения группы параметров с группой паттерна foreach ($gettemp as $keyget => $valg) { //print_r($valg); foreach ($ar2temp as $keyar2 => $vala) { //print_r($keyar2); if($valg == $keyar2) unset($ar2temp[$keyar2],$gettemp[$keyget]); } } //echo $this->glob; //проверяем если временные массивы пусты, то значит полное соответствие паттерну, также если переменная глоб не равна 1 и текущий патерн содержит default выводим этот текст, так как нет болшьше соответствий. if((empty($gettemp) && empty($ar2temp) && $textcount) || (array_key_exists('default',$ar2) && $this->glob != 1) || (array_key_exists('all',$ar2) && $this->glob == 1)) { //print_r($gettemp); //print_r($ar2temp); //print_r($ar2); //echo '='.$this->glob; //присваиваем глоб единицу, так как мы делаем вывод текста в соответствии с паттерном if(array_key_exists('default',$ar2)){ $this->glob = 0; }else{ $this->glob = 1; } // Обрубаем параметры если их много и пустые foreach ($ar2 as $key => $row) { if(stristr($key, 'text') === FALSE){ if (count($get[$key]) > 1 || empty($get[$key])) unset($get[$key], $ar2[$key]); } } // Собираем сроку $str = array(); foreach ($ar2 as $key => $row) { //если это паттерн текста, просто выводим его как есть if(stristr($key, 'text') ==! FALSE){ $str[] = $row[0]; }else{ //если параметр у патерна пустой, значит нужно выводить его значение, а если не пустой, то значит нужно выводить текст из параметра паттерна в соответствии значению фильтра. if (array_key_exists(0, $row)){ //echo $key; //print_r(self::getCacheParams($key)); $str[] = self::getValueParam($key, $get[$key][0]).''.(isset($row[0])?' '.$row[0]:''); }else{ //проверяем существует ли if (array_key_exists(self::getValueParam($key, $get[$key][0]), $row)){ $str[] = $row[self::getValueParam($key, $get[$key][0])]; }else{ $str[] = self::getValueParam($key, $get[$key][0]); } } } } $return = ''; if (count($str)>0) $return = ' '.implode(' ', $str); }else $return = ''; return $return; } /* Вытягивание параметра из фильтра */ public function getValueParam($id, $param) { $result = self::getCacheParams($id,$param); return $result[$param]["VALUE"]; } public function getCacheParams($id,$param) { // Кешируем $obCache = new CPHPCache(); if($obCache->InitCache(30*24*60*60, 'filter_params_value', '/filter_params_value/'.$id.'/')) { $vars = $obCache->GetVars(); $filter_params_value = $vars['filter_params_value']; } elseif($obCache->StartDataCache()) { $filter_params_value = array(); CModule::IncludeModule("iblock"); if ($id == 1477) { $res = CIBlockElement::GetList(Array("SORT"=>"ASC", "PROPERTY_PRIORITY"=>"ASC"), Array("IBLOCK_ID" => 14), Array("ID", "XML_ID", "NAME")); while($fields = $res->GetNext()) { $filter_params_value[abs(crc32($fields["ID"]))] = array("ID" => $fields["ID"], "VALUE" => $fields["NAME"], "XML_ID" => $fields["XML_ID"]); } } else{ $res = CIBlockElement::GetProperty(2, $PRODUCT_ID, array("sort" => "asc"), Array("ID"=>$id)); while($fields = $res->GetNext()) { //$filter_params_value[abs(crc32($fields["ID"]))] = array("ID" => $fields["ID"], "VALUE" => $fields["VALUE"], "XML_ID" => $fields["XML_ID"]); $prop_filter = $fields[CODE]; $prop_type = $fields[PROPERTY_TYPE]; //print_r($fields); } if($prop_type == 'S'){ $arSelect = Array("ID", "PROPERTY_".$prop_filter); $arFilter = Array("IBLOCK_ID"=>2, "ACTIVE"=>"Y","!PROPERTY_".$prop_filter=>false,"PROPERTY_TYPE"=>"S"); $res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect); while($ob = $res->GetNextElement()) { $arFields = $ob->GetFields(); if( abs(crc32($arFields["PROPERTY_".$prop_filter."_VALUE"])) == $param ){ $filter_params_value[abs(crc32($arFields[PROPERTY_PRIMENENLARING_VALUE]))] = array("ID" => $arFields[PROPERTY_PRIMENENLARING_VALUE_ID], "VALUE" => $arFields[PROPERTY_PRIMENENLARING_VALUE], "XML_ID" => ""); break 1; } } }else{ $res = CIBlockPropertyEnum::GetList(Array(), Array("IBLOCK_ID" => 2, "PROPERTY_ID" => $id)); while($fields = $res->GetNext()) { $filter_params_value[abs(crc32($fields["ID"]))] = array("ID" => $fields["ID"], "VALUE" => $fields["VALUE"], "XML_ID" => $fields["XML_ID"]); } } } $obCache->EndDataCache(array('filter_params_value' => $filter_params_value)); } return $filter_params_value; } } ?>
/var/././backup/././external_www/new02.medcomp.ru/./bitrix/./php_interface/intra/intra_seo.php