uawdijnntqw1x1x1
IP : 216.73.216.152
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
/
_______funcs.php
/
/
<? global $USER; global $DB; use Bitrix\Main, Bitrix\Main\Loader, Bitrix\Main\Config\Option, Bitrix\Sale, Bitrix\Sale\Order, Bitrix\Main\Application, Bitrix\Sale\DiscountCouponsManager, Bitrix\Currency, Bitrix\Sale\Internals\CompanyTable; if(!(Loader::IncludeModule('sale') && Loader::IncludeModule('catalog') && Loader::IncludeModule('iblock'))) die(); // Многомерный массив в строку GET-параметров function array_to_get_string($array) { $get_string = '?'; $cnt = 0; foreach ($array as $key_1 => $value_1){ if ( is_array($value_1) && count($value_1) > 0 ){ foreach ($value_1 as $key_2 => $value_2){ if ( is_array($value_2) && count($value_2) > 0 ){ foreach ($value_2 as $key_3 => $value_3){ if ( is_array($value_3) && count($value_3) > 0 ){ foreach ($value_3 as $key_4 => $value_4){ if ( is_array($value_4) && count($value_4) > 0 ){} else { $cnt++; $get_string .= (($cnt==1)?'':'&').$key_1.'['.$key_2.']['.$key_3.']['.$key_4.']='.$value_4; } } } else { $cnt++; $get_string .= (($cnt==1)?'':'&').$key_1.'['.$key_2.']['.$key_3.']='.$value_3; } } } else { $cnt++; $get_string .= (($cnt==1)?'':'&').$key_1.'['.$key_2.']='.$value_2; } } } else { $cnt++; $get_string .= (($cnt==1)?'':'&').$key_1.'='.$value_1; } } return $get_string; } function addLeftBorder($lb) { if ($lb > 1) { $lb = $lb - 1; } return $lb; } function addRightBorder($rb,$max) { if ($rb < $max) { $rb = $rb + 1; } return $rb; } function make_feed_file(){ // Записываем в файл $text = ''; CheckDirPath($_SERVER["DOCUMENT_ROOT"].'/bitrix/catalog_export/'); $fp = @fopen($_SERVER["DOCUMENT_ROOT"].'/bitrix/catalog_export/feed_file.php', "wb"); fwrite($fp, '<? header("Content-Type: text/xml; charset=utf-8");?>'); fwrite($fp, '<? echo "<"."?xml version=\"1.0\" encoding=\"utf-8\"?".">"?>'); $text .= '<catalog date="'.date("Y-m-d").'" xmlns="http://arwm.ru/market/schema.xsd">'."\n"; $text .= "\n"; // Собираем $offers и их разделы $sections $offers = array(); $sections = array(); CModule::IncludeModule("iblock"); // Перебираем все товары $dbElements = CIBlockElement::GetList(Array("SORT"=>"ASC"), Array("IBLOCK_ID" => 2, "ACTIVE" => "Y", "INCLUDE_SUBSECTIONS" => "Y", ">CATALOG_PRICE_1" => 0, "!PROPERTY_PROIZVODITEL" => false), false, false, Array("ID", "ACTIVE", "IBLOCK_SECTION_ID", "NAME", "DETAIL_PAGE_URL", "PROPERTY_PROIZVODITEL", "PROPERTY_PREVIEW_TEXT", "CATALOG_GROUP_1", "PROPERTY_ARTNUMBER_FEED", "PROPERTY_TOV_TYPE_FEED")); while ($element = $dbElements->GetNext()){ // получаем раздел 1 уровня для товара $is_active_section = true; // Получаем цепочку разделов товара $arSections = el_sections_chain_cache($element['IBLOCK_SECTION_ID']); // Перебираем цепочку разделов товара foreach($arSections as $key => $section){ // Проверяем раздел цепочки на активность $dbSections = CIBlockSection::GetList(Array("SORT"=>"ASC"), Array("ACTIVE"=>"Y", "GLOBAL_ACTIVE" => "Y", "ID" => $section['ID'], "IBLOCK_ID" => 2), false, Array()); $totalCNT = $dbSections->SelectedRowsCount(); if ($totalCNT == 0){ $is_active_section = false; } } // Если все разделы цепочки активны if ( $is_active_section ){ // Определяем ID раздела 1 уровня $section_id = $arSections[0]['ID']; // записываем товар в $offers $element['IBLOCK_SECTION_ID'] = $section_id; $offers[] = $element; // Собираем разделы 1 уровня в массив $sections if ( !in_array($section_id, $sections) ){ $sections[] = $section_id; } } } $text .= '<categories>'."\n"; // Выводим категории foreach ($sections as $section_id){ $section = section_info($section_id); $text .= '<category id="'.$section_id.'">'.$section['NAME'].'</category>'."\n"; } $text .= '</categories>'."\n"; $text .= '<offers>'."\n"; // Выводим товары foreach ($offers as $offer){ // Получаем название производителя $brand = proizv_info($offer['PROPERTY_PROIZVODITEL_VALUE']); $text .= '<offer id="'.$offer['ID'].'">'."\n"; $text .= '<vendor>'.htmlspecialchars($brand['NAME']).'</vendor>'."\n"; $text .= '<product>'.htmlspecialchars($offer['NAME']).'</product>'."\n"; $text .= '<category>'.$offer['IBLOCK_SECTION_ID'].'</category>'."\n"; $text .= '<url>http://www.medcomp.ru'.$offer['DETAIL_PAGE_URL'].'</url>'."\n"; $text .= '<description>'.htmlspecialchars(strip_tags($offer['PROPERTY_PREVIEW_TEXT_VALUE']['TEXT'])).'</description>'."\n"; $text .= '<field1>'.($offer['PROPERTY_TOV_TYPE_FEED_VALUE']?$offer['PROPERTY_TOV_TYPE_FEED_VALUE']:'-').'</field1>'."\n"; $text .= '<field2>'.($offer['PROPERTY_ARTNUMBER_FEED_VALUE']?$offer['PROPERTY_ARTNUMBER_FEED_VALUE']:'-').'</field2>'."\n"; $text .= '<price>'.$offer['CATALOG_PRICE_1'].'</price>'."\n"; $text .= '</offer>'."\n"; } $text .= '</offers>'."\n"; $text .= '</catalog>'; $text = $text; fwrite($fp, $text); fclose($fp); return 'make_feed_file();'; } function get_prices_html($tov_ids, $arResult, $current_id, $is_main){ $tov_ids = explode("|", $tov_ids); $tov_ids = array_unique($tov_ids); if ( is_array($tov_ids) && count($tov_ids) > 0 ){ foreach ($tov_ids as $id){ if ( intval($id) > 0 ){ $html = ''; // Инфо о товаре $el = el_info($id); if ( intval($el['ID']) > 0 ){ // Цены global $aGlobalPrices; $price = intval($aGlobalPrices[$id][$_SESSION["DISCOUNT_LEVEL"]]); $oldprice = false; if ($aGlobalPrices[$id][1] > $aGlobalPrices[$id][2]){ $oldprice = $aGlobalPrices[$id][1]; } if ($el["PROPERTY_OLD_PRICE_VALUE"]) { $oldprice = $el["PROPERTY_OLD_PRICE_VALUE"]; } if ($oldprice && $price != $oldprice) { $html .= '<div class="category-product-price-old '.($oldprice?"permanent":"").' '.($_SESSION["DISCOUNT_LEVEL"]==1?"hidden":"").'">'; $html .= '<del>'; $html .= '<span>'.number_format($oldprice, 0, "", " ").' руб.</span>'; $html .= '</del>'; $html .= '</div>'; } foreach ($aGlobalPrices[$id] as $level=>$price) { $class = "category-product-price"; if ($el["PROPERTY_OLD_PRICE_VALUE"]){ $class .= " green"; } if ($_SESSION["DISCOUNT_LEVEL"] > 1 && $aGlobalPrices[$id][1] != $aGlobalPrices[$id][2]){ $class .= " green"; } if ($level != $_SESSION["DISCOUNT_LEVEL"]){ $class .= " hidden"; } // Если мы в карточке товара if ( intval($_POST['current_id']) > 0 ){ $html .= '<div data-level="'.$level.'" class="category-product-price '.(($oldprice && $price != $oldprice)?"green":"").' '.($level!=$_SESSION["DISCOUNT_LEVEL"]?"hidden":"").'"><strong>'.number_format($price, 0, "", " ").'</strong> руб.</div>'; // Не карточка } else { $html .= '<div data-level="'.$level.'" class="'.$class.'">'; if (!$is_main){ $html .= '<span class="price-grt">Цена:</span>'; } $html .= '<strong>'; $html .= '<span itemprop="offers" itemscope itemtype="http://schema.org/Offer">'; $html .= '<meta itemprop="priceCurrency" content="RUB" />'; $html .= '<span itemprop="price">'.number_format($price, 0, "", " ").'</span>'; $html .= '</span>'; $html .= '</strong> руб.'; $html .= '</div>'; } } $arResult[$id] = $html; } } } } if ( intval($_POST['current_id']) > 0 ){ $html = ''; // Инфо о товаре $el = el_info($_POST['current_id']); if ( intval($el['ID']) > 0 ){ // VAT $aVAT = Array(); $q = CCatalogVat::GetListEx(Array(), Array()); while ($a = $q->GetNext()) { $aVAT[$a["ID"]] = intval($a["RATE"]); } // VAT VALUE $vat = false; $rate = 0; $q_catalog = CCatalogProduct::GetList(Array(), Array("ID"=>$el['ID'])); if ($a_catalog = $q_catalog->GetNext()) { if ($a_catalog["VAT_ID"]) { $rate = $aVAT[$a_catalog["VAT_ID"]]; if ($a_catalog["VAT_INCLUDED"] == "Y") { $vat = ($price*$rate)/(100+$rate); } else { $vat = ($price*$rate)/100; } } } global $aGlobalPrices; $price = intval($aGlobalPrices[$el["ID"]][$_SESSION["DISCOUNT_LEVEL"]]); $oldprice = false; if ($aGlobalPrices[$el["ID"]][1] > $aGlobalPrices[$el["ID"]][2]) { $oldprice = $aGlobalPrices[$el["ID"]][1]; } if ($el["PROPERTY_OLD_PRICE_VALUE"]) { $oldprice = $el["PROPERTY_OLD_PRICE_VALUE"]; } if ($rate > 0){ foreach ($aGlobalPrices[$el["ID"]] as $level=>$price){ $v = ($price*$rate)/(100+$rate); $html .= '<input type="hidden" name="vat'.$level.'" value="'.round($v, 2).'">'; } } $odinakovye_ceny = false; if ( $aGlobalPrices[$el["ID"]][1] == $aGlobalPrices[$el["ID"]][2] && $aGlobalPrices[$el["ID"]][1] == $aGlobalPrices[$el["ID"]][3] ){ $odinakovye_ceny = true; } $cnt = -1; foreach ($aGlobalPrices[$el["ID"]] as $level => $price){ $cnt++; if ($cnt == 0){ $col_key = ''; } else { $col_key = $cnt; } if($_SESSION["DISCOUNT_LEVEL"] == $level){ $class = " active"; } else if ($_SESSION["DISCOUNT_LEVEL"] > $level){ $class = " disabled"; } else { $class = ""; } $price_block_class = get_price_block_class($aGlobalPrices[$el["ID"]], $level, $price, $_SESSION["DISCOUNT_LEVEL"]); $html .= '<div class="price_block product-page-buy-col'.$col_key.$class.' '.$price_block_class.'" data-level="'.$level.'" price="'.$price.'">'; $html .= '<div class="product-page-price" '.(($cnt == 0)?'itemprop="offers" itemscope itemtype="http://schema.org/Offer"':'').'>'; $html .= '<div class="price-label '.(($cnt == 0)?'visible':'').'">Цена:</div>'; $html .= (($cnt == 0)?'<meta itemprop="priceCurrency" content="RUB">':''); $html .= '<span '.(($cnt == 0)?'itemprop="price"':'').'>'.round($price, 2).'</span>'; $html .= '<span> руб.</span>'; $html .= '</div>'; $v = ($price * $rate)/(100 + $rate); if ($v > 0) { $html .= '<div class="product-page-nds">НДС '.number_format($v, 2, ",", " ").' руб.</div>'; } else { $html .= '<div class="product-page-nds">Без НДС</div>'; } $html .= '<div class="product-page-price-hint">'; $str = 'Цена до 50 000 руб.'; if(strlen($el['PROPERTY_MANUAL_PRICE_VALUE'])>0){ $str = $el['PROPERTY_MANUAL_PRICE_VALUE']; } if ($cnt == 0){ $html .= $str; } else if ($cnt == 1){ if ($odinakovye_ceny){ $html .= $str; } else { $html .= 'Цена от 50 000 руб.'; } } else if ($cnt == 2){ if ($odinakovye_ceny){ $html .= $str; } else { $html .= 'Цена от 100 000 руб.'; } } if(strlen($el['PROPERTY_MANUAL_PRICE_VALUE'])>0){ }else{ $html .= '<a data-toggle="modal" href="#profitably" class="product-page-quest">?</a>'; } $html .= '</div>'; $html .= '</div>'; } $arResult['current_tovar'] = $html; } } return $arResult; } function get_delivery_status($url){ if( $curl = curl_init() ){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_USERAGENT, "Opera/10.00 (Windows NT 5.1; U; ru) Presto/2.2.0"); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POST, true); // или 0 $content = curl_exec($curl); curl_close($curl); return get_json_array($content); } } // Получение массива из JSON function get_json_array($json_string){ $json_array = array(); if ($json_string && strlen($json_string) > 0){ $json = htmlspecialchars_decode($json_string); if(strlen($json) > 0){ $json_array = json_decode($json, true); } } return $json_array; } // Поиск городов /*function cities_search($term, $ids, $morphology){ CModule::IncludeModule("search"); $obSearch = new CSearch; // запрос с морфологией $obSearch->Search(array( "QUERY" => $term, "SITE_ID" => LANG, array( array( "=MODULE_ID" => "iblock", "!ITEM_ID" => "S%", "PARAM2" => 34))), array("TITLE_RANK"=>"DESC"), array('STEMMING' => $morphology)); if ($obSearch->errorno != 0){} else { while($item = $obSearch->GetNext()){ if ( !in_array($item['ITEM_ID'], $ids) ){ $ids[] = $item['ITEM_ID']; } } } return $ids; }*/ function cities_contacts(){ // Кешируем $obCache = new CPHPCache(); $cache_time = 30*24*60*60; $cache_id = 'cities_contacts'; $cache_path = '/cities_contacts/'; if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ $vars = $obCache->GetVars(); extract($vars); } elseif($obCache->StartDataCache()){ $cities = array(); CModule::IncludeModule("iblock"); $dbElements = CIBlockElement::GetList(Array("SORT"=>"ASC"), Array("IBLOCK_ID" => 35, "ACTIVE"=>"Y"), false, false, Array("ID", "NAME", "CODE", "PREVIEW_TEXT", "PROPERTY_DELLIN_ADDR", "PROPERTY_PEC_ADDR", "PROPERTY_SKIF_ADDR", "PROPERTY_DOLGOTA", "PROPERTY_SHIROTA", "PROPERTY_ZOOM", "PROPERTY_TITLE", "PROPERTY_DESCRIPTION", "PROPERTY_KEYWORDS")); while ($element = $dbElements->GetNext()){ $cities[] = $element; } sort($cities); $obCache->EndDataCache(array('cities' => $cities)); } return $cities; } function calculator_cities(){ // Кешируем $obCache = new CPHPCache(); $cache_time = 30*24*60*60; $cache_id = 'calculator_cities'; $cache_path = '/calculator_cities/'.$el_id.'/'; if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ $vars = $obCache->GetVars(); extract($vars); } elseif($obCache->StartDataCache()){ CModule::IncludeModule("iblock"); $has_new_iblock = false; $res = CIBlock::GetList( Array(), Array( 'CODE'=> 'calc_cities_new' ), true ); while($ar_res = $res->Fetch()){ $has_new_iblock = true; } $iblock_id = $has_new_iblock?36:34; $cities = array(); $dbElements = CIBlockElement::GetList(Array("SORT"=>"ASC"), Array("IBLOCK_ID" => $iblock_id, "ACTIVE"=>"Y"), false, false, Array("ID", "NAME", "CODE", "PROPERTY_PECOM_ID", "PROPERTY_DELLIN_ID")); while ($element = $dbElements->GetNext()){ $cities[] = $element; } sort($cities); $obCache->EndDataCache(array('cities' => $cities)); } return $cities; } function soput_tovary($el_id){ // Кешируем $obCache = new CPHPCache(); $cache_time = 30*24*60*60; $cache_id = 'soput_tovary_'.$el_id; $cache_path = '/soput_tovary/'.$el_id.'/'; if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ $vars = $obCache->GetVars(); extract($vars); } elseif($obCache->StartDataCache()){ $soput_tovary = array(); CModule::IncludeModule("iblock"); $db_props = CIBlockElement::GetProperty(2, $el_id, array("sort" => "asc"), array("CODE" => "SOPUT")); while ($ar_props = $db_props->GetNext()) { if ($ar_props['VALUE']) { // Подмена внешнего XML_ID на внутренний ID $res = CIBlockElement::GetList(array(), array("IBLOCK_ID" => 2, "XML_ID" => $ar_props['VALUE']), array("ID", "XML_ID")); while($ob = $res->GetNext()) $ar_props['VALUE'] = $ob["ID"]; $soput_tovary[] = $ar_props['VALUE']; } } $obCache->EndDataCache(array('soput_tovary' => $soput_tovary)); } return $soput_tovary; } function poh_tovary($el_id){ // Кешируем $obCache = new CPHPCache(); $cache_time = 30*24*60*60; $cache_id = 'poh_tovary_'.$el_id; $cache_path = '/poh_tovary/'.$el_id.'/'; if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ $vars = $obCache->GetVars(); extract($vars); } elseif($obCache->StartDataCache()){ $poh_tovary = array(); CModule::IncludeModule("iblock"); $db_props = CIBlockElement::GetProperty(2, $el_id, array("sort" => "asc"), array("CODE" => "RECOMMEND")); while ($ar_props = $db_props->GetNext()){ if ($ar_props['VALUE']){ $poh_tovary[] = $ar_props['VALUE']; } } $obCache->EndDataCache(array('poh_tovary' => $poh_tovary)); } return $poh_tovary; } // Редиректы function redirects(){ // Кешируем $obCache = new CPHPCache(); $cache_time = 30*24*60*60; $cache_id = 'redirects'; $cache_path = '/redirects/'; if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ $vars = $obCache->GetVars(); extract($vars); } elseif($obCache->StartDataCache()){ $redirects = array(); CModule::IncludeModule("iblock"); $dbElements = CIBlockElement::GetList(Array("SORT"=>"ASC"), Array("IBLOCK_ID" => 33, "ACTIVE"=>"Y"), false, false, Array("ID", "PROPERTY_FROM", "PROPERTY_TO", "PROPERTY_TOCH")); while ($element = $dbElements->GetNext()){ $redirects[] = $element; } $obCache->EndDataCache(array('redirects' => $redirects)); } return $redirects; } function check_redirects(){ $redirects = redirects(); $pureURL = pureURL(); if ( count($redirects) > 0 ){ foreach ($redirects as $item){ if ($item['PROPERTY_TOCH_VALUE'] == 'Вхождение'){ if ( substr_count($pureURL, $item['PROPERTY_FROM_VALUE']) ){ LocalRedirect($item['PROPERTY_TO_VALUE'], false, '301 Moved permanently'); exit; } } else if ($item['PROPERTY_TOCH_VALUE'] == 'Точное совпадение'){ if ( $item['PROPERTY_FROM_VALUE'] == $pureURL ){ LocalRedirect($item['PROPERTY_TO_VALUE'], false, '301 Moved permanently'); exit; } } } } } // Прайсы function price_elements(){ // Кешируем $obCache = new CPHPCache(); $cache_time = 30*24*60*60; $cache_id = 'prices'; $cache_path = '/prices/'; if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ $vars = $obCache->GetVars(); extract($vars); } elseif($obCache->StartDataCache()){ $elements = array(); CModule::IncludeModule("iblock"); $dbElements = CIBlockElement::GetList(Array("SORT"=>"ASC"), Array("IBLOCK_ID" => 24, "ACTIVE"=>"Y"), false, false, Array("ID", "NAME", "PROPERTY_FILE", "PROPERTY_NEW_FILE", "PROPERTY_CHANGE_TIME")); while ($element = $dbElements->GetNext()){ $elements[] = $element; } $obCache->EndDataCache(array('elements' => $elements)); } return $elements; } // Замена файла прайс-листа function change_file($old_file, $new_file, $el_id){ if (strlen($old_file) > 0 && strlen($new_file) > 0){ // Если прикреплены файлы $set_prop = array("FILE" => $new_file, "NEW_FILE" => false, "CHANGE_TIME" => false); CIBlockElement::SetPropertyValuesEx($el_id, 24, $set_prop); } } // Проверка прайс-листов на замену function check_price_files($old_file, $new_file){ $elements = price_elements(); if ( count($elements) > 0 ){ $inverts = 0; foreach ($elements as $element){ if ( strlen($element['PROPERTY_FILE_VALUE']) > 0 && strlen($element['PROPERTY_NEW_FILE_VALUE']) > 0 ){ // Установлено время if ($element['PROPERTY_CHANGE_TIME_VALUE']){ // Сверяем даты $now = date_create(ConvertDateTime(date('d.m.Y H:i:ss'), "YYYY-MM-DD HH:MI:SS", "ru")); $change_time = date_create(ConvertDateTime($element['PROPERTY_CHANGE_TIME_VALUE'], "YYYY-MM-DD HH:MI:SS", "ru")); $invert = $now->diff($change_time)->invert; // Если время настало if ($invert == 1){ // Вносим изменения change_file($element['PROPERTY_FILE_VALUE'], $element['PROPERTY_NEW_FILE_VALUE'], $element['ID']); $inverts++; } } } } if ($inverts > 0){ BXClearCache(true, "/s1/bitrix/"); BXClearCache(true, "/prices/"); } } } /*function SendAttache($event, $lid, $arFields, $filePath) { global $DB; $event = $DB->ForSQL($event); $lid = $DB->ForSQL($lid); $rsMessTpl = $DB->Query("SELECT * FROM b_event_message WHERE EVENT_NAME='$event' AND LID='$lid';"); while ($arMessTpl = $rsMessTpl->Fetch()) { // get charset $strSql = "SELECT CHARSET FROM b_lang WHERE LID='$lid' ORDER BY DEF DESC, SORT"; $dbCharset = $DB->Query($strSql, false, "FILE: ".__FILE__."<br>LINE: ".__LINE__); $arCharset = $dbCharset->Fetch(); $charset = $arCharset["CHARSET"]; // additional params if (!isset($arFields["DEFAULT_EMAIL_FROM"])) $arFields["DEFAULT_EMAIL_FROM"] = COption::GetOptionString("main", "email_from", "admin@".$GLOBALS["SERVER_NAME"]); if (!isset($arFields["SITE_NAME"])) $arFields["SITE_NAME"] = COption::GetOptionString("main", "site_name", $GLOBALS["SERVER_NAME"]); if (!isset($arFields["SERVER_NAME"])) $arFields["SERVER_NAME"] = COption::GetOptionString("main", "server_name", $GLOBALS["SERVER_NAME"]); // replace $from = CAllEvent::ReplaceTemplate($arMessTpl["EMAIL_FROM"], $arFields); $to = CAllEvent::ReplaceTemplate($arMessTpl["EMAIL_TO"], $arFields); $message = CAllEvent::ReplaceTemplate($arMessTpl["MESSAGE"], $arFields); $subj = CAllEvent::ReplaceTemplate($arMessTpl["SUBJECT"], $arFields); $bcc = CAllEvent::ReplaceTemplate($arMessTpl["BCC"], $arFields); $from = trim($from, "\r\n"); $to = trim($to, "\r\n"); $subj = trim($subj, "\r\n"); $bcc = trim($bcc, "\r\n"); if(COption::GetOptionString("main", "convert_mail_header", "Y")=="Y") { $from = CAllEvent::EncodeMimeString($from, $charset); $to = CAllEvent::EncodeMimeString($to, $charset); $subj = CAllEvent::EncodeMimeString($subj, $charset); } $all_bcc = COption::GetOptionString("main", "all_bcc", ""); if ($all_bcc != "") { $bcc .= (strlen($bcc)>0 ? "," : "") . $all_bcc; $duplicate = "Y"; } else { $duplicate = "N"; } $strCFields = ""; $cSearch = count($arSearch); foreach ($arSearch as $id => $key) { $strCFields .= substr($key, 1, strlen($key)-2)."=".$arReplace[$id]; if ($id < $cSearch-1) $strCFields .= "&"; } if (COption::GetOptionString("main", "CONVERT_UNIX_NEWLINE_2_WINDOWS", "N") == "Y") $message = str_replace("\n", "\r\n", $message); // read file(s) $arFiles = array(); if (!is_array($filePath)) $filePath = array($filePath); foreach ($filePath as $fPath) { $arFiles[] = array( "F_PATH" => $_SERVER['DOCUMENT_ROOT'].$fPath, "F_LINK" => $f = fopen($_SERVER['DOCUMENT_ROOT'].$fPath, "rb") ); } $un = strtoupper(uniqid(time())); $eol = CAllEvent::GetMailEOL(); $head = $body = ""; // header $head .= "Mime-Version: 1.0".$eol; $head .= "From: $from".$eol; if(COption::GetOptionString("main", "fill_to_mail", "N")=="Y") $header = "To: $to".$eol; $head .= "Reply-To: $from".$eol; $head .= "X-Priority: 3 (Normal)".$eol; $head .= "X-MID: $messID.".$arMessTpl["ID"]."(".date($DB->DateFormatToPHP(CLang::GetDateFormat("FULL"))).")".$eol; $head .= "X-EVENT_NAME: ISALE_KEY_F_SEND".$eol; if (strpos($bcc, "@") !== false) $head .= "BCC: $bcc".$eol; $head .= "Content-Type: multipart/mixed; "; $head .= "boundary=\"----".$un."\"".$eol.$eol; // body $body = "------".$un.$eol; if ($arMessTpl["BODY_TYPE"] == "text") $body .= "Content-Type:text/plain; charset=".$charset.$eol; else $body .= "Content-Type:text/html; charset=".$charset.$eol; $body .= "Content-Transfer-Encoding: 8bit".$eol.$eol; $body .= $message.$eol.$eol; foreach ($arFiles as $arF) { $body .= "------".$un.$eol; $body .= "Content-Type: application/octet-stream; name=\"".basename($arF["F_PATH"])."\"".$eol; $body .= "Content-Disposition:attachment; filename=\"".basename($arF["F_PATH"])."\"".$eol; $body .= "Content-Transfer-Encoding: base64".$eol.$eol; $body .= chunk_split(base64_encode(fread($arF["F_LINK"], filesize($arF["F_PATH"])))).$eol.$eol; } $body .= "------".$un."--"; // send if (!defined("ONLY_EMAIL") || $to==ONLY_EMAIL) bxmail($to, $subj, $body, $head, COption::GetOptionString("main", "mail_additional_parameters", "")); } }*/ // isMAIN function isMain() { $arURI = explode("/", $_SERVER["REQUEST_URI"]); if (substr_count($arURI[1], "?")) { $pos = strpos($arURI[1], "?"); $arURI[1] = substr($arURI[1], 0, $pos); } if (substr_count($arURI[1], "index.php")) { return true; } elseif (count($arURI) > 1 && strlen(trim($arURI[1])) == 0) { return true; } else { return false; } } // Блок сортировки function sort_block(){ $sort_block = array(); $sort_block['html'] = ''; global $APPLICATION; $sort_field = $APPLICATION->get_cookie('sort_field'); global $APPLICATION; $sort_order = $APPLICATION->get_cookie('sort_order'); $pureURI = $_SERVER["REQUEST_URI"]; if (substr_count($pureURI, "?")) { $pos = strpos($pureURI, "?"); $pureURI = substr($pureURI, 0, $pos); } $aURI = explode("/", $pureURI); $code = $aURI[count($aURI)-2]; $arFilter = array('IBLOCK_ID' => 2,'CODE' => $code); $rsSect = CIBlockSection::GetList(array('left_margin' => 'asc'),$arFilter,false,array('ID','IBLOCK_ID','UF_SORT_FIELD','UF_SORT_ORDER')); $arSect = $rsSect->GetNext(); if (!$sort_field){ if(intval($arSect['UF_SORT_FIELD'])==9){ $sort_field = 'PROPERTY_RATING'; }elseif(intval($arSect['UF_SORT_FIELD'])==8){ $sort_field = 'NAME'; }elseif(intval($arSect['UF_SORT_FIELD'])==7){ $sort_field = 'CATALOG_PRICE_1'; }else{ $sort_field = 'CATALOG_PRICE_1'; } } if (!$sort_order){ if(intval($arSect['UF_SORT_ORDER'])==10){ $sort_order = 'ASC'; }elseif(intval($arSect['UF_SORT_ORDER'])==11){ $sort_order = 'DESC'; }else{ $sort_order = 'ASC'; } } $sort_block['sort_field'] = $sort_field; $sort_block['sort_order'] = $sort_order; $sort_block['html'] .= '<div class="list-filters_wrap"><div class="filters-block_inner"><div class="filters_label">Сортировать: </div>'; if ( $sort_field == 'CATALOG_PRICE_1' ){ $order_class = ($sort_order == 'ASC')?'sorting_inc':'sorting_dec'; } else { $order_class = ''; } $sort_block['html'] .= '<div link_name="CATALOG_PRICE_1" class="filters-item sort_link '.(($sort_field == 'CATALOG_PRICE_1')?'active':'').' '.$order_class.'"><a class="filters-item_link">по цене</a></div>'; if ( $sort_field == 'NAME' ){ $order_class = ($sort_order == 'ASC')?'sorting_inc':'sorting_dec'; } else { $order_class = ''; } $sort_block['html'] .= '<div link_name="NAME" class="filters-item sort_link '.(($sort_field == 'NAME')?'active':'').' '.$order_class.'"><a class="filters-item_link">по наименованию</a></div>'; if ( $sort_field == 'PROPERTY_RATING' ){ $order_class = ($sort_order == 'ASC')?'sorting_inc':'sorting_dec'; } else { $order_class = ''; } $sort_block['html'] .= '<div link_name="PROPERTY_RATING" class="filters-item sort_link '.(($sort_field == 'PROPERTY_RATING')?'active':'').' '.$order_class.'"><a class="filters-item_link">по рейтингу</a></div>'; $sort_block['html'] .= '</div></div>'; return $sort_block; } // Быстрый поиск function my_quick_search($term, $ids, $prices, $morphology){ CModule::IncludeModule("search"); $obSearch = new CSearch; // запрос с морфологией $obSearch->Search(array( "QUERY" => $term, "SITE_ID" => LANG, array( array( "=MODULE_ID" => "iblock", "!ITEM_ID" => "S%", "PARAM2" => 2))), array("TITLE_RANK"=>"DESC"), array('STEMMING' => $morphology)); if ($obSearch->errorno != 0){} else { while($item = $obSearch->GetNext()){ // Получаем закешированное инфо о товаре $el = el_info($item['ITEM_ID']); if ($el && $el['ACTIVE'] == 'Y' && !in_array($el['ID'], $ids)){ $price = $el['CATALOG_PRICE_1']; $ids[] = $el['ID']; $prices[] = $price; } } } return array('tovary_ids' => $ids, 'tovary_prices' => $prices); } // Основной поиск function my_search($term, $search_array, $morphology){ CModule::IncludeModule("search"); $obSearch = new CSearch; // запрос с морфологией $obSearch->Search(array( "QUERY" => $term, "SITE_ID" => LANG, array( array( "=MODULE_ID" => "iblock", "!ITEM_ID" => "S%", "PARAM2" => 2))), array("TITLE_RANK"=>"DESC"), array('STEMMING' => $morphology)); if ($obSearch->errorno != 0){} else { while($item = $obSearch->GetNext()){ // Получаем закешированное инфо о товаре //echo '<pre>'; print_r($item); echo '</pre>'; $el = el_info($item['ITEM_ID']); if ($el && $el['ACTIVE'] == 'Y' && !in_array($el['ID'], $search_array)){ $search_array[] = $el['ID']; } } } return $search_array; } function words_limit($input_text, $limit, $end_str){ $input_text = strip_tags($input_text); $words = explode(' ', $input_text); // создаём из строки массив слов if ($limit < 1 || sizeof($words) <= $limit) { // если лимит указан не верно или количество слов меньше лимита, то возвращаем исходную строку return $input_text; } $words = array_slice($words, 0, $limit); // укорачиваем массив до нужной длины $out = implode(' ', $words); return $out.$end_str; //возвращаем строку + символ/строка завершения } function all_tov_cnt(){ $obCache = new CPHPCache(); $cache_time = 30*24*60*60; $cache_id = 'all_tov_cnt'; $cache_path = '/all_tov_cnt/'; if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ $vars = $obCache->GetVars(); extract($vars); } elseif($obCache->StartDataCache()){ $count = 0; $q = CIBlockElement::GetList(Array(), Array("IBLOCK_ID"=>2, "ACTIVE"=>"Y", "INCLUDE_SUBSECTIONS" => "Y"), false, false, Array("ID")); $count = $q->SelectedRowsCount(); $obCache->EndDataCache(array('count' => $count)); } return $count; } // Получаем класс для блока цены function get_price_block_class($arPrices, $price_level, $price, $cur_level){ $class = ''; if ($price_level != $cur_level){ // 1 уровень if ($price_level == 1){ if (($price == $arPrices[2] && $price == $arPrices[3]) || ($price == $arPrices[2] && $cur_level > 1)){ $class = 'hidden_block'; } } else if ($price_level == 2){ if (($price == $arPrices[1] && $cur_level == 1) || ($price == $arPrices[3] && $cur_level == 3)){ $class = 'hidden_block'; } } else if ($price_level == 3){ if ($price == $arPrices[2]){ $class = 'hidden_block'; } } } return $class; } // Получение инфо об элементе function el_info($el_id){ $iblock_id = 2; // ID инфоблока // Поля для запроса $fields_array = Array("ID", "ACTIVE", "DETAIL_PICTURE", "PROPERTY_OBIEM", "PROPERTY_VESUPAK", "NAME", "IBLOCK_ID", "PROPERTY_PROIZVODITEL", "XML_ID", "DETAIL_PAGE_URL", "IBLOCK_SECTION_ID", "PREVIEW_TEXT", "CATALOG_GROUP_1", "PROPERTY_RATING", "PROPERTY_BARGAIN", "PROPERTY_HIT", "PROPERTY_SUPERPRICE", "PROPERTY_EXCLUSIVE", "PROPERTY_KOLICHESTVO_OGRANICHENO", "PROPERTY_WHERE", "PROPERTY_EDITABLE", "PROPERTY_EDITABLE_TEXT", "PROPERTY_OLD_PRICE", "PROPERTY_IZ_ZERO_PRICE", "PROPERTY_PREVIEW_TEXT", "PROPERTY_DETAIL_TEXT", "PROPERTY_TITLE", "PROPERTY_KEYWORDS", "PROPERTY_DESCRIPTION", "PROPERTY_ARTNUMBER","PROPERTY_MANUAL_PRICE","PROPERTY_KOLMESTTRANS"); // Кешируем $obCache = new CPHPCache(); $cache_time = 30*24*60*60; $cache_id = 'el_info_'.$el_id; $cache_path = '/el_info/'.$el_id.'/'; if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ $vars = $obCache->GetVars(); extract($vars); } elseif($obCache->StartDataCache()){ // Запрашиваем инфо по элементу CModule::IncludeModule("iblock"); $q = CIBlockElement::GetList(Array("SORT" => "ASC"), Array("IBLOCK_ID" => $iblock_id, "ID" => $el_id), false, Array("nTopCount"=>1), $fields_array); while ($a = $q->GetNext()){ $el = clean_array($a, array('PROPERTY_DETAIL_TEXT_VALUE', 'PROPERTY_DETAIL_TEXT_VALUE')); } $obCache->EndDataCache(array('el' => $el)); } return $el; } // Получение инфо об элементе function el_info_all_props($el_id){ $iblock_id = 2; // ID инфоблока // Поля для запроса $fields_array = Array("ID", "ACTIVE", "DETAIL_PICTURE", "IBLOCK_SECTION_ID","NAME", "IBLOCK_ID", "DETAIL_PAGE_URL", "CATALOG_GROUP_1", "PROPERTY_*"); // Кешируем $obCache = new CPHPCache(); $cache_time = 30*24*60*60; $cache_id = 'el_info_all_props'.$el_id; $cache_path = '/el_info_all_props/'.$el_id.'/'; if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ $vars = $obCache->GetVars(); extract($vars); } elseif($obCache->StartDataCache()){ // Запрашиваем инфо по элементу CModule::IncludeModule("iblock"); $q = CIBlockElement::GetList(Array("SORT" => "ASC"), Array("IBLOCK_ID" => $iblock_id, "ID" => $el_id), false, Array("nTopCount"=>1), $fields_array); while ($ob = $q->GetNextElement()){ $arFields = $ob->GetFields(); $arProps = $ob->GetProperties($iblock_id,Array('SORT'=>'ASC','ID'=>'ASC')); $el = $arFields; $el['PROPERTIES'] = $arProps; } $obCache->EndDataCache(array('el' => $el)); } return $el; } // Получение инфо об элементе function elem_info($iblock_id, $el_id){ // Поля для запроса $fields_array = Array("ID", "ACTIVE", "DETAIL_PICTURE", "NAME", "IBLOCK_ID", "XML_ID", "DETAIL_PAGE_URL", "IBLOCK_SECTION_ID", "PREVIEW_TEXT", "PROPERTY_UF_SEO_TITLE", "PROPERTY_UF_SEO_DESC", "PROPERTY_SOPUT", "CATALOG_GROUP_*"); // Кешируем $obCache = new CPHPCache(); $cache_time = 30*24*60*60; $cache_id = 'elem_info_'.$iblock_id.'_'.$el_id; $cache_path = '/elem_info/'.$iblock_id.'/'.$el_id.'/'; if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ $vars = $obCache->GetVars(); extract($vars); } elseif($obCache->StartDataCache()){ // Запрашиваем инфо по элементу CModule::IncludeModule("iblock"); $q = CIBlockElement::GetList(Array("SORT" => "ASC"), Array("IBLOCK_ID" => $iblock_id, "ID" => $el_id), false, Array("nTopCount"=>1), $fields_array); while ($a = $q->GetNext()){ $el = $a; } $obCache->EndDataCache(array('el' => $el)); } return $el; } // Получение инфо об элементе function elem_info_all($iblock_id, $el_id){ // Поля для запроса $fields_array = Array("ID", "ACTIVE", "DETAIL_PICTURE", "NAME", "IBLOCK_ID", "XML_ID", "DETAIL_PAGE_URL", "IBLOCK_SECTION_ID", "PREVIEW_TEXT", "PROPERTY_*", "CATALOG_GROUP_*"); // Кешируем //$obCache = new CPHPCache(); //$cache_time = 30*24*60*60; //$cache_id = 'elem_info_all'.$iblock_id.'_'.$el_id; //$cache_path = '/elem_info_all/'.$iblock_id.'/'.$el_id.'/'; //if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ // $vars = $obCache->GetVars(); extract($vars); //} elseif($obCache->StartDataCache()){ // Запрашиваем инфо по элементу CModule::IncludeModule("iblock"); $q = CIBlockElement::GetList(Array("SORT" => "ASC"), Array("IBLOCK_ID" => $iblock_id, "ID" => $el_id), false, Array("nTopCount"=>1), $fields_array); if ($a = $q->GetNextElement()){ $arFields = $a->GetFields(); $arProps = $a->GetProperties(); $el = $arFields; $el['PROPERTIES'] = $arProps; } //$obCache->EndDataCache(array('el' => $el)); //} return $el; } // Получение инфо об элементе по XML_ID function elem_info_by_xml_id($iblock_id, $el_xml_id){ // Поля для запроса $fields_array = Array("ID", "ACTIVE", "DETAIL_PICTURE", "NAME", "IBLOCK_ID", "XML_ID", "DETAIL_PAGE_URL", "IBLOCK_SECTION_ID", "PREVIEW_TEXT", "PROPERTY_UF_SEO_TITLE", "PROPERTY_UF_SEO_DESC", "PROPERTY_SOPUT", "CATALOG_GROUP_1"); // Кешируем $obCache = new CPHPCache(); $cache_time = 30*24*60*60; $cache_id = 'elem_info_by_xml_id_'.$iblock_id.'_'.$el_xml_id; $cache_path = '/elem_info_by_xml_id/'.$iblock_id.'/'.$el_xml_id.'/'; if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ $vars = $obCache->GetVars(); extract($vars); } elseif($obCache->StartDataCache()){ // Запрашиваем инфо по элементу CModule::IncludeModule("iblock"); $q = CIBlockElement::GetList(Array("SORT" => "ASC"), Array("IBLOCK_ID" => $iblock_id, "XML_ID" => $el_xml_id), false, Array("nTopCount"=>1), $fields_array); while ($a = $q->GetNext()){ $el = $a; } $obCache->EndDataCache(array('el' => $el)); } return $el; } function proizv_info($el_id){ $iblock_id = 14; // ID инфоблока // Поля для запроса $fields_array = Array("ID", "NAME", "CODE"); // Кешируем $obCache = new CPHPCache(); $cache_time = 30*24*60*60; $cache_id = 'proizv_info_'.$el_id; $cache_path = '/proizv_info/'.$el_id.'/'; if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ $vars = $obCache->GetVars(); extract($vars); } elseif($obCache->StartDataCache()){ // Запрашиваем инфо по элементу CModule::IncludeModule("iblock"); $q = CIBlockElement::GetList(Array("SORT" => "ASC"), Array("IBLOCK_ID" => $iblock_id, "ID" => $el_id), false, Array("nTopCount"=>1), $fields_array); while ($a = $q->GetNext()){ $el = clean_array($a); } $obCache->EndDataCache(array('el' => $el)); } return $el; } function proizv_info_by_code($el_code){ $iblock_id = 14; // ID инфоблока // Поля для запроса $fields_array = Array("ID", "CODE", "IBLOCK_ID", "NAME", "PROPERTY_H1", "DETAIL_TEXT","PROPERTY_UF_SEO_TITLE","PROPERTY_UF_SEO_DESC"); // Кешируем $obCache = new CPHPCache(); $cache_time = 30*24*60*60; $cache_id = 'proizv_info_by_code'.$el_code; $cache_path = '/proizv_info_by_code/'.$el_code.'/'; if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ $vars = $obCache->GetVars(); extract($vars); } elseif($obCache->StartDataCache()){ // Запрашиваем инфо по элементу CModule::IncludeModule("iblock"); $q = CIBlockElement::GetList(Array("SORT" => "ASC"), Array("IBLOCK_ID" => $iblock_id, "=CODE" => $el_code), false, Array("nTopCount"=>1), $fields_array); while ($a = $q->GetNext()){ $el = clean_array($a); } $obCache->EndDataCache(array('el' => $el)); } return $el; } function el_info_by_code($el_code){ $iblock_id = 2; // ID инфоблока // Поля для запроса $fields_array = Array("ID", "NAME", "ACTIVE", "PREVIEW_TEXT", "DETAIL_PAGE_URL", "PROPERTY_DESCRIPTION", "IBLOCK_SECTION_ID", "PROPERTY_VIEW_360", "PROPERTY_TITLE", "PROPERTY_KEYWORDS", "PROPERTY_DESCRIPTION"); // Кешируем $obCache = new CPHPCache(); $cache_time = 30*24*60*60; $cache_id = 'el_info_by_code_'.$el_code; $cache_path = '/el_info_by_code/'.$el_code.'/'; if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ $vars = $obCache->GetVars(); extract($vars); } elseif($obCache->StartDataCache()){ // Запрашиваем инфо по элементу CModule::IncludeModule("iblock"); $q = CIBlockElement::GetList(Array("SORT" => "ASC"), Array("IBLOCK_ID" => $iblock_id, "=CODE" => $el_code), false, Array("nTopCount"=>1), $fields_array); while ($a = $q->GetNext()){ $el = clean_array($a, array('PROPERTY_DETAIL_TEXT', 'PROPERTY_PREVIEW_TEXT')); } $obCache->EndDataCache(array('el' => $el)); } return $el; } // Проверка "начинается с ..." function string_begins_with($needle, $haystack) { return (substr($haystack, 0, strlen($needle))==$needle); } // Получение инфо о разделе function section_info($section_id){ // ID инфоблока $iblock_id = 2; // Кешируем $obCache = new CPHPCache(); $cache_time = 30*24*60*60; $cache_id = 'section_'.$section_id; $cache_path = '/section/'.$section_id.'/'; if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ $vars = $obCache->GetVars(); extract($vars); } elseif($obCache->StartDataCache()){ // Запрашиваем раздел $r_sects = CIBlockSection::GetList(Array("SORT"=>"ASC"), Array("ACTIVE"=>"Y", "IBLOCK_ID"=>$iblock_id, "ID" => $section_id), false, Array('NAME','ID','IBLOCK_ID','IBLOCK_SECTION_ID','SECTION_PAGE_URL','DEPTH_LEVEL', 'UF_BROWSER_TITLE', 'UF_META_DESCRIPTION', 'UF_KEYWORDS', 'UF_NO_MENU','UF_FILTER','UF_VIEW')); while ($sect = $r_sects->GetNext()){ $sect = clean_array($sect); $section = $sect; } $obCache->EndDataCache(array('section' => $section)); } return $section; } // Получение инфо о разделе (по коду) function section_info_by_code($section_code){ // ID инфоблока $iblock_id = 2; // Кешируем $obCache = new CPHPCache(); $cache_time = 30*24*60*60; $cache_id = 'section_info_by_code_'.$section_code; $cache_path = '/section_info_by_code/'.$section_code.'/'; if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ $vars = $obCache->GetVars(); extract($vars); } elseif($obCache->StartDataCache()){ // Запрашиваем раздел $r_sects = CIBlockSection::GetList(Array("SORT"=>"ASC"), Array("ACTIVE"=>"Y", "IBLOCK_ID"=>$iblock_id, "=CODE" => $section_code), false, Array('UF_H1', 'UF_BROWSER_TITLE', 'UF_META_DESCRIPTION', 'UF_KEYWORDS', 'UF_VIEWMODE', 'UF_VIEW', 'UF_FILTER', 'UF_CANONICAL')); while ($sect = $r_sects->GetNext()){ $sect = clean_array($sect); $section = $sect; } $obCache->EndDataCache(array('section' => $section)); } return $section; } // Подсчёт подразделов текущего раздела function sub_sects_cnt($section_id){ // ID инфоблока $iblock_id = 2; // Кешируем $obCache = new CPHPCache(); $cache_time = 30*24*60*60; $cache_id = 'sub_sects_cnt_'.$section_id; $cache_path = '/sub_sects_cnt/'.$section_id.'/'; if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ $vars = $obCache->GetVars(); extract($vars); } elseif($obCache->StartDataCache()){ $sects = CIBlockSection::GetList(Array("SORT"=>"ASC"), Array("ACTIVE" => "Y", "GLOBAL_ACTIVE" => "Y", "IBLOCK_ID" => $iblock_id, "SECTION_ID" => $section_id), false); $sub_sects_cnt = $sects->SelectedRowsCount(); $obCache->EndDataCache(array('sub_sects_cnt' => $sub_sects_cnt)); } return $sub_sects_cnt; } // Все разделы FAQ function all_sections(){ // ID инфоблока $iblock_id = 32; // Кешируем $obCache = new CPHPCache(); $cache_time = 30*24*60*60; $cache_id = 'all_sections'; $cache_path = '/all_sections/'; if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ $vars = $obCache->GetVars(); extract($vars); } elseif($obCache->StartDataCache()){ $sections = array(); // Запрашиваем раздел $r_sects = CIBlockSection::GetList(Array("SORT"=>"ASC"), Array("ACTIVE"=>"Y", "IBLOCK_ID"=>$iblock_id), false, Array()); while ($sect = $r_sects->GetNext()){ $sections[] = $sect; } $obCache->EndDataCache(array('sections' => $sections)); } return $sections; } function faq_section_elements($sect_id){ $iblock_id = 32; // ID инфоблока // Поля для запроса $fields_array = Array("ID", "NAME", "IBLOCK_SECTION_ID", "PREVIEW_TEXT"); // Кешируем $obCache = new CPHPCache(); $cache_time = 30*24*60*60; $cache_id = 'faq_section_elements_'.$sect_id; $cache_path = '/faq_section_elements/'.$sect_id.'/'; if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ $vars = $obCache->GetVars(); extract($vars); } elseif($obCache->StartDataCache()){ $faq_section_elements = array(); // Запрашиваем инфо по элементу CModule::IncludeModule("iblock"); $q = CIBlockElement::GetList(Array("SORT" => "ASC"), Array("IBLOCK_ID" => $iblock_id, "SECTION_ID" => $sect_id), false, false, $fields_array); while ($element = $q->GetNext()){ $faq_section_elements[] = $element; } $obCache->EndDataCache(array('faq_section_elements' => $faq_section_elements)); } return $faq_section_elements; } // РАССТАНОВКА РАЗДЕЛОВ function sects_placement($term, $sects, $cur_array){ if (strlen($term) > 0 && count($sects) > 0){ // СНАЧАЛА ВЫВОДИМ РАЗДЕЛЫ, КОТОРЫЕ НАЧИНАЮТСЯ С ЗАПРОСА $begin_array = array(); $begin_titles = array(); $stop_ids = array(); foreach ($sects as $sect){ $item_id_len = strlen($sect['ITEM_ID']); $sect_id = substr($sect['ITEM_ID'], 1, $item_id_len); $section = section_info($sect_id); if ($section['ACTIVE'] == 'Y' && string_begins_with(strtolower($term), strtolower($sect['TITLE']))){ $stop_ids[] = $sect['ITEM_ID']; $begin_titles[] = $sect['TITLE']; $begin_array[] = "<li><a href='".$section['SECTION_PAGE_URL']."' class='item_name'>".del_quots($sect['TITLE'])."</a></li>"; } } // Сортируем по алфавиту if (count($begin_titles) > 0){ array_multisort($begin_titles, SORT_ASC, SORT_STRING, $begin_array); } // Добавляем в массив $cur_array if (count($begin_array) > 0){ foreach ($begin_array as $begin_el){ $cur_array[] = $begin_el; } } // ПОТОМ ВЫВОДИМ ОСТАЛЬНЫЕ РАЗДЕЛЫ $other_array = array(); $other_titles = array(); foreach ($sects as $sect){ if (!in_array($sect['ITEM_ID'], $stop_ids)){ $item_id_len = strlen($sect['ITEM_ID']); $sect_id = substr($sect['ITEM_ID'], 1, $item_id_len); $section = section_info($sect_id); if($section['ACTIVE'] == 'Y'){ $other_titles[] = $sect['TITLE']; $other_array[] = "<li><a href='".$section['SECTION_PAGE_URL']."' class='item_name'>".del_quots($sect['TITLE'])."</a></li>"; } } } // Сортируем по алфавиту if (count($other_titles) > 0){ array_multisort($other_titles, SORT_ASC, SORT_STRING, $other_array); } // Добавляем в массив $cur_array if (count($other_array) > 0){ foreach ($other_array as $other_el){ $cur_array[] = $other_el; } } } return $cur_array; } function menu_levels(){ // Кешируем $obCache = new CPHPCache(); $cache_time = 30*24*60*60; $cache_id = 'menu_levels'; $cache_path = '/menu_levels/'; if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ $vars = $obCache->GetVars(); extract($vars); } elseif($obCache->StartDataCache()){ $q = CIBlockSection::GetList(Array("SORT"=>"ASC", "NAME"=>"ASC"), Array("IBLOCK_ID"=>2, "ACTIVE"=>"Y"), false, Array("UF_COLUMN")); while ($a = $q->GetNext()){ $not_show = false; $dbChain = CIBlockSection::GetNavChain(2, $a['ID']); while ($section = $dbChain->GetNext()){ $sect_info = section_info($section['ID']); if ($sect_info["UF_NO_MENU"] == 1){ $not_show = true; } } if (!$not_show){ unset($a['DESCRIPTION']); unset($a['~DESCRIPTION']); unset($a['DESCRIPTION_TYPE']); unset($a['~DESCRIPTION_TYPE']); unset($a['SEARCHABLE_CONTENT']); unset($a['~SEARCHABLE_CONTENT']); unset($a['EXTERNAL_ID']); unset($a['~EXTERNAL_ID']); unset($a['LEFT_MARGIN']); unset($a['RIGHT_MARGIN']); unset($a['~LEFT_MARGIN']); unset($a['~RIGHT_MARGIN']); unset($a['IBLOCK_ID']); unset($a['~IBLOCK_ID']); unset($a['IBLOCK_EXTERNAL_ID']); unset($a['~IBLOCK_EXTERNAL_ID']); unset($a['TIMESTAMP_X']); unset($a['~TIMESTAMP_X']); unset($a['CREATED_BY']); unset($a['~CREATED_BY']); unset($a['MODIFIED_BY']); unset($a['~MODIFIED_BY']); unset($a['PICTURE']); unset($a['~PICTURE']); unset($a['GLOBAL_ACTIVE']); unset($a['~GLOBAL_ACTIVE']); unset($a['XML_ID']); unset($a['~XML_ID']); unset($a['SOCNET_GROUP_ID']); unset($a['~SOCNET_GROUP_ID']); unset($a['DATE_CREATE']); unset($a['~DATE_CREATE']); unset($a['DETAIL_PICTURE']); unset($a['~DETAIL_PICTURE']); unset($a['~IBLOCK_SECTION_ID']); unset($a['SORT']); unset($a['~SORT']); unset($a['ACTIVE']); unset($a['~ACTIVE']); unset($a['IBLOCK_CODE']); unset($a['~IBLOCK_CODE']); unset($a['LIST_PAGE_URL']); unset($a['~LIST_PAGE_URL']); unset($a['~DEPTH_LEVEL']); if ($a["DEPTH_LEVEL"] == 1) { unset($a['DEPTH_LEVEL']); $a_level_1[] = $a; } elseif ($a["DEPTH_LEVEL"] == 2) { unset($a['DEPTH_LEVEL']); $a_level_2[$a["IBLOCK_SECTION_ID"]][] = $a; } elseif ($a["DEPTH_LEVEL"] == 3) { unset($a['DEPTH_LEVEL']); $a_level_3[$a["IBLOCK_SECTION_ID"]][] = $a; } } } $obCache->EndDataCache(array('a_level_1' => $a_level_1, 'a_level_2' => $a_level_2,'a_level_3' => $a_level_3)); } return array('a_level_1' => $a_level_1, 'a_level_2' => $a_level_2,'a_level_3' => $a_level_3); } // Получение цепочки разделов для раздела function el_sections_chain_cache($iblock_section_id){ // Кешируем $obCache = new CPHPCache(); $cache_time = 30*24*60*60; $cache_id = 'el_sections_chain_'.$iblock_section_id; $cache_path = '/el_sections_chain/'.$iblock_section_id.'/'; if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ $vars = $obCache->GetVars(); extract($vars); } elseif($obCache->StartDataCache()){ // Получаем цепочку разделов товара $el_sections_chain = array(); $qq = CIBlockSection::GetNavChain(2, $iblock_section_id); while ($aa = $qq->GetNext()) { $el_sections_chain[] = clean_array($aa); } $obCache->EndDataCache(array('el_sections_chain' => $el_sections_chain)); } return $el_sections_chain; } function del_quots($name){ $new_name = $name; $quot_exist = true; while ($quot_exist == true){ if ( substr_count($new_name, 'quot;') || substr_count($new_name, 'amp;') ){ $new_name = htmlspecialchars_decode($new_name); } else { $quot_exist = false; } } return $new_name; } // html малой корзины function get_small_basket_html(){ CModule::IncludeModule("sale"); $CART_COUNT = 0; $aCART_SUM = Array(); $_SESSION["DISCOUNT_LEVEL"] = 1; global $aGlobalPrices; $q = CSaleBasket::GetList(Array(), Array("FUSER_ID"=>CSaleBasket::GetBasketUserID(), "ORDER_ID"=>false)); while ($a = $q->GetNext()) { $CART_COUNT = $CART_COUNT + intval($a["QUANTITY"]); foreach ($aGlobalPrices[$a["PRODUCT_ID"]] as $key=>$value) { $aCART_SUM[$key] = $aCART_SUM[$key] + intval($value*$a["QUANTITY"]); } } $_SESSION["DISCOUNT_LEVEL"] = calculate_discount_level($aCART_SUM[1]); // дополнительный цикл для обновления цены $q = CSaleBasket::GetList(Array(), Array("FUSER_ID"=>CSaleBasket::GetBasketUserID(), "ORDER_ID"=>false)); while ($a = $q->GetNext()) { $aBasketFields = Array( "PRODUCT_PRICE_ID" => $_SESSION["DISCOUNT_LEVEL"], "PRICE" => $aGlobalPrices[$a["PRODUCT_ID"]][$_SESSION["DISCOUNT_LEVEL"]] ); CSaleBasket::Update($a["ID"], $aBasketFields); } $arCompare = GetCompareList(); $small_basket_html = ' <div class="header-basket-column header-basket-column-x3"> <div class="header-compare-icon-compare"></div> <a href="/compare/" class="header-compare-link"> <span class="header-compare-link-title">Сравнение</span> <span>товаров<span class="header-compare-link-total">'.count($arCompare).'</span></span> </a> </div> '; $small_basket_html .= '<div class="header-basket-column header-basket-column-x1"><div class="header-basket-icon-basket"></div><a href="/basket/" class="header-basket-link">'; $small_basket_html .= '<span class="header-basket-link-title"><span>'.$CART_COUNT.'</span> '.pfCnt($CART_COUNT, "товар", "товара", "товаров").'</span>'; $small_basket_html .= '<span class="header-basket-link-price">'.number_format($aCART_SUM[$_SESSION["DISCOUNT_LEVEL"]], 0, "", " ").' рублей</span></a></div>'; $percent = 0; if ($_SESSION["DISCOUNT_LEVEL"] > 1) { $diff = $aCART_SUM[1] - $aCART_SUM[$_SESSION["DISCOUNT_LEVEL"]]; $percent = ($diff*100)/$aCART_SUM[1]; $percent = round($percent); } $height = 0; if ($_SESSION["DISCOUNT_LEVEL"] == 1) { $height = ($aCART_SUM[1]*100)/50000; $height = round($height); } if ($_SESSION["DISCOUNT_LEVEL"] == 2) { $height = ($aCART_SUM[1]*100)/100000; $height = round($height); } if ($_SESSION["DISCOUNT_LEVEL"] == 3) { $height = 100; } $small_basket_html .= '<div class="header-basket-column header-basket-column-x2"><div class="header-basket-icon-sale"></div>'; $small_basket_html .= '<div class="header-basket-level"><span style="height: '.$height.'%;"></span></div>'; $small_basket_html .= '<div class="header-basket-level-title">'.$_SESSION["DISCOUNT_LEVEL"].' уровень</div>'; $small_basket_html .= '<div class="header-basket-level-sale">скидка - <span>'.$percent.'%</span></div>'; $small_basket_html .= '<a href="#" class="header-basket-quest">?</a></div>'; return $small_basket_html; } // html малой корзины function get_small_basket_footer_html(){ CModule::IncludeModule("sale"); $CART_COUNT = 0; $aCART_SUM = Array(); $_SESSION["DISCOUNT_LEVEL"] = 1; global $aGlobalPrices; $q = CSaleBasket::GetList(Array(), Array("FUSER_ID"=>CSaleBasket::GetBasketUserID(), "ORDER_ID"=>false)); while ($a = $q->GetNext()) { $CART_COUNT = $CART_COUNT + intval($a["QUANTITY"]); foreach ($aGlobalPrices[$a["PRODUCT_ID"]] as $key=>$value) { $aCART_SUM[$key] = $aCART_SUM[$key] + intval($value*$a["QUANTITY"]); } } $_SESSION["DISCOUNT_LEVEL"] = calculate_discount_level($aCART_SUM[1]); // дополнительный цикл для обновления цены $q = CSaleBasket::GetList(Array(), Array("FUSER_ID"=>CSaleBasket::GetBasketUserID(), "ORDER_ID"=>false)); while ($a = $q->GetNext()) { $aBasketFields = Array( "PRODUCT_PRICE_ID" => $_SESSION["DISCOUNT_LEVEL"], "PRICE" => $aGlobalPrices[$a["PRODUCT_ID"]][$_SESSION["DISCOUNT_LEVEL"]] ); CSaleBasket::Update($a["ID"], $aBasketFields); } $arCompare = GetCompareList(); $small_basket_html = ' <div class="header-basket-column header-basket-column-x3"> <div class="header-compare-icon-compare"></div> <a href="/compare/" class="header-compare-link"> <span class="header-compare-link-title">Сравнение</span> <span>товаров<span class="header-compare-link-total">'.count($arCompare).'</span></span> </a> </div> '; $small_basket_html .= '<div class="header-basket-column header-basket-column-x1"> <div class="header-basket-icon-basket"></div><a href="/basket/" class="header-basket-link"><span class="header-basket-link-title"><span>'.$CART_COUNT.'</span> '.pfCnt($CART_COUNT, "товар", "товара", "товаров").'</span><span class="header-basket-link-price">'.number_format($aCART_SUM[$_SESSION["DISCOUNT_LEVEL"]], 0, "", " ").' рублей</span></a></div>'; $percent = 0; if ($_SESSION["DISCOUNT_LEVEL"] > 1) { $diff = $aCART_SUM[1] - $aCART_SUM[$_SESSION["DISCOUNT_LEVEL"]]; $percent = ($diff*100)/$aCART_SUM[1]; $percent = round($percent); } $height = 0; if ($_SESSION["DISCOUNT_LEVEL"] == 1) { $height = ($aCART_SUM[1]*100)/50000; $height = round($height); } if ($_SESSION["DISCOUNT_LEVEL"] == 2) { $height = ($aCART_SUM[1]*100)/100000; $height = round($height); } if ($_SESSION["DISCOUNT_LEVEL"] == 3) { $height = 100; } $small_basket_html .= '<div class="header-basket-column header-basket-column-x2"> <div class="header-basket-icon-sale"></div> <div class="header-basket-level"><span style="height: '.$height.'%;"></span></div> <div class="header-basket-level-title">'.$_SESSION["DISCOUNT_LEVEL"].' уровень</div> <div class="header-basket-level-sale">скидка - <span>'.$percent.'%</span></div><a href="#" class="header-basket-quest">?</a></div></div>'; return $small_basket_html; } // Получаем класс активности (раскрытости) свойста в фильтре из HINT function get_prop_activity($arItem){ $class = ''; if ($arItem['DISPLAY_EXPANDED'] == 'Y'){ $class = 'active'; } return $class; } function is_single_prop($arItem) { // Кешируем $obCache = new CPHPCache(); $cache_time = 30*24*60*60; $cache_id = 'is_single_prop_'.$arItem['CODE']; $cache_path = '/is_single_prop/'.$arItem['CODE'].'/'; if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ $vars = $obCache->GetVars(); extract($vars); } elseif($obCache->StartDataCache()){ // Получаем инфо по свойству $is_single_prop = false; $res = CIBlockProperty::GetByID($arItem['CODE'], false, "catalog"); if($prop = $res->GetNext()){ if ($prop['HINT'] == 'single'){ $is_single_prop = true; } } $obCache->EndDataCache(array('is_single_prop' => $is_single_prop)); } return $is_single_prop; } function pureURL(){ $pureURI = $_SERVER["REQUEST_URI"]; if (substr_count($pureURI, "?")){ $pos = strpos($pureURI, "?"); $pureURI = substr($pureURI, 0, $pos); } return $pureURI; } function is404page($url, $is_main){ $is404 = false; if (substr_count($url, '//') || ($is_main && substr_count($url, 'index.php'))){ $is404 = true; } return $is404; } // Очистка массива от полей с символом "~" function clean_array($array, $not_unset_fields){ if ( is_array($array) && count($array) > 0 ){ // Стоп-поля $not_unset_array = array('PREVIEW_TEXT', 'DETAIL_TEXT', 'IBLOCK_SECTION_ID', 'DESCRIPTION'); // Добавляем стоп-поля при наличии if ( is_array($not_unset_fields) && count($not_unset_fields) > 0 ){ foreach($not_unset_fields as $field){ if ( !in_array( $field, $not_unset_array ) ){ $not_unset_array[] = $field; } } } // Перебор полей foreach($array as $key => $value){ if ( strlen($key) > 1 ){ $key_first_symbol = substr($key, 0, 1); $field = substr($key, 1, strlen($key)); if ($key_first_symbol == '~' && !in_array($field, $not_unset_array)){ unset($array[$key]); } } } } return $array; } function PPNS($picture_id, $max_width, $max_height){ $file = CFile::GetFileArray($picture_id); if ($file['WIDTH'] <= $max_width && $file['HEIGHT'] <= $max_height){ $pic = $file['SRC']; } else { $pic = rIMG($picture_id, 1, $max_width, $max_height); } return $pic; } // rIMGG function rIMGG($image, $mode, $width, $height) { /*$max_width=$width; $max_height=$height; $koef = ($width/$height); if ($koef<=1){$width=$max_height*$koef; $height=$max_height;} if ($koef>1){$width=$max_width; $height=$max_width/$koef;} if ($mode == 4){ $image_array = CFile::ResizeImageGet($image, array('width' => $width, 'height' => $height), BX_RESIZE_IMAGE_PROPORTIONAL, true); } if ($mode == 5 || !$mode){ $image_array = CFile::ResizeImageGet($image, array('width' => $width, 'height' => $height), BX_RESIZE_IMAGE_EXACT, true); } $image = $image_array['src']; return $image;*/ return rIMG($image, $mode, $width, $height); } /** * Функция выводит отладочную информацию (замена pre+print_r+pre) на экран * * @param any $obj -- объект, значение которого выводят * @param boolean $admOnly -- функция доступна только администартору * @param boolean $die -- остановить выполнение скрипта * @return boolean */ function pre($obj,$admOnly=true,$d=false) { global $USER; if($USER->IsAdmin() || $admOnly===false) { echo "<pre>"; print_r($obj); echo "</pre>"; if($d===true) die(); } } // pfCnt function pfCnt($n, $form1, $form2, $form5) // pfCnt($productCount, "товар", "товара", "товаров") { $n = abs($n) % 100; $n1 = $n % 10; if ($n > 10 && $n < 20) return $form5; if ($n1 > 1 && $n1 < 5) return $form2; if ($n1 == 1) return $form1; return $form5; } // addToRequestURI // заменяется $APPLICATION->GetCurPageParam(); function addToRequestURI($pm, $val) { if (substr_count($_SERVER["REQUEST_URI"], "?")) { $arURI = explode("?", $_SERVER["REQUEST_URI"]); $pureURI = $arURI[0]; $arRequests = explode("&", $arURI[1]); $arNewRequests = Array(); foreach ($arRequests as $request) { $arTMP = explode("=", $request); if ($arTMP[0] != $pm) { $arNewRequests[] = $request; } } $arNewRequests[] = $pm."=".$val; return $pureURI."?".implode("&", $arNewRequests); } else { return $_SERVER["REQUEST_URI"]."?".$pm."=".$val; } } // addToRequestURIm function addToRequestURIm($pm, $val) { if (substr_count($_SERVER["REQUEST_URI"], "?")) { $arURI = explode("?", $_SERVER["REQUEST_URI"]); $pureURI = $arURI[0]; $arSORT = Array( 0 => "sort_code=asc", 1 => "sort_code=desc", 2 => "sort_producer=asc", 3 => "sort_producer=desc", 4 => "sort_cost=asc", 5 => "sort_cost=desc" ); $arURI[1] = str_replace($arSORT, "", $arURI[1]); $arURI[1] = str_replace("&&", "&", $arURI[1]); $arRequests = explode("&", $arURI[1]); $arNewRequests = Array(); foreach ($arRequests as $request) { $arTMP = explode("=", $request); if ($arTMP[0] != $pm) { $arNewRequests[] = $request; } } $arNewRequests[] = $pm."=".$val; $result = $pureURI."?".implode("&", $arNewRequests); $result = str_replace("&&", "&", $result); return $result; } else { $result = $_SERVER["REQUEST_URI"]."?".$pm."=".$val; $result = str_replace("&&", "&", $result); return $result; } } // ArrayClearing function ArrayClearing($array) { $ret_arr = array(); foreach($array as $val) { if (!empty($val)) { $ret_arr[] = trim($val); } } return $ret_arr; } // editDATE function editDATE($DATA) { $DATA = substr($DATA, 0, 10); $MES = array( "01" => "Января", "02" => "Февраля", "03" => "Марта", "04" => "Апреля", "05" => "Мая", "06" => "Июня", "07" => "Июля", "08" => "Августа", "09" => "Сентября", "10" => "Октября", "11" => "Ноября", "12" => "Декабря" ); $arData = explode(".", $DATA); $d = ($arData[0] < 10) ? substr($arData[0], 1) : $arData[0]; $newData = $d." ".$MES[$arData[1]]." ".$arData[2]; return $newData; } // editDATE2 function editDATE2($DATA) { $DATA = substr($DATA, 0, 10); $MES = array( "01" => "Января", "02" => "Февраля", "03" => "Марта", "04" => "Апреля", "05" => "Мая", "06" => "Июня", "07" => "Июля", "08" => "Августа", "09" => "Сентября", "10" => "Октября", "11" => "Ноября", "12" => "Декабря" ); $arData = explode(".", $DATA); $d = ($arData[0] < 10) ? substr($arData[0], 1) : $arData[0]; $newData = $d." ".$MES[$arData[1]]; return $newData; } // rIMG function rIMG($image, $mode, $width, $height) { if(intval($image)>0){ $arFile = CFile::GetFileArray($image); $image = $arFile['SRC']; } $arTMP = explode('/',$image); $imgName = $arTMP[count($arTMP)-1]; // Кешируем $obCache = new CPHPCache(); $cache_time = 30*24*60*60; $cache_id = 'rIMG_'.$imgName.$width.'_'.$height; $cache_path = '/rIMG/'.$imgName.$width.'_'.$height.'/'; if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ $vars = $obCache->GetVars(); extract($vars); } elseif($obCache->StartDataCache()){ $tmp_image = $_SERVER['DOCUMENT_ROOT'] . '/upload/resize_cache/'.$width."x".$height .'_'. $imgName; $rif = CFile::ResizeImageFile( $_SERVER["DOCUMENT_ROOT"].$image, $tmp_image, array('width'=>$width, 'height'=>$height), $resizeType = BX_RESIZE_IMAGE_PROPORTIONAL_ALT, $arWaterMark = array(), $jpgQuality=100, $arFilters = Array() ); $rIMG = '/upload/resize_cache/'.$width."x".$height .'_'. $imgName; $obCache->EndDataCache(array('rIMG' => $rIMG)); } return $rIMG; /*if (!$image) { $image = false; } if (!$mode) { $mode = "4"; } if (!$width) { $width = ""; } if (!$height) { $height = ""; } if (CModule::IncludeModule("imager") && $image) { global $APPLICATION; $image = $APPLICATION->IncludeComponent("soulstream:imager", "", Array( "MODE" => $mode, "RETURN" => "src", "RESIZE_SMALL" => "Y", "IMAGE" => CFile::GetPath($image), "FILE_NAME" => "", "WIDTH" => $width, "HEIGHT" => $height, "SAVE_DIR" => "", "BG" => "#ffffff", "QUALITY" => "90", "DEBUG" => "N", "FILTERTYPE" => "", "ADD_CORNER" => "N", "CORNER_PATH" => "", "ADD_WATERMARK" => "N", "WATERMARK_PATH" => "", "WATERMARK_POSITION" => "", "CACHE_IMAGE" => "Y", "ADD_TEXT" => "N", "TEXT" => "", "TEXT_SIZE" => "", "TEXT_COLOR" => "", "TEXT_Y" => "", "TEXT_X" => "", "TEXT_POSITION" => "", "TEXT_ANGLE" => "", "FONT_PATH" => "" ), false, array("HIDE_ICONS"=>"Y") ); return $image; }*/ } // rIMG_wm function rIMG_wm($image, $mode, $width, $height) { if(intval($image)>0){ $arFile = CFile::GetFileArray($image); $image = $arFile['SRC']; } $arTMP = explode('/',$image); $imgName = $arTMP[count($arTMP)-1]; // Кешируем $obCache = new CPHPCache(); $cache_time = 30*24*60*60; $cache_id = 'rIMG_'.$imgName; $cache_path = '/rIMG/'.$imgName.'/'; if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ $vars = $obCache->GetVars(); extract($vars); } elseif($obCache->StartDataCache()){ $tmp_image = $_SERVER['DOCUMENT_ROOT'] . '/upload/resize_cache/'.$width."x".$height .'_'. $imgName; $rif = CFile::ResizeImageFile( $_SERVER["DOCUMENT_ROOT"].$image, $tmp_image, array('width'=>$width, 'height'=>$height), $resizeType = BX_RESIZE_IMAGE_PROPORTIONAL_ALT, $arWaterMark = array(), $jpgQuality=100, Array( array( "name" => "watermark", "position" => 'mc', "size"=> 'big', "alpha_level"=> '100', "file"=>$_SERVER['DOCUMENT_ROOT'].'/watermark.png', ) ) ); $rIMG = '/upload/resize_cache/'.$width."x".$height .'_'. $imgName; $obCache->EndDataCache(array('rIMG' => $rIMG)); } return $rIMG; /*if (!$image) { $image = false; } if (!$mode) { $mode = "4"; } if (!$width) { $width = ""; } if (!$height) { $height = ""; } if (CModule::IncludeModule("imager") && $image) { global $APPLICATION; $image = $APPLICATION->IncludeComponent("soulstream:imager", "", Array( "MODE" => 2, "RETURN" => "src", "RESIZE_SMALL" => "Y", "IMAGE" => CFile::GetPath($image), "FILE_NAME" => "", "WIDTH" => $width, "HEIGHT" => $height, "SAVE_DIR" => "", "BG" => "#ffffff", "QUALITY" => "90", "DEBUG" => "N", "FILTERTYPE" => "", "ADD_CORNER" => "N", "CORNER_PATH" => "", "ADD_WATERMARK" => "Y", "WATERMARK_PATH" => "/watermark.png", "WATERMARK_POSITION" => "mc", "CACHE_IMAGE" => "Y", "ADD_TEXT" => "N", "TEXT" => "", "TEXT_SIZE" => "", "TEXT_COLOR" => "", "TEXT_Y" => "", "TEXT_X" => "", "TEXT_POSITION" => "", "TEXT_ANGLE" => "", "FONT_PATH" => "" ), false, array("HIDE_ICONS"=>"Y") ); //return $image; return 'rIMG_wm'; }*/ } // rIMG_bw function rIMG_bw($image, $mode, $width, $height) { /*if (!$image) { $image = false; } if (!$mode) { $mode = "4"; } if (!$width) { $width = ""; } if (!$height) { $height = ""; } if (CModule::IncludeModule("imager") && $image) { global $APPLICATION; $image = $APPLICATION->IncludeComponent("soulstream:imager", "", Array( "MODE" => $mode, "RETURN" => "src", "RESIZE_SMALL" => "Y", "IMAGE" => CFile::GetPath($image), "FILE_NAME" => "", "WIDTH" => $width, "HEIGHT" => $height, "SAVE_DIR" => "", "BG" => "#ffffff", "QUALITY" => "90", "DEBUG" => "N", "FILTERTYPE" => "grayscale", "ADD_CORNER" => "N", "CORNER_PATH" => "", "ADD_WATERMARK" => "N", "WATERMARK_PATH" => "", "WATERMARK_POSITION" => "", "CACHE_IMAGE" => "Y", "ADD_TEXT" => "N", "TEXT" => "", "TEXT_SIZE" => "", "TEXT_COLOR" => "", "TEXT_Y" => "", "TEXT_X" => "", "TEXT_POSITION" => "", "TEXT_ANGLE" => "", "FONT_PATH" => "" ), false, array("HIDE_ICONS"=>"Y") ); //return $image; return 'rIMG_bw'; }*/ return rIMG($image, $mode, $width, $height); } function return_basket() { $basket_html = ''; CModule::IncludeModule("sale"); $CART_COUNT = 0; $aCART_SUM = Array(); $_SESSION["DISCOUNT_LEVEL"] = 1; global $aGlobalPrices; $q = CSaleBasket::GetList(Array(), Array("FUSER_ID"=>CSaleBasket::GetBasketUserID(), "ORDER_ID"=>false)); while ($a = $q->GetNext()) { $CART_COUNT = $CART_COUNT + intval($a["QUANTITY"]); foreach ($aGlobalPrices[$a["PRODUCT_ID"]] as $key=>$value) { $aCART_SUM[$key] = $aCART_SUM[$key] + intval($value*$a["QUANTITY"]); } } $_SESSION["DISCOUNT_LEVEL"] = calculate_discount_level($aCART_SUM[1]); // дополнительный цикл для обновления цены $q = CSaleBasket::GetList(Array(), Array("FUSER_ID"=>CSaleBasket::GetBasketUserID(), "ORDER_ID"=>false)); while ($a = $q->GetNext()) { $aBasketFields = Array( "PRODUCT_PRICE_ID" => $_SESSION["DISCOUNT_LEVEL"], "PRICE" => $aGlobalPrices[$a["PRODUCT_ID"]][$_SESSION["DISCOUNT_LEVEL"]] ); CSaleBasket::Update($a["ID"], $aBasketFields); } $arCompare = GetCompareList(); $basket_html = ' <div class="header-basket-column header-basket-column-x3"> <div class="header-compare-icon-compare"></div> <a href="/compare/" class="header-compare-link"> <span class="header-compare-link-title">Сравнение</span> <span>товаров<span class="header-compare-link-total">'.count($arCompare).'</span></span> </a> </div> '; $basket_html .= '<div class="header-basket-column header-basket-column-x1">'; $basket_html .= '<div class="header-basket-icon-basket"></div>'; $basket_html .= '<a href="/basket/" class="header-basket-link">'; $basket_html .= '<span class="header-basket-link-title"><span>'.$CART_COUNT.'</span> '.pfCnt($CART_COUNT, "товар", "товара", "товаров").'</span>'; $basket_html .= '<span class="header-basket-link-price">'.number_format($aCART_SUM[$_SESSION["DISCOUNT_LEVEL"]], 0, "", " ").' рублей</span>'; $basket_html .= '</a>'; $basket_html .= '</div>'; $percent = 0; if ($_SESSION["DISCOUNT_LEVEL"] > 1) { $diff = $aCART_SUM[1] - $aCART_SUM[$_SESSION["DISCOUNT_LEVEL"]]; $percent = ($diff*100)/$aCART_SUM[1]; $percent = round($percent); } $height = 0; if ($_SESSION["DISCOUNT_LEVEL"] == 1) { $height = ($aCART_SUM[1]*100)/50000; $height = round($height); } if ($_SESSION["DISCOUNT_LEVEL"] == 2) { $height = ($aCART_SUM[1]*100)/100000; $height = round($height); } if ($_SESSION["DISCOUNT_LEVEL"] == 3) { $height = 100; } $basket_html .= '<div class="header-basket-column header-basket-column-x2">'; $basket_html .= '<div class="header-basket-icon-sale"></div>'; $basket_html .= '<div class="header-basket-level"><span style="height: '.$height.'%;"></span></div>'; $basket_html .= '<div class="header-basket-level-title">'.$_SESSION["DISCOUNT_LEVEL"].' уровень</div>'; $basket_html .= '<div class="header-basket-level-sale">скидка - <span>'.$percent.'%</span></div>'; $basket_html .= '<a href="#" class="header-basket-quest">?</a>'; $basket_html .= '</div>'; return $basket_html; } // получение значения параметра $_POST function param_post($param){ if (strlen($param) > 0){ $request = Application::getInstance()->getContext()->getRequest(); $value = $request->getPost($param); return $value; } else { return false; } } // получение значения параметра $_GET function param_get($param){ if (strlen($param) > 0){ $request = Application::getInstance()->getContext()->getRequest(); $value = $request->getQuery($param); return $value; } else { return false; } } function GetCompareList(){ global $APPLICATION; $arCompare = Array(); $COMPARE = $APPLICATION->get_cookie("COMPARE"); $arTMP = explode(",", $COMPARE); foreach ($arTMP as $id) { $id = trim($id); if (intval($id) > 0) { $arCompare[] = $id; } } return $arCompare; } function AddAndUpdateSubscriberReg($arParams){ $curl = curl_init("https://91.199.51.212/Api/Subscribers"); $xml = ' <ApiRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <ApiKey>mOqQ3XiN0Y0e2mGrF500</ApiKey> <Data xsi:type="Subscriber"> <Mode>AddAndUpdate</Mode> <ListId>6</ListId> <Email>'.$arParams['EMAIL'].'</Email> <Name>'.$arParams['NAME'].'</Name> <TrackingCode>reg_form</TrackingCode> <Vendor>site</Vendor> <Ip>11.22.33.44</Ip> <Properties> <Property> <Id>3</Id> <Value xsi:type="xs:string">'.$arParams['UF_ACTION_TYPE'].'</Value> </Property> <Property> <Id>4</Id> <Value xsi:type="xs:string">'.$arParams['UF_COMPANY'].'</Value> </Property> <Property> <Id>19</Id> <Value xsi:type="xs:boolean">'.$arParams['UF_REG'].'</Value> </Property> <Property> <Id>21</Id> <Value xsi:type="xs:dateTime">'.$arParams['UF_DATETIME'].'</Value> </Property> <Property> <Id>23</Id> <Value xsi:type="xs:string">'.$arParams['UF_USER_ID'].'</Value> </Property> </Properties> </Data> </ApiRequest> '; curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $xml); $res = curl_exec($curl); if($res){ return $res; }else{ $error = curl_error($curl); return "<h1>ERROR:</h1>$error<hr />"; } } function AddAndUpdateSubscriberSub($arParams){ $curl = curl_init("https://91.199.51.212/Api/Subscribers"); $xml = ' <ApiRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <ApiKey>mOqQ3XiN0Y0e2mGrF500</ApiKey> <Data xsi:type="Subscriber"> <Mode>AddAndUpdate</Mode> <ListId>7</ListId> <Email>'.$arParams['EMAIL'].'</Email> <Name>'.$arParams['NAME'].'</Name> <TrackingCode>sub_form</TrackingCode> <Vendor>site</Vendor> <Ip>11.22.33.44</Ip> <Properties> <Property> <Id>1</Id> <Value xsi:type="xs:boolean">'.$arParams['NEED_SUBSCRIBE'].'</Value> </Property> <Property> <Id>22</Id> <Value xsi:type="xs:dateTime">'.$arParams['UF_DATETIME'].'</Value> </Property> </Properties> </Data> </ApiRequest> '; curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $xml); $res = curl_exec($curl); if($res){ return $res; }else{ $error = curl_error($curl); return "<h1>ERROR:</h1>$error<hr />"; } } // Получение инфо об элементе без кэширования function el_info_no_cache($el_id){ $iblock_id = 2; // ID инфоблока // Поля для запроса $fields_array = Array("ID", "ACTIVE", "DETAIL_PICTURE", "PROPERTY_OBIEM", "PROPERTY_VESUPAK", "NAME", "IBLOCK_ID", "PROPERTY_PROIZVODITEL", "XML_ID", "DETAIL_PAGE_URL", "IBLOCK_SECTION_ID", "PREVIEW_TEXT", "CATALOG_GROUP_1", "PROPERTY_RATING", "PROPERTY_BARGAIN", "PROPERTY_HIT", "PROPERTY_SUPERPRICE", "PROPERTY_EXCLUSIVE", "PROPERTY_KOLICHESTVO_OGRANICHENO", "PROPERTY_WHERE", "PROPERTY_EDITABLE", "PROPERTY_EDITABLE_TEXT", "PROPERTY_OLD_PRICE", "PROPERTY_IZ_ZERO_PRICE", "PROPERTY_PREVIEW_TEXT", "PROPERTY_DETAIL_TEXT", "PROPERTY_TITLE", "PROPERTY_KEYWORDS", "PROPERTY_DESCRIPTION", "PROPERTY_ARTNUMBER","PROPERTY_MANUAL_PRICE"); // Запрашиваем инфо по элементу CModule::IncludeModule("iblock"); $q = CIBlockElement::GetList(Array("SORT" => "ASC"), Array("IBLOCK_ID" => $iblock_id, "ID" => $el_id), false, Array("nTopCount"=>1), $fields_array); while ($a = $q->GetNext()){ $el = clean_array($a, array('PROPERTY_DETAIL_TEXT_VALUE', 'PROPERTY_DETAIL_TEXT_VALUE')); } return $el; } function SetOrderProp($order_id, $prop_id, $val, $prop_name){ /*$order = \Bitrix\Sale\Order::load($order_id); $propertyCollection = $order->getPropertyCollection(); $somePropValue = $propertyCollection->getItemByOrderPropertyId($prop_id); $somePropValue->setValue($val); $order->save();*/ $db_vals = CSaleOrderPropsValue::GetList( array("SORT" => "ASC"), array( "ORDER_ID" => $order_id, "ORDER_PROPS_ID" => $prop_id ) ); if ($arVals = $db_vals->Fetch()){ $arVals['VALUE'] = $val; return CSaleOrderPropsValue::Update($arVals['ID'], $arVals); }else{ return CSaleOrderPropsValue::Add(Array("ORDER_ID"=>$order_id, "ORDER_PROPS_ID"=>$prop_id, "NAME"=>$prop_name, "VALUE"=>$val)); } } function getChargeArray($str){ //echo '<pre>'; print_r($str); echo '</pre>'; $arTMP = explode('/',$str); $arCharge = array( 'TYPE' => 'Charge', 'NUMBER' => $arTMP[0], 'DATETIME' => $arTMP[1], 'NDS' => $arTMP[2], 'SUM' => floatval(preg_replace('/[^0-9]/', '', $arTMP[3])), 'STATUS' => $arTMP[4], ); $item_key = 0; $cnt=0; for($i=5;$i<=count($arTMP);$i++){ if(empty($arTMP[$i])){ continue; } $cnt++; if($cnt<7){ if($cnt==1){ $key_val_item = 'XML_ID'; $val_item = intval($arTMP[$i]); }elseif($cnt==2){ $key_val_item = 'QUANTITY'; $val_item = floatval($arTMP[$i]); }elseif($cnt==3){ $key_val_item = 'SUM'; $val_item = floatval(preg_replace('/[^0-9]/', '', $arTMP[$i])); }elseif($cnt==4){ $key_val_item = 'HAVE'; $val_item = trim($arTMP[$i]); }elseif($cnt==5){ $key_val_item = 'SROK'; $val_item = trim($arTMP[$i]); }elseif($cnt==6){ $key_val_item = 'STATUS'; $val_item = trim($arTMP[$i]); } $arCharge['ITEMS'][$item_key][$key_val_item] = $val_item; }else{ $cnt = 1; $item_key++; if($cnt==1){ $key_val_item = 'XML_ID'; $val_item = intval($arTMP[$i]); }elseif($cnt==2){ $key_val_item = 'QUANTITY'; $val_item = floatval($arTMP[$i]); }elseif($cnt==3){ $key_val_item = 'SUM'; $val_item = floatval(preg_replace('/[^0-9]/', '', $arTMP[$i])); } $arCharge['ITEMS'][$item_key][$key_val_item] = $val_item; } } //echo '<pre>'; print_r($arCharge); echo '</pre>'; return $arCharge; } function getPrintArray($str){ $arResult = array(); $arTMP = explode('|', $str); foreach($arTMP as $val){ $charge_number = 0; $arTMP_ = explode('/', $val); foreach($arTMP_ as $key => $val_){ if($key == 0){ $charge_number = explode('_', $val_); $charge_number = $charge_number[0]; $arResult[$charge_number]['BILL'] = $val_; }else{ $arTovSch = explode(';', $val_); if(strlen($arTovSch[0])>0){ $arResult[$charge_number]['TORG12'][] = $arTovSch[0]; } if(strlen($arTovSch[1])>0){ $arResult[$charge_number]['INVOICE'][] = $arTovSch[1]; } } } } return $arResult; } function getPaymentArray($str){ $arTMP = explode('/',$str); $arPayment = array( 'TYPE' => 'Payment', 'NUMBER' => $arTMP[0], 'DATETIME' => $arTMP[2], 'SUM' => floatval(preg_replace('/[^0-9]/', '', $arTMP[1])), ); //echo '<pre>'; print_r($arCharge); echo '</pre>'; return $arPayment; } // Получение инфо о элементе HL-блока function hl_elem_info_by_xml_id($hlblock_id, $uf_xml_id){ // Кешируем $obCache = new CPHPCache(); $cache_time = 30*24*60*60; $cache_id = 'hl_element_'.$hlblock_id.'_'.$uf_xml_id; $cache_path = '/hl_element/'.$hlblock_id.'/'.$uf_xml_id.'/'; if( $obCache->InitCache($cache_time, $cache_id, $cache_path) ){ $vars = $obCache->GetVars(); extract($vars); } elseif($obCache->StartDataCache()){ // Запрашиваем элемент CModule::IncludeModule('highloadblock'); $hlblock = Bitrix\Highloadblock\HighloadBlockTable::getById($hlblock_id)->fetch(); $entity = Bitrix\Highloadblock\HighloadBlockTable::compileEntity( $hlblock ); $entity_data_class = $entity->getDataClass(); $entity_table_name = $hlblock['TABLE_NAME']; $sTableID = 'tbl_'.$entity_table_name; $rsData = $entity_data_class::getList(array( "select" => array('*'), "filter" => array("UF_XML_ID" => $uf_xml_id), "order" => array("ID"=>"ASC") )); $rsData = new CDBResult($rsData, $sTableID); if($arRes = $rsData->Fetch()){ $element = $arRes; } $obCache->EndDataCache(array('element' => $element)); } return $element; } function ConvertDateTo1C($date, $sep = '/'){ $arTMP = explode($sep, $date); return $arTMP[2].$arTMP[1].$arTMP[0]; } function AddFileToFTP($remote_file, $file) { $open = ftp_connect("medcomp.ru", 21, 30); $login_result = ftp_login($open, "site_ftp", "PhooDoo9*"); if ($login_result) { $aOverallResult = Array(); $aOverallResult[] = "Соединение установлено"; ftp_pasv($open, true); if (ftp_put($open, $remote_file, $file, FTP_ASCII)) { $aOverallResult[] = "Файл успешно сохранен."; } else { $aOverallResult[] = "Ошибка сохранения файла."; } ftp_close($open); } else { $aOverallResult[] = "Ошибка установки соединения"; } return $aOverallResult; } function GetFileFromFTP($remote_file, $file) { $open = ftp_connect("medcomp.ru", 21, 30); $login_result = ftp_login($open, "site_ftp", "PhooDoo9*"); if ($login_result) { $aOverallResult = Array(); $aOverallResult[] = "Соединение установлено"; ftp_pasv($open, true); if (ftp_get($open, $file, $remote_file, FTP_BINARY)) { $aOverallResult[] = "Файл успешно сохранен."; } else { $aOverallResult[] = "Ошибка сохранения файла."; } ftp_close($open); } else { $aOverallResult[] = "Ошибка установки соединения"; } return $aOverallResult; } function DeleteFileFromFTP($remote_file) { $open = ftp_connect("medcomp.ru", 21, 30); $login_result = ftp_login($open, "site_ftp", "PhooDoo9*"); if ($login_result) { $aOverallResult = Array(); $aOverallResult[] = "Соединение установлено"; ftp_pasv($open, true); if (ftp_delete($open, $remote_file)) { $aOverallResult[] = "Файл успешно удалён."; } else { $aOverallResult[] = "Ошибка удаления файла."; } ftp_close($open); } else { $aOverallResult[] = "Ошибка установки соединения"; } return $aOverallResult; } function file_force_download($file) { if (file_exists($file)) { // сбрасываем буфер вывода PHP, чтобы избежать переполнения памяти выделенной под скрипт // если этого не сделать файл будет читаться в память полностью! if (ob_get_level()) { ob_end_clean(); } // заставляем браузер показать окно сохранения файла header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); // читаем файл и отправляем его пользователю readfile($file); exit; } } function getLabelHTML($val){ $result = ''; $val_orig = $val; $val = strtolower(trim($val)); if(substr_count($val,'выгодная покупка')){ $result = '<div class="product-label yellow">Выгодная<br>покупка</div>'; }elseif(substr_count($val,'хит продаж')){ $result = '<div class="product-label">Хит<br>продаж!</div>'; }elseif(substr_count($val,'суперцена')){ $result = '<div class="product-label product-label-line violet">Суперцена!</div>'; }elseif(substr_count($val,'эксклюзивно в авк')){ $result = '<div class="product-label blue">Эксклюзивно<br>в АВК</div>'; }elseif(substr_count($val,'количество ограничено')){ $result = '<div class="product-label red">Количество<br>ограничено</div>'; }else{ $aTMP = explode(" ", $val_orig); $result = '<div class="product-label pink">'.implode("<br />", $aTMP).'</div>'; } return $result; } ?>
/var/./backup/././external_www/new02.medcomp.ru/././bitrix/./php_interface/_______funcs.php