vladislavkopilov

glmenu

Aug 9th, 2015
417
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.48 KB | None | 0 0
  1. $arResult["SECTION_VIP"] = array();
  2.  
  3.     //берем секции первого уровня
  4.     CModule::IncludeModule('iblock');
  5.     $arrSection = array();
  6.  
  7.     $arSectionName = array();
  8.     foreach ($arResult["ALL_ITEMS_ID"] as $key => $value) {
  9.         $arSectionName[] = $arResult["ALL_ITEMS"][$key]['TEXT'];
  10.     }
  11.     if( count($arSectionName)>0 ){
  12.         $arSelect = Array('ID', 'NAME');
  13.         $arFilter = Array('IBLOCK_ID'=>2, "DEPTH_LEVEL" => "1",
  14.             "NAME"=>$arSectionName);
  15.         $res = CIBlockSection::GetList(Array("SORT" => "asc"), $arFilter, true, $arSelect);
  16.         while($ob = $res->GetNext()){
  17.             $arrSection[] = $ob;
  18.         }  
  19.     }
  20.     if( count($arrSection)>0 ){
  21.         //вычисляем VIP объявления
  22.        
  23.         $arrVIP = array();
  24.         $arrVIPId = array();
  25.         $arrVIPOrder = array();
  26.  
  27.         //!сначало взять ID элемента каждой секции
  28.         foreach ($arrSection as $key => $value) {
  29.             $arSelect = Array( "ID" );
  30.             $arFilter = Array("IBLOCK_ID"=>2, "SECTION_ID"=>$value["ID"], "INCLUDE_SUBSECTIONS"=>"Y", "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", "!PROPERTY_PASS_MODERATION" => false, ">CATALOG_QUANTITY"=>"0", "!PROPERTY_VIP_VALUE"=>false);
  31.             $arOrder = Array( "RAND"=>"ASC" );
  32.             $res = CIBlockElement::GetList($arOrder, $arFilter, false, array("nPageSize"=>1), $arSelect);
  33.             if($ob = $res->GetNextElement()){
  34.                 $arFields = $ob->GetFields();
  35.                 $arrVIPOrder[] = $arFields["ID"];
  36.             }else{
  37.                 $arrVIPOrder[] = false;
  38.             }
  39.         }
  40.  
  41.         //!а потом брать его свойства
  42.         if( count($arrVIPOrder>0) ){
  43.             foreach( $arrVIPOrder as $key => $value ){
  44.                 if( $value!=false ){
  45.                     $arrVIPId[] = $value;
  46.                 }
  47.             }
  48.  
  49.             $arSelect = Array("ID", "NAME", "IBLOCK_ID", "PREVIEW_PICTURE", "DETAIL_PAGE_URL", "PROPERTY_FREE_SHIP", "WEIGHT", "CREATED_BY" );
  50.             $arFilter = Array("IBLOCK_ID"=>2, "ID"=>$arrVIPId, "INCLUDE_SUBSECTIONS"=>"Y", "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", "!PROPERTY_PASS_MODERATION" => false);
  51.             $arOrder = Array( );
  52.             $res = CIBlockElement::GetList($arOrder, $arFilter, false, false, $arSelect);
  53.             while($ob = $res->GetNextElement()){
  54.                 $arFields = $ob->GetFields();
  55.  
  56.                 //берем цену
  57.                 $arPrice = CCatalogProduct::GetOptimalPrice($arFields['ID'], 1, $USER->GetUserGroupArray(), 'N');
  58.                 $arFields["CURR_PRICE"] = $arPrice;
  59.  
  60.                 //берем картинки
  61.                 if( $arFields["PREVIEW_PICTURE"] ){
  62.                     $file = CFile::ResizeImageGet($arFields["PREVIEW_PICTURE"], array('height'=>184, 'width'=>174), BX_RESIZE_IMAGE_PROPORTIONAL, true);
  63.                     $arFields["PREVIEW_PICTURE"] = $file['src'];
  64.                 }
  65.  
  66.                 $arrVIP[ $arFields["ID"] ] = $arFields;
  67.             }
  68.         }
  69.  
  70.         //переписываем
  71.         foreach( $arrVIPOrder as $key => $value ){
  72.             if( $value!=false ){ //false or ID
  73.                 $value = $arrVIP[ $value ];
  74.             }
  75.             $arResult["SECTION_VIP"][] = $value;
  76.         }
  77.     }
  78.  
  79.    
  80.     //берем цену с доставкой
  81.     if( count($arResult["SECTION_VIP"])>0 ){
  82.         //взять местоположение посетителя
  83.         if(CModule::IncludeModule("altasib.geobase")) {
  84.             $visitorCity = CAltasibGeoBase::GetBXLocations();
  85.         }
  86.  
  87.         foreach ($arResult["SECTION_VIP"] as $key => $arItem) {
  88.             if( is_array($arItem) ){
  89.                 //если доставне не бесплатная
  90.                 $cityDel = false;
  91.                 $rsUser = CUser::GetByID($arItem["CREATED_BY"]);
  92.                 $arUser = $rsUser->Fetch();
  93.                 $db_vars = CSaleLocation::GetList( array(), array( "CITY_NAME"=>$arUser["PERSONAL_CITY"]), false, false, array() );
  94.                 $vars = $db_vars->Fetch();
  95.                 if( !$vars ){
  96.                     //попытка 2 по ID
  97.                     $db_vars = CSaleLocation::GetList( array(), array( "ID"=>$arUser["UF_PERSONAL_CITY_ID"] ), false, false, array() );
  98.                     $vars = $db_vars->Fetch();
  99.                 }
  100.                 $CustomerCityId = $vars["ID"];
  101.                 if( $arItem['PROPERTIES']['FREE_SHIP_CITY']['VALUE_XML_ID']=='Y' && $CustomerCityId==$visitorCity ){
  102.                     $cityDel = true;
  103.                 }
  104.                
  105.                 if( $arItem['PROPERTIES']['FREE_SHIP']['VALUE_XML_ID']!='Y' && isset($arItem["ID"]) && !empty($arItem["ID"]) && $cityDel==false ){
  106.                     //взять местоположение загрузившего
  107.                        
  108.                     //$arPrice = CCatalogProduct::GetOptimalPrice($arItem['ID'], 1, $USER->GetUserGroupArray(), 'N');
  109.                     $arPrice = $arItem["CURR_PRICE"];
  110.  
  111.                     $arOrder = array(
  112.                       "ITEMS" => array(
  113.                             0 => array(
  114.                                 "PRODUCT_ID" => $arItem['ID'],
  115.                                 "QUANTITY" => "1.00",
  116.                                 "PRICE" => $arPrice["RESULT_PRICE"]["BASE_PRICE"],
  117.                                 "WEIGHT" => $arItem["CATALOG_WEIGHT"] )
  118.                             ),
  119.                       "LOCATION_FROM" => $CustomerCityId,
  120.                       "LOCATION_TO" => $visitorCity,
  121.                       "EXTRA_PARAMS" => array(),
  122.                     );
  123.                    
  124.  
  125.                     $currency = CSaleLang::GetLangCurrency(SITE_ID);
  126.  
  127.                     $dbHandler = CSaleDeliveryHandler::GetBySID('rus_post');
  128.                     if ($arHandler = $dbHandler->Fetch())
  129.                     {
  130.                       $arProfiles = CSaleDeliveryHandler::GetHandlerCompability($arOrder, $arHandler);
  131.                       if (is_array($arProfiles) && count($arProfiles) > 0)
  132.                       {
  133.                         $arProfiles = array_keys($arProfiles);
  134.                         $arReturn = CSaleDeliveryHandler::CalculateFull( 'rus_post', 'land', $arOrder, 'RUB' );
  135.  
  136.                         if ($arReturn["RESULT"] == "OK")
  137.                         {
  138.                             //поменять значение
  139.                             $arReturn["VALUE"] = round($arReturn["VALUE"]);
  140.                             $arResult["SECTION_VIP"][$key]['CURR_PRICE']['RESULT_PRICE']['BASE_PRICE'] += $arReturn["VALUE"];
  141.                             $arResult["SECTION_VIP"][$key]['CURR_PRICE']['RESULT_PRICE']['DISCOUNT_PRICE'] += $arReturn["VALUE"];
  142.                         }
  143.                       }
  144.                     }
  145.                 }
  146.             }
  147.         }
  148.     }
Advertisement
Add Comment
Please, Sign In to add comment