function executeComponent() { $arFilter = array('IBLOCK_ID' => $this->arParams['IBLOCK_ID'], 'ACTIVE' => 'Y'); if (true || $this->StartResultCache()) { $CIBlockElement = new CIBlockElement(); $CFile = new \CFile(); $aElts = array(); $eltsSelectFields = array_merge(array('ID', 'NAME', 'CODE', 'PREVIEW_PICTURE', 'DETAIL_PICTURE', 'DETAIL_PAGE_URL'), $this->getIBlockProperties($this->arParams['IBLOCK_ID'])); $rsElts = $CIBlockElement->GetList(array('SORT' => 'asc', 'date_active_from' => 'DESC'), $arFilter, false, false, array('ID', 'NAME')); if (intval($rsElts->SelectedRowsCount())) { while ($arElt = $rsElts->Fetch()) { $aElts[] = array('ID' => $arElt['ID'], 'NAME' => $arElt['NAME']); } $arElt = $CIBlockElement->GetList(array('SORT' => 'asc', 'ID' => 'DESC'), array_merge($arFilter, array('ID' => $aElts[0]['ID'])), false, false, $eltsSelectFields)->GetNext(); if ($arElt['DETAIL_PICTURE']) { $arElt['DETAIL_PICTURE'] = $CFile->GetPath($arElt['DETAIL_PICTURE']); } elseif ($arElt['PREVIEW_PICTURE']) { $arElt['DETAIL_PICTURE'] = $CFile->GetPath($arElt['PREVIEW_PICTURE']); } $arPrice = CPrice::GetList(array(), array("PRODUCT_ID" => $arElt['ID']))->Fetch(); $arElt['PRICE'] = $arPrice['PRICE']; $this->arResult['ITEMS'] = $aElts; $this->arResult['ITEM'] = $arElt; $this->IncludeComponentTemplate(); } } }
/** * [addPriceProducts description] * @param array $arParams * @return bool */ protected function addPriceProducts($arParams){ if (!CModule::IncludeModule("iblock") && !CModule::IncludeModule("catalog") && !CModule::IncludeModule("sale")): return false; endif; $PRICE_TYPE_ID = 1; // идентификатор типы базовой цены $arFields = Array( "PRODUCT_ID" => $arParams["PRODUCT_ID"], "CATALOG_GROUP_ID" => $PRICE_TYPE_ID, "PRICE" => $arParams["OLD_PRICE"], "CURRENCY" => "RUB", "QUANTITY_FROM" => 1, ); $res = CPrice::GetList( array(), array( "PRODUCT_ID" => $arParams["PRODUCT_ID"], "CATALOG_GROUP_ID" => $PRICE_TYPE_ID ) ); if ($arr = $res->Fetch()): if (!CPrice::Update($arr["ID"], $arFields)): return false; endif; else: if (!CPrice::Add($arFields)): return false; endif; endif; if (!$this->addCatalogProducts($arParams)): return false; endif; return true; }
private function setExtra($productId, $priceTypeId, $extraId) { $list = CPrice::GetList(array(), array('PRODUCT_ID' => $productId, 'CATALOG_GROUP_ID' => $priceTypeId), false, false, array('ID', 'EXTRA_ID')); $arFields = array('PRODUCT_ID' => $productId, 'CATALOG_GROUP_ID' => $priceTypeId, 'EXTRA_ID' => $extraId, 'CURRENCY' => 'USD'); if ($res = $list->Fetch()) { if ($res['EXTRA_ID'] != $extraId) { CPrice::Update($res['ID'], $arFields, true); } } else { CPrice::Add($arFields, true); } unset($list); unset($res); unset($resultUp); }
/** * [getFavoriteProducts description] * @param array $arFavorites * @return array products */ function getFavoriteProducts($arFavorites) { global $USER; foreach ($arFavorites as $key => $id) { $arSelect = array(); $arFilter = array("IBLOCK_ID" => 17, "ACTIVE" => "Y", "ID" => $id); $res = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect); if ($ob = $res->GetNextElement()) { $arItems = $ob->GetFields(); $arItems["PROPERTIES"] = $ob->GetProperties(); $dbPrice = CPrice::GetList(array("QUANTITY_FROM" => "ASC", "QUANTITY_TO" => "ASC", "SORT" => "ASC"), array("PRODUCT_ID" => $arItems["ID"]), false, false, array("ID", "CATALOG_GROUP_ID", "PRICE", "CURRENCY", "QUANTITY_FROM", "QUANTITY_TO")); if ($arPrice = $dbPrice->Fetch()) { $arDiscounts = CCatalogDiscount::GetDiscountByPrice($arPrice["ID"], $USER->GetUserGroupArray(), "N", SITE_ID); $discountPrice = CCatalogProduct::CountPriceWithDiscount($arPrice["PRICE"], $arPrice["CURRENCY"], $arDiscounts); $arPrice["DISCOUNT_VALUE"] = $discountPrice; $arItems["PRICES"] = $arPrice; } } if ($arItems) { $arFav[] = $arItems; } } return $arFav; }
/** * Функция обратного вызова для корзины * аналогична функции CatalogBasketCallback за исключением использования одной определенной цены для конкретного города * * @param $productID * @param $quantity * @param $renewal */ function CatalogBasketCustomCallback($productID, $quantity = 0, $renewal = "N") { global $USER; $productID = IntVal($productID); $quantity = DoubleVal($quantity); $renewal = (($renewal == "Y") ? "Y" : "N"); $arResult = array(); if ($arCatalogProduct = CCatalogProduct::GetByID($productID)) { if ($arCatalogProduct["QUANTITY_TRACE"]=="Y" && DoubleVal($arCatalogProduct["QUANTITY"])<=0) return $arResult; } $dbIBlockElement = CIBlockElement::GetList( array(), array( "ID" => $productID, "ACTIVE_DATE" => "Y", "ACTIVE" => "Y", "CHECK_PERMISSIONS" => "Y" ) ); $arProduct = $dbIBlockElement->GetNext(); $arCatalog = CCatalog::GetByID($arProduct["IBLOCK_ID"]); if ($arCatalog["SUBSCRIPTION"] == "Y") { $quantity = 1; } $rs = CPrice::GetList( array(), array("CATALOG_GROUP_NAME" => GetCityPrice(), "PRODUCT_ID" => $productID), false, false); $ar = $rs -> Fetch(); $arPrice = array(); $arPrice[] = array( "ID" => $ar["ID"], "PRICE" => $ar["PRICE"], "CURRENCY" => $ar["CURRENCY"], "CATALOG_GROUP_ID" => $ar["CATALOG_GROUP_ID"] ); $arPrice = CCatalogProduct::GetOptimalPrice($productID, $quantity, $USER -> GetUserGroupArray(), $renewal, $arPrice); if (!$arPrice || count($arPrice) <= 0) { if ($nearestQuantity = CCatalogProduct::GetNearestQuantityPrice($productID, $quantity, $USER->GetUserGroupArray())) { $quantity = $nearestQuantity; $arPrice = CCatalogProduct::GetOptimalPrice($productID, $quantity, $USER->GetUserGroupArray(), $renewal); } } if (!$arPrice || count($arPrice) <= 0) { return $arResult; } $currentPrice = $arPrice["PRICE"]["PRICE"]; $currentDiscount = 0.0; //SIGURD: logic change. see mantiss 5036. // discount applied to a final price with VAT already included. if ($arPrice['PRICE']['VAT_INCLUDED'] == 'N') { if(DoubleVal($arPrice['PRICE']['VAT_RATE']) > 0) { $currentPrice *= (1 + $arPrice['PRICE']['VAT_RATE']); $arPrice['PRICE']['VAT_INCLUDED'] = 'y'; } } if (isset($arPrice["DISCOUNT"]) && count($arPrice["DISCOUNT"]) > 0) { if ($arPrice["DISCOUNT"]["VALUE_TYPE"]=="F") { if ($arPrice["DISCOUNT"]["CURRENCY"] == $arPrice["PRICE"]["CURRENCY"]) $currentDiscount = $arPrice["DISCOUNT"]["VALUE"]; else $currentDiscount = CCurrencyRates::ConvertCurrency($arPrice["DISCOUNT"]["VALUE"], $arPrice["DISCOUNT"]["CURRENCY"], $arPrice["PRICE"]["CURRENCY"]); } else $currentDiscount = $currentPrice * $arPrice["DISCOUNT"]["VALUE"] / 100.0; $currentDiscount = roundEx($currentDiscount, SALE_VALUE_PRECISION); if (DoubleVal($arPrice["DISCOUNT"]["MAX_DISCOUNT"]) > 0) { if ($arPrice["DISCOUNT"]["CURRENCY"] == $baseCurrency) $maxDiscount = $arPrice["DISCOUNT"]["MAX_DISCOUNT"]; else $maxDiscount = CCurrencyRates::ConvertCurrency($arPrice["DISCOUNT"]["MAX_DISCOUNT"], $arPrice["DISCOUNT"]["CURRENCY"], $arPrice["PRICE"]["CURRENCY"]); $maxDiscount = roundEx($maxDiscount, CATALOG_VALUE_PRECISION); if ($currentDiscount > $maxDiscount) $currentDiscount = $maxDiscount; } $currentPrice = $currentPrice - $currentDiscount; } $arResult = array( "PRODUCT_PRICE_ID" => $arPrice["PRICE"]["ID"], "PRICE" => $currentPrice, "VAT_RATE" => $arPrice['PRICE']['VAT_RATE'], "CURRENCY" => $arPrice["PRICE"]["CURRENCY"], "QUANTITY" => $quantity, "DISCOUNT_PRICE" => $currentDiscount, "WEIGHT" => 0, "NAME" => $arProduct["~NAME"], "CAN_BUY" => "Y", "NOTES" => $arPrice["PRICE"]["CATALOG_GROUP_NAME"] ); if ($arCatalogProduct) { $arResult["WEIGHT"] = IntVal($arCatalogProduct["WEIGHT"]); if ($arCatalogProduct["QUANTITY_TRACE"]=="Y") { if ((DoubleVal($arCatalogProduct["QUANTITY"]) - $quantity) < 0) $arResult["QUANTITY"] = DoubleVal($arCatalogProduct["QUANTITY"]); } } //echo '<pre>arResult: '; print_r($arResult); echo '</pre>'; return $arResult; }
function ReCalculate($TYPE, $ID, $VAL) { $ID = intval($ID); if (0 < $ID) { if ('EXTRA' == $TYPE) { $db_res = CPrice::GetList( array(), array('EXTRA_ID' => $ID), false, false, array('ID', 'PRODUCT_ID', 'EXTRA_ID', 'QUANTITY_FROM', 'QUANTITY_TO') ); while ($res = $db_res->Fetch()) { $arFields = array(); if ($arBasePrice = CPrice::GetBasePrice($res["PRODUCT_ID"], $res["QUANTITY_FROM"], $res["QUANTITY_TO"])) { $arFields["PRICE"] = RoundEx($arBasePrice["PRICE"] * (1 + 1 * $VAL / 100), 2); $arFields["CURRENCY"] = $arBasePrice["CURRENCY"]; CPrice::Update($res["ID"], $arFields); } } } else { $db_res = CPrice::GetList( array(), array("PRODUCT_ID" => $ID), false, false, array('ID', 'PRODUCT_ID', 'EXTRA_ID') ); while ($res = $db_res->Fetch()) { $res["EXTRA_ID"] = intval($res["EXTRA_ID"]); if (0 < $res["EXTRA_ID"]) { $res1 = CExtra::GetByID($res["EXTRA_ID"]); $arFields = array( "PRICE" => $VAL * (1 + 1 * $res1["PERCENTAGE"] / 100), ); CPrice::Update($res["ID"], $arFields); } } } } }
echo GetMessage("C2IT_PRICE"); ?> </td> <td align="center"><?php echo GetMessage("C2IT_CURRENCY"); ?> </td> </tr> </thead> <tbody id="container3_<?php echo $arCatalogGroup["ID"]; ?> "> <?php $ind = -1; $dbPriceList = CPrice::GetList(array("QUANTITY_FROM" => "ASC", "QUANTITY_TO" => "ASC"), array("PRODUCT_ID" => $PRODUCT_ID, "CATALOG_GROUP_ID" => $arCatalogGroup["ID"])); $arPrice = $dbPriceList->Fetch(); for ($i = 0, $intCount = count($arPriceBoundaries); $i < $intCount; $i++) { $boolExistPrice = false; $ind++; $str_CAT_QUANTITY_FROM = $arPriceBoundaries[$i]["FROM"]; $str_CAT_QUANTITY_TO = $arPriceBoundaries[$i]["TO"]; if ($arPrice && intval($arPrice["QUANTITY_FROM"]) == $arPriceBoundaries[$i]["FROM"]) { $str_CAT_ID = $arPrice["ID"]; $str_CAT_EXTRA = $arPrice["EXTRA_ID"]; $str_CAT_PRICE = $arPrice["PRICE"]; $str_CAT_CURRENCY = $arPrice["CURRENCY"]; $arPrice = $dbPriceList->Fetch(); } else { $str_CAT_ID = 0; $str_CAT_EXTRA = 0;
{ $viewed['MODULE'] = 'catalog'; $arViewed[$viewedCount] = $viewed; $arViewedIds[] = $viewed['PRODUCT_ID']; $mapViewed[$viewed['PRODUCT_ID']] = $viewedCount; $viewedCount++; } unset($viewedCount); if (!empty($arViewedIds)) { $baseGroup = CCatalogGroup::getBaseGroup(); $priceIterator = CPrice::GetList( array(), array("PRODUCT_ID" => $arViewedIds, 'CATALOG_GROUP_ID' => $baseGroup['ID']), false, false, array("PRODUCT_ID", "PRICE", "CURRENCY") ); while($productPrice = $priceIterator->fetch() ) { if (isset($mapViewed[$productPrice['PRODUCT_ID']])) { $key = $mapViewed[$productPrice['PRODUCT_ID']]; $arViewed[$key]["PRICE"] = $productPrice["PRICE"]; $arViewed[$key]["CURRENCY"] = $productPrice["CURRENCY"]; } } } $arResult["ITEMS"] = fGetFormatedProductData($userId, $LID, $arViewed, 1, $currency, $type, $crmMode); }
function exportElement($arElement, $SECTION_MAP, $PROPERTY_MAP) { if (strlen($arElement["XML_ID"]) > 0) { $xml_id = $arElement["XML_ID"]; } else { $xml_id = $arElement["ID"]; } if ($this->PRODUCT_IBLOCK_ID > 0) { $arPropOrder = array("sort" => "asc", "id" => "asc", "enum_sort" => "asc", "value_id" => "asc"); $rsLink = CIBlockElement::GetProperty($this->arIBlock["ID"], $arElement["ID"], $arPropOrder, array("ACTIVE" => "Y", "CODE" => "CML2_LINK")); $arLink = $rsLink->Fetch(); if (is_array($arLink) && !is_array($arLink["VALUE"]) && $arLink["VALUE"] > 0) { $xml_id = $this->GetElementXML_ID($this->PRODUCT_IBLOCK_ID, $arLink["VALUE"]) . "#" . $xml_id; } } fwrite($this->fp, "\t\t\t\t<" . GetMessage("IBLOCK_XML2_ID") . ">" . htmlspecialcharsbx($xml_id) . "</" . GetMessage("IBLOCK_XML2_ID") . ">\n"); if (!$this->only_price) { $this->exportElementFields($arElement, $SECTION_MAP); if ($this->next_step["catalog"] && !$this->bExtended) { fwrite($this->fp, "\t\t\t\t<" . GetMessage("IBLOCK_XML2_ITEM_ATTRIBUTES") . ">\n"); } else { fwrite($this->fp, "\t\t\t\t<" . GetMessage("IBLOCK_XML2_PROPERTIES_VALUES") . ">\n"); } $this->exportElementProperties($arElement, $PROPERTY_MAP); if ($this->next_step["catalog"] && !$this->bExtended) { fwrite($this->fp, "\t\t\t\t</" . GetMessage("IBLOCK_XML2_ITEM_ATTRIBUTES") . ">\n"); } else { fwrite($this->fp, "\t\t\t\t</" . GetMessage("IBLOCK_XML2_PROPERTIES_VALUES") . ">\n"); } if ($this->bExtended) { $elementTemplates = new \Bitrix\Iblock\InheritedProperty\ElementTemplates($this->arIBlock["ID"], $arElement["ID"]); $this->exportInheritedTemplates(4, $elementTemplates); } } if ($this->next_step["catalog"]) { $rsProduct = CCatalogProduct::GetList(array(), array("ID" => $arElement["ID"])); $arProduct = $rsProduct->Fetch(); static $measure = null; if (!isset($measure)) { $measure = array(); $rsBaseUnit = CCatalogMeasure::GetList(array(), array()); while ($arIDUnit = $rsBaseUnit->Fetch()) { $measure[$arIDUnit["ID"]] = $arIDUnit["CODE"]; } } $xmlMeasure = GetMessage("IBLOCK_XML2_PCS"); if ($arProduct["MEASURE"] > 0 && isset($measure[$arProduct["MEASURE"]])) { $xmlMeasure = $measure[$arProduct["MEASURE"]]; } $arPrices = array(); $rsPrices = CPrice::GetList(array(), array("PRODUCT_ID" => $arElement["ID"])); while ($arPrice = $rsPrices->Fetch()) { if (!$arPrice["QUANTITY_FROM"] && !$arPrice["QUANTITY_TO"]) { $arPrices[] = array(GetMessage("IBLOCK_XML2_PRICE_TYPE_ID") => $this->prices[$arPrice["CATALOG_GROUP_ID"]], GetMessage("IBLOCK_XML2_PRICE_FOR_ONE") => $arPrice["PRICE"], GetMessage("IBLOCK_XML2_CURRENCY") => $arPrice["CURRENCY"], GetMessage("IBLOCK_XML2_MEASURE") => $xmlMeasure); } } if (count($arPrices) > 0) { fwrite($this->fp, "\t\t\t\t<" . GetMessage("IBLOCK_XML2_PRICES") . ">\n"); foreach ($arPrices as $arPrice) { fwrite($this->fp, "\t\t\t\t\t<" . GetMessage("IBLOCK_XML2_PRICE") . ">\n"); foreach ($arPrice as $key => $value) { fwrite($this->fp, "\t\t\t\t\t\t<" . $key . ">" . htmlspecialcharsbx($value) . "</" . $key . ">\n"); } fwrite($this->fp, "\t\t\t\t\t</" . GetMessage("IBLOCK_XML2_PRICE") . ">\n"); } fwrite($this->fp, "\t\t\t\t</" . GetMessage("IBLOCK_XML2_PRICES") . ">\n"); $arCatalogProduct = CCatalogProduct::GetByID($arElement["ID"]); if ($arCatalogProduct) { fwrite($this->fp, "\t\t\t\t<" . GetMessage("IBLOCK_XML2_AMOUNT") . ">" . htmlspecialcharsbx($arCatalogProduct["QUANTITY"]) . "</" . GetMessage("IBLOCK_XML2_AMOUNT") . ">\n"); } } } }
"IBLOCK_ID" => "3", "PROPERTY_CML2_LINK" => $arItem["ID"] ), false, array( "nTopCount" => 1 ), array() ); if ($arQuery = $dbQuery->Fetch()) { $arPrice = CPrice::GetBasePrice($arQuery["ID"]); $arItem["PRICE"] = $arPrice["PRICE"]; } else { $arPrice = CPrice::GetList( array(), array( "PRODUCT_ID" => $arItem["ID"] ), false, array( "nTopCount" => 1 ), array() )->Fetch(); $arItem["PRICE"] = $arPrice["PRICE"]; } }
), false, false, array("ID","NAME","*") ); $arrOffer = array(); $arrProp = array(); while ($arOffer = $rsOffers->GetNextElement()){ $arrOffer = $arOffer->GetFields(); $arrProp = $arOffer->GetProperties(); $arrOffer['PROPERTIES']['CML2_ATTRIBUTES'] = $arrProp['CML2_ATTRIBUTES']; $price = CPrice::GetList( array(), array( "PRODUCT_ID" => $arrOffer['ID'], "CATALOG_GROUP_ID" => $arResult['PRICES_ALLOW'][0] ) ); if ($ar_res = $price->Fetch()) { $arrOffer['PRICE'] = $ar_res; } array_push($offer,$arrOffer); } $arResult['ITEMS'][$key]['OFFERS_LIST'] = $offer; /* $res = CCatalogSKU::getOffersList( $arItem['ID'], // массив ID товаров $iblockID = $arResult['IBLOCK_ID'], // указываете ID инфоблока только в том случае, когда ВЕСЬ массив товаров из одного инфоблока и он известен $skuFilter = array(), // дополнительный фильтр предложений. по умолчанию пуст.
public static function ReCountFromBase(&$arFields, &$boolBase) { $arBaseGroup = CCatalogGroup::GetBaseGroup(); if (!empty($arBaseGroup)) { if ($arFields['CATALOG_GROUP_ID'] == $arBaseGroup['ID']) { $boolBase = true; } else { if (!empty($arFields['EXTRA_ID']) && intval($arFields['EXTRA_ID']) > 0) { $arExtra = CExtra::GetByID($arFields['EXTRA_ID']); if (!empty($arExtra)) { $arFilter = array('PRODUCT_ID' => $arFields['PRODUCT_ID'],'CATALOG_GROUP_ID' => $arBaseGroup['ID']); if (isset($arFields['QUANTITY_FROM'])) $arFilter['QUANTITY_FROM'] = $arFields['QUANTITY_FROM']; if (isset($arFields['QUANTITY_TO'])) $arFilter['QUANTITY_TO'] = $arFields['QUANTITY_TO']; $rsBasePrices = CPrice::GetList(array("QUANTITY_FROM" => "ASC", "QUANTITY_TO" => "ASC"), $arFilter,false,array('nTopCount' => 1),array('PRICE','CURRENCY')); if ($arBasePrice = $rsBasePrices->Fetch()) { $arFields['CURRENCY'] = $arBasePrice['CURRENCY']; $arFields['PRICE'] = RoundEx($arBasePrice["PRICE"] * (1 + DoubleVal($arExtra["PERCENTAGE"])/100), CATALOG_VALUE_PRECISION); } } else { $arFields['EXTRA_ID'] = 0; } } } } }
function DoIBlockAfterSave($arg1, $arg2 = false) { $ELEMENT_ID = false; $IBLOCK_ID = false; $OFFERS_IBLOCK_ID = false; $OFFERS_PROPERTY_ID = false; if (CModule::IncludeModule('currency')) { $strDefaultCurrency = CCurrency::GetBaseCurrency(); } //Check for catalog event if (is_array($arg2) && $arg2["PRODUCT_ID"] > 0) { //Get iblock element $rsPriceElement = CIBlockElement::GetList(array(), array("ID" => $arg2["PRODUCT_ID"]), false, false, array("ID", "IBLOCK_ID")); if ($arPriceElement = $rsPriceElement->Fetch()) { $arCatalog = CCatalog::GetByID($arPriceElement["IBLOCK_ID"]); if (is_array($arCatalog)) { //Check if it is offers iblock if ($arCatalog["OFFERS"] == "Y") { //Find product element $rsElement = CIBlockElement::GetProperty($arPriceElement["IBLOCK_ID"], $arPriceElement["ID"], "sort", "asc", array("ID" => $arCatalog["SKU_PROPERTY_ID"])); $arElement = $rsElement->Fetch(); if ($arElement && $arElement["VALUE"] > 0) { $ELEMENT_ID = $arElement["VALUE"]; $IBLOCK_ID = $arCatalog["PRODUCT_IBLOCK_ID"]; $OFFERS_IBLOCK_ID = $arCatalog["IBLOCK_ID"]; $OFFERS_PROPERTY_ID = $arCatalog["SKU_PROPERTY_ID"]; } } elseif ($arCatalog["OFFERS_IBLOCK_ID"] > 0) { $ELEMENT_ID = $arPriceElement["ID"]; $IBLOCK_ID = $arPriceElement["IBLOCK_ID"]; $OFFERS_IBLOCK_ID = $arCatalog["OFFERS_IBLOCK_ID"]; $OFFERS_PROPERTY_ID = $arCatalog["OFFERS_PROPERTY_ID"]; } else { $ELEMENT_ID = $arPriceElement["ID"]; $IBLOCK_ID = $arPriceElement["IBLOCK_ID"]; $OFFERS_IBLOCK_ID = false; $OFFERS_PROPERTY_ID = false; } } } } elseif (is_array($arg1) && $arg1["ID"] > 0 && $arg1["IBLOCK_ID"] > 0) { //Check if iblock has offers $arOffers = CIBlockPriceTools::GetOffersIBlock($arg1["IBLOCK_ID"]); if (is_array($arOffers)) { $ELEMENT_ID = $arg1["ID"]; $IBLOCK_ID = $arg1["IBLOCK_ID"]; $OFFERS_IBLOCK_ID = $arOffers["OFFERS_IBLOCK_ID"]; $OFFERS_PROPERTY_ID = $arOffers["OFFERS_PROPERTY_ID"]; } } if ($ELEMENT_ID) { static $arPropCache = array(); if (!array_key_exists($IBLOCK_ID, $arPropCache)) { //Check for MINIMAL_PRICE property $rsProperty = CIBlockProperty::GetByID("MINIMUM_PRICE", $IBLOCK_ID); $arProperty = $rsProperty->Fetch(); if ($arProperty) { $arPropCache[$IBLOCK_ID] = $arProperty["ID"]; } else { $arPropCache[$IBLOCK_ID] = false; } } if ($arPropCache[$IBLOCK_ID]) { //Compose elements filter if ($OFFERS_IBLOCK_ID) { $rsOffers = CIBlockElement::GetList(array(), array("IBLOCK_ID" => $OFFERS_IBLOCK_ID, "PROPERTY_" . $OFFERS_PROPERTY_ID => $ELEMENT_ID), false, false, array("ID")); while ($arOffer = $rsOffers->Fetch()) { $arProductID[] = $arOffer["ID"]; } if (!is_array($arProductID)) { $arProductID = array($ELEMENT_ID); } } else { $arProductID = array($ELEMENT_ID); } $minPrice = false; $maxPrice = false; //Get prices $rsPrices = CPrice::GetList(array(), array("PRODUCT_ID" => $arProductID)); while ($arPrice = $rsPrices->Fetch()) { if (CModule::IncludeModule('currency') && $strDefaultCurrency != $arPrice['CURRENCY']) { $arPrice["PRICE"] = CCurrencyRates::ConvertCurrency($arPrice["PRICE"], $arPrice["CURRENCY"], $strDefaultCurrency); } $PRICE = $arPrice["PRICE"]; if ($minPrice === false || $minPrice > $PRICE) { $minPrice = $PRICE; } if ($maxPrice === false || $maxPrice < $PRICE) { $maxPrice = $PRICE; } } //Save found minimal price into property if ($minPrice !== false) { CIBlockElement::SetPropertyValuesEx($ELEMENT_ID, $IBLOCK_ID, array("MINIMUM_PRICE" => $minPrice, "MAXIMUM_PRICE" => $maxPrice)); } } } }
/** * [getSpecificationsList description] * @param int $idUser * @return array or false */ function getSpecificationsList($idUser) { if (!CModule::IncludeModule('iblock')) { return false; } global $USER; if ($idUser) { $IBLOCK_ID = getIblockSpecifications(); $rsUser = CUser::GetByID($idUser); $arUser = $rsUser->Fetch(); $arSpecificationsId = $arUser["UF_SPECIFICATIONS"]; foreach ($arSpecificationsId as $key => $id) { $arFilterSec = array('IBLOCK_ID' => $IBLOCK_ID, 'GLOBAL_ACTIVE' => 'Y', "ID" => $id); $db_list = CIBlockSection::GetList(array("TIMESTAMP_X" => "DESC"), $arFilterSec, true); if ($ar_result = $db_list->GetNext()) { $ar_result["ITEMS"] = array(); $arSelect = array("NAME", "ID", "PROPERTY_PRODUCT", "PROPERTY_COUNT"); $arFilter = array("IBLOCK_ID" => $IBLOCK_ID, "ACTIVE" => "Y", "SECTION_ID" => $ar_result["ID"]); $res = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect); while ($ob = $res->GetNextElement()) { $arItem = $ob->GetFields(); $arProdSpec = getItemCart($arItem["PROPERTY_PRODUCT_VALUE"]); if ($arProdSpec && $arItem["PROPERTY_PRODUCT_VALUE"]) { $arItem["PRODUCT"] = $arProdSpec; $dbPrice = CPrice::GetList(array("QUANTITY_FROM" => "ASC", "QUANTITY_TO" => "ASC", "SORT" => "ASC"), array("PRODUCT_ID" => $arItem["PROPERTY_PRODUCT_VALUE"]), false, false, array("ID", "CATALOG_GROUP_ID", "PRICE", "CURRENCY", "QUANTITY_FROM", "QUANTITY_TO")); if ($arPrice = $dbPrice->Fetch()) { $arDiscounts = CCatalogDiscount::GetDiscountByPrice($arPrice["ID"], $USER->GetUserGroupArray(), "N", SITE_ID); $discountPrice = CCatalogProduct::CountPriceWithDiscount($arPrice["PRICE"], $arPrice["CURRENCY"], $arDiscounts); $arPrice["DISCOUNT_PRICE"] = $discountPrice; $arItem["DISCOUNT"] = $arPrice; } $ar_result["ITEMS"][] = $arItem; } elseif (!$arItem["PROPERTY_PRODUCT_VALUE"]) { $arParams["product"] = $arItem["ID"]; removeItemSpecification($arParams); } } $arSections[] = $ar_result; } } return $arSections; } return false; }
public function GetXMLData($product) { $arProp = array("ID" => GetMessage("ACRIT_PROP_ID"), "CODE" => GetMessage("ACRIT_PROP_CODE"), "NAME" => GetMessage("ACRIT_PROP_NAME"), "ACTIVE" => GetMessage("ACRIT_PROP_ACTIVE"), "DATE_CREATE" => GetMessage("ACRIT_PROP_DATE_CREATE"), "CREATED_BY" => GetMessage("ACRIT_PROP_CREATED_BY"), "DETAIL_PAGE_URL" => GetMessage("ACRIT_PROP_DETAIL_PAGE_URL"), "SHOW_COUNTER" => GetMessage("ACRIT_PROP_SHOW_COUNTER"), "QUANTITY" => GetMessage("ACRIT_PROP_QUANTITY")); $params = array(); if (is_array($this->XML_DATA) && sizeof($this->XML_DATA) > 0) { foreach ($this->XML_DATA as $xml) { $tmp1 = explode("-", $xml['ID']); $tmp = explode("_", $tmp1[1]); if ($tmp[0] == "SKU") { $ibl = $this->sku_IBLOCK_ID[$tmp1[0]]; $prop_id = $tmp[1]; $ph = CIBlockElement::GetProperty($ibl, $product["ID"], array("sort" => "asc"), array("ID" => $prop_id)); } elseif ($tmp[0] == "QUANTITY") { if ($this->isCat) { $tr = CCatalogProduct::GetByID($product["ID"]); $params[] = array("PARAM" => $xml["UNIT"], "NAME" => text2xml($arProp[$xml["ID"]], true, true, $this->ENCODING), "CODE" => $xml["ID"], "VALUE" => $tr["QUANTITY"]); } $ph = false; continue; } elseif ($tmp[0] == "PRICE") { $dbProductPrices = CPrice::GetList(array(), array("PRODUCT_ID" => $product["ID"], "CATALOG_GROUP_ID" => $tmp[1])); $price = 0; $names = ''; while ($arProductPrice = $dbProductPrices->Fetch()) { if ($arProductPrice["PRICE"] && ($arProductPrice["PRICE"] < $price || !$price)) { $price = $arProductPrice["PRICE"]; } $arDissizeofs = CCatalogDiscount::GetDiscountByProduct($arProductPrice["PRODUCT_ID"], array(), "N", $arProductPrice["CATALOG_GROUP_ID"], $this->LID); foreach ($arDissizeofs as $arDissizeof) { if ($arDissizeof["VALUE_TYPE"] == "P") { $price_buf = $arProductPrice["PRICE"] - $arDissizeof["VALUE"] * $arProductPrice["PRICE"] / 100; } else { $price_buf = $arProductPrice["PRICE"] - $arDissizeof["VALUE"]; } if ($price_buf && ($price_buf < $price || !$price)) { $price = $price_buf; } } $names = $arProductPrice["CATALOG_GROUP_NAME"]; } $params[] = array("PARAM" => $xml["UNIT"], "NAME" => text2xml($names, true, true, $this->ENCODING), "CODE" => $xml["ID"], "VALUE" => $price); $ph = false; continue; } else { $ibl = $tmp1[0]; $prop_id = $tmp1[1]; $mxResult = CCatalogSku::GetProductInfo($product["ID"]); if (is_array($mxResult)) { $ph = CIBlockElement::GetProperty($ibl, $mxResult["ID"], array("sort" => "asc"), array("ID" => $prop_id)); } else { $ph = CIBlockElement::GetProperty($ibl, $product["ID"], array("sort" => "asc"), array("ID" => $prop_id)); } } if (is_object($ph)) { while ($ob = $ph->GetNext()) { switch ($ob["PROPERTY_TYPE"]) { case "S": if ($ob["USER_TYPE"] == "UserID") { $rsUser = CUser::GetByID($ob["VALUE"]); $arUser = $rsUser->Fetch(); $params[] = array("PARAM" => $xml["UNIT"], "NAME" => text2xml($ob["NAME"], true, true, $this->ENCODING), "CODE" => $ob["CODE"], "VALUE" => text2xml($arUser["LAST_NAME"] . " " . $arUser["FIRST_NAME"], true, true, $this->ENCODING)); } else { $params[] = array("PARAM" => $xml["UNIT"], "NAME" => text2xml($ob["NAME"], true, true, $this->ENCODING), "CODE" => $ob["CODE"], "VALUE" => text2xml($ob["VALUE"], true, true, $this->ENCODING)); } break; case "L": $params[] = array("PARAM" => $xml["UNIT"], "NAME" => text2xml($ob["NAME"], true, true, $this->ENCODING), "CODE" => $ob["CODE"], "VALUE" => text2xml($ob["VALUE_ENUM"], true, true, $this->ENCODING)); break; case "E": $res = CIBlockElement::GetByID($ob["VALUE"]); while ($ar_res = $res->GetNext()) { $params[] = array("PARAM" => $xml["UNIT"], "NAME" => text2xml($ob["NAME"], true, true, $this->ENCODING), "CODE" => $ob["CODE"], "VALUE" => text2xml($ar_res["NAME"], true, true, $this->ENCODING)); } break; case "G": if ($xml['UNIT'] != "product_type") { $res = CIBlockSection::GetByID($ob["VALUE"]); while ($ar_res = $res->GetNext()) { $params[] = array("PARAM" => $xml["UNIT"], "NAME" => text2xml($ob["NAME"], true, true, $this->ENCODING), "CODE" => $ob["CODE"], "VALUE" => text2xml($ar_res["NAME"], true, true, $this->ENCODING)); } break; } else { $params[] = array("PARAM" => $xml["UNIT"], "NAME" => text2xml($ob["NAME"], true, true, $this->ENCODING), "CODE" => $ob["CODE"], "VALUE" => text2xml($ob["VALUE"], true, true, $this->ENCODING)); break; } case "F": $db_file = CFile::GetByID($ob["VALUE"]); while ($ar_file = $db_file->Fetch()) { $params[] = array("PARAM" => $xml["UNIT"], "NAME" => text2xml($ob["NAME"], true, true, $this->ENCODING), "CODE" => $ob["CODE"], "VALUE" => "http://" . $this->DOMAIN_NAME . "/" . COption::GetOptionString("main", "upload_dir", "upload") . "/" . $ar_file["SUBDIR"] . "/" . implode("/", array_map("rawurlencode", explode("/", $ar_file["FILE_NAME"])))); } break; case "N": $params[] = array("PARAM" => $xml["UNIT"], "NAME" => text2xml($ob["NAME"], true, true, $this->ENCODING), "CODE" => $ob["CODE"], "VALUE" => text2xml($ob["VALUE"], true, true, $this->ENCODING)); break; default: break; } } } } } return $params; }
if ($arCatalogGroup["BASE"] == "Y") { $arFields = array("PRODUCT_ID" => $elID, "CATALOG_GROUP_ID" => $arCatalogGroup["ID"], "PRICE" => DoubleVal($arPrice[$arCatalogGroup["ID"]]), "CURRENCY" => $arCurrency[$arCatalogGroup["ID"]], "QUANTITY_FROM" => $CATALOG_QUANTITY_FROM[$elID][$arCatalogGroup["ID"]], "QUANTITY_TO" => $CATALOG_QUANTITY_TO[$elID][$arCatalogGroup["ID"]]); if ($arFields["PRICE"] <= 0) { CPrice::Delete($CATALOG_PRICE_ID[$elID][$arCatalogGroup["ID"]]); } elseif (IntVal($CATALOG_PRICE_ID[$elID][$arCatalogGroup["ID"]]) > 0) { CPrice::Update(IntVal($CATALOG_PRICE_ID[$elID][$arCatalogGroup["ID"]]), $arFields); } elseif ($arFields["PRICE"] > 0) { CPrice::Add($arFields); } $arPrFilter = array("PRODUCT_ID" => $elID); if (DoubleVal($arPrice[$arCatalogGroup["ID"]]) > 0) { $arPrFilter["!CATALOG_GROUP_ID"] = $arCatalogGroup["ID"]; $arPrFilter["+QUANTITY_FROM"] = "1"; $arPrFilter["!EXTRA_ID"] = false; } $db_res = CPrice::GetList(array(), $arPrFilter, false, false, array("ID", "PRODUCT_ID", "CATALOG_GROUP_ID", "PRICE", "CURRENCY", "QUANTITY_FROM", "QUANTITY_TO", "EXTRA_ID")); while ($ar_res = $db_res->Fetch()) { $arFields = array("PRICE" => DoubleVal($arPrice[$arCatalogGroup["ID"]]) * (1 + $arCatExtraUp[$ar_res["EXTRA_ID"]] / 100), "EXTRA_ID" => $ar_res["EXTRA_ID"], "CURRENCY" => $arCurrency[$arCatalogGroup["ID"]], "QUANTITY_FROM" => $ar_res["QUANTITY_FROM"], "QUANTITY_TO" => $ar_res["QUANTITY_TO"]); if ($arFields["PRICE"] <= 0) { CPrice::Delete($ar_res["ID"]); } else { CPrice::Update($ar_res["ID"], $arFields); } } } elseif (!isset($CATALOG_EXTRA[$elID][$arCatalogGroup["ID"]])) { $arFields = array("PRODUCT_ID" => $elID, "CATALOG_GROUP_ID" => $arCatalogGroup["ID"], "PRICE" => DoubleVal($arPrice[$arCatalogGroup["ID"]]), "CURRENCY" => $arCurrency[$arCatalogGroup["ID"]], "QUANTITY_FROM" => $CATALOG_QUANTITY_FROM[$elID][$arCatalogGroup["ID"]], "QUANTITY_TO" => $CATALOG_QUANTITY_TO[$elID][$arCatalogGroup["ID"]]); if ($arFields["PRICE"] <= 0) { CPrice::Delete($CATALOG_PRICE_ID[$elID][$arCatalogGroup["ID"]]); } elseif (IntVal($CATALOG_PRICE_ID[$elID][$arCatalogGroup["ID"]]) > 0) { CPrice::Update(IntVal($CATALOG_PRICE_ID[$elID][$arCatalogGroup["ID"]]), $arFields); } elseif ($arFields["PRICE"] > 0) {
?> <div class="container intro"> <?php $el = new CIBlockElement(); $arSelect_serv = array("ID", "PROPERTY_PRICE"); $arFilter_serv = array("IBLOCK_ID" => IBLOCK_SERVICE_ID); $obj_serv = $el->GetList(array("id" => "ASC"), $arFilter_serv, false, false, $arSelect_serv); $i = 0; while ($arItem_serv = $obj_serv->GetNext()) { $PRODUCT_ID = $arItem_serv["ID"]; $PRICE_TYPE_ID = 1; // CCatalogProduct::Add(array("ID" => $PRODUCT_ID)); $arFields = array("PRODUCT_ID" => $PRODUCT_ID, "CATALOG_GROUP_ID" => $PRICE_TYPE_ID, "PRICE" => $arItem_serv["PROPERTY_PRICE_VALUE"], "CURRENCY" => "RUB", "QUANTITY_FROM" => 1, "QUANTITY_TO" => ""); $res = CPrice::GetList(array(), array("PRODUCT_ID" => $PRODUCT_ID, "CATALOG_GROUP_ID" => $PRICE_TYPE_ID)); // // if ($arr = $res->Fetch()) // { // $result = CPrice::Update($arr["ID"], $arFields); // } // else // { // $result = CPrice::Add($arFields); // } } ?> </div> <?php
public function wall_auto_post(&$arFields) { global $APPLICATION; $MODULE_ID = "kreattika.shopvk"; $TableNamePost = "b_shopvk_post"; $TableNameAlbums = "b_shopvk_albums"; $TableNamePhotos = "b_shopvk_photos"; $flAutotest = ShopVKTEST::_AllLibInstalled(); $flPost = COption::GetOptionString($MODULE_ID, "svk_on", "N"); $flPostVK = COption::GetOptionString($MODULE_ID, "shop_vk_on", "N"); $flAlbumVK = COption::GetOptionString($MODULE_ID, "shop_vk_album_on", "N"); $flNewPostVK = true; $flImgExistVK = false; if ($flPost=="Y"): $arPostVKIBList = explode(',', COption::GetOptionString($MODULE_ID, "shop_vk_ib", "N")); $arAlbumVKIBList = explode(',', COption::GetOptionString($MODULE_ID, "shop_vk_album_ib", "N")); $PostVKActiveElementPost = COption::GetOptionString($MODULE_ID, "shop_vk_active_auto_post", "Y"); $PostVKActiveElementAlbum = COption::GetOptionString($MODULE_ID, "shop_vk_album_active_auto_post", "Y"); $arPostVKPropsIBListValues = array(); $arPostVKPricesListValues = array(); $arAlbumVKPropsIBListValues = array(); $arAlbumVKPricesListValues = array(); $PostPicture = ''; $flPostVKIBExist = false; foreach($arPostVKIBList as $IBItemID): if($IBItemID == $arFields['IBLOCK_ID']): $flPostVKIBExist = true; endif; endforeach; $flAlbumVKIBExist = false; foreach($arAlbumVKIBList as $IBItemID): if($IBItemID == $arFields['IBLOCK_ID']): $flAlbumVKIBExist = true; endif; endforeach; if($flPostVKIBExist || $flAlbumVKIBExist): $VKOwnerID = COption::GetOptionString($MODULE_ID, "shop_vk_owner_id", "N"); $arPostVKFieldsIBList = explode(',', COption::GetOptionString($MODULE_ID, "shop_vk_ib_fields", "N")); $arAlbumVKFieldsIBList = explode(',', COption::GetOptionString($MODULE_ID, "shop_vk_album_ib_fields", "N")); $arPostVKPropsIBList = explode(',', COption::GetOptionString($MODULE_ID, "shop_vk_ib_properties", "N")); $arAlbumVKPropsIBList = explode(',', COption::GetOptionString($MODULE_ID, "shop_vk_album_ib_properties", "N")); $arPostVKPricesList = explode(',', COption::GetOptionString($MODULE_ID, "shop_vk_ib_prices", "N")); $arAlbumVKPricesList = explode(',', COption::GetOptionString($MODULE_ID, "shop_vk_album_ib_prices", "N")); $PostVKTPL = COption::GetOptionString($MODULE_ID, "shop_vk_tpl", "N"); $AlbumVKTPL = COption::GetOptionString($MODULE_ID, "shop_vk_album_tpl", "N"); $PostVKEventLog = COption::GetOptionString($MODULE_ID, "shop_vk_event_log", "N"); $AlbumVKEventLog = COption::GetOptionString($MODULE_ID, "shop_vk_album_event_log", "N"); $fl_is_group = COption::GetOptionString($MODULE_ID, "shop_vk_is_group", "Y"); if($flAutotest): if( in_array('LINK', $arPostVKFieldsIBList) || count($arPostVKPropsIBList) > 0 || in_array('LINK', $arAlbumVKFieldsIBList) || count($arAlbumVKPropsIBList) > 0 ): if(CModule::IncludeModule("iblock")): $resEl = CIBlockElement::GetByID($arFields['ID']); if($obEl = $resEl->GetNextElement()): $arElFields = $obEl->GetFields(); $arElProps = $obEl->GetProperties(); foreach($arElProps as $ElPropValue): if ( in_array($ElPropValue['ID'], $arPostVKPropsIBList) || in_array($ElPropValue['ID'], $arAlbumVKPropsIBList) ): $ElPropID = $ElPropValue['ID']; $arPValues = array(); $arPValues['ID'] = $ElPropValue['ID']; $arPValues['NAME'] = $ElPropValue['NAME']; $arPValues['CODE'] = $ElPropValue['CODE']; $arPValues['VALUE'] = $ElPropValue['VALUE']; $arPostVKPropsIBListValues[$ElPropID] = $arPValues; $arAlbumVKPropsIBListValues[$ElPropID] = $arPValues; endif; endforeach; endif; endif; endif; if( count($arPostVKPricesList) > 0 || count($arAlbumVKPricesList) > 0 ): if(CModule::IncludeModule("iblock") && CModule::IncludeModule("catalog")): $obElPrice = CPrice::GetList(array(), array("PRODUCT_ID" =>$arFields['ID'])); while($ElPriceValue = $obElPrice->GetNext()): if ( in_array($ElPriceValue['CATALOG_GROUP_ID'], $arPostVKPricesList) || in_array($ElPriceValue['CATALOG_GROUP_ID'], $arAlbumVKPricesList) ): $ElPriceID = $ElPriceValue['CATALOG_GROUP_ID']; $arPrValues = array(); $arPrValues['ID'] = $ElPriceValue['CATALOG_GROUP_ID']; $arPrValues['NAME'] = $ElPriceValue['CATALOG_GROUP_NAME']; $arPrValues['VALUE'] = $ElPriceValue['PRICE']; $arPrValues['CURRENCY'] = $ElPriceValue['CURRENCY']; $arPostVKPricesListValues[$ElPriceID] = $arPrValues; $arAlbumVKPricesListValues[$ElPriceID] = $arPrValues; endif; endwhile; endif; endif; $PostName=$arFields['NAME']; if($arFields['PREVIEW_TEXT_TYPE']=='text'): $PostPText=$arFields['PREVIEW_TEXT']; else: $PostPText=HTMLToTxt($arFields['PREVIEW_TEXT']); endif; if($arFields['DETAIL_TEXT_TYPE']=='text'): $PostDText=$arFields['DETAIL_TEXT']; else: $PostDText=HTMLToTxt($arFields['DETAIL_TEXT']); endif; $PostText = $PostVKTPL; $AlbumText = $AlbumVKTPL; $arDBPostFilter=array("ACTIVE"=>'\'Y\'', "VK_OWNER_ID"=>intval($VKOwnerID), "IBLOCK_ID"=>intval($arFields["IBLOCK_ID"]), "ELEMENT_ID"=>intval($arFields["ID"])); $obDBPostResult = CSVKDataBlock::GetList($TableNamePost, $arDBPostFilter); if ($arDBPostResult = $obDBPostResult->Fetch()) : $flNewPostVK = false; endif; if ( $flNewPostVK ): if ( isset($arFields['PREVIEW_PICTURE_ID']) && !empty($arFields['PREVIEW_PICTURE_ID']) ): $Post_PREVIEW_PICTURE_SRC = $_SERVER["DOCUMENT_ROOT"].CFile::GetPath($arFields['PREVIEW_PICTURE_ID']); $Post_PREVIEW_PICTURE_ID = $arFields['PREVIEW_PICTURE_ID']; endif; $flImgExistVK = true; else: if( isset($arElFields['PREVIEW_PICTURE']) && !empty($arElFields['PREVIEW_PICTURE']) ): $Post_PREVIEW_PICTURE_SRC = $_SERVER["DOCUMENT_ROOT"].CFile::GetPath($arElFields['PREVIEW_PICTURE']); $Post_PREVIEW_PICTURE_ID = $arElFields['PREVIEW_PICTURE']; $flImgExistVK = true; endif; endif; if ( $flNewPostVK ): if ( isset($arFields['DETAIL_PICTURE_ID']) && !empty($arFields['DETAIL_PICTURE_ID']) ): $Post_DETAIL_PICTURE_SRC = $_SERVER["DOCUMENT_ROOT"].CFile::GetPath($arFields['DETAIL_PICTURE_ID']); $Post_DETAIL_PICTURE_ID = $arFields['DETAIL_PICTURE_ID']; $flImgExistVK = true; endif; else: if( isset($arElFields['DETAIL_PICTURE']) && !empty($arElFields['DETAIL_PICTURE']) ): $Post_DETAIL_PICTURE_SRC = $_SERVER["DOCUMENT_ROOT"].CFile::GetPath($arElFields['DETAIL_PICTURE']); $Post_DETAIL_PICTURE_ID = $arElFields['DETAIL_PICTURE']; $flImgExistVK = true; endif; endif; if ($flAlbumVKIBExist && $flImgExistVK && $flAlbumVK=="Y"): if($PostVKActiveElementAlbum=='Y' && $arFields['ACTIVE']=='N'): #return false; else: $arAlbumVKID = array(); if( isset($arFields["IBLOCK_SECTION_ID"]) && !empty($arFields["IBLOCK_SECTION_ID"]) ): if ($tmpAlbumVKID = SVK::find_creat_album(intval($arFields["IBLOCK_SECTION_ID"]), $arFields, $arElFields)): $arAlbumVKID[] = $tmpAlbumVKID; endif; elseif( is_array($arFields["IBLOCK_SECTION"]) && count($arFields["IBLOCK_SECTION"]) > 0): foreach($arFields["IBLOCK_SECTION"] as $elSection): if ($tmpAlbumVKID = SVK::find_creat_album(intval($elSection), $arFields, $arElFields)): $arAlbumVKID[] = $tmpAlbumVKID; endif; endforeach; endif; endif; endif; if(in_array('NAME', $arPostVKFieldsIBList)): $PostText = str_replace('#NAME#', $PostName, $PostText); endif; if(in_array('LINK', $arPostVKFieldsIBList)): $PostText = str_replace('#LINK#', $_SERVER['HTTP_HOST'].$arElFields['DETAIL_PAGE_URL'], $PostText); endif; if(in_array('PREVIEW_OR_DETAIL_TEXT', $arPostVKFieldsIBList)): if(!empty($PostDText)): $PostText = str_replace('#PREVIEW_OR_DETAIL_TEXT#', $PostDText, $PostText); elseif(!empty($PostPText)): $PostText = str_replace('#PREVIEW_OR_DETAIL_TEXT#', $PostPText, $PostText); else: $PostText = str_replace('#PREVIEW_OR_DETAIL_TEXT#', '', $PostText); endif; endif; if(in_array('PREVIEW_OR_DETAIL_PICTURE', $arPostVKFieldsIBList)): if(!empty($Post_DETAIL_PICTURE_ID)): $PostPicture = $Post_DETAIL_PICTURE_SRC; $PostPictureID = $Post_DETAIL_PICTURE_ID; elseif(!empty($Post_PREVIEW_PICTURE_ID)): $PostPicture = $Post_PREVIEW_PICTURE_SRC; $PostPictureID = $Post_PREVIEW_PICTURE_ID; endif; $PostText = str_replace('#PREVIEW_OR_DETAIL_PICTURE#', '', $PostText); endif; if(in_array('PREVIEW_PICTURE', $arPostVKFieldsIBList)): $PostPicture = $Post_PREVIEW_PICTURE_SRC; $PostPictureID = $Post_PREVIEW_PICTURE_ID; $PostText = str_replace('#PREVIEW_PICTURE#', '', $PostText); endif; if(in_array('PREVIEW_TEXT', $arPostVKFieldsIBList)): $PostText = str_replace('#PREVIEW_TEXT#', $PostPText, $PostText); endif; if(in_array('DETAIL_PICTURE', $arPostVKFieldsIBList)): $PostPicture = $Post_DETAIL_PICTURE_SRC; $PostPictureID = $Post_DETAIL_PICTURE_ID; $PostText = str_replace('#DETAIL_PICTURE#', '', $PostText); endif; if(in_array('DETAIL_TEXT', $arPostVKFieldsIBList)): $PostText = str_replace('#DETAIL_TEXT#', $PostDText, $PostText); endif; foreach($arPostVKPropsIBListValues as $ElPropValue): if ( in_array($ElPropValue['ID'], $arPostVKPropsIBList) ): $tmpElPropName = '#PROPERTY_'.$ElPropValue['ID'].'_NAME#'; $tmpElPropValue = '#PROPERTY_'.$ElPropValue['ID'].'_VALUE#'; $PostText = str_replace($tmpElPropName, $ElPropValue['NAME'], $PostText); $PostText = str_replace($tmpElPropValue, $ElPropValue['VALUE'], $PostText); endif; endforeach; if( is_array($arPostVKPricesListValues) && count($arPostVKPricesListValues) <= 0): foreach($arPostVKPricesList as $ElPriceValue): $tmpElPriceName = '#PRICE_'.$ElPriceValue.'_NAME#'; $tmpElPriceValue = '#PRICE_'.$ElPriceValue.'_VALUE#'; $PostText = str_replace($tmpElPriceName, '', $PostText); $PostText = str_replace($tmpElPriceValue, '', $PostText); endforeach; else: foreach($arPostVKPricesListValues as $ElPriceValue): if ( in_array($ElPriceValue['ID'], $arPostVKPricesList) ): $tmpElPriceName = '#PRICE_'.$ElPriceValue['ID'].'_NAME#'; $tmpElPriceValue = '#PRICE_'.$ElPriceValue['ID'].'_VALUE#'; $PostText = str_replace($tmpElPriceName, $ElPriceValue['NAME'], $PostText); $PostText = str_replace($tmpElPriceValue, $ElPriceValue['VALUE'], $PostText); endif; endforeach; endif; if(in_array('NAME', $arAlbumVKFieldsIBList)): $AlbumText = str_replace('#NAME#', $PostName, $AlbumText); endif; if(in_array('LINK', $arAlbumVKFieldsIBList)): $AlbumText = str_replace('#LINK#', $_SERVER['HTTP_HOST'].$arElFields['DETAIL_PAGE_URL'], $AlbumText); endif; if(in_array('PREVIEW_OR_DETAIL_TEXT', $arAlbumVKFieldsIBList)): if(!empty($PostDText)): $AlbumText = str_replace('#PREVIEW_OR_DETAIL_TEXT#', $PostDText, $AlbumText); elseif(!empty($PostPText)): $AlbumText = str_replace('#PREVIEW_OR_DETAIL_TEXT#', $PostPText, $AlbumText); else: $AlbumText = str_replace('#PREVIEW_OR_DETAIL_TEXT#', '', $AlbumText); endif; endif; if(in_array('PREVIEW_OR_DETAIL_PICTURE', $arAlbumVKFieldsIBList)): if(!empty($Post_DETAIL_PICTURE_ID)): $PostPicture = $Post_DETAIL_PICTURE_SRC; $PostPictureID = $Post_DETAIL_PICTURE_ID; elseif(!empty($Post_PREVIEW_PICTURE_ID)): $PostPicture = $Post_PREVIEW_PICTURE_SRC; $PostPictureID = $Post_PREVIEW_PICTURE_ID; endif; $AlbumText = str_replace('#PREVIEW_OR_DETAIL_PICTURE#', '', $AlbumText); endif; if(in_array('PREVIEW_PICTURE', $arAlbumVKFieldsIBList)): $PostPicture = $Post_PREVIEW_PICTURE_SRC; $PostPictureID = $Post_PREVIEW_PICTURE_ID; $AlbumText = str_replace('#PREVIEW_PICTURE#', '', $AlbumText); endif; if(in_array('PREVIEW_TEXT', $arAlbumVKFieldsIBList)): $AlbumText = str_replace('#PREVIEW_TEXT#', $PostPText, $AlbumText); endif; if(in_array('DETAIL_PICTURE', $arAlbumVKFieldsIBList)): $PostPicture = $Post_DETAIL_PICTURE_SRC; $PostPictureID = $Post_DETAIL_PICTURE_ID; $AlbumText = str_replace('#DETAIL_PICTURE#', '', $AlbumText); endif; if(in_array('DETAIL_TEXT', $arAlbumVKFieldsIBList)): $AlbumText = str_replace('#DETAIL_TEXT#', $PostDText, $AlbumText); endif; foreach($arAlbumVKPropsIBListValues as $ElPropValue): if ( in_array($ElPropValue['ID'], $arAlbumVKPropsIBList) ): $tmpElPropName = '#PROPERTY_'.$ElPropValue['ID'].'_NAME#'; $tmpElPropValue = '#PROPERTY_'.$ElPropValue['ID'].'_VALUE#'; $AlbumText = str_replace($tmpElPropName, $ElPropValue['NAME'], $AlbumText); $AlbumText = str_replace($tmpElPropValue, $ElPropValue['VALUE'], $AlbumText); endif; endforeach; if( is_array($arAlbumVKPricesListValues) && count($arAlbumVKPricesListValues) <= 0): foreach($arAlbumVKPricesList as $ElPriceValue): $tmpElPriceName = '#PRICE_'.$ElPriceValue.'_NAME#'; $tmpElPriceValue = '#PRICE_'.$ElPriceValue.'_VALUE#'; $AlbumText = str_replace($tmpElPriceName, '', $AlbumText); $AlbumText = str_replace($tmpElPriceValue, '', $AlbumText); endforeach; else: foreach($arAlbumVKPricesListValues as $ElPriceValue): if ( in_array($ElPriceValue['ID'], $arPostVKPricesList) ): $tmpElPriceName = '#PRICE_'.$ElPriceValue['ID'].'_NAME#'; $tmpElPriceValue = '#PRICE_'.$ElPriceValue['ID'].'_VALUE#'; $AlbumText = str_replace($tmpElPriceName, $ElPriceValue['NAME'], $AlbumText); $AlbumText = str_replace($tmpElPriceValue, $ElPriceValue['VALUE'], $AlbumText); endif; endforeach; endif; if ($flPostVKIBExist && $flPostVK=="Y"): if($PostVKActiveElementPost=='Y' && $arFields['ACTIVE']=='N'): #return false; else: $arDBPostFilter=array("ACTIVE"=>'\'Y\'', "VK_OWNER_ID"=>intval($VKOwnerID), "IBLOCK_ID"=>intval($arFields["IBLOCK_ID"]), "ELEMENT_ID"=>intval($arFields["ID"])); $obDBPostResult = CSVKDataBlock::GetList($TableNamePost, $arDBPostFilter); if ($arDBPostResult = $obDBPostResult->Fetch()) : $flNewPostVK = false; $PostVKID = $arDBPostResult["VK_POST_ID"]; $DBPostItemID = $arDBPostResult["ID"]; $AutoPostResult = $PostVKID; $AutoEditPostResult = ShopVK::wall_edit_post($PostVKID, $PostText, $PostPicture, '', $fl_is_group, 'N'); if($AutoPostResult): $arDBPostFields = array( "LAST_MODIFIED"=>ConvertTimeStamp(time(), "FULL", $arElFields['LID']), ); CSVKDataBlock::Update($TableNamePost, $arDBPostFields, $DBPostItemID); endif; $EventLogDesc = 'Edit VKPostID: '.$AutoPostResult.', ElementID: '.$arFields['ID'].', '.$arFields['NAME']; else: $AutoPostResult = ShopVK::wall_post($PostText, $PostPicture, '', $fl_is_group, 'N'); if($AutoPostResult): $arDBPostFields = array( "ACTIVE"=>"Y", "CREATED"=>ConvertTimeStamp(time(), "FULL", $arElFields['LID']), "SITE_ID"=>$arElFields['LID'], "IBLOCK_ID"=>intval($arFields['IBLOCK_ID']), "ELEMENT_ID"=>intval($arFields['ID']), "VK_OWNER_ID"=>intval($VKOwnerID), "VK_POST_ID"=>intval($AutoPostResult), ); CSVKDataBlock::Add($TableNamePost, $arDBPostFields); endif; $EventLogDesc = 'New VKPostID: '.$AutoPostResult.', ElementID: '.$arFields['ID'].', '.$arFields['NAME']; endif; if($PostVKEventLog=='Y'): CEventLog::Add(array( "SEVERITY" => "SECURITY", "AUDIT_TYPE_ID" => "SHOP_VK_AUTO_POST", "MODULE_ID" => $MODULE_ID, "ITEM_ID" => $arFields['ID'], "DESCRIPTION" => $EventLogDesc, )); endif; endif; endif; if ($flAlbumVKIBExist && $flImgExistVK && $flAlbumVK=="Y"): if($PostVKActiveElementAlbum=='Y' && $arFields['ACTIVE']=='N'): #return false; else: foreach($arAlbumVKID as $AlbumVKID): $arDBPhotoFilter=array("ACTIVE"=>'\'Y\'', "VK_OWNER_ID"=>intval($VKOwnerID), "IBLOCK_ID"=>intval($arFields["IBLOCK_ID"]), "ELEMENT_ID"=>intval($arFields["ID"]), "VK_ALBUM_ID"=>intval($AlbumVKID)); $obDBPhotoResult = CSVKDataBlock::GetList($TableNamePhotos, $arDBPhotoFilter); $lfEventExist = false; if ($arDBPhotoResult = $obDBPhotoResult->Fetch()) : if($arDBPhotoResult["FILE_ID"] != $PostPictureID): $PhotoVKID = intval(ShopVK::upload_photo($PostPicture, $AlbumVKID, $AlbumText, 'N')); if( isset($PhotoVKID) && !empty($PhotoVKID) ): ShopVK::delete_photo($arDBPhotoResult["VK_PHOTO_ID"], 'N'); $arDBPhotoFields = array( "LAST_MODIFIED"=>ConvertTimeStamp(time(), "FULL", $arElFields['LID']), "FILE_ID"=>intval($PostPictureID), "VK_ALBUM_ID"=>intval($AlbumVKID), "VK_PHOTO_ID"=>intval($PhotoVKID), "VK_PHOTO_CAPTION"=>$PostText, ); CSVKDataBlock::Update($TableNamePhotos, $arDBPhotoFields, $arDBPhotoResult["ID"]); $EventLogDesc = 'Update VKPhotoID: '.$PhotoVKID.', for ElementID: '.$arFields['ID'].', '.$arFields['NAME']; $lfEventExist = true; endif; endif; else: $PhotoVKID = intval(ShopVK::upload_photo($PostPicture, $AlbumVKID, $AlbumText, 'N')); if( isset($PhotoVKID) && !empty($PhotoVKID) ): $arDBPhotoFields = array( "ACTIVE"=>"Y", "CREATED"=>ConvertTimeStamp(time(), "FULL", $arElFields['LID']), "SITE_ID"=>$arElFields['LID'], "IBLOCK_ID"=>intval($arFields['IBLOCK_ID']), "ELEMENT_ID"=>intval($arFields['ID']), "FILE_ID"=>intval($PostPictureID), "VK_OWNER_ID"=>intval($VKOwnerID), "VK_ALBUM_ID"=>intval($AlbumVKID), "VK_PHOTO_ID"=>intval($PhotoVKID), "VK_PHOTO_CAPTION"=>$PostText, ); CSVKDataBlock::Add($TableNamePhotos, $arDBPhotoFields); $EventLogDesc = 'New VKPhotoID: '.$PhotoVKID.', for ElementID: '.$arFields['ID'].', '.$arFields['NAME']; $lfEventExist = true; endif; endif; if($AlbumVKEventLog=='Y' && $lfEventExist): CEventLog::Add(array( "SEVERITY" => "SECURITY", "AUDIT_TYPE_ID" => "SHOP_VK_AUTOEX_PHOTO", "MODULE_ID" => $MODULE_ID, "ITEM_ID" => $arFields['ID'], "DESCRIPTION" => $EventLogDesc, )); endif; endforeach; endif; endif; else: $EventLogDesc = 'Error ShopVK autotest'; CEventLog::Add(array( "SEVERITY" => "SECURITY", "AUDIT_TYPE_ID" => "SHOP_VK_AUTOTEST", "MODULE_ID" => $MODULE_ID, "ITEM_ID" => $arFields['ID'], "DESCRIPTION" => $EventLogDesc, )); endif; endif; endif; }
/** * функция после добавлением элемента в инфоблока * @param $arFields поля элемента ифоблока * для страницы Объявления * eсли VIP объявление то добавляет корзину * привязывает по ID созданное объявления к товару в корзине * редирект на необходимы url */ function AuthtorizeAfterAds(&$arFields){ unset($_SESSION['user777999authorize']); if($arFields['PROPERTY_VALUES']['114']){ foreach($arFields['PROPERTY_VALUES']['114'] as $key114 => $item114){ if($item114['VALUE']){ foreach($arFields['PROPERTY_VALUES']['113'] as $key113 => $item113){ if($item113['VALUE']){ $arFields['PROPERTY_VALUES']['113'][$key113]=ConvertDateTime($item114['VALUE'], "YYYY-MM-DD HH:MI:SS"); }else{ $arFields['PROPERTY_VALUES']['113'][n0]=ConvertDateTime($item114['VALUE'], "YYYY-MM-DD HH:MI:SS"); } } } } } if(($arFields["IBLOCK_ID"] == 16)&&(!CUser::IsAuthorized())){ global $USER; $rsUser = CUser::GetByID($_SESSION['NEW_USER_ID']); $arUser = $rsUser->Fetch(); $_SESSION['$arUser']=$arUser; $USER = new CUser; $arAuthResult = $USER->Login($arUser['LOGIN'], $arUser['PASSWORD'], "Y","N"); } //$_SESSION['user777authorize']=$arFields; if(($arFields["IBLOCK_ID"] == 16)&&(CModule::IncludeModule("catalog"))&&(CModule::IncludeModule("sale"))){ $price_product=floatval($arFields["PROPERTY_VALUES"][86]); $quantity_product=floatval($arFields["PROPERTY_VALUES"][87]); if($price_product){ $PRODUCT_ID = $arFields['ID']; $PRICE_TYPE_ID = 1; $arFieldsprice = Array( "PRODUCT_ID" => $PRODUCT_ID, "CATALOG_GROUP_ID" => $PRICE_TYPE_ID, "PRICE" =>$price_product, "CURRENCY" => "RUB", "QUANTITY_FROM" => 1, ); $res = CPrice::GetList( array(), array( "PRODUCT_ID" => $PRODUCT_ID, "CATALOG_GROUP_ID" => $PRICE_TYPE_ID ) ); if ($arr = $res->Fetch()) { CPrice::Update($arr["ID"], $arFieldsprice); } else { CPrice::Add($arFieldsprice,true); } } } if ( ( (($arFields["IBLOCK_ID"] == 2)&& (is_numeric($arFields["PROPERTY_VALUES"][73]))) || (($arFields["IBLOCK_ID"] == 15)&& (is_numeric($arFields["PROPERTY_VALUES"][76]))) || (($arFields["IBLOCK_ID"] == 14)&& (is_numeric($arFields["PROPERTY_VALUES"][78]))) ) && CModule::IncludeModule("catalog") && CModule::IncludeModule("sale") && ((strstr($_SERVER['REQUEST_URI'],'/personal/moy-magazin/'))||(strstr($_SERVER['REQUEST_URI'],'/obyavleniya/add-ads/'))) ) { switch($arFields["IBLOCK_ID"]){ case 2: $price_product=floatval($arFields["PROPERTY_VALUES"][73]); $quantity_product=floatval($arFields["PROPERTY_VALUES"][75]); break; case 14: $price_product=floatval($arFields["PROPERTY_VALUES"][78]); $quantity_product=floatval($arFields["PROPERTY_VALUES"][79]); break; case 15: $price_product=floatval($arFields["PROPERTY_VALUES"][76]); $quantity_product=floatval($arFields["PROPERTY_VALUES"][77]); break; } if($price_product){ $PRODUCT_ID = $arFields['ID']; $PRICE_TYPE_ID = 1; if($quantity_product){ $ar_res_product=CCatalogProduct::GetByID($PRODUCT_ID); if($ar_res_product['QUANTITY']!=""){ $arFields_quant = array( 'QUANTITY' => $quantity_product ); CCatalogProduct::Update($PRODUCT_ID, $arFields_quant); }else{ $arFields_quant = array( 'ID'=>$PRODUCT_ID, 'QUANTITY' => $quantity_product ); CCatalogProduct::Add($arFields_quant); } } $arFieldsprice = Array( "PRODUCT_ID" => $PRODUCT_ID, "CATALOG_GROUP_ID" => $PRICE_TYPE_ID, "PRICE" =>$price_product, "CURRENCY" => "RUB", ); $res = CPrice::GetList( array(), array( "PRODUCT_ID" => $PRODUCT_ID, "CATALOG_GROUP_ID" => $PRICE_TYPE_ID ) ); if ($arr = $res->Fetch()) { CPrice::Update($arr["ID"], $arFieldsprice,true); $_SESSION['price_add']=$arr; } else { CPrice::Add($arFieldsprice,true); } } } // добавление в корзину vip и поднять if(($arFields["IBLOCK_ID"] == 16)&&(($arFields["PROPERTY_VALUES"][81][0]==40)||($arFields["PROPERTY_VALUES"][81][0]==46))){ unset($_SESSION['ELEMENT_ADS_ID']); if(($_REQUEST['CODE'])&&(CModule::IncludeModule("iblock"))){ if((CModule::IncludeModule("catalog"))&&(CModule::IncludeModule("sale"))){ $dbBasketItems = CSaleBasket::GetList( array(), array( "FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "ORDER_ID" => "NULL" ), false, false, array("ID", "NAME") ); if($arFields["PROPERTY_VALUES"][81][0]==46){ $test_ads="TEST_ADSUP"; } if($arFields["PROPERTY_VALUES"][81][0]==40){ $test_ads="TEST_VIP"; } while ($arBasketItems = $dbBasketItems->Fetch()) { $dbProp = CSaleBasket::GetPropsList(array("SORT" => "ASC", "ID" => "ASC"), array("BASKET_ID" => $arBasketItems["ID"])); if($arProp = $dbProp -> GetNext()) { $props[] = $arProp; $dbProp = CSaleBasket::GetPropsList(array("SORT" => "ASC", "ID" => "ASC"), array("BASKET_ID" => $arBasketItems["ID"])); if($arProp = $dbProp -> GetNext()) { if($arProp['CODE']==$test_ads){ $ELEMENT_ID = intval($arProp['VALUE']); if($ELEMENT_ID==$_REQUEST['CODE']){ $vip=true; } } } } } } } //var_dump($vip);die(); if(!$vip){ $arPropsBasket = array(); if($arFields["PROPERTY_VALUES"][81][0]==46){ $code_price="up-ads"; $arPropsBasket[] = array( "NAME" => "Название: ".$arFields['NAME'], "CODE" => "TEST_ADSUP", "VALUE" => $arFields['ID'] ); } if($arFields["PROPERTY_VALUES"][81][0]==40){ $code_price="vip-ads"; $arPropsBasket[] = array( "NAME" => "Название: ".$arFields['NAME'], "CODE" => "TEST_VIP", "VALUE" => $arFields['ID'] ); } $arSelect2 = Array("ID", "IBLOCK_ID", "NAME","PROPERTY_*"); $arFilter2 = Array("IBLOCK_ID"=>17, "CODE"=>$code_price, "ACTIVE"=>"Y"); $res2 = CIBlockElement::GetList(Array(), $arFilter2, false, Array("nPageSize"=>1), $arSelect2); while($ob2 = $res2->GetNextElement()){ $arFieldIdAds = $ob2->GetFields(); if (CModule::IncludeModule("sale")) { $base_price=CPrice::GetBasePrice($arFieldIdAds['ID']); $arFieldsB = array( "PRODUCT_ID" => $arFieldIdAds['ID'], "PRICE" => $base_price['PRICE'], "CURRENCY" => "RUB", "QUANTITY" => 1, "LID" => LANG, "NAME" => $arFieldIdAds['NAME'], ); $arFieldsB["PROPS"] = $arPropsBasket; $id_basket = CSaleBasket::Add($arFieldsB); $db_res = CSaleBasket::GetPropsList( array( "SORT" => "ASC", "NAME" => "ASC" ), array("BASKET_ID" => $id_basket) ); while ($ar_res = $db_res->Fetch()) { $_SESSION['order_fields_after'][]= $ar_res["NAME"]."=".$ar_res["VALUE"]."<br>"; } } } } unset($_SESSION['NEW_USER_ID']); LocalRedirect('/personal/cart/'); } if(($arFields["IBLOCK_ID"] == 16)&&($arFields["PROPERTY_VALUES"][81][0]==47)){ $_SESSION['ELEMENT_ADS_ID']=$arFields['ID']; } }
function ExportElements($PROPERTY_MAP, $SECTION_MAP, $start_time, $INTERVAL, $counter_limit = 0, $arElementFilter = false) { $counter = 0; $arSelect = array( "ID", "IBLOCK_ID", "XML_ID", "ACTIVE", "CODE", "NAME", "PREVIEW_TEXT", "PREVIEW_TEXT_TYPE", "ACTIVE_FROM", "ACTIVE_TO", "SORT", "TAGS", "DETAIL_TEXT", "DETAIL_TEXT_TYPE", "PREVIEW_PICTURE", "DETAIL_PICTURE", ); if(is_array($arElementFilter)) { $arFilter = $arElementFilter; } else { if($arElementFilter === "none") return 0; $arFilter = array ( "IBLOCK_ID"=> $this->arIBlock["ID"], "ACTIVE" => "Y", ">ID" => $this->next_step["LAST_ID"], ); if($arElementFilter === "all") unset($arFilter["ACTIVE"]); } $arOrder = array( "ID" => "ASC", ); $arPropOrder = array( "sort" => "asc", "id" => "asc", "enum_sort" => "asc", "value_id" => "asc", ); $rsElements = CIBlockElement::GetList($arOrder, $arFilter, false, false, $arSelect); while($arElement = $rsElements->Fetch()) { if($this->next_step["catalog"]) fwrite($this->fp, "\t\t\t<".GetMessage("IBLOCK_XML2_OFFER").">\n"); else fwrite($this->fp, "\t\t\t<".GetMessage("IBLOCK_XML2_POSITION").">\n"); if(strlen($arElement["XML_ID"])>0) $xml_id = $arElement["XML_ID"]; else $xml_id = $arElement["ID"]; if($this->PRODUCT_IBLOCK_ID > 0) { $rsLink = CIBlockElement::GetProperty($this->arIBlock["ID"], $arElement["ID"], $arPropOrder, array("ACTIVE"=>"Y", "CODE" => "CML2_LINK")); $arLink = $rsLink->Fetch(); if(is_array($arLink) && !is_array($arLink["VALUE"]) && $arLink["VALUE"] > 0) $xml_id = $this->GetElementXML_ID($this->PRODUCT_IBLOCK_ID, $arLink["VALUE"])."#".$xml_id; } fwrite($this->fp, "\t\t\t\t<".GetMessage("IBLOCK_XML2_ID").">".htmlspecialcharsbx($xml_id)."</".GetMessage("IBLOCK_XML2_ID").">\n"); if(!$this->only_price) { fwrite($this->fp, "\t\t\t\t<".GetMessage("IBLOCK_XML2_NAME").">".htmlspecialcharsbx($arElement["NAME"])."</".GetMessage("IBLOCK_XML2_NAME").">\n"); if($this->bExtended) fwrite($this->fp, "\t\t\t\t<".GetMessage("IBLOCK_XML2_BX_TAGS").">".htmlspecialcharsbx($arElement["TAGS"])."</".GetMessage("IBLOCK_XML2_BX_TAGS").">\n"); $arSections = array(); $rsSections = CIBlockElement::GetElementGroups($arElement["ID"], true); while($arSection = $rsSections->Fetch()) if(array_key_exists($arSection["ID"], $SECTION_MAP)) $arSections[] = $SECTION_MAP[$arSection["ID"]]; fwrite($this->fp, "\t\t\t\t<".GetMessage("IBLOCK_XML2_GROUPS").">\n"); foreach($arSections as $xml_id) fwrite($this->fp, "\t\t\t\t\t<".GetMessage("IBLOCK_XML2_ID").">".htmlspecialcharsbx($xml_id)."</".GetMessage("IBLOCK_XML2_ID").">\n"); fwrite($this->fp, "\t\t\t\t</".GetMessage("IBLOCK_XML2_GROUPS").">\n"); if(!$this->bExtended) fwrite($this->fp, "\t\t\t\t<".GetMessage("IBLOCK_XML2_DESCRIPTION").">".htmlspecialcharsbx(FormatText($arElement["DETAIL_TEXT"], $arElement["DETAIL_TEXT_TYPE"]))."</".GetMessage("IBLOCK_XML2_DESCRIPTION").">\n"); fwrite($this->fp, $this->formatXMLNode(4, GetMessage("IBLOCK_XML2_PICTURE"), $this->ExportFile($arElement["DETAIL_PICTURE"]))); fwrite($this->fp, "\t\t\t\t<".GetMessage("IBLOCK_XML2_PROPERTIES_VALUES").">\n"); if($this->bExtended) { $this->ExportPropertyValue("CML2_ACTIVE", ($arElement["ACTIVE"]=="Y"? "true": "false")); $this->ExportPropertyValue("CML2_CODE", $arElement["CODE"]); $this->ExportPropertyValue("CML2_SORT", intval($arElement["SORT"])); $this->ExportPropertyValue("CML2_ACTIVE_FROM", CDatabase::FormatDate($arElement["ACTIVE_FROM"], CLang::GetDateFormat("FULL"), "YYYY-MM-DD HH:MI:SS")); $this->ExportPropertyValue("CML2_ACTIVE_TO", CDatabase::FormatDate($arElement["ACTIVE_TO"], CLang::GetDateFormat("FULL"), "YYYY-MM-DD HH:MI:SS")); $this->ExportPropertyValue("CML2_PREVIEW_TEXT", $arElement["PREVIEW_TEXT"], $arElement["PREVIEW_TEXT_TYPE"]); $this->ExportPropertyValue("CML2_DETAIL_TEXT", $arElement["DETAIL_TEXT"], $arElement["DETAIL_TEXT_TYPE"]); $this->ExportPropertyValue("CML2_PREVIEW_PICTURE", $this->ExportFile($arElement["PREVIEW_PICTURE"])); } $rsProps = CIBlockElement::GetProperty($this->arIBlock["ID"], $arElement["ID"], $arPropOrder, array("ACTIVE"=>"Y")); $arProps = array(); while($arProp = $rsProps->Fetch()) { $pid = $arProp["ID"]; if(!array_key_exists($pid, $arProps)) $arProps[$pid] = array( "PROPERTY_TYPE" => $arProp["PROPERTY_TYPE"], "LINK_IBLOCK_ID" => $arProp["LINK_IBLOCK_ID"], "VALUES" => array(), ); if($arProp["PROPERTY_TYPE"] == "L") $arProps[$pid]["VALUES"][] = array( "VALUE" => $arProp["VALUE_ENUM"], "DESCRIPTION" => $arProp["DESCRIPTION"], "VALUE_ENUM_ID" => $arProp["VALUE"], ); else $arProps[$pid]["VALUES"][] = array( "VALUE" => $arProp["VALUE"], "DESCRIPTION" => $arProp["DESCRIPTION"], "VALUE_ENUM_ID" => $arProp["VALUE_ENUM_ID"], ); } foreach($arProps as $pid => $arProp) { $bEmpty = true; fwrite($this->fp, "\t\t\t\t\t<".GetMessage("IBLOCK_XML2_PROPERTY_VALUES").">\n"); fwrite($this->fp, "\t\t\t\t\t\t<".GetMessage("IBLOCK_XML2_ID").">".htmlspecialcharsbx($PROPERTY_MAP[$pid])."</".GetMessage("IBLOCK_XML2_ID").">\n"); foreach($arProp["VALUES"] as $arValue) { $value = $arValue["VALUE"]; if(is_array($value) || strlen($value)) { $bEmpty = false; $bSerialized = false; if($this->bExtended) { if($arProp["PROPERTY_TYPE"]=="L") { $value = CIBlockPropertyEnum::GetByID($arValue["VALUE_ENUM_ID"]); $value = $value["XML_ID"]; } elseif($arProp["PROPERTY_TYPE"]=="F") { $value = $this->ExportFile($value); } elseif($arProp["PROPERTY_TYPE"]=="G") { $value = $this->GetSectionXML_ID($arProp["LINK_IBLOCK_ID"], $value); } elseif($arProp["PROPERTY_TYPE"]=="E") { $value = $this->GetElementXML_ID($arProp["LINK_IBLOCK_ID"], $value); } if(is_array($value) && $arProp["PROPERTY_TYPE"]!=="F") { $bSerialized = true; $value = serialize($value); } } fwrite($this->fp, $this->formatXMLNode(6, GetMessage("IBLOCK_XML2_VALUE"), $value)); if($this->bExtended) { fwrite($this->fp, "\t\t\t\t\t\t<".GetMessage("IBLOCK_XML2_PROPERTY_VALUE").">\n"); if($bSerialized) fwrite($this->fp, "\t\t\t\t\t\t\t<".GetMessage("IBLOCK_XML2_SERIALIZED").">true</".GetMessage("IBLOCK_XML2_SERIALIZED").">\n"); fwrite($this->fp, $this->formatXMLNode(7, GetMessage("IBLOCK_XML2_VALUE"), $value)); fwrite($this->fp, "\t\t\t\t\t\t\t<".GetMessage("IBLOCK_XML2_DESCRIPTION").">".htmlspecialcharsbx($arValue["DESCRIPTION"])."</".GetMessage("IBLOCK_XML2_DESCRIPTION").">\n"); fwrite($this->fp, "\t\t\t\t\t\t</".GetMessage("IBLOCK_XML2_PROPERTY_VALUE").">\n"); } } } if($bEmpty) fwrite($this->fp, "\t\t\t\t\t\t<".GetMessage("IBLOCK_XML2_VALUE")."></".GetMessage("IBLOCK_XML2_VALUE").">\n"); fwrite($this->fp, "\t\t\t\t\t</".GetMessage("IBLOCK_XML2_PROPERTY_VALUES").">\n"); } fwrite($this->fp, "\t\t\t\t</".GetMessage("IBLOCK_XML2_PROPERTIES_VALUES").">\n"); } if($this->next_step["catalog"]) { $arPrices = array(); $rsPrices = CPrice::GetList(array(), array("PRODUCT_ID" => $arElement["ID"])); while($arPrice = $rsPrices->Fetch()) { if(!$arPrice["QUANTITY_FROM"] && !$arPrice["QUANTITY_TO"]) { $arPrices[] = array( GetMessage("IBLOCK_XML2_PRICE_TYPE_ID") => $this->prices[$arPrice["CATALOG_GROUP_ID"]], GetMessage("IBLOCK_XML2_PRICE_FOR_ONE") => $arPrice["PRICE"], GetMessage("IBLOCK_XML2_CURRENCY") => $arPrice["CURRENCY"], GetMessage("IBLOCK_XML2_MEASURE") => GetMessage("IBLOCK_XML2_PCS"), ); } } if(count($arPrices)>0) { fwrite($this->fp, "\t\t\t\t<".GetMessage("IBLOCK_XML2_PRICES").">\n"); foreach($arPrices as $arPrice) { fwrite($this->fp, "\t\t\t\t\t<".GetMessage("IBLOCK_XML2_PRICE").">\n"); foreach($arPrice as $key=>$value) { fwrite($this->fp, "\t\t\t\t\t\t<".$key.">".htmlspecialcharsbx($value)."</".$key.">\n"); } fwrite($this->fp, "\t\t\t\t\t</".GetMessage("IBLOCK_XML2_PRICE").">\n"); } fwrite($this->fp, "\t\t\t\t</".GetMessage("IBLOCK_XML2_PRICES").">\n"); $arCatalogProduct = CCatalogProduct::GetByID($arElement["ID"]); if($arCatalogProduct) fwrite($this->fp, "\t\t\t\t<".GetMessage("IBLOCK_XML2_AMOUNT").">".htmlspecialcharsbx($arCatalogProduct["QUANTITY"])."</".GetMessage("IBLOCK_XML2_AMOUNT").">\n"); } } if($this->next_step["catalog"]) fwrite($this->fp, "\t\t\t</".GetMessage("IBLOCK_XML2_OFFER").">\n"); else fwrite($this->fp, "\t\t\t</".GetMessage("IBLOCK_XML2_POSITION").">\n"); $this->next_step["LAST_ID"] = $arElement["ID"]; $counter++; if($INTERVAL > 0 && (time()-$start_time) > $INTERVAL) break; if($counter_limit > 0 && ($counter >= $counter_limit)) break; } return $counter; }
$arSelectedFields[] = "IBLOCK_ID"; $arDiscountCoupons = array(); $arSku = array(); $OfferIblockId = ""; CCatalogDiscountSave::Disable(); $arCatalogProductResult = array(); $arPricesResult = array(); $arCatalogProduct = $arItemsResult = $arPricesResult = array(); while ($arItems = $dbResultList->Fetch()) { $arCatalogProduct[] = $arItems["ID"]; $arItems['DETAIL_PAGE_URL'] = CIBlock::ReplaceDetailUrl($arItems['DETAIL_PAGE_URL'], $arItems, false, "E"); $arItemsResult[$arItems['ID']] = $arItems; } if (!empty($arCatalogProduct)) { foreach ($arPrices as $price) { $dbPrice = CPrice::GetList(array(), array('PRODUCT_ID' => $arCatalogProduct, 'CATALOG_GROUP_ID' => $price['ID']), false, false, array('PRODUCT_ID', 'PRICE')); while ($arPrice = $dbPrice->fetch()) { $arPricesResult[$price['ID']][$arPrice["PRODUCT_ID"]] = $arPrice["PRICE"]; } } $dbCatalogProduct = CCatalogProduct::GetList(array(), array("ID" => $arCatalogProduct)); while ($oneProduct = $dbCatalogProduct->fetch()) { $arCatalogProductResult[$oneProduct["ID"]] = $oneProduct; } $existSku = CCatalogSKU::getExistOffers($arCatalogProduct); foreach ($existSku as $productID => $existOffers) { if (isset($arCatalogProductResult[$productID])) { $arCatalogProductResult[$productID] = array(); } $arCatalogProductResult[$productID]['EXIST_SKU'] = $existOffers; }
function CatalogGetPriceTable($ID) { global $USER; $ID = (int) $ID; if ($ID <= 0) { return false; } $arResult = array(); $arPriceGroups = array(); $cacheKey = LANGUAGE_ID . "_" . $USER->GetGroups(); if (isset($GLOBALS["CATALOG_PRICE_GROUPS_CACHE"]) && is_array($GLOBALS["CATALOG_PRICE_GROUPS_CACHE"]) && isset($GLOBALS["CATALOG_PRICE_GROUPS_CACHE"][$cacheKey]) && is_array($GLOBALS["CATALOG_PRICE_GROUPS_CACHE"][$cacheKey])) { $arPriceGroups = $GLOBALS["CATALOG_PRICE_GROUPS_CACHE"][$cacheKey]; } else { $dbPriceGroupsList = CCatalogGroup::GetList(array("SORT" => "ASC"), array("CAN_ACCESS" => "Y", "LID" => LANGUAGE_ID), array("ID", "NAME_LANG", "SORT"), false, array("ID", "NAME_LANG", "CAN_BUY", "SORT")); while ($arPriceGroupsList = $dbPriceGroupsList->Fetch()) { $arPriceGroups[] = $arPriceGroupsList; $GLOBALS["CATALOG_PRICE_GROUPS_CACHE"][$cacheKey][] = $arPriceGroupsList; } } if (empty($arPriceGroups)) { return false; } $arBorderMap = array(); $arPresentGroups = array(); $bMultiQuantity = False; $dbPrice = CPrice::GetList(array("QUANTITY_FROM" => "ASC", "QUANTITY_TO" => "ASC", "SORT" => "ASC"), array("PRODUCT_ID" => $ID), false, false, array("ID", "CATALOG_GROUP_ID", "PRICE", "CURRENCY", "QUANTITY_FROM", "QUANTITY_TO", "ELEMENT_IBLOCK_ID", "SORT")); while ($arPrice = $dbPrice->Fetch()) { CCatalogDiscountSave::Disable(); $arDiscounts = CCatalogDiscount::GetDiscount($ID, $arPrice["ELEMENT_IBLOCK_ID"], $arPrice["CATALOG_GROUP_ID"], $USER->GetUserGroupArray(), "N", SITE_ID, array()); CCatalogDiscountSave::Enable(); $discountPrice = CCatalogProduct::CountPriceWithDiscount($arPrice["PRICE"], $arPrice["CURRENCY"], $arDiscounts); $arPrice["DISCOUNT_PRICE"] = $discountPrice; if (array_key_exists($arPrice["QUANTITY_FROM"] . "-" . $arPrice["QUANTITY_TO"], $arBorderMap)) { $jnd = $arBorderMap[$arPrice["QUANTITY_FROM"] . "-" . $arPrice["QUANTITY_TO"]]; } else { $jnd = count($arBorderMap); $arBorderMap[$arPrice["QUANTITY_FROM"] . "-" . $arPrice["QUANTITY_TO"]] = $jnd; } $arResult[$jnd]["QUANTITY_FROM"] = DoubleVal($arPrice["QUANTITY_FROM"]); $arResult[$jnd]["QUANTITY_TO"] = DoubleVal($arPrice["QUANTITY_TO"]); if (DoubleVal($arPrice["QUANTITY_FROM"]) > 0 || DoubleVal($arPrice["QUANTITY_TO"]) > 0) { $bMultiQuantity = True; } $arResult[$jnd]["PRICE"][$arPrice["CATALOG_GROUP_ID"]] = $arPrice; } $numGroups = count($arPriceGroups); for ($i = 0; $i < $numGroups; $i++) { $bNeedKill = True; for ($j = 0, $intCount = count($arResult); $j < $intCount; $j++) { if (!array_key_exists($arPriceGroups[$i]["ID"], $arResult[$j]["PRICE"])) { $arResult[$j]["PRICE"][$arPriceGroups[$i]["ID"]] = False; } if ($arResult[$j]["PRICE"][$arPriceGroups[$i]["ID"]] != false) { $bNeedKill = False; } } if ($bNeedKill) { for ($j = 0, $intCount = count($arResult); $j < $intCount; $j++) { unset($arResult[$j]["PRICE"][$arPriceGroups[$i]["ID"]]); } unset($arPriceGroups[$i]); } } return array("COLS" => $arPriceGroups, "MATRIX" => $arResult, "MULTI_QUANTITY" => $bMultiQuantity ? "Y" : "N"); }
/** * @param \CDBResult $dbResultList * @return array */ protected function makeItemsFromDbResult(\CDBResult $dbResultList) { $arItemsResult = $arProductIds = array(); while ($arItem = $dbResultList->Fetch()) { if ($arItem['TYPE'] != 'S') { $arProductIds[] = $arItem['ID']; $arItem['PROPERTIES'] = $this->getItemProperies($arItem['ID']); } $arItemsResult[$arItem['ID']] = $arItem; } if (!empty($arProductIds)) { $dbCatalogProduct = \CCatalogProduct::GetList(array(), array("ID" => $arProductIds)); while ($arCatalogProduct = $dbCatalogProduct->fetch()) { $arItemsResult[$arCatalogProduct["ID"]]['PRODUCT'] = $arCatalogProduct; } $offersExistsIds = \CCatalogSKU::getExistOffers($arProductIds, $this->getIblockId()); $noOffersIds = array(); if ($offersExistsIds === false) { $noOffersIds = $arProductIds; } else { $this->loadAllSku(array_keys(array_filter($offersExistsIds))); foreach ($offersExistsIds as $id => $bExists) { $arItem =& $arItemsResult[$id]; if ($bExists) { $arItem['SKU_ITEMS'] = $this->getProductSku($arItem); } else { $noOffersIds[] = $id; } } } if (!empty($noOffersIds)) { $priceIds = $this->getVisiblePrices(); foreach ($priceIds as $priceId) { $dbPrice = \CPrice::GetList(array(), array('PRODUCT_ID' => $noOffersIds, 'CATALOG_GROUP_ID' => $priceId), false, false, array('PRODUCT_ID', 'PRICE', 'CURRENCY')); while ($arPrice = $dbPrice->fetch()) { $arItemsResult[$arPrice["PRODUCT_ID"]]['PRICES'][$priceId] = array('PRICE' => $arPrice['PRICE'], 'CURRENCY' => $arPrice['CURRENCY']); } } if ($this->getStoreId()) { $dbStoreProduct = \CCatalogStoreProduct::GetList(array(), array("PRODUCT_ID" => $noOffersIds, "STORE_ID" => $this->getStoreId())); while ($arStoreProduct = $dbStoreProduct->Fetch()) { $arItemsResult[$arStoreProduct["PRODUCT_ID"]]['PRODUCT']['STORE_AMOUNT'] = $arStoreProduct["AMOUNT"]; } } $groupsIterator = CCatalogProductSet::getList(array(), array('OWNER_ID' => $noOffersIds, 'SET_ID' => 0, 'TYPE' => \CCatalogProductSet::TYPE_GROUP), false, false, array('ID', 'OWNER_ID', 'ITEM_ID', 'SET_ID', 'TYPE')); while ($group = $groupsIterator->Fetch()) { if ($group['OWNER_ID'] == $group['ITEM_ID']) { $arItemsResult[$group['OWNER_ID']]['PRODUCT']['IS_GROUP'] = true; } } } } return $arItemsResult; }
foreach($arRecommendedProducts as $key => $recommendedProduct){ $arRecommendedProducts[$key] = trim($recommendedProduct); } if($arRecommendedProducts[0] <> ""){ $arSelect = Array("ID", "NAME", "PREVIEW_PICTURE", "DETAIL_PAGE_URL"); $arSelect = array_merge($arSelect, $arParams['PROPERTY_CODE']); $arFilter = Array("IBLOCK_ID"=>IntVal($arParams['IBLOCK_ID']), "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", "PROPERTY_ID_PROD" => $arRecommendedProducts); $res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect); while($arFields = $res->GetNext()) { $dbPrice = CPrice::GetList( array("QUANTITY_FROM" => "ASC", "QUANTITY_TO" => "ASC", "SORT" => "ASC"), array("PRODUCT_ID" => $arFields['ID']), false, false, array("ID", "CATALOG_GROUP_ID", "PRICE", "CURRENCY", "QUANTITY_FROM", "QUANTITY_TO") ); while ($arPrice = $dbPrice->Fetch()) { $arDiscounts = CCatalogDiscount::GetDiscountByPrice( $arPrice["ID"], $USER->GetUserGroupArray(), "N", SITE_ID ); if(count($arDiscounts)){ $discountPrice = CCatalogProduct::CountPriceWithDiscount( $arPrice["PRICE"],
} elseif ($bIBlockIsCatalog && $outFileAction == "M") { CCatalogProduct::Update($arr['ID'], $arProductArray); $killed_lines++; } else { $bDeactivationStarted = true; $el->Update($arr["ID"], array("ACTIVE" => "N", "TMP_ID" => $tmpid)); $killed_lines++; } if (!($bAllLinesLoaded = CSVCheckTimeout($max_execution_time))) { break; } } } // delete 'not-in-file' element prices if ($bAllLinesLoaded && $bIBlockIsCatalog && 'Y' == $bUpdatePrice && $outFileAction == "D") { $res = CPrice::GetList(array(), array("ELEMENT_IBLOCK_ID" => $IBLOCK_ID, "!TMP_ID" => $tmpid), false, false, array("ID")); while ($arr = $res->Fetch()) { CPrice::Delete($arr["ID"]); if (!($bAllLinesLoaded = CSVCheckTimeout($max_execution_time))) { break; } } } if (!$bAllLinesLoaded) { $bAllDataLoaded = false; $INTERNAL_VARS_LIST = "tmpid,line_num,correct_lines,error_lines,killed_lines,arIBlockProperty,bThereIsGroups,arProductGroups,arIBlockPropertyValue,bDeactivationStarted,bUpdatePrice"; $SETUP_VARS_LIST = "IBLOCK_ID,URL_DATA_FILE,fields_type,first_names_r,delimiter_r,delimiter_other_r,first_names_f,metki_f,PATH2IMAGE_FILES,outFileAction,inFileAction,max_execution_time,IMAGE_RESIZE,USE_TRANSLIT,TRANSLIT_LANG,CLEAR_EMPTY_PRICE,CML2_LINK_IS_XML"; for ($i = 0; $i < $NUM_FIELDS; $i++) { $SETUP_VARS_LIST .= ",field_" . $i; } $CUR_FILE_POS = $csvFile->GetPos();
if (intval($req['PRODUCT_ID'])) { $arFilter = array('IBLOCK_ID' => IBLOCK_CATALOG, 'ACTIVE' => 'Y', 'ID' => intval($req['PRODUCT_ID'])); $Props = array(); $rsProperty = CIBlockProperty::GetList(array('sort' => 'asc'), array('ACTIVE' => 'Y', 'IBLOCK_ID' => IBLOCK_CATALOG)); while ($arProperty = $rsProperty->Fetch()) { $Props[] = 'PROPERTY_' . $arProperty['CODE']; } $eltsSelectFields = array_merge(array('ID', 'NAME', 'CODE', 'PREVIEW_PICTURE', 'DETAIL_PICTURE'), $Props); $arElt = $CIBlockElement->GetList(array('SORT' => 'asc', 'ID' => 'DESC'), $arFilter, false, false, $eltsSelectFields)->Fetch(); $CFile = new \CFile(); $previewPic = ''; if ($arElt['PREVIEW_PICTURE']) { $elt['PREVIEW_PICTURE'] = $CFile->GetPath($arElt['PREVIEW_PICTURE']); } elseif ($arElt['DETAIL_PICTURE']) { $elt['PREVIEW_PICTURE'] = $CFile->GetPath($arElt['DETAIL_PICTURE']); } $arPrice = CPrice::GetList(array(), array("PRODUCT_ID" => $arElt['ID']))->Fetch(); $square = $req['HEIGHT'] * $req['WIDTH'] / 1000000; $price = round(intval($arPrice['PRICE']) * $square, 2); $price_full = round(intval($price) / 0.73, 2); $price_q = round($price * $req['QUANTITY'], 2); $weight = $square * $arElt['PROPERTY_WEIGHT_VALUE'] * $req['QUANTITY']; $depth = round($square * $arElt['PROPERTY_DEPTH_VALUE'] / 1000, 2); $width_full = intval($arElt['PROPERTY_WIDTH_PLUS_VALUE']) + intval($req['WIDTH']); $height_full = intval($arElt['PROPERTY_HEIGHT_PLUS_VALUE']) + intval($req['HEIGHT']); $elt = array('ID' => $arElt['ID'], 'WIDTH_PLUS' => $arElt['PROPERTY_WIDTH_PLUS_VALUE'], 'HEIGHT_PLUS' => $arElt['PROPERTY_HEIGHT_PLUS_VALUE'], 'DEPTH' => $depth, 'WEIGHT' => $weight, 'WIDTH_FULL' => $width_full, 'HEIGHT_FULL' => $height_full, 'PRICE' => $price, 'PRICE_FULL' => $price_full, 'PRICE_Q' => $price_q); } header('Content-Type: application/json'); echo json_encode($elt); //_show_array($arElt); //_show_array($elt);
/** * <p>Функция по коду товара ID возвращает все параметры этого товара, включая относящиеся к товару как к элементу информационного блока. </p> <p><b>Важно!</b> Метод нежелателен к использованию в связи с избыточностью данных и низкой производительностью.</p> * * * * * @param int $ID Код товара. * * * * @return array <p>Возвращает ассоциативный массив параметров товара или <i>false</i> в * случае ошибки. Для просмотра всех доступных параметров * воспользуйтесь кодом из приведенного ниже примера. </p><a * name="examples"></a> * * * <h4>Example</h4> * <pre> * <? * $ID = 5; * $ar_res = CCatalogProduct::GetByIDEx($ID); * echo "<br>Товар с кодом ".$ID." имеет следующие параметры:<br><pre>"; * print_r($ar_res); * echo "</pre>"; * ?> * <b>Примечание:</b> до версии модуля <b>12.5.6</b> на агенте этот метод выдает ошибку, т.к. использует объект $USER, который еще не определен (см. <a href="https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=3436" target="_blank">учебный курс</a>). * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogproduct/ccatalogproduct__getbyidex.c95826cc.php * @author Bitrix */ public static function GetByIDEx($ID, $boolAllValues = false) { global $DB, $USER; $boolAllValues = (true == $boolAllValues ? true : false); $ID = intval($ID); if (0 >= $ID) return false; $arFilter = Array("ID" => $ID, "ACTIVE_DATE" => "Y", "ACTIVE" => "Y"); $dbIBlockElement = CIBlockElement::GetList(array(), $arFilter); if ($arIBlockElement = $dbIBlockElement->GetNext()) { if ($arIBlock = CIBlock::GetArrayByID($arIBlockElement["IBLOCK_ID"])) { $arIBlockElement["IBLOCK_ID"] = $arIBlock["ID"]; $arIBlockElement["IBLOCK_NAME"] = htmlspecialcharsbx($arIBlock["NAME"]); $arIBlockElement["~IBLOCK_NAME"] = $arIBlock["NAME"]; $arIBlockElement["PROPERTIES"] = false; $dbProps = CIBlockElement::GetProperty($arIBlock["ID"], $ID, "sort", "asc", Array("ACTIVE"=>"Y", "NON_EMPTY"=>"Y")); if ($arProp = $dbProps->Fetch()) { $arAllProps = array(); do { $strID = (strlen($arProp["CODE"])>0 ? $arProp["CODE"] : $arProp["ID"]); if (is_array($arProp["VALUE"])) { foreach ($arProp["VALUE"] as &$strOneValue) { $strOneValue = htmlspecialcharsbx($strOneValue); } if (isset($strOneValue)) unset($strOneValue); } else { $arProp["VALUE"] = htmlspecialcharsbx($arProp["VALUE"]); } if ($boolAllValues && 'Y' == $arProp['MULTIPLE']) { if (!isset($arAllProps[$strID])) { $arAllProps[$strID] = array( "NAME" => htmlspecialcharsbx($arProp["NAME"]), "VALUE" => array($arProp["VALUE"]), "VALUE_ENUM" => array(htmlspecialcharsbx($arProp["VALUE_ENUM"])), "VALUE_XML_ID" => array(htmlspecialcharsbx($arProp["VALUE_XML_ID"])), "DEFAULT_VALUE" => htmlspecialcharsbx($arProp["DEFAULT_VALUE"]), "SORT" => htmlspecialcharsbx($arProp["SORT"]), "MULTIPLE" => $arProp['MULTIPLE'], ); } else { $arAllProps[$strID]['VALUE'][] = $arProp["VALUE"]; $arAllProps[$strID]['VALUE_ENUM'][] = htmlspecialcharsbx($arProp["VALUE_ENUM"]); $arAllProps[$strID]['VALUE_XML_ID'][] = htmlspecialcharsbx($arProp["VALUE_XML_ID"]); } } else { $arAllProps[$strID] = array( "NAME" => htmlspecialcharsbx($arProp["NAME"]), "VALUE" => $arProp["VALUE"], "VALUE_ENUM" => htmlspecialcharsbx($arProp["VALUE_ENUM"]), "VALUE_XML_ID" => htmlspecialcharsbx($arProp["VALUE_XML_ID"]), "DEFAULT_VALUE" => htmlspecialcharsbx($arProp["DEFAULT_VALUE"]), "SORT" => htmlspecialcharsbx($arProp["SORT"]), "MULTIPLE" => $arProp['MULTIPLE'], ); } } while($arProp = $dbProps->Fetch()); $arIBlockElement["PROPERTIES"] = $arAllProps; } // bugfix: 2007-07-31 by Sigurd $arIBlockElement["PRODUCT"] = CCatalogProduct::GetByID($ID); $dbPrices = CPrice::GetList(array("SORT" => "ASC"), array("PRODUCT_ID" => $ID)); if ($arPrices = $dbPrices->Fetch()) { $arAllPrices = Array(); do { $arAllPrices[$arPrices["CATALOG_GROUP_ID"]] = Array("EXTRA_ID"=>intval($arPrices["EXTRA_ID"]), "PRICE"=>doubleval($arPrices["PRICE"]), "CURRENCY"=>htmlspecialcharsbx($arPrices["CURRENCY"])); } while($arPrices = $dbPrices->Fetch()); $arIBlockElement["PRICES"] = $arAllPrices; } return $arIBlockElement; } } return false; }
$arPath = $arCacheResultSections[$arSection['ID']]; } $arResSections[$i] = $arPath; $i++; } if (empty($arResSections)) { $arResSections[] = array(); } } else { $arResSections[] = array(); } $arResPrices = array(); if ($boolCatalog && $bNeedPrices) { $arResPricesMap = array(); $mapIndex = -1; $dbProductPrice = CPrice::GetList(array(), array("PRODUCT_ID" => $arIBlockElement["ID"], 'CATALOG_GROUP_ID' => $arCatalogGroups), false, false, array("ID", "CATALOG_GROUP_ID", "PRICE", "CURRENCY", "QUANTITY_FROM", "QUANTITY_TO", "EXTRA_ID")); while ($arProductPrice = $dbProductPrice->Fetch()) { if (!isset($arResPricesMap[$arProductPrice["QUANTITY_FROM"] . "-" . $arProductPrice["QUANTITY_TO"]])) { $mapIndex++; $arResPricesMap[$arProductPrice["QUANTITY_FROM"] . "-" . $arProductPrice["QUANTITY_TO"]] = $mapIndex; } $intDiap = $arResPricesMap[$arProductPrice["QUANTITY_FROM"] . "-" . $arProductPrice["QUANTITY_TO"]]; foreach ($arAvailValueFields_names as $key => $value) { $arResPrices[$intDiap][$value['field'] . '_' . $arProductPrice["CATALOG_GROUP_ID"]] = $arProductPrice[$value['field']]; } $arResPrices[$intDiap]['QUANTITY_FROM'] = $arProductPrice["QUANTITY_FROM"]; $arResPrices[$intDiap]['QUANTITY_TO'] = $arProductPrice["QUANTITY_TO"]; } if (empty($arResPrices)) { $arResPrices[] = array(); }
CSaleBasket::UpdatePrice($arItems["ID"], $arItems["CALLBACK_FUNC"], $arItems["MODULE"], $arItems["PRODUCT_ID"], $arItems["QUANTITY"]); $arItems = CSaleBasket::GetByID($arItems["ID"]); } $arBasketItems[] = $arItems; } $arResult['WIDGET_ITEMS'] = array(); $ESTIMATED_PRICE_TYPE_ID = 4; foreach($arBasketItems as $index=>$item) { $widgetItem = array(); $widgetItem['price'] = $item['PRICE']; $widgetItem['shop_good_code'] = $item['PRODUCT_ID']; $widgetItem['count'] = $item['QUANTITY']; $widgetItem['weight'] = $item['WEIGHT']; $widgetItem['name'] = $item['NAME']; $rsPrices = CPrice::GetList(array(), array('PRODUCT_ID' => $item['PRODUCT_ID'], 'CATALOG_GROUP_ID' => $ESTIMATED_PRICE_TYPE_ID)); if ($arPrice = $rsPrices->Fetch()) { $widgetItem['estimated_price'] = $arPrice["PRICE"]; } array_push($arResult['WIDGET_ITEMS'], $widgetItem); } $arResult['WIDGET_GOODS_JSON'] = json_encode($arResult['WIDGET_ITEMS']); if (!($person_type_id = COption::GetOptionString($module_id, "person_type_id"))) { throw new Exception(GetMessage("EXCEPTION_NOT_SET_PERSON_TYPE_OPTION")); } $gp_prop_list = array( 'customer_name', 'customer_email', 'customer_phone', //'index', //'location', //'location_city_name',
/** * [getSeoProducts description] * @param array $arParams * @return array */ function getSeoProducts($arParams) { global $USER; $arSelect = array(); $arFilter = array("IBLOCK_ID" => 22, "ACTIVE" => "Y", "ID" => $arParams["ID"]); $res = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect); if ($ob = $res->GetNextElement()) { $seo_items = $ob->GetFields(); $seo_items["PROPERTIES"] = $ob->GetProperties(); foreach ($seo_items["PROPERTIES"]["PRODUCTS"]["VALUE"] as $key => $idProd) { $arSelectProd = array("ID", "NAME", "PREVIEW_PICTURE", "PROPERTY_ARTIKUL", "PROPERTY_PRICE", "PROPERTY_OLD_PRICE", "PROPERTY_NEW", "PROPERTY_HIT", "PROPERTY_SALE", "DETAIL_PAGE_URL"); $arFilterProd = array("IBLOCK_ID" => 17, "ACTIVE" => "Y", "ID" => $idProd); $resProd = CIBlockElement::GetList(array(), $arFilterProd, false, false, $arSelectProd); while ($obProd = $resProd->GetNextElement()) { $arItem = $obProd->GetFields(); $dbPrice = CPrice::GetList(array("QUANTITY_FROM" => "ASC", "QUANTITY_TO" => "ASC", "SORT" => "ASC"), array("PRODUCT_ID" => $arItem["ID"]), false, false, array("ID", "CATALOG_GROUP_ID", "PRICE", "CURRENCY", "QUANTITY_FROM", "QUANTITY_TO")); if ($arPrice = $dbPrice->Fetch()) { $arDiscounts = CCatalogDiscount::GetDiscountByPrice($arPrice["ID"], $USER->GetUserGroupArray(), "N", SITE_ID); $discountPrice = CCatalogProduct::CountPriceWithDiscount($arPrice["PRICE"], $arPrice["CURRENCY"], $arDiscounts); $arPrice["DISCOUNT_VALUE"] = $discountPrice; $arItem["PRICES"] = $arPrice; } $arProducts[] = $arItem; } } return $arProducts; } }