Exemplo n.º 1
1
 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();
         }
     }
 }
Exemplo n.º 2
0
	/**
	 * [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);
 }
Exemplo n.º 4
0
/**
 * [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;
}
Exemplo n.º 5
0
/**
 * Функция обратного вызова для корзины
 * аналогична функции 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;
}
Exemplo n.º 6
0
	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);
					}
				}
			}
		}
	}
Exemplo n.º 7
0
            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;
Exemplo n.º 8
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);
		}
Exemplo n.º 9
0
 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");
             }
         }
     }
 }
Exemplo n.º 10
0
			"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"];
	}
}
Exemplo n.º 11
0
            ),
            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(), // дополнительный фильтр предложений. по умолчанию пуст.
Exemplo n.º 12
0
	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;
					}
				}
			}
		}
	}
Exemplo n.º 13
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));
            }
        }
    }
}
Exemplo n.º 14
0
/**
 * [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;
}
Exemplo n.º 15
0
 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;
 }
Exemplo n.º 16
0
 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 
Exemplo n.º 18
0
	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;
	}
Exemplo n.º 19
0
    /**
     * функция после добавлением элемента в инфоблока
     * @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'];

         }



         }
Exemplo n.º 20
0
	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;
     }
Exemplo n.º 22
0
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");
}
Exemplo n.º 23
0
 /**
  * @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;
 }
Exemplo n.º 24
0
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"],
Exemplo n.º 25
0
         } 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();
Exemplo n.º 26
0
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);
Exemplo n.º 27
0
	/**
	 * <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>
	 * &lt;?
	 * $ID = 5;
	 * $ar_res = CCatalogProduct::GetByIDEx($ID);
	 * echo "&lt;br&gt;Товар с кодом ".$ID." имеет следующие параметры:&lt;br&gt;&lt;pre&gt;";
	 * print_r($ar_res);
	 * echo "&lt;/pre&gt;";
	 * ?&gt;
	 * 
	<b>Примечание:</b> до версии модуля <b>12.5.6</b> на агенте этот метод выдает ошибку, т.к. использует объект $USER, который еще не определен (см. <a href="https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&amp;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;
	}
Exemplo n.º 28
0
             $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();
     }
Exemplo n.º 29
0
			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', 
Exemplo n.º 30
0
/**
 * [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;
    }
}