Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $arResult["SECTION_VIP"] = array();
- //берем секции первого уровня
- CModule::IncludeModule('iblock');
- $arrSection = array();
- $arSectionName = array();
- foreach ($arResult["ALL_ITEMS_ID"] as $key => $value) {
- $arSectionName[] = $arResult["ALL_ITEMS"][$key]['TEXT'];
- }
- if( count($arSectionName)>0 ){
- $arSelect = Array('ID', 'NAME');
- $arFilter = Array('IBLOCK_ID'=>2, "DEPTH_LEVEL" => "1",
- "NAME"=>$arSectionName);
- $res = CIBlockSection::GetList(Array("SORT" => "asc"), $arFilter, true, $arSelect);
- while($ob = $res->GetNext()){
- $arrSection[] = $ob;
- }
- }
- if( count($arrSection)>0 ){
- //вычисляем VIP объявления
- $arrVIP = array();
- $arrVIPId = array();
- $arrVIPOrder = array();
- //!сначало взять ID элемента каждой секции
- foreach ($arrSection as $key => $value) {
- $arSelect = Array( "ID" );
- $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);
- $arOrder = Array( "RAND"=>"ASC" );
- $res = CIBlockElement::GetList($arOrder, $arFilter, false, array("nPageSize"=>1), $arSelect);
- if($ob = $res->GetNextElement()){
- $arFields = $ob->GetFields();
- $arrVIPOrder[] = $arFields["ID"];
- }else{
- $arrVIPOrder[] = false;
- }
- }
- //!а потом брать его свойства
- if( count($arrVIPOrder>0) ){
- foreach( $arrVIPOrder as $key => $value ){
- if( $value!=false ){
- $arrVIPId[] = $value;
- }
- }
- $arSelect = Array("ID", "NAME", "IBLOCK_ID", "PREVIEW_PICTURE", "DETAIL_PAGE_URL", "PROPERTY_FREE_SHIP", "WEIGHT", "CREATED_BY" );
- $arFilter = Array("IBLOCK_ID"=>2, "ID"=>$arrVIPId, "INCLUDE_SUBSECTIONS"=>"Y", "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", "!PROPERTY_PASS_MODERATION" => false);
- $arOrder = Array( );
- $res = CIBlockElement::GetList($arOrder, $arFilter, false, false, $arSelect);
- while($ob = $res->GetNextElement()){
- $arFields = $ob->GetFields();
- //берем цену
- $arPrice = CCatalogProduct::GetOptimalPrice($arFields['ID'], 1, $USER->GetUserGroupArray(), 'N');
- $arFields["CURR_PRICE"] = $arPrice;
- //берем картинки
- if( $arFields["PREVIEW_PICTURE"] ){
- $file = CFile::ResizeImageGet($arFields["PREVIEW_PICTURE"], array('height'=>184, 'width'=>174), BX_RESIZE_IMAGE_PROPORTIONAL, true);
- $arFields["PREVIEW_PICTURE"] = $file['src'];
- }
- $arrVIP[ $arFields["ID"] ] = $arFields;
- }
- }
- //переписываем
- foreach( $arrVIPOrder as $key => $value ){
- if( $value!=false ){ //false or ID
- $value = $arrVIP[ $value ];
- }
- $arResult["SECTION_VIP"][] = $value;
- }
- }
- //берем цену с доставкой
- if( count($arResult["SECTION_VIP"])>0 ){
- //взять местоположение посетителя
- if(CModule::IncludeModule("altasib.geobase")) {
- $visitorCity = CAltasibGeoBase::GetBXLocations();
- }
- foreach ($arResult["SECTION_VIP"] as $key => $arItem) {
- if( is_array($arItem) ){
- //если доставне не бесплатная
- $cityDel = false;
- $rsUser = CUser::GetByID($arItem["CREATED_BY"]);
- $arUser = $rsUser->Fetch();
- $db_vars = CSaleLocation::GetList( array(), array( "CITY_NAME"=>$arUser["PERSONAL_CITY"]), false, false, array() );
- $vars = $db_vars->Fetch();
- if( !$vars ){
- //попытка 2 по ID
- $db_vars = CSaleLocation::GetList( array(), array( "ID"=>$arUser["UF_PERSONAL_CITY_ID"] ), false, false, array() );
- $vars = $db_vars->Fetch();
- }
- $CustomerCityId = $vars["ID"];
- if( $arItem['PROPERTIES']['FREE_SHIP_CITY']['VALUE_XML_ID']=='Y' && $CustomerCityId==$visitorCity ){
- $cityDel = true;
- }
- if( $arItem['PROPERTIES']['FREE_SHIP']['VALUE_XML_ID']!='Y' && isset($arItem["ID"]) && !empty($arItem["ID"]) && $cityDel==false ){
- //взять местоположение загрузившего
- //$arPrice = CCatalogProduct::GetOptimalPrice($arItem['ID'], 1, $USER->GetUserGroupArray(), 'N');
- $arPrice = $arItem["CURR_PRICE"];
- $arOrder = array(
- "ITEMS" => array(
- 0 => array(
- "PRODUCT_ID" => $arItem['ID'],
- "QUANTITY" => "1.00",
- "PRICE" => $arPrice["RESULT_PRICE"]["BASE_PRICE"],
- "WEIGHT" => $arItem["CATALOG_WEIGHT"] )
- ),
- "LOCATION_FROM" => $CustomerCityId,
- "LOCATION_TO" => $visitorCity,
- "EXTRA_PARAMS" => array(),
- );
- $currency = CSaleLang::GetLangCurrency(SITE_ID);
- $dbHandler = CSaleDeliveryHandler::GetBySID('rus_post');
- if ($arHandler = $dbHandler->Fetch())
- {
- $arProfiles = CSaleDeliveryHandler::GetHandlerCompability($arOrder, $arHandler);
- if (is_array($arProfiles) && count($arProfiles) > 0)
- {
- $arProfiles = array_keys($arProfiles);
- $arReturn = CSaleDeliveryHandler::CalculateFull( 'rus_post', 'land', $arOrder, 'RUB' );
- if ($arReturn["RESULT"] == "OK")
- {
- //поменять значение
- $arReturn["VALUE"] = round($arReturn["VALUE"]);
- $arResult["SECTION_VIP"][$key]['CURR_PRICE']['RESULT_PRICE']['BASE_PRICE'] += $arReturn["VALUE"];
- $arResult["SECTION_VIP"][$key]['CURR_PRICE']['RESULT_PRICE']['DISCOUNT_PRICE'] += $arReturn["VALUE"];
- }
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment