示例#1
0
	public function executeComponent()
	{
		$this->IBLOCK_ID = $this->arParams["IBLOCK_ID"];
		$this->SECTION_ID = $this->arParams["SECTION_ID"];
		$this->FILTER_NAME = $this->arParams["FILTER_NAME"];
		$this->SAFE_FILTER_NAME = htmlspecialcharsbx($this->FILTER_NAME);

		if (self::$catalogIncluded === null)
			self::$catalogIncluded = Loader::includeModule('catalog');
		if (self::$catalogIncluded)
		{
			$arCatalog = CCatalogSKU::GetInfoByProductIBlock($this->IBLOCK_ID);
			if (!empty($arCatalog))
			{
				$this->SKU_IBLOCK_ID = $arCatalog["IBLOCK_ID"];
				$this->SKU_PROPERTY_ID = $arCatalog["SKU_PROPERTY_ID"];
			}
		}

		/*DEMO CODE for "pure" class.php component
		$this->arResult["FFF"] = "ggg";
		$this->includeComponentTemplate();
		return $this->ELEMENT_ID;
		*/

		return parent::executeComponent();
	}
示例#2
0
 public static function GetProductList($ID, $minCNT, $limit, $getParentOnly = false)
 {
     global $DB;
     $ID = (int) $ID;
     if ($ID <= 0) {
         return false;
     }
     $limit = (int) $limit;
     if ($limit < 0) {
         $limit = 0;
     }
     $minCNT = (int) $minCNT;
     if ($minCNT < 0) {
         $minCNT = 0;
     }
     $getParentOnly = $getParentOnly === true;
     $elementInclude = array($ID);
     $elementExclude = array();
     if (Loader::includeModule('catalog')) {
         $intIBlockID = (int) CIBlockElement::GetIBlockByID($ID);
         if ($intIBlockID == 0) {
             return false;
         }
         $skuInfo = CCatalogSKU::GetInfoByProductIBlock($intIBlockID);
         if (!empty($skuInfo)) {
             $itemsIterator = CIBlockElement::GetList(array(), array('IBLOCK_ID' => $skuInfo['IBLOCK_ID'], 'PROPERTY_' . $skuInfo['SKU_PROPERTY_ID'] => $ID), false, false, array('ID', 'IBLOCK_ID', 'PROPERTY_' . $skuInfo['SKU_PROPERTY_ID']));
             while ($item = $itemsIterator->Fetch()) {
                 $item['ID'] = (int) $item['ID'];
                 $elementInclude[] = $item['ID'];
                 $elementExclude[] = $item['ID'];
             }
         }
     }
     if ($getParentOnly) {
         $strSql = "select PARENT_PRODUCT_ID from b_sale_product2product where PRODUCT_ID IN (" . implode(',', $elementInclude) . ")";
         if (!empty($elementExclude)) {
             $strSql .= " and PARENT_PRODUCT_ID not in (" . implode(',', $elementExclude) . ")";
         }
         if ($minCNT > 0) {
             $strSql .= " and CNT >= " . $minCNT;
         }
         $strSql .= ' group by PARENT_PRODUCT_ID';
         if ($limit > 0) {
             $strSql .= " limit " . $limit;
         }
     } else {
         $strSql = "select * from b_sale_product2product where PRODUCT_ID in (" . implode(',', $elementInclude) . ")";
         if (!empty($elementExclude)) {
             $strSql .= " and PARENT_PRODUCT_ID not in (" . implode(',', $elementExclude) . ")";
         }
         if ($minCNT > 0) {
             $strSql .= " and CNT >= " . $minCNT;
         }
         $strSql .= " order by CNT desc, PRODUCT_ID asc";
         if ($limit > 0) {
             $strSql .= " limit " . $limit;
         }
     }
     return $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
 }
示例#3
0
 function getOffers()
 {
     if (!class_exists('\\CCatalogSKU')) {
         \CModule::IncludeModule('catalog');
     }
     $retval = array();
     $arInfo = \CCatalogSKU::GetInfoByProductIBlock($this->iblock_id);
     if (is_array($arInfo)) {
         $retval = \Cpeople\Classes\Block\Getter::instance()->setFilter(array('IBLOCK_ID' => $arInfo['IBLOCK_ID'], 'PROPERTY_' . $arInfo['SKU_PROPERTY_ID'] => $this->id))->setClassName('\\Cpeople\\Classes\\Catalog\\Offer')->get();
     }
     return empty_array($retval) ? false : $retval;
 }
示例#4
0
 protected function getOffers()
 {
     $arPropertyMap = array();
     $arSelectedPropTypes = array('S', 'N', 'L', 'E', 'G');
     $this->arSelectOfferProps = array();
     $arOffers = \CCatalogSKU::GetInfoByProductIBlock($this->iBlockId);
     if (empty($arOffers['IBLOCK_ID'])) {
         return array();
     }
     $this->intOfferIBlockID = $arOffers['IBLOCK_ID'];
     $rsOfferIBlocks = \CIBlock::GetByID($this->intOfferIBlockID);
     if (!($this->arOfferIBlock = $rsOfferIBlocks->Fetch())) {
         throw new SystemException("Bad offers iBlock ID  (" . __CLASS__ . "::" . __METHOD__ . ")");
     }
     $rsProps = \CIBlockProperty::GetList(array('SORT' => 'ASC', 'NAME' => 'ASC'), array('IBLOCK_ID' => $this->intOfferIBlockID, 'ACTIVE' => 'Y', 'CHECK_PERMISSIONS' => 'N'));
     while ($arProp = $rsProps->Fetch()) {
         $arProp['ID'] = (int) $arProp['ID'];
         if ($arOffers['SKU_PROPERTY_ID'] != $arProp['ID']) {
             $arProp['USER_TYPE'] = (string) $arProp['USER_TYPE'];
             $arProp['CODE'] = (string) $arProp['CODE'];
             $this->arIblock['OFFERS_PROPERTY'][$arProp['ID']] = $arProp;
             $this->arProperties[$arProp['ID']] = $arProp;
             if (in_array($arProp['PROPERTY_TYPE'], $arSelectedPropTypes)) {
                 $this->arSelectOfferProps[] = $arProp['ID'];
             }
             if ($arProp['CODE'] !== '') {
                 foreach ($this->arIblock['PROPERTY'] as &$arMainProp) {
                     if ($arMainProp['CODE'] == $arProp['CODE']) {
                         $arPropertyMap[$arProp['ID']] = $arMainProp['CODE'];
                         break;
                     }
                 }
                 if (isset($arMainProp)) {
                     unset($arMainProp);
                 }
             }
         }
     }
     $this->arOfferIBlock['LID'] = $this->arIblock['LID'];
     $this->arOfferIBlock['PROPERTY'] = array();
     $rsProps = \CIBlockProperty::GetList(array('SORT' => 'ASC', 'NAME' => 'ASC'), array('IBLOCK_ID' => $this->intOfferIBlockID, 'ACTIVE' => 'Y', 'CHECK_PERMISSIONS' => 'N'));
     while ($arProp = $rsProps->Fetch()) {
         $arProp['ID'] = (int) $arProp['ID'];
         $arProp['USER_TYPE'] = (string) $arProp['USER_TYPE'];
         $arProp['CODE'] = (string) $arProp['CODE'];
         $this->arOfferIBlock['PROPERTY'][$arProp['ID']] = $arProp;
     }
     return $arOffers;
 }
示例#5
0
 public function executeComponent()
 {
     $this->IBLOCK_ID = $this->arParams["IBLOCK_ID"];
     $this->SECTION_ID = $this->arParams["SECTION_ID"];
     $this->FILTER_NAME = $this->arParams["FILTER_NAME"];
     if (CModule::IncludeModule("catalog")) {
         $arCatalog = CCatalogSKU::GetInfoByProductIBlock($this->IBLOCK_ID);
         if (!empty($arCatalog) && is_array($arCatalog)) {
             $this->SKU_IBLOCK_ID = $arCatalog["IBLOCK_ID"];
             $this->SKU_PROPERTY_ID = $arCatalog["SKU_PROPERTY_ID"];
         }
     }
     /*DEMO CODE for "pure" class.php component
     		$this->arResult["FFF"] = "ggg";
     		$this->includeComponentTemplate();
     		return $this->ELEMENT_ID;
     		*/
     return parent::executeComponent();
 }
示例#6
0
	public function executeComponent()
	{
		$this->IBLOCK_ID = $this->arParams["IBLOCK_ID"];
		$this->SECTION_ID = $this->arParams["SECTION_ID"];
		$this->FILTER_NAME = $this->arParams["FILTER_NAME"];
		$this->SAFE_FILTER_NAME = htmlspecialcharsbx($this->FILTER_NAME);

		if (self::$catalogIncluded === null)
			self::$catalogIncluded = Loader::includeModule('catalog');
		if (self::$catalogIncluded)
		{
			$arCatalog = CCatalogSKU::GetInfoByProductIBlock($this->IBLOCK_ID);
			if (!empty($arCatalog))
			{
				$this->SKU_IBLOCK_ID = $arCatalog["IBLOCK_ID"];
				$this->SKU_PROPERTY_ID = $arCatalog["SKU_PROPERTY_ID"];
			}
		}

		$this->facet = new \Bitrix\Iblock\PropertyIndex\Facet($this->IBLOCK_ID);

		return parent::executeComponent();
	}
示例#7
0
<?php

$arInfo = CCatalogSKU::GetInfoByProductIBlock($arParams["IBLOCK_ID"]);
if ($arInfo) {
    $arConvertParams = array();
    if ('Y' == $arParams['CONVERT_CURRENCY']) {
        if (!CModule::IncludeModule('currency')) {
            $arParams['CONVERT_CURRENCY'] = 'N';
            $arParams['CURRENCY_ID'] = '';
        } else {
            $arCurrencyInfo = CCurrency::GetByID($arParams['CURRENCY_ID']);
            if (!(is_array($arCurrencyInfo) && !empty($arCurrencyInfo))) {
                $arParams['CONVERT_CURRENCY'] = 'N';
                $arParams['CURRENCY_ID'] = '';
            } else {
                $arParams['CURRENCY_ID'] = $arCurrencyInfo['CURRENCY'];
                $arConvertParams['CURRENCY_ID'] = $arCurrencyInfo['CURRENCY'];
            }
        }
    }
    foreach ($arResult["ITEMS"] as $key => $arItem) {
        $rsOffers = CIBlockElement::GetList(array(), array("IBLOCK_ID" => $arInfo["IBLOCK_ID"], "PROPERTY_" . $arInfo["SKU_PROPERTY_ID"] => $arItem["ID"]), false, false, array("ID", "CATALOG_QUANTITY"));
        $arOffers = CIBlockPriceTools::GetOffersArray($arParams["IBLOCK_ID"], $arItem["ID"], array($arParams["OFFERS_SORT_FIELD"] => $arParams["OFFERS_SORT_ORDER"], "ID" => "DESC"), $arParams["OFFERS_FIELD_CODE"], $arParams["OFFERS_PROPERTY_CODE"], $arParams["OFFERS_LIMIT"], $arResult["PRICES"], $arParams['PRICE_VAT_INCLUDE'], $arConvertParams);
        foreach ($arOffers as $arOffer) {
            $arResult["ITEMS"][$key]["OFFERS"][] = $arOffer;
            $dbProductDiscounts = CCatalogDiscount::GetList(array(), array("PRODUCT_ID" => $arOffer["ID"]));
            if ($dbProductDiscounts && $dbProductDiscounts->SelectedRowsCount() > 0) {
                while ($arProductDiscounts = $dbProductDiscounts->GetNext()) {
                    if ($arProductDiscounts["VALUE_TYPE"] == "F") {
                        echo "f";
                        $i = 0;
示例#8
0
 /**
  * get sku for product.
  *
  * @param integer $USER_ID				User.
  * @param string  $LID					Site.
  * @param integer $PRODUCT_ID			Product id.
  * @param string  $PRODUCT_NAME			Product name.
  * @param string CURRENCY				Currency.
  * @param array $arProduct				Iblock list.
  * @return array|false
  */
 function GetProductSku($USER_ID, $LID, $PRODUCT_ID, $PRODUCT_NAME = '', $CURRENCY = '', $arProduct = array())
 {
     $USER_ID = (int) $USER_ID;
     $PRODUCT_ID = (int) $PRODUCT_ID;
     if ($PRODUCT_ID <= 0) {
         return false;
     }
     $LID = trim($LID);
     if ($LID == '') {
         return false;
     }
     $PRODUCT_NAME = trim($PRODUCT_NAME);
     $arResult = array();
     $arOffers = array();
     static $arCacheGroups = array();
     if (!is_set($arCacheGroups[$USER_ID])) {
         $arCacheGroups[$USER_ID] = CUser::GetUserGroup($USER_ID);
     }
     $arGroups = $arCacheGroups[$USER_ID];
     if (empty($arProduct)) {
         $arProduct = CSaleProduct::GetProductListIblockInfo(array($PRODUCT_ID));
     }
     static $arOffersIblock = array();
     if (!is_set($arOffersIblock[$arProduct["IBLOCK_ID"]])) {
         $mxResult = CCatalogSKU::GetInfoByProductIBlock($arProduct["IBLOCK_ID"]);
         if (is_array($mxResult)) {
             $arOffersIblock[$arProduct["IBLOCK_ID"]] = $mxResult["IBLOCK_ID"];
         }
     }
     if ($arOffersIblock[$arProduct["IBLOCK_ID"]] > 0) {
         static $arCacheOfferProperties = array();
         if (!is_set($arCacheOfferProperties[$arOffersIblock[$arProduct["IBLOCK_ID"]]])) {
             $dbOfferProperties = CIBlock::GetProperties($arOffersIblock[$arProduct["IBLOCK_ID"]], array(), array("!XML_ID" => "CML2_LINK"));
             while ($arOfferProperties = $dbOfferProperties->Fetch()) {
                 $arCacheOfferProperties[$arOffersIblock[$arProduct["IBLOCK_ID"]]][] = $arOfferProperties;
             }
         }
         $arOfferProperties = $arCacheOfferProperties[$arOffersIblock[$arProduct["IBLOCK_ID"]]];
         $arIblockOfferProps = array();
         $arIblockOfferPropsFilter = array();
         if (is_array($arOfferProperties)) {
             foreach ($arOfferProperties as $val) {
                 $arIblockOfferProps[] = array("CODE" => $val["CODE"], "NAME" => $val["NAME"]);
                 $arIblockOfferPropsFilter[] = $val["CODE"];
             }
         }
         $arOffers = CIBlockPriceTools::GetOffersArray($arProduct["IBLOCK_ID"], $PRODUCT_ID, array("ID" => "DESC"), array("NAME"), $arIblockOfferPropsFilter, 0, array(), 1, array(), $USER_ID, $LID);
         $arSku = array();
         $minItemPrice = 0;
         $minItemPriceFormat = "";
         $arSkuId = array();
         $arImgSku = array();
         foreach ($arOffers as $arOffer) {
             $arSkuId[] = $arOffer['ID'];
         }
         if (!empty($arSkuId)) {
             $res = CIBlockElement::GetList(array(), array("ID" => $arSkuId), false, false, array("ID", "IBLOCK_ID", "NAME", "PREVIEW_PICTURE", "DETAIL_PICTURE", "DETAIL_PAGE_URL"));
             while ($arOfferImg = $res->GetNext()) {
                 $arImgSku[$arOfferImg["ID"]] = $arOfferImg;
             }
         }
         foreach ($arOffers as $arOffer) {
             $arPrice = CCatalogProduct::GetOptimalPrice($arOffer['ID'], 1, $arGroups, "N", array(), $LID);
             if (empty($arPrice)) {
                 break;
             } elseif (strlen($CURRENCY) > 0) {
                 $arPrice["PRICE"]["PRICE"] = CCurrencyRates::ConvertCurrency($arPrice["PRICE"]["PRICE"], $arPrice["PRICE"]["CURRENCY"], $CURRENCY);
                 if ($arPrice["DISCOUNT_PRICE"] > 0) {
                     $arPrice["DISCOUNT_PRICE"] = CCurrencyRates::ConvertCurrency($arPrice["DISCOUNT_PRICE"], $arPrice["PRICE"]["CURRENCY"], $CURRENCY);
                 }
                 $arPrice["PRICE"]["CURRENCY"] = $CURRENCY;
             }
             $arSkuTmp = array();
             $arOffer["CAN_BUY"] = "N";
             $arCatalogProduct = CCatalogProduct::GetByID($arOffer['ID']);
             if (!empty($arCatalogProduct)) {
                 if ($arCatalogProduct["CAN_BUY_ZERO"] != "Y" && ($arCatalogProduct["QUANTITY_TRACE"] == "Y" && doubleval($arCatalogProduct["QUANTITY"]) <= 0)) {
                     $arOffer["CAN_BUY"] = "N";
                 } else {
                     $arOffer["CAN_BUY"] = "Y";
                 }
             }
             $arSkuTmp["ImageUrl"] = '';
             if ($arOffer["CAN_BUY"] == "Y") {
                 $productImg = "";
                 if (isset($arImgSku[$arOffer['ID']]) && !empty($arImgSku[$arOffer['ID']])) {
                     if ('' == $PRODUCT_NAME) {
                         $PRODUCT_NAME = $arImgSku[$arOffer['ID']]["~NAME"];
                     }
                     if ($arImgSku[$arOffer['ID']]["PREVIEW_PICTURE"] != "") {
                         $productImg = $arImgSku[$arOffer['ID']]["PREVIEW_PICTURE"];
                     } elseif ($arImgSku[$arOffer['ID']]["DETAIL_PICTURE"] != "") {
                         $productImg = $arImgSku[$arOffer['ID']]["DETAIL_PICTURE"];
                     }
                     if ($productImg == "") {
                         if ($arProduct["PREVIEW_PICTURE"] != "") {
                             $productImg = $arProduct["PREVIEW_PICTURE"];
                         } elseif ($arProduct["DETAIL_PICTURE"] != "") {
                             $productImg = $arProduct["DETAIL_PICTURE"];
                         }
                     }
                     if ($productImg != "") {
                         $arFile = CFile::GetFileArray($productImg);
                         $productImg = CFile::ResizeImageGet($arFile, array('width' => 80, 'height' => 80), BX_RESIZE_IMAGE_PROPORTIONAL, false, false);
                         $arSkuTmp["ImageUrl"] = $productImg["src"];
                     }
                 }
             }
             if ($minItemPrice === 0 || $arPrice["DISCOUNT_PRICE"] < $minItemPrice) {
                 $minItemPrice = $arPrice["DISCOUNT_PRICE"];
                 $minItemPriceFormat = SaleFormatCurrency($arPrice["DISCOUNT_PRICE"], $arPrice["PRICE"]["CURRENCY"]);
             }
             foreach ($arIblockOfferProps as $arCode) {
                 if (array_key_exists($arCode["CODE"], $arOffer["PROPERTIES"])) {
                     if (is_array($arOffer["PROPERTIES"][$arCode["CODE"]]["VALUE"])) {
                         $arSkuTmp[] = implode("/", $arOffer["PROPERTIES"][$arCode["CODE"]]["VALUE"]);
                     } else {
                         $arSkuTmp[] = $arOffer["PROPERTIES"][$arCode["CODE"]]["VALUE"];
                     }
                 }
             }
             if (!empty($arCatalogProduct)) {
                 $arSkuTmp["BALANCE"] = $arCatalogProduct["QUANTITY"];
                 $arSkuTmp["WEIGHT"] = $arCatalogProduct["WEIGHT"];
                 $arSkuTmp["BARCODE_MULTI"] = $arCatalogProduct["BARCODE_MULTI"];
             } else {
                 $arSkuTmp["BALANCE"] = 0;
                 $arSkuTmp["WEIGHT"] = 0;
                 $arSkuTmp["BARCODE_MULTI"] = 'N';
             }
             $urlEdit = CIBlock::GetAdminElementEditLink($arOffer["IBLOCK_ID"], $arOffer['ID'], array('find_section_section' => 0, 'WF' => 'Y'));
             $discountPercent = 0;
             $arSkuTmp["USER_ID"] = $USER_ID;
             $arSkuTmp["ID"] = $arOffer["ID"];
             $arSkuTmp["NAME"] = CUtil::JSEscape($arOffer["NAME"]);
             $arSkuTmp["PRODUCT_NAME"] = CUtil::JSEscape($PRODUCT_NAME);
             $arSkuTmp["PRODUCT_ID"] = $PRODUCT_ID;
             $arSkuTmp["LID"] = CUtil::JSEscape($LID);
             $arSkuTmp["MIN_PRICE"] = $minItemPriceFormat;
             $arSkuTmp["URL_EDIT"] = $urlEdit;
             $arSkuTmp["DISCOUNT_PRICE"] = '';
             $arSkuTmp["DISCOUNT_PRICE_FORMATED"] = '';
             $arSkuTmp["PRICE"] = $arPrice["PRICE"]["PRICE"];
             $arSkuTmp["PRICE_FORMATED"] = CCurrencyLang::CurrencyFormat($arPrice["PRICE"]["PRICE"], $arPrice["PRICE"]["CURRENCY"], false);
             $arPriceType = GetCatalogGroup($arPrice["PRICE"]["CATALOG_GROUP_ID"]);
             $arSkuTmp["PRICE_TYPE"] = $arPriceType["NAME_LANG"];
             $arSkuTmp["VAT_RATE"] = $arPrice["PRICE"]["VAT_RATE"];
             if (count($arPrice["DISCOUNT"]) > 0) {
                 $discountPercent = IntVal($arPrice["DISCOUNT"]["VALUE"]);
                 $arSkuTmp["DISCOUNT_PRICE"] = $arPrice["DISCOUNT_PRICE"];
                 $arSkuTmp["DISCOUNT_PRICE_FORMATED"] = CCurrencyLang::CurrencyFormat($arPrice["DISCOUNT_PRICE"], $arPrice["PRICE"]["CURRENCY"], false);
             }
             $arCurFormat = CCurrencyLang::GetCurrencyFormat($arPrice["PRICE"]["CURRENCY"]);
             $arSkuTmp["VALUTA_FORMAT"] = str_replace("#", '', $arCurFormat["FORMAT_STRING"]);
             $arSkuTmp["DISCOUNT_PERCENT"] = $discountPercent;
             $arSkuTmp["CURRENCY"] = $arPrice["PRICE"]["CURRENCY"];
             $arSkuTmp["CAN_BUY"] = $arOffer["CAN_BUY"];
             $arSku[] = $arSkuTmp;
         }
         if ((!is_array($arIblockOfferProps) || empty($arIblockOfferProps)) && is_array($arSku) && !empty($arSku)) {
             $arIblockOfferProps[0] = array("CODE" => "TITLE", "NAME" => GetMessage("SKU_TITLE"));
             foreach ($arSku as $key => $val) {
                 $arSku[$key][0] = $val["NAME"];
             }
         }
         $arResult["SKU_ELEMENTS"] = $arSku;
         $arResult["SKU_PROPERTIES"] = $arIblockOfferProps;
         $arResult["OFFERS_IBLOCK_ID"] = $arOffersIblock[$arProduct["IBLOCK_ID"]];
     }
     //if OFFERS_IBLOCK_ID > 0
     return $arResult;
 }
示例#9
0
    $arThemesList = array('blue' => GetMessage('CP_BCT_TPL_THEME_BLUE'), 'green' => GetMessage('CP_BCT_TPL_THEME_GREEN'), 'red' => GetMessage('CP_BCT_TPL_THEME_RED'), 'wood' => GetMessage('CP_BCT_TPL_THEME_WOOD'), 'yellow' => GetMessage('CP_BCT_TPL_THEME_YELLOW'), 'black' => GetMessage('CP_BCT_TPL_THEME_BLACK'));
    $dir = trim(preg_replace("'[\\\\/]+'", "/", dirname(__FILE__) . '/' . $arCurrentValues['VIEW_MODE'] . '/themes/'));
    if (is_dir($dir)) {
        foreach ($arThemesList as $themeID => $themeName) {
            if (!is_file($dir . $themeID . '/style.css')) {
                continue;
            }
            $arThemes[$themeID] = $themeName;
        }
    }
    $arTemplateParameters['TEMPLATE_THEME'] = array('PARENT' => 'VISUAL', 'NAME' => GetMessage("CP_BCT_TPL_TEMPLATE_THEME"), 'TYPE' => 'LIST', 'VALUES' => $arThemes, 'DEFAULT' => 'blue', 'ADDITIONAL_VALUES' => 'Y');
}
$arSKU = false;
$boolSKU = false;
if ($boolCatalog && (isset($arCurrentValues['IBLOCK_ID']) && 0 < intval($arCurrentValues['IBLOCK_ID']))) {
    $arSKU = CCatalogSKU::GetInfoByProductIBlock($arCurrentValues['IBLOCK_ID']);
    $boolSKU = !empty($arSKU) && is_array($arSKU);
}
if ($boolSKU) {
    $arDisplayModeList = array('N' => GetMessage('CP_BCT_TPL_DML_SIMPLE'), 'Y' => GetMessage('CP_BCT_TPL_DML_EXT'));
    $arTemplateParameters['PRODUCT_DISPLAY_MODE'] = array('PARENT' => 'VISUAL', 'NAME' => GetMessage('CP_BCT_TPL_PRODUCT_DISPLAY_MODE'), 'TYPE' => 'LIST', 'MULTIPLE' => 'N', 'ADDITIONAL_VALUES' => 'N', 'REFRESH' => 'Y', 'DEFAULT' => 'N', 'VALUES' => $arDisplayModeList);
}
if (isset($arCurrentValues['IBLOCK_ID']) && 0 < intval($arCurrentValues['IBLOCK_ID'])) {
    $arAllPropList = array();
    $arFilePropList = array('-' => GetMessage('CP_BCT_TPL_PROP_EMPTY'));
    $arListPropList = array('-' => GetMessage('CP_BCT_TPL_PROP_EMPTY'));
    $rsProps = CIBlockProperty::GetList(array('SORT' => 'ASC', 'ID' => 'ASC'), array('IBLOCK_ID' => $arCurrentValues['IBLOCK_ID'], 'ACTIVE' => 'Y'));
    while ($arProp = $rsProps->Fetch()) {
        $strPropName = '[' . $arProp['ID'] . ']' . ('' != $arProp['CODE'] ? '[' . $arProp['CODE'] . ']' : '') . ' ' . $arProp['NAME'];
        if ('' == $arProp['CODE']) {
            $arProp['CODE'] = $arProp['ID'];
示例#10
0
 public function obtainBasketPropsSKU(&$arBasketItems, $arSkuProps, $arParents)
 {
     $arRes = array();
     $arSkuIblockID = array();
     if (self::isNonemptyArray($arBasketItems) && self::isNonemptyArray($arParents)) {
         foreach ($arBasketItems as &$arItem) {
             // catalog-specific logic farther
             if (!$this->cameFromCatalog($arItem)) {
                 continue;
             }
             if (array_key_exists($arItem["PRODUCT_ID"], $arParents)) {
                 $arSKU = CCatalogSKU::GetInfoByProductIBlock($arParents[$arItem["PRODUCT_ID"]]["IBLOCK_ID"]);
                 if (!array_key_exists($arSKU["IBLOCK_ID"], $arSkuIblockID)) {
                     $arSkuIblockID[$arSKU["IBLOCK_ID"]] = $arSKU;
                 }
                 $arItem["IBLOCK_ID"] = $arSKU["IBLOCK_ID"];
                 $arItem["SKU_PROPERTY_ID"] = $arSKU["SKU_PROPERTY_ID"];
             }
         }
         unset($arItem);
         if ($this->useIBlock) {
             if (!self::isNonemptyArray($arSkuProps)) {
                 $arSkuProps = array();
             }
             foreach ($arSkuIblockID as $skuIblockID => $arSKU) {
                 // possible props values
                 $rsProps = CIBlockProperty::GetList(array('SORT' => 'ASC', 'ID' => 'ASC'), array('IBLOCK_ID' => $skuIblockID, 'ACTIVE' => 'Y'));
                 while ($arProp = $rsProps->Fetch()) {
                     if ($arProp['PROPERTY_TYPE'] == 'L' || $arProp['PROPERTY_TYPE'] == 'E' || $arProp['PROPERTY_TYPE'] == 'S' && $arProp['USER_TYPE'] == 'directory') {
                         if ($arProp['XML_ID'] == 'CML2_LINK') {
                             continue;
                         }
                         if (!in_array($arProp['CODE'], $arSkuProps)) {
                             continue;
                         }
                         $arRes[$skuIblockID][$arProp['ID']] = array('ID' => $arProp['ID'], 'CODE' => $arProp['CODE'], 'NAME' => $arProp['NAME'], 'TYPE' => $arProp['PROPERTY_TYPE'], 'VALUES' => array());
                         if ($arProp['PROPERTY_TYPE'] == 'L') {
                             $arValues = array();
                             $rsPropEnums = CIBlockProperty::GetPropertyEnum($arProp['ID']);
                             while ($arEnum = $rsPropEnums->Fetch()) {
                                 $arValues[$arEnum['ID']] = array('ID' => $arEnum['ID'], 'NAME' => $arEnum['VALUE'], 'PICT' => false);
                             }
                             $arRes[$skuIblockID][$arProp['ID']]['VALUES'] = $arValues;
                         } elseif ($arProp['PROPERTY_TYPE'] == 'E') {
                             $arValues = array();
                             $rsPropEnums = CIBlockElement::GetList(array('SORT' => 'ASC'), array('IBLOCK_ID' => $arProp['LINK_IBLOCK_ID'], 'ACTIVE' => 'Y'), false, false, array('ID', 'NAME', 'PREVIEW_PICTURE'));
                             while ($arEnum = $rsPropEnums->Fetch()) {
                                 $arEnum['PREVIEW_PICTURE'] = CFile::GetFileArray($arEnum['PREVIEW_PICTURE']);
                                 if (!is_array($arEnum['PREVIEW_PICTURE'])) {
                                     continue;
                                 }
                                 $productImg = CFile::ResizeImageGet($arEnum['PREVIEW_PICTURE'], array('width' => 80, 'height' => 80), BX_RESIZE_IMAGE_PROPORTIONAL, false, false);
                                 $arEnum['PREVIEW_PICTURE']['SRC'] = $productImg['src'];
                                 $arValues[$arEnum['ID']] = array('ID' => $arEnum['ID'], 'NAME' => $arEnum['NAME'], 'SORT' => $arEnum['SORT'], 'PICT' => $arEnum['PREVIEW_PICTURE']);
                             }
                             $arRes[$skuIblockID][$arProp['ID']]['VALUES'] = $arValues;
                         } elseif ($arProp['PROPERTY_TYPE'] == 'S' && $arProp['USER_TYPE'] == 'directory') {
                             $arValues = array();
                             if ($this->useHL) {
                                 $hlblock = HL\HighloadBlockTable::getList(array("filter" => array("TABLE_NAME" => $arProp["USER_TYPE_SETTINGS"]["TABLE_NAME"])))->fetch();
                                 if ($hlblock) {
                                     $entity = HL\HighloadBlockTable::compileEntity($hlblock);
                                     $entity_data_class = $entity->getDataClass();
                                     $rsData = $entity_data_class::getList();
                                     while ($arData = $rsData->fetch()) {
                                         $arValues[$arData['ID']] = array('ID' => $arData['ID'], 'NAME' => $arData['UF_NAME'], 'SORT' => $arData['UF_SORT'], 'FILE' => $arData['UF_FILE'], 'PICT' => '', 'XML_ID' => $arData['UF_XML_ID']);
                                     }
                                     $arRes[$skuIblockID][$arProp['ID']]['VALUES'] = $arValues;
                                 }
                             }
                         }
                     }
                 }
             }
             foreach ($arBasketItems as &$arItem) {
                 // catalog-specific logic farther: iblocks, catalogs and other friends
                 if (!$this->cameFromCatalog($arItem)) {
                     continue;
                 }
                 $arSelectSkuProps = array();
                 foreach ($arSkuProps as $prop) {
                     $arSelectSkuProps[] = "PROPERTY_" . $prop;
                 }
                 if (isset($arItem["IBLOCK_ID"]) && intval($arItem["IBLOCK_ID"]) > 0 && array_key_exists($arItem["IBLOCK_ID"], $arRes)) {
                     $arItem["SKU_DATA"] = $arRes[$arItem["IBLOCK_ID"]];
                     $arUsedValues = array();
                     $arTmpRes = array();
                     $arOfFilter = array("IBLOCK_ID" => $arItem["IBLOCK_ID"], "PROPERTY_" . $arSkuIblockID[$arItem["IBLOCK_ID"]]["SKU_PROPERTY_ID"] => $arParents[$arItem["PRODUCT_ID"]]["PRODUCT_ID"]);
                     $rsOffers = CIBlockElement::GetList(array(), $arOfFilter, false, false, array_merge(array("ID"), $arSelectSkuProps));
                     while ($arOffer = $rsOffers->GetNext()) {
                         foreach ($arSkuProps as $prop) {
                             if (!empty($arOffer["PROPERTY_" . $prop . "_VALUE"]) && (!is_array($arUsedValues[$arItem["PRODUCT_ID"]][$prop]) || !in_array($arOffer["PROPERTY_" . $prop . "_VALUE"], $arUsedValues[$arItem["PRODUCT_ID"]][$prop]))) {
                                 $arUsedValues[$arItem["PRODUCT_ID"]][$prop][] = $arOffer["PROPERTY_" . $prop . "_VALUE"];
                             }
                         }
                     }
                     if (!empty($arUsedValues)) {
                         // add only used values to the item SKU_DATA
                         foreach ($arRes[$arItem["IBLOCK_ID"]] as $propId => $arProp) {
                             if (!array_key_exists($arProp["CODE"], $arUsedValues[$arItem["PRODUCT_ID"]])) {
                                 continue;
                             }
                             $propValues = array();
                             $skuType = '';
                             foreach ($arProp["VALUES"] as $valId => $arValue) {
                                 // properties of various type have different values in the used values data
                                 if ($arProp["TYPE"] == "L" && in_array($arValue["NAME"], $arUsedValues[$arItem["PRODUCT_ID"]][$arProp["CODE"]]) || $arProp["TYPE"] == "E" && in_array($arValue["ID"], $arUsedValues[$arItem["PRODUCT_ID"]][$arProp["CODE"]]) || $arProp["TYPE"] == "S" && in_array($arValue["XML_ID"], $arUsedValues[$arItem["PRODUCT_ID"]][$arProp["CODE"]])) {
                                     if ($arProp["TYPE"] == "S") {
                                         $arTmpFile = CFile::GetFileArray($arValue["FILE"]);
                                         $tmpImg = CFile::ResizeImageGet($arTmpFile, array('width' => 30, 'height' => 30), BX_RESIZE_IMAGE_PROPORTIONAL, true);
                                         $arValue['PICT'] = array_change_key_case($tmpImg, CASE_UPPER);
                                         $skuType = 'image';
                                     } else {
                                         $skuType = 'link';
                                     }
                                     $propValues[$valId] = $arValue;
                                 }
                             }
                             $arTmpRes['n' . $propId] = array('CODE' => $arProp["CODE"], 'NAME' => $arProp["NAME"], 'SKU_TYPE' => $skuType, 'VALUES' => $propValues);
                         }
                     }
                     $arItem["SKU_DATA"] = $arTmpRes;
                 }
                 if (self::isNonemptyArray($arItem['PROPS'])) {
                     foreach ($arItem['PROPS'] as $v => $prop) {
                         // search for sku property that matches current one
                         // establishing match based on codes even if the code may not set
                         $code = $prop['CODE'];
                         if (self::isNonemptyArray($arItem['SKU_DATA'])) {
                             foreach ($arItem['SKU_DATA'] as $spIndex => $skuProp) {
                                 if ($skuProp['CODE'] == $code) {
                                     $arItem['PROPS'][$v]['SKU_PROP'] = $spIndex;
                                     $arItem['PROPS'][$v]['SKU_TYPE'] = $skuProp['SKU_TYPE'];
                                     if (self::isNonemptyArray($skuProp['VALUES'])) {
                                         foreach ($skuProp['VALUES'] as $spValue) {
                                             if ($skuProp['SKU_TYPE'] == 'image') {
                                                 $match = $prop["VALUE"] == $spValue["NAME"] || $prop["VALUE"] == $spValue["XML_ID"];
                                             } else {
                                                 $match = $prop["VALUE"] == $spValue["NAME"];
                                             }
                                             // otherwise - the other
                                             if ($match) {
                                                 $arItem['PROPS'][$v]['SKU_VALUE'] = $spValue;
                                                 break;
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
 }
示例#11
0
<?php

define("NO_KEEP_STATISTIC", true);
// Не собираем стату по действиям AJAX
require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php";
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
    die;
}
if (CModule::IncludeModule("iblock") && CModule::IncludeModule("catalog")) {
    if (isset($_POST['id']) && isset($_POST['ib']) && isset($_POST['fl'])) {
        $ids = $_POST['id'];
        $IBLOCK_ID = $_POST['ib'];
        $f = fopen($_POST['fl'], "a");
        $arInfo = CCatalogSKU::GetInfoByProductIBlock($IBLOCK_ID);
        foreach ($ids as $id) {
            $rsOffers = CIBlockElement::GetList(array(), array('IBLOCK_ID' => $arInfo['IBLOCK_ID'], 'PROPERTY_' . $arInfo['SKU_PROPERTY_ID'] => $id));
            while ($arOffer = $rsOffers->GetNextElement()) {
                $el = $arOffer->GetFields();
                $el["PROPERTIES"] = $arOffer->GetProperties();
                $NewCnt = $id . '|' . $el['ID'] . '|' . $el['ACTIVE'] . '|' . $el['NAME'] . '|' . $el['XML_ID'] . '|' . $el['DETAIL_PAGE_URL'] . '|';
                //$NewCnt.=$el['PROPERTIES']['CML2_2']['VALUE'].'|'.$el['PROPERTIES']['COLOR']['VALUE'].'|'.$el['PROPERTIES']['CML2_1']['VALUE'].'|';
                $NewCnt .= chr(13);
                $NewCnt = iconv('UTF-8', "windows-1251", $NewCnt);
                fwrite($f, $NewCnt);
            }
        }
        fclose($f);
        //print_r($ids);
        echo true;
    } else {
        echo md5('GET OUT!!!');
示例#12
0
	public static function GetInheritedPropertyTemplateElementMenuItems($iblock_id, $action_function, $menuID, $inputID = "")
	{
		$result = array();
		$result["this"] = array(
			"TEXT" => GetMessage("IB_COMPLIB_POPUP_ELEMENT"),
			"MENU" => array(
				array(
					"TEXT" => GetMessage("IB_COMPLIB_POPUP_ELEMENT_NAME"),
					"ONCLICK" => "$action_function('{=this.Name}', '$menuID', '$inputID')",
				),
				array(
					"TEXT" => GetMessage("IB_COMPLIB_POPUP_ELEMENT_LOWER_NAME"),
					"ONCLICK" => "$action_function('{=lower this.Name}', '$menuID', '$inputID')",
				),
				array(
					"TEXT" => GetMessage("IB_COMPLIB_POPUP_ELEMENT_CODE"),
					"ONCLICK" => "$action_function('{=this.Code}', '$menuID', '$inputID')",
				),
				array(
					"TEXT" => GetMessage("IB_COMPLIB_POPUP_ELEMENT_PREVIEW_TEXT"),
					"ONCLICK" => "$action_function('{=this.PreviewText}', '$menuID', '$inputID')",
				),
				array(
					"TEXT" => GetMessage("IB_COMPLIB_POPUP_ELEMENT_DETAIL_TEXT"),
					"ONCLICK" => "$action_function('{=this.DetailText}', '$menuID', '$inputID')",
				),
			),
		);
		if ($iblock_id > 0)
		{
			$result["properties"] = array(
				"TEXT" => GetMessage("IB_COMPLIB_POPUP_PROPERTIES"),
				"MENU" => array(
				),
			);
			$rsProperty = CIBlockProperty::GetList(array(), array("IBLOCK_ID" => $iblock_id));
			while($property = $rsProperty->fetch())
			{
				if ($property["PROPERTY_TYPE"] != "F")
				{
					$result["properties"]["MENU"][] = array(
						"TEXT" => $property["NAME"],
						"ONCLICK" => "$action_function('{=this.property.".($property["CODE"]!=""? $property["CODE"]: $property["ID"])."}', '$menuID', '$inputID')",
					);
				}
			}
		}
		$result["parent"] = array(
			"TEXT" => GetMessage("IB_COMPLIB_POPUP_PARENT"),
			"MENU" => array(
				array(
					"TEXT" => GetMessage("IB_COMPLIB_POPUP_PARENT_NAME"),
					"ONCLICK" => "$action_function('{=parent.Name}', '$menuID', '$inputID')",
				),
				array(
					"TEXT" => GetMessage("IB_COMPLIB_POPUP_PARENT_CODE"),
					"ONCLICK" => "$action_function('{=parent.Code}', '$menuID', '$inputID')",
				),
				array(
					"TEXT" => GetMessage("IB_COMPLIB_POPUP_PARENT_TEXT"),
					"ONCLICK" => "$action_function('{=parent.PreviewText}', '$menuID', '$inputID')",
				),
			),
		);
		$result["iblock"] = array(
			"TEXT" => GetMessage("IB_COMPLIB_POPUP_IBLOCK"),
			"MENU" => array(
				array(
					"TEXT" => GetMessage("IB_COMPLIB_POPUP_IBLOCK_NAME"),
					"ONCLICK" => "$action_function('{=iblock.Name}', '$menuID', '$inputID')",
				),
				array(
					"TEXT" => GetMessage("IB_COMPLIB_POPUP_IBLOCK_CODE"),
					"ONCLICK" => "$action_function('{=iblock.Code}', '$menuID', '$inputID')",
				),
				array(
					"TEXT" => GetMessage("IB_COMPLIB_POPUP_IBLOCK_TEXT"),
					"ONCLICK" => "$action_function('{=iblock.PreviewText}', '$menuID', '$inputID')",
				),
			),
		);
		if (\Freetrix\Main\Loader::includeModule('catalog'))
		{
			$arCatalog = \CCatalogSKU::GetInfoByProductIBlock($iblock_id);
			if (is_array($arCatalog))
			{
				$result["sku_properties"] = array(
					"TEXT" => GetMessage("IB_COMPLIB_POPUP_SKU_PROPERTIES"),
					"MENU" => array(
					),
				);
				$rsProperty = CIBlockProperty::GetList(array(), array("IBLOCK_ID" => $arCatalog["IBLOCK_ID"]));
				while($property = $rsProperty->fetch())
				{
					if ($property["PROPERTY_TYPE"] != "F")
					{
						$result["sku_properties"]["MENU"][] = array(
							"TEXT" => $property["NAME"],
							"ONCLICK" => "$action_function('{=concat {=distinct this.catalog.sku.property.".($property["CODE"]!=""? $property["CODE"]: $property["ID"])." \", \"}}', '$menuID', '$inputID')",
						);
					}
				}
				$result["sku_price"] = array(
					"TEXT" => GetMessage("IB_COMPLIB_POPUP_SKU_PRICE"),
					"MENU" => array(),
				);
				$rsPrice = CCatalogGroup::GetListEx(array("SORT"=>"ASC"), array(), false, false, array("ID", "NAME"));
				while ($price = $rsPrice->Fetch())
				{
					if (preg_match("/^[a-zA-Z0-9]+\$/", $price["NAME"]))
					{
						$result["sku_price"]["MENU"][] = array(
							"TEXT" => GetMessage("IB_COMPLIB_POPUP_MIN_PRICE")." ".$price["NAME"],
							"ONCLICK" => "$action_function('{=min this.catalog.sku.price.".$price["NAME"]."}', '$menuID', '$inputID')",
						);
						$result["sku_price"]["MENU"][] = array(
							"TEXT" => GetMessage("IB_COMPLIB_POPUP_MAX_PRICE")." ".$price["NAME"],
							"ONCLICK" => "$action_function('{=max this.catalog.sku.price.".$price["NAME"]."}', '$menuID', '$inputID')",
						);
					}
					else
					{
						$result["sku_price"]["MENU"][] = array(
							"TEXT" => GetMessage("IB_COMPLIB_POPUP_MIN_PRICE")." ".$price["NAME"],
							"ONCLICK" => "$action_function('{=min this.catalog.sku.price.".$price["ID"]."}', '$menuID', '$inputID')",
						);
						$result["sku_price"]["MENU"][] = array(
							"TEXT" => GetMessage("IB_COMPLIB_POPUP_MAX_PRICE")." ".$price["NAME"],
							"ONCLICK" => "$action_function('{=max this.catalog.sku.price.".$price["ID"]."}', '$menuID', '$inputID')",
						);
					}
				}
			}

			$result["catalog"] = array(
				"TEXT" => GetMessage("IB_COMPLIB_POPUP_CATALOG"),
				"MENU" => array(
					array(
						"TEXT" => GetMessage("IB_COMPLIB_POPUP_CATALOG_WEIGHT"),
						"ONCLICK" => "$action_function('{=this.catalog.weight}', '$menuID', '$inputID')",
					),
					array(
						"TEXT" => GetMessage("IB_COMPLIB_POPUP_CATALOG_MEASURE"),
						"ONCLICK" => "$action_function('{=this.catalog.measure}', '$menuID', '$inputID')",
					),
				),
			);
			$result["price"] = array(
				"TEXT" => GetMessage("IB_COMPLIB_POPUP_PRICE"),
				"MENU" => array(),
			);
			$rsPrice = CCatalogGroup::GetListEx(array("SORT"=>"ASC"), array(), false, false, array("ID", "NAME"));
			while ($price = $rsPrice->Fetch())
			{
				if (preg_match("/^[a-zA-Z0-9]+\$/", $price["NAME"]))
					$result["price"]["MENU"][] = array(
						"TEXT" => $price["NAME"],
						"ONCLICK" => "$action_function('{=this.catalog.price.".$price["NAME"]."}', '$menuID', '$inputID')",
					);
				else
					$result["price"]["MENU"][] = array(
						"TEXT" => $price["NAME"],
						"ONCLICK" => "$action_function('{=this.catalog.price.".$price["ID"]."}', '$menuID', '$inputID')",
					);
			}
			$result["store"] = array(
				"TEXT" => GetMessage("IB_COMPLIB_POPUP_STORE"),
				"MENU" => array(),
			);
			$rsStore = CCatalogStore::GetList();
			while ($store = $rsStore->Fetch())
			{
				$result["store"]["MENU"][] = array(
					"TEXT" => $store["TITLE"],
					"ONCLICK" => "$action_function('{=catalog.store.".$store["ID"].".name}', '$menuID', '$inputID')",
				);
			}
		}
		$result["misc"] = array(
			"TEXT" => GetMessage("IB_COMPLIB_POPUP_MISC"),
			"MENU" => array(),
		);
		$result["misc"]["MENU"][] =  array(
			"TEXT" => GetMessage("IB_COMPLIB_POPUP_SECTIONS_PATH"),
			"ONCLICK" => "$action_function('{=concat this.sections.name \" / \"}', '$menuID', '$inputID')",
		);
		if (\Freetrix\Main\Loader::includeModule('catalog'))
		{
			$result["misc"]["MENU"][] =  array(
				"TEXT" => GetMessage("IB_COMPLIB_POPUP_STORE_LIST"),
				"ONCLICK" => "$action_function('{=concat catalog.store \", \"}', '$menuID', '$inputID')",
			);
		}
		$r = array();
		foreach($result as $category)
		{
			if (!empty($category) && !empty($category["MENU"]))
			{
				$r[] = $category;
			}
		}
		return $r;
	}
示例#13
0
 protected function getOffersCatalog()
 {
     if ($this->offersCatalog === null) {
         $this->offersCatalog = \CCatalogSKU::GetInfoByProductIBlock($this->getIblockId());
     }
     return $this->offersCatalog;
 }
示例#14
0
				'TITLE' => $storeName,
				'PHONE' => $storePhone,
				'SCHEDULE' => $storeSchedule,
				'AMOUNT' => $amount,
				'ELEMENT_ID' => $arProp["ELEMENT_ID"],
			),$numAmount);
	}

	$isProductExistSKU = CCatalogSKU::IsExistOffers($arParams["ELEMENT_ID"]);
	$arResult["IS_SKU"] = false;
	if($isProductExistSKU)
	{
		$arSkuElements = $arSkuInfo = $arResultSkuId = array();
		$intIBlockID = (int)CIBlockElement::GetIBlockByID($arParams["ELEMENT_ID"]);
		if($intIBlockID > 0)
			$arSkuInfo = CCatalogSKU::GetInfoByProductIBlock($intIBlockID);
		if(!empty($arSkuInfo) && is_array($arSkuInfo))
		{
			$dbAllSkuElements = CIBlockElement::GetList(
				array(),
				array('IBLOCK_ID' => $arSkuInfo['IBLOCK_ID'], '=PROPERTY_'.$arSkuInfo['SKU_PROPERTY_ID'] => $arParams["ELEMENT_ID"]),
				false,
				false,
				array('ID')
			);
			while($arAllSkuElements = $dbAllSkuElements->fetch())
			{
				$arSkuElements[] = $arAllSkuElements;
			}
		}
		foreach($arSkuElements as $skuId)
	public static function getTreeProperties($skuInfo, $propertiesCodes, $defaultFields = array())
	{
		$requireFields = array(
			'ID',
			'UF_XML_ID',
			'UF_NAME',
		);

		$result = array();
		if (empty($skuInfo))
			return $result;
		if (!is_array($skuInfo))
		{
			$skuInfo = (int)$skuInfo;
			if ($skuInfo <= 0)
				return $result;
			if (self::$catalogIncluded === null)
				self::$catalogIncluded = Loader::includeModule('catalog');
			if (!self::$catalogIncluded)
				return $result;
			$skuInfo = CCatalogSKU::GetInfoByProductIBlock($skuInfo);
			if (empty($skuInfo))
				return $result;
		}
		if (empty($propertiesCodes) || !is_array($propertiesCodes))
			return $result;

		$showMode = '';

		$propertyIterator = PropertyTable::getList(array(
			'select' => array(
				'ID', 'IBLOCK_ID', 'CODE', 'NAME', 'SORT', 'LINK_IBLOCK_ID', 'PROPERTY_TYPE', 'USER_TYPE', 'USER_TYPE_SETTINGS'
			),
			'filter' => array(
				'IBLOCK_ID' => $skuInfo['IBLOCK_ID'],
				'PROPERTY_TYPE' => array(
					PropertyTable::TYPE_LIST,
					PropertyTable::TYPE_ELEMENT,
					PropertyTable::TYPE_STRING
				),
				'ACTIVE' => 'Y', 'MULTIPLE' => 'N'
			),
			'order' => array(
				'SORT' => 'ASC', 'ID' => 'ASC'
			)
		));
		while ($propInfo = $propertyIterator->fetch())
		{
			$propInfo['ID'] = (int)$propInfo['ID'];
			if ($propInfo['ID'] == $skuInfo['SKU_PROPERTY_ID'])
				continue;
			$propInfo['CODE'] = (string)$propInfo['CODE'];
			if ($propInfo['CODE'] === '')
				$propInfo['CODE'] = $propInfo['ID'];
			if (!in_array($propInfo['CODE'], $propertiesCodes))
				continue;
			$propInfo['SORT'] = (int)$propInfo['SORT'];
			$propInfo['USER_TYPE'] = (string)$propInfo['USER_TYPE'];
			if ($propInfo['PROPERTY_TYPE'] == PropertyTable::TYPE_STRING)
			{
				if ('directory' != $propInfo['USER_TYPE'])
					continue;
				$propInfo['USER_TYPE_SETTINGS'] = (string)$propInfo['USER_TYPE_SETTINGS'];
				if ($propInfo['USER_TYPE_SETTINGS'] == '')
					continue;
				$propInfo['USER_TYPE_SETTINGS'] = unserialize($propInfo['USER_TYPE_SETTINGS']);
				if (!isset($propInfo['USER_TYPE_SETTINGS']['TABLE_NAME']) || empty($propInfo['USER_TYPE_SETTINGS']['TABLE_NAME']))
					continue;
				if (self::$highLoadInclude === null)
					self::$highLoadInclude = Loader::includeModule('highloadblock');
				if (!self::$highLoadInclude)
					continue;

				$highBlock = HighloadBlockTable::getList(array(
					'filter' => array('TABLE_NAME' => $propInfo['USER_TYPE_SETTINGS']['TABLE_NAME'])
				))->fetch();
				if (!isset($highBlock['ID']))
					continue;

				$entity = HighloadBlockTable::compileEntity($highBlock);
				$entityDataClass = $entity->getDataClass();
				$fieldsList = $entityDataClass::getEntity()->getFields();
				if (empty($fieldsList))
					continue;

				$flag = true;
				foreach ($requireFields as &$fieldCode)
				{
					if (!isset($fieldsList[$fieldCode]) || empty($fieldsList[$fieldCode]))
					{
						$flag = false;
						break;
					}
				}
				unset($fieldCode);
				if (!$flag)
					continue;
				$propInfo['USER_TYPE_SETTINGS']['FIELDS_MAP'] = $fieldsList;
				$propInfo['USER_TYPE_SETTINGS']['ENTITY'] = $entity;
			}
			switch ($propInfo['PROPERTY_TYPE'])
			{
				case PropertyTable::TYPE_ELEMENT:
					$showMode = 'PICT';
					break;
				case PropertyTable::TYPE_LIST:
					$showMode = 'TEXT';
					break;
				case PropertyTable::TYPE_STRING:
					$showMode = (isset($fieldsList['UF_FILE']) ? 'PICT' : 'TEXT');
					break;
			}
			$treeProp = array(
				'ID' => $propInfo['ID'],
				'CODE' => $propInfo['CODE'],
				'NAME' => $propInfo['NAME'],
				'SORT' => $propInfo['SORT'],
				'PROPERTY_TYPE' => $propInfo['PROPERTY_TYPE'],
				'USER_TYPE' => $propInfo['USER_TYPE'],
				'LINK_IBLOCK_ID' => $propInfo['LINK_IBLOCK_ID'],
				'USER_TYPE_SETTINGS' => $propInfo['USER_TYPE_SETTINGS'],
				'VALUES' => array(),
				'SHOW_MODE' => $showMode,
				'DEFAULT_VALUES' => array(
					'PICT' => false,
					'NAME' => '-'
				)
			);
			if ($showMode == 'PICT')
			{
				if (isset($defaultFields['PICT']))
				{
					$treeProp['DEFAULT_VALUES']['PICT'] = $defaultFields['PICT'];
				}
			}
			if (isset($defaultFields['NAME']))
			{
				$treeProp['DEFAULT_VALUES']['NAME'] = $defaultFields['NAME'];
			}
			$result[$treeProp['CODE']] = $treeProp;
		}
		return $result;
	}
示例#16
0
			if($arr["MULTIPLE"] == "Y")
				$arProperty_X[$arr["CODE"]] = "[".$arr["CODE"]."] ".$arr["NAME"];
			elseif($arr["PROPERTY_TYPE"] == "L")
				$arProperty_X[$arr["CODE"]] = "[".$arr["CODE"]."] ".$arr["NAME"];
			elseif($arr["PROPERTY_TYPE"] == "E" && $arr["LINK_IBLOCK_ID"] > 0)
				$arProperty_X[$arr["CODE"]] = "[".$arr["CODE"]."] ".$arr["NAME"];
		}
	}
}
$offers = false;
$OFFERS_IBLOCK_ID = 0;
$arProperty_Offers = array();
$arProperty_OffersWithoutFile = array();
if ($boolCatalog && isset($arCurrentValues["IBLOCK_ID"]))
{
	$offers = CCatalogSKU::GetInfoByProductIBlock($arCurrentValues["IBLOCK_ID"]);
	if (!empty($offers))
	{
		$OFFERS_IBLOCK_ID = $offers['IBLOCK_ID'];
		$rsProp = CIBlockProperty::GetList(array("sort"=>"asc", "name"=>"asc"), array("IBLOCK_ID"=>$OFFERS_IBLOCK_ID, "ACTIVE"=>"Y"));
		while($arr=$rsProp->Fetch())
		{
			$arr['ID'] = intval($arr['ID']);
			if ($offers['SKU_PROPERTY_ID'] == $arr['ID'])
				continue;
			$strPropName = '['.$arr['ID'].']'.('' != $arr['CODE'] ? '['.$arr['CODE'].']' : '').' '.$arr['NAME'];
			if ('' == $arr['CODE'])
				$arr['CODE'] = $arr['ID'];
			$arProperty_Offers[$arr["CODE"]] = $strPropName;
			if ('F' != $arr['PROPERTY_TYPE'])
				$arProperty_OffersWithoutFile[$arr["CODE"]] = $strPropName;
示例#17
0
 public function OnBeforeIBlockElementDelete($ID)
 {
     global $APPLICATION;
     $ID = (int) $ID;
     if (0 < $ID) {
         $intIBlockID = (int) CIBlockElement::GetIBlockByID($ID);
         if (0 < $intIBlockID) {
             $arCatalog = CCatalogSKU::GetInfoByProductIBlock($intIBlockID);
             if (!empty($arCatalog) && is_array($arCatalog) && 0 < $arCatalog['IBLOCK_ID'] && 0 < $arCatalog['SKU_PROPERTY_ID']) {
                 $arFilter = array('IBLOCK_ID' => $arCatalog['IBLOCK_ID'], '=PROPERTY_' . $arCatalog['SKU_PROPERTY_ID'] => $ID);
                 $rsOffers = CIBlockElement::GetList(array(), $arFilter, false, false, array('ID', 'IBLOCK_ID'));
                 while ($arOffer = $rsOffers->Fetch()) {
                     foreach (GetModuleEvents("iblock", "OnBeforeIBlockElementDelete", true) as $arEvent) {
                         if (ExecuteModuleEventEx($arEvent, array($arOffer['ID'])) === false) {
                             $err = Loc::getMessage("BT_MOD_CATALOG_ERR_BEFORE_DEL_TITLE") . ' ' . $arEvent['TO_NAME'];
                             $err_id = false;
                             if ($ex = $APPLICATION->GetException()) {
                                 $err .= ': ' . $ex->GetString();
                                 $err_id = $ex->GetID();
                             }
                             $APPLICATION->ThrowException($err, $err_id);
                             return false;
                         }
                     }
                     if (!CIBlockElement::Delete($arOffer['ID'])) {
                         $APPLICATION->ThrowException(Loc::getMessage('BT_MOD_CATALOG_ERR_CANNOT_DELETE_OFFERS'));
                         return false;
                     }
                 }
             }
         }
     }
     return true;
 }
示例#18
0
 protected function getProductOffers($product_id)
 {
     CModule::IncludeModule('iblock');
     CModule::IncludeModule('catalog');
     $result = array($product_id);
     $rsEl = CIBlockElement::GetByID($product_id);
     if ($obEl = $rsEl->GetNext()) {
         $products_iblock_id = $obEl['IBLOCK_ID'];
     }
     $iblock_info = CCatalogSKU::GetInfoByProductIBlock($products_iblock_id);
     $dbOffers = CIBlockElement::GetList(array('ID' => 'DESC'), array('PROPERTY_' . $iblock_info['SKU_PROPERTY_ID'] => $product_id), false, false, array('ID'));
     while ($dbOffer = $dbOffers->Fetch()) {
         $result[] = $dbOffer['ID'];
     }
     return $result;
 }
示例#19
0
 public function executeComponent()
 {
     if (!CModule::IncludeModule('sale')) {
         ShowError("Module sale not installed!");
         return;
     }
     if (!CModule::IncludeModule('catalog')) {
         ShowError("Module catalog not installed!");
         return;
     }
     $this->arResult["BITRIX_CATEGORY_ID"] = isset($this->arParams["BITRIX_CATEGORY_ID"]) ? $this->arParams["BITRIX_CATEGORY_ID"] : 0;
     $this->arResult["IBLOCK_ID"] = isset($this->arParams["IBLOCK_ID"]) ? $this->arParams["IBLOCK_ID"] : 0;
     if (isset($this->arParams["EBAY_CATEGORY_ID"])) {
         $this->arResult["EBAY_CATEGORY_ID"] = $this->arParams["EBAY_CATEGORY_ID"];
     } else {
         $this->arResult["EBAY_CATEGORY_ID"] = $this->getMappedEbayCategoryId($this->arResult["BITRIX_CATEGORY_ID"]);
     }
     $this->arResult["TOP_CATEGORIES_LIST"] = $this->getTopCategories();
     $this->arResult["VARIATIONS_BLOCK_ID"] = 'SALE_EBAY_CAT_' . $this->arResult["EBAY_CATEGORY_ID"] . '_VARIATIONS';
     $siteRes = CIBlock::GetSite($this->arResult["IBLOCK_ID"]);
     //todo: It can be many sites for one iblock.
     if ($site = $siteRes->Fetch()) {
         $this->arResult["SITE_ID"] = $site["LID"];
     } else {
         $this->arResult["SITE_ID"] = "";
     }
     if (strlen($this->arResult["EBAY_CATEGORY_ID"]) > 0) {
         $this->arResult["CATEGORY_AND_PARENTS_INFO"] = $this->getCategoryAndParentsInfo($this->arResult["EBAY_CATEGORY_ID"]);
         if (isset($this->arResult["CATEGORY_AND_PARENTS_INFO"][1]["CATEGORY_ID"])) {
             $this->arResult["TOP_CATEGORY_ID"] = $this->arResult["CATEGORY_AND_PARENTS_INFO"][1]["CATEGORY_ID"];
         }
         $this->arResult["EBAY_CATEGORY_VARIATIONS"] = \Bitrix\Sale\TradingPlatform\Ebay\Helper::getEbayCategoryVariations($this->arResult["EBAY_CATEGORY_ID"], $this->arResult["SITE_ID"]);
         if (isset($this->arParams["VARIATIONS_VALUES"])) {
             $this->arResult["VARIATIONS_VALUES"] = $this->arParams["VARIATIONS_VALUES"];
         } else {
             $this->arResult["VARIATIONS_VALUES"] = $this->getVariationsValues($this->arResult["IBLOCK_ID"], $this->arResult["EBAY_CATEGORY_ID"], $this->arResult["EBAY_CATEGORY_VARIATIONS"]);
         }
     } else {
         $this->arResult["VARIATIONS_VALUES"] = array('' => '');
         $this->arResult["EBAY_CATEGORY_VARIATIONS"] = array();
     }
     $this->arResult["CATEGORY_PROPS"] = \CIBlockSectionPropertyLink::GetArray($this->arParams["IBLOCK_ID"], $this->arParams["BITRIX_CATEGORY_ID"]);
     $rsProps = \CIBlockProperty::GetList(array("SORT" => "ASC", 'ID' => 'ASC'), array("IBLOCK_ID" => $this->arParams["IBLOCK_ID"], "CHECK_PERMISSIONS" => "N", "ACTIVE" => "Y"));
     while ($arProp = $rsProps->Fetch()) {
         if (isset($this->arResult["CATEGORY_PROPS"][$arProp["ID"]])) {
             $this->arResult["CATEGORY_PROPS"][$arProp["ID"]]["NAME"] = $arProp["NAME"];
         }
     }
     $this->arResult["IBLOCK_IDS"] = array($this->arParams["IBLOCK_ID"] => Loc::getMessage("SALE_EBAY_SEC_CATEGORY_PROP"));
     $arOffers = \CCatalogSKU::GetInfoByProductIBlock($this->arParams["IBLOCK_ID"]);
     if (is_array($arOffers) && !empty($arOffers)) {
         $this->arResult["OFFERS_IBLOCK_ID"] = $arOffers["IBLOCK_ID"];
         $this->arResult["CATEGORY_OFFERS_PROPS"] = \CIBlockSectionPropertyLink::GetArray($arOffers["IBLOCK_ID"], $this->arParams["BITRIX_CATEGORY_ID"]);
         $rsProps = \CIBlockProperty::GetList(array("SORT" => "ASC", 'ID' => 'ASC'), array("IBLOCK_ID" => $arOffers["IBLOCK_ID"], "CHECK_PERMISSIONS" => "N", "ACTIVE" => "Y"));
         while ($arProp = $rsProps->Fetch()) {
             if (isset($this->arResult["CATEGORY_OFFERS_PROPS"][$arProp["ID"]])) {
                 $this->arResult["CATEGORY_OFFERS_PROPS"][$arProp["ID"]]["NAME"] = $arProp["NAME"];
             }
         }
         $this->arResult["IBLOCK_IDS"][$arOffers["IBLOCK_ID"]] = Loc::getMessage("SALE_EBAY_SEC_OFFERS_PROP");
     }
     $this->IncludeComponentTemplate();
 }
示例#20
0
	public static function GetOffersIBlock($IBLOCK_ID)
	{
		$arResult = false;
		$IBLOCK_ID = intval($IBLOCK_ID);
		if (0 < $IBLOCK_ID)
		{
			if (CModule::IncludeModule("catalog"))
			{
				$arCatalog = CCatalogSKU::GetInfoByProductIBlock($IBLOCK_ID);
				if (is_array($arCatalog))
				{
					$arResult = array(
						'OFFERS_IBLOCK_ID' => $arCatalog['IBLOCK_ID'],
						'OFFERS_PROPERTY_ID' => $arCatalog['SKU_PROPERTY_ID'],
					);
				}
			}
		}
		return $arResult;
	}
/**
 * @param $userId
 * @param $lid
 * @param $productId
 * @param string $productName
 * @param string $currency
 * @param array $arProduct
 * @return array|bool
 */
function GetProductSku($userId, $lid, $productId, $productName = '', $currency = '', $arProduct = array())
{
    $userId = intval($userId);
    $productId = intval($productId);
    if ($productId <= 0) {
        return false;
    }
    $lid = trim($lid);
    if (strlen($lid) <= 0) {
        return false;
    }
    $productName = trim($productName);
    $arResult = array();
    static $arCacheGroups = array();
    if (!isset($arCacheGroups[$userId])) {
        $arCacheGroups[$userId] = CUser::GetUserGroup($userId);
    }
    $arGroups = $arCacheGroups[$userId];
    if (!isset($arProduct["IBLOCK_ID"]) || 0 >= intval($arProduct["IBLOCK_ID"])) {
        $arProduct["IBLOCK_ID"] = CIBlockElement::GetIBlockByID($arProduct["IBLOCK_ID"]);
    }
    static $arOffersIblock = array();
    if (!isset($arOffersIblock[$arProduct["IBLOCK_ID"]])) {
        $mxResult = CCatalogSKU::GetInfoByProductIBlock($arProduct["IBLOCK_ID"]);
        if (is_array($mxResult)) {
            $arOffersIblock[$arProduct["IBLOCK_ID"]] = $mxResult["IBLOCK_ID"];
        }
    }
    if ($arOffersIblock[$arProduct["IBLOCK_ID"]] > 0) {
        static $arCacheOfferProperties = array();
        if (!is_set($arCacheOfferProperties[$arOffersIblock[$arProduct["IBLOCK_ID"]]])) {
            $dbOfferProperties = CIBlockProperty::GetList(array('SORT' => 'ASC', 'ID' => 'ASC'), array('IBLOCK_ID' => $arOffersIblock[$arProduct["IBLOCK_ID"]], 'ACTIVE' => 'Y', "!XML_ID" => "CML2_LINK"));
            while ($arOfferProperties = $dbOfferProperties->Fetch()) {
                if ('F' == $arOfferProperties['PROPERTY_TYPE']) {
                    continue;
                }
                $arCacheOfferProperties[$arOffersIblock[$arProduct["IBLOCK_ID"]]][] = $arOfferProperties;
            }
        }
        $arOfferProperties = $arCacheOfferProperties[$arOffersIblock[$arProduct["IBLOCK_ID"]]];
        $arIblockOfferProps = array();
        $arIblockOfferPropsFilter = array();
        if (is_array($arOfferProperties)) {
            foreach ($arOfferProperties as $val) {
                $arIblockOfferProps[] = array("CODE" => $val["CODE"], "NAME" => $val["NAME"]);
                $arIblockOfferPropsFilter[] = $val["CODE"];
            }
        }
        $arOffers = CIBlockPriceTools::GetOffersArray($arProduct["IBLOCK_ID"], $productId, array("ID" => "DESC"), array("NAME", "EXTERNAL_ID"), $arIblockOfferPropsFilter, 0, array(), 1, array(), $userId, $lid);
        $arSku = array();
        $arSkuId = array();
        $arImgSku = array();
        foreach ($arOffers as $arOffer) {
            $arSkuId[] = $arOffer['ID'];
        }
        if (!empty($arSkuId)) {
            $res = CIBlockElement::GetList(array(), array("ID" => $arSkuId), false, false, array("ID", "IBLOCK_ID", "NAME", "PREVIEW_PICTURE", "DETAIL_PICTURE", "DETAIL_PAGE_URL", "ACTIVE"));
            while ($arOfferImg = $res->GetNext()) {
                $arImgSku[$arOfferImg["ID"]] = $arOfferImg;
            }
        }
        $arOffersId = array();
        foreach ($arOffers as $arOffer) {
            $arOffersId[] = $arOffer['ID'];
        }
        $dbCatalogProduct = CCatalogProduct::GetList(array(), array("ID" => $arOffersId));
        while ($arCatalogProduct = $dbCatalogProduct->fetch()) {
            $arCatalogProductResult[$arCatalogProduct["ID"]] = $arCatalogProduct;
        }
        foreach ($arOffers as $arOffer) {
            $arSkuTmp = array();
            $active = '';
            $arOffer["CAN_BUY"] = "N";
            $arCatalogProduct = $arCatalogProductResult[$arOffer["ID"]];
            if (!empty($arCatalogProduct)) {
                if ($arCatalogProduct["CAN_BUY_ZERO"] != "Y" && ($arCatalogProduct["QUANTITY_TRACE"] == "Y" && doubleval($arCatalogProduct["QUANTITY"]) <= 0)) {
                    $arOffer["CAN_BUY"] = "N";
                } else {
                    $arOffer["CAN_BUY"] = "Y";
                }
            }
            $arSkuTmp["ImageUrl"] = '';
            if ($arOffer["CAN_BUY"] == "Y") {
                if (isset($arImgSku[$arOffer['ID']]) && !empty($arImgSku[$arOffer['ID']])) {
                    if ('' == $productName) {
                        $productName = $arImgSku[$arOffer['ID']]["~NAME"];
                    }
                    $active = $arImgSku[$arOffer['ID']]["ACTIVE"];
                    if ($arImgSku[$arOffer['ID']]["PREVIEW_PICTURE"] != "") {
                        $arSkuTmp["PREVIEW_PICTURE"] = $arImgSku[$arOffer['ID']]["PREVIEW_PICTURE"];
                    }
                    if ($arImgSku[$arOffer['ID']]["DETAIL_PICTURE"] != "") {
                        $arSkuTmp["DETAIL_PICTURE"] = $arImgSku[$arOffer['ID']]["DETAIL_PICTURE"];
                    }
                }
            }
            foreach ($arIblockOfferProps as $arCode) {
                if (is_array($arCode) && isset($arOffer["PROPERTIES"][$arCode["CODE"]])) {
                    if (isset($arOffer["DISPLAY_PROPERTIES"][$arCode["CODE"]])) {
                        $mxValues = '';
                        if ('E' == $arOffer["DISPLAY_PROPERTIES"][$arCode["CODE"]]['PROPERTY_TYPE']) {
                            if (!empty($arOffer["DISPLAY_PROPERTIES"][$arCode["CODE"]]['LINK_ELEMENT_VALUE'])) {
                                $mxValues = array();
                                foreach ($arOffer["DISPLAY_PROPERTIES"][$arCode["CODE"]]['LINK_ELEMENT_VALUE'] as $arTempo) {
                                    $mxValues[] = $arTempo['NAME'] . ' [' . $arTempo['ID'] . ']';
                                }
                            }
                        } elseif ('G' == $arOffer["DISPLAY_PROPERTIES"][$arCode["CODE"]]['PROPERTY_TYPE']) {
                            if (!empty($arOffer["DISPLAY_PROPERTIES"][$arCode["CODE"]]['LINK_SECTION_VALUE'])) {
                                $mxValues = array();
                                foreach ($arOffer["DISPLAY_PROPERTIES"][$arCode["CODE"]]['LINK_SECTION_VALUE'] as $arTempo) {
                                    $mxValues[] = $arTempo['NAME'] . ' [' . $arTempo['ID'] . ']';
                                }
                            }
                        }
                        if (empty($mxValues)) {
                            $mxValues = $arOffer["DISPLAY_PROPERTIES"][$arCode["CODE"]]["DISPLAY_VALUE"];
                        }
                        $arSkuTmp[] = strip_tags(is_array($mxValues) ? implode("/ ", $mxValues) : $mxValues);
                    } else {
                        $arSkuTmp[] = '';
                    }
                }
            }
            if (!empty($arCatalogProduct)) {
                $arSkuTmp["BALANCE"] = $arCatalogProduct["QUANTITY"];
                $arSkuTmp["WEIGHT"] = $arCatalogProduct["WEIGHT"];
                $arSkuTmp["BARCODE_MULTI"] = $arCatalogProduct["BARCODE_MULTI"];
            } else {
                $arSkuTmp["BALANCE"] = 0;
                $arSkuTmp["WEIGHT"] = 0;
                $arSkuTmp["BARCODE_MULTI"] = 'N';
            }
            $arSkuTmp["USER_ID"] = $userId;
            $arSkuTmp["ID"] = $arOffer["ID"];
            $arSkuTmp["TYPE"] = $arOffer["CATALOG_TYPE"];
            $arSkuTmp["NAME"] = CUtil::JSEscape($arOffer["NAME"]);
            $arSkuTmp["PRODUCT_NAME"] = CUtil::JSEscape(htmlspecialcharsbx($productName));
            $arSkuTmp["PRODUCT_ID"] = $productId;
            $arSkuTmp["LID"] = CUtil::JSEscape($lid);
            $arSkuTmp["CAN_BUY"] = $arOffer["CAN_BUY"];
            $arSkuTmp["ACTIVE"] = $active;
            $arSkuTmp["EXTERNAL_ID"] = $arOffer['EXTERNAL_ID'];
            $arSku[] = $arSkuTmp;
        }
        if ((!is_array($arIblockOfferProps) || empty($arIblockOfferProps)) && is_array($arSku) && !empty($arSku)) {
            $arIblockOfferProps[0] = array("CODE" => "TITLE", "NAME" => GetMessage("SKU_TITLE"));
            foreach ($arSku as $key => $val) {
                $arSku[$key][0] = $val["NAME"];
            }
        }
        $arResult["SKU_ELEMENTS"] = $arSku;
        $arResult["SKU_PROPERTIES"] = $arIblockOfferProps;
        $arResult["OFFERS_IBLOCK_ID"] = $arOffersIblock[$arProduct["IBLOCK_ID"]];
    }
    return $arResult;
}
示例#22
0
    /**
     * @param string $selectName Name of select.
     * @param int $iblockId Iblock Id.
     * @param int $bitrixCategoryId Iblock section Id.
     * @param string $value Selected value.
     * @return string Html element <select>....
     */
    public static function getBitrixCategoryPropsHtml($selectName, $iblockId, $bitrixCategoryId = 0, $value = '')
    {
        $catProps = self::getPropertiesList($iblockId, $bitrixCategoryId);
        $resultHtml = '	<select name="' . $selectName . '">
			<option value=""></option>
			<option value="">------------------</option>
			<option value="">' . Loc::getMessage("SALE_EBAY_HLP_CATEGORY_PROPS") . '</option>
			<option value="">------------------</option>';
        foreach ($catProps as $propId => $prop) {
            $resultHtml .= '<option value="' . $propId . '"' . ($value == $propId ? ' selected' : '') . '>' . $prop["NAME"] . '</option>';
        }
        $arOffers = \CCatalogSKU::GetInfoByProductIBlock($iblockId);
        if ($arOffers) {
            $catProps2 = self::getPropertiesList($arOffers["IBLOCK_ID"], $bitrixCategoryId);
            $resultHtml .= '
				<option value="">------------------</option>
				<option value="">' . Loc::getMessage("SALE_EBAY_HLP_OFFERS_PROPS") . '</option>
				<option value="">------------------</option>
			';
            foreach ($catProps2 as $propId => $prop) {
                $resultHtml .= '<option value="' . $propId . '"' . ($value == $propId ? ' selected' : '') . '>' . $prop["NAME"] . '</option>';
            }
        }
        $resultHtml .= '	</select>';
        return $resultHtml;
    }
示例#23
0
        die;
    }
} else {
    require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php";
    echo ShowError(str_replace('#ID#', $intIBlockID, GetMessage("YANDEX_ERR_NO_IBLOCK_FOUND_EXT")));
    require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_admin.php";
    die;
}
$boolOffers = false;
$arOffers = false;
$arOfferIBlock = false;
$intOfferIBlockID = 0;
$arSelectOfferProps = array();
$arSelectedPropTypes = array('S', 'N', 'L', 'E', 'G');
$arOffersSelectKeys = array(YANDEX_SKU_EXPORT_ALL, YANDEX_SKU_EXPORT_MIN_PRICE, YANDEX_SKU_EXPORT_PROP);
$arOffers = CCatalogSKU::GetInfoByProductIBlock($intIBlockID);
if (!empty($arOffers['IBLOCK_ID'])) {
    $intOfferIBlockID = $arOffers['IBLOCK_ID'];
    $strPerm = 'D';
    $rsOfferIBlocks = CIBlock::GetByID($intOfferIBlockID);
    if ($arOfferIBlock = $rsOfferIBlocks->Fetch()) {
        $bBadBlock = !CIBlockRights::UserHasRightTo($intOfferIBlockID, $intOfferIBlockID, "iblock_admin_display");
        if ($bBadBlock) {
            require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php";
            echo ShowError(GetMessage('YANDEX_ERR_NO_ACCESS_IBLOCK_SKU'));
            require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_admin.php";
            die;
        }
    } else {
        require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php";
        echo ShowError(str_replace('#ID#', $intIBlockID, GetMessage("YANDEX_ERR_NO_IBLOCK_SKU_FOUND")));
示例#24
0
}
$iblockCode = "clothes_" . WIZARD_SITE_ID;
$iblockType = "catalog";
$rsIBlock = CIBlock::GetList(array(), array("XML_ID" => $iblockCode, "TYPE" => $iblockType));
$IBLOCK_CATALOG_ID = false;
if ($arIBlock = $rsIBlock->Fetch()) {
    $IBLOCK_CATALOG_ID = $arIBlock["ID"];
} else {
    $rsIBlock = CIBlock::GetList(array(), array("XML_ID" => "furniture_" . WIZARD_SITE_ID, "TYPE" => $iblockType));
    if ($arIBlock = $rsIBlock->Fetch()) {
        $IBLOCK_CATALOG_ID = $arIBlock["ID"];
    }
}
if (WIZARD_INSTALL_DEMO_DATA && $IBLOCK_CATALOG_ID) {
    $boolFlag = true;
    $arSKU = CCatalogSKU::GetInfoByProductIBlock($IBLOCK_CATALOG_ID);
    if (!empty($arSKU)) {
        $boolFlag = CCatalog::UnLinkSKUIBlock($IBLOCK_CATALOG_ID);
        if (!$boolFlag) {
            $strError = "";
            if ($ex = $APPLICATION->GetException()) {
                $strError = $ex->GetString();
            } else {
                $strError = "Couldn't unlink iblocks";
            }
            //die($strError);
        }
        $boolFlag = CIBlock::Delete($arSKU['IBLOCK_ID']);
        if (!$boolFlag) {
            $strError = "";
            if ($ex = $APPLICATION->GetException()) {
示例#25
0
$intSectionID = $APPLICATION->IncludeComponent("bitrix:catalog.section", "", array("IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"], "IBLOCK_ID" => $arParams["IBLOCK_ID"], "ELEMENT_SORT_FIELD" => $arParams["ELEMENT_SORT_FIELD"], "ELEMENT_SORT_ORDER" => $arParams["ELEMENT_SORT_ORDER"], "ELEMENT_SORT_FIELD2" => $arParams["ELEMENT_SORT_FIELD2"], "ELEMENT_SORT_ORDER2" => $arParams["ELEMENT_SORT_ORDER2"], "PROPERTY_CODE" => $arParams["LIST_PROPERTY_CODE"], "META_KEYWORDS" => $arParams["LIST_META_KEYWORDS"], "META_DESCRIPTION" => $arParams["LIST_META_DESCRIPTION"], "BROWSER_TITLE" => $arParams["LIST_BROWSER_TITLE"], "SET_LAST_MODIFIED" => $arParams["SET_LAST_MODIFIED"], "INCLUDE_SUBSECTIONS" => $arParams["INCLUDE_SUBSECTIONS"], "BASKET_URL" => $arParams["BASKET_URL"], "ACTION_VARIABLE" => $arParams["ACTION_VARIABLE"], "PRODUCT_ID_VARIABLE" => $arParams["PRODUCT_ID_VARIABLE"], "SECTION_ID_VARIABLE" => $arParams["SECTION_ID_VARIABLE"], "PRODUCT_QUANTITY_VARIABLE" => $arParams["PRODUCT_QUANTITY_VARIABLE"], "PRODUCT_PROPS_VARIABLE" => $arParams["PRODUCT_PROPS_VARIABLE"], "FILTER_NAME" => $arParams["FILTER_NAME"], "CACHE_TYPE" => $arParams["CACHE_TYPE"], "CACHE_TIME" => $arParams["CACHE_TIME"], "CACHE_FILTER" => $arParams["CACHE_FILTER"], "CACHE_GROUPS" => $arParams["CACHE_GROUPS"], "SET_TITLE" => $arParams["SET_TITLE"], "MESSAGE_404" => $arParams["MESSAGE_404"], "SET_STATUS_404" => $arParams["SET_STATUS_404"], "SHOW_404" => $arParams["SHOW_404"], "FILE_404" => $arParams["FILE_404"], "DISPLAY_COMPARE" => $arParams["USE_COMPARE"], "PAGE_ELEMENT_COUNT" => $arParams["PAGE_ELEMENT_COUNT"], "LINE_ELEMENT_COUNT" => $arParams["LINE_ELEMENT_COUNT"], "PRICE_CODE" => $arParams["PRICE_CODE"], "USE_PRICE_COUNT" => $arParams["USE_PRICE_COUNT"], "SHOW_PRICE_COUNT" => $arParams["SHOW_PRICE_COUNT"], "PRICE_VAT_INCLUDE" => $arParams["PRICE_VAT_INCLUDE"], "USE_PRODUCT_QUANTITY" => $arParams['USE_PRODUCT_QUANTITY'], "ADD_PROPERTIES_TO_BASKET" => isset($arParams["ADD_PROPERTIES_TO_BASKET"]) ? $arParams["ADD_PROPERTIES_TO_BASKET"] : '', "PARTIAL_PRODUCT_PROPERTIES" => isset($arParams["PARTIAL_PRODUCT_PROPERTIES"]) ? $arParams["PARTIAL_PRODUCT_PROPERTIES"] : '', "PRODUCT_PROPERTIES" => $arParams["PRODUCT_PROPERTIES"], "DISPLAY_TOP_PAGER" => $arParams["DISPLAY_TOP_PAGER"], "DISPLAY_BOTTOM_PAGER" => $arParams["DISPLAY_BOTTOM_PAGER"], "PAGER_TITLE" => $arParams["PAGER_TITLE"], "PAGER_SHOW_ALWAYS" => $arParams["PAGER_SHOW_ALWAYS"], "PAGER_TEMPLATE" => $arParams["PAGER_TEMPLATE"], "PAGER_DESC_NUMBERING" => $arParams["PAGER_DESC_NUMBERING"], "PAGER_DESC_NUMBERING_CACHE_TIME" => $arParams["PAGER_DESC_NUMBERING_CACHE_TIME"], "PAGER_SHOW_ALL" => $arParams["PAGER_SHOW_ALL"], "PAGER_BASE_LINK_ENABLE" => $arParams["PAGER_BASE_LINK_ENABLE"], "PAGER_BASE_LINK" => $arParams["PAGER_BASE_LINK"], "PAGER_PARAMS_NAME" => $arParams["PAGER_PARAMS_NAME"], "OFFERS_CART_PROPERTIES" => $arParams["OFFERS_CART_PROPERTIES"], "OFFERS_FIELD_CODE" => $arParams["LIST_OFFERS_FIELD_CODE"], "OFFERS_PROPERTY_CODE" => $arParams["LIST_OFFERS_PROPERTY_CODE"], "OFFERS_SORT_FIELD" => $arParams["OFFERS_SORT_FIELD"], "OFFERS_SORT_ORDER" => $arParams["OFFERS_SORT_ORDER"], "OFFERS_SORT_FIELD2" => $arParams["OFFERS_SORT_FIELD2"], "OFFERS_SORT_ORDER2" => $arParams["OFFERS_SORT_ORDER2"], "OFFERS_LIMIT" => $arParams["LIST_OFFERS_LIMIT"], "SECTION_ID" => $arResult["VARIABLES"]["SECTION_ID"], "SECTION_CODE" => $arResult["VARIABLES"]["SECTION_CODE"], "SECTION_URL" => $arResult["FOLDER"] . $arResult["URL_TEMPLATES"]["section"], "DETAIL_URL" => $arResult["FOLDER"] . $arResult["URL_TEMPLATES"]["element"], "USE_MAIN_ELEMENT_SECTION" => $arParams["USE_MAIN_ELEMENT_SECTION"], 'CONVERT_CURRENCY' => $arParams['CONVERT_CURRENCY'], 'CURRENCY_ID' => $arParams['CURRENCY_ID'], 'HIDE_NOT_AVAILABLE' => $arParams["HIDE_NOT_AVAILABLE"], 'LABEL_PROP' => $arParams['LABEL_PROP'], 'ADD_PICT_PROP' => $arParams['ADD_PICT_PROP'], 'PRODUCT_DISPLAY_MODE' => $arParams['PRODUCT_DISPLAY_MODE'], 'OFFER_ADD_PICT_PROP' => $arParams['OFFER_ADD_PICT_PROP'], 'OFFER_TREE_PROPS' => $arParams['OFFER_TREE_PROPS'], 'PRODUCT_SUBSCRIPTION' => $arParams['PRODUCT_SUBSCRIPTION'], 'SHOW_DISCOUNT_PERCENT' => $arParams['SHOW_DISCOUNT_PERCENT'], 'SHOW_OLD_PRICE' => $arParams['SHOW_OLD_PRICE'], 'MESS_BTN_BUY' => $arParams['MESS_BTN_BUY'], 'MESS_BTN_ADD_TO_BASKET' => $arParams['MESS_BTN_ADD_TO_BASKET'], 'MESS_BTN_SUBSCRIBE' => $arParams['MESS_BTN_SUBSCRIBE'], 'MESS_BTN_DETAIL' => $arParams['MESS_BTN_DETAIL'], 'MESS_NOT_AVAILABLE' => $arParams['MESS_NOT_AVAILABLE'], 'TEMPLATE_THEME' => isset($arParams['TEMPLATE_THEME']) ? $arParams['TEMPLATE_THEME'] : '', "ADD_SECTIONS_CHAIN" => "N", 'ADD_TO_BASKET_ACTION' => $basketAction, 'SHOW_CLOSE_POPUP' => isset($arParams['COMMON_SHOW_CLOSE_POPUP']) ? $arParams['COMMON_SHOW_CLOSE_POPUP'] : '', 'COMPARE_PATH' => $arResult['FOLDER'] . $arResult['URL_TEMPLATES']['compare']), $component);
$GLOBALS['CATALOG_CURRENT_SECTION_ID'] = $intSectionID;
unset($basketAction);
if ($verticalGrid) {
    ?>
</div>
	<div style="clear: both;"></div>
	</div><?php 
}
if (ModuleManager::isModuleInstalled("sale")) {
    $arRecomData = array();
    $recomCacheID = array('IBLOCK_ID' => $arParams['IBLOCK_ID']);
    $obCache = new CPHPCache();
    if ($obCache->InitCache(36000, serialize($recomCacheID), "/sale/bestsellers")) {
        $arRecomData = $obCache->GetVars();
    } elseif ($obCache->StartDataCache()) {
        if (Loader::includeModule("catalog")) {
            $arSKU = CCatalogSKU::GetInfoByProductIBlock($arParams['IBLOCK_ID']);
            $arRecomData['OFFER_IBLOCK_ID'] = !empty($arSKU) ? $arSKU['IBLOCK_ID'] : 0;
        }
        $obCache->EndDataCache($arRecomData);
    }
    if (!empty($arRecomData)) {
        if (!isset($arParams['USE_SALE_BESTSELLERS']) || $arParams['USE_SALE_BESTSELLERS'] != 'N') {
            $APPLICATION->IncludeComponent("bitrix:sale.bestsellers", "", array("HIDE_NOT_AVAILABLE" => $arParams["HIDE_NOT_AVAILABLE"], "PAGE_ELEMENT_COUNT" => "5", "SHOW_DISCOUNT_PERCENT" => $arParams['SHOW_DISCOUNT_PERCENT'], "PRODUCT_SUBSCRIPTION" => $arParams['PRODUCT_SUBSCRIPTION'], "SHOW_NAME" => "Y", "SHOW_IMAGE" => "Y", "MESS_BTN_BUY" => $arParams['MESS_BTN_BUY'], "MESS_BTN_DETAIL" => $arParams['MESS_BTN_DETAIL'], "MESS_NOT_AVAILABLE" => $arParams['MESS_NOT_AVAILABLE'], "MESS_BTN_SUBSCRIBE" => $arParams['MESS_BTN_SUBSCRIBE'], "LINE_ELEMENT_COUNT" => 5, "TEMPLATE_THEME" => isset($arParams['TEMPLATE_THEME']) ? $arParams['TEMPLATE_THEME'] : '', "DETAIL_URL" => $arResult["FOLDER"] . $arResult["URL_TEMPLATES"]["element"], "CACHE_TYPE" => $arParams["CACHE_TYPE"], "CACHE_TIME" => $arParams["CACHE_TIME"], "CACHE_GROUPS" => $arParams["CACHE_GROUPS"], "BY" => array(0 => "AMOUNT"), "PERIOD" => array(0 => "15"), "FILTER" => array(0 => "CANCELED", 1 => "ALLOW_DELIVERY", 2 => "PAYED", 3 => "DEDUCTED", 4 => "N", 5 => "P", 6 => "F"), "FILTER_NAME" => $arParams["FILTER_NAME"], "ORDER_FILTER_NAME" => "arOrderFilter", "DISPLAY_COMPARE" => $arParams["USE_COMPARE"], "SHOW_OLD_PRICE" => $arParams['SHOW_OLD_PRICE'], "PRICE_CODE" => $arParams["PRICE_CODE"], "SHOW_PRICE_COUNT" => $arParams["SHOW_PRICE_COUNT"], "PRICE_VAT_INCLUDE" => $arParams["PRICE_VAT_INCLUDE"], "CONVERT_CURRENCY" => $arParams["CONVERT_CURRENCY"], "CURRENCY_ID" => $arParams["CURRENCY_ID"], "BASKET_URL" => $arParams["BASKET_URL"], "ACTION_VARIABLE" => (!empty($arParams["ACTION_VARIABLE"]) ? $arParams["ACTION_VARIABLE"] : "action") . "_slb", "PRODUCT_ID_VARIABLE" => $arParams["PRODUCT_ID_VARIABLE"], "PRODUCT_QUANTITY_VARIABLE" => $arParams["PRODUCT_QUANTITY_VARIABLE"], "ADD_PROPERTIES_TO_BASKET" => isset($arParams["ADD_PROPERTIES_TO_BASKET"]) ? $arParams["ADD_PROPERTIES_TO_BASKET"] : '', "PRODUCT_PROPS_VARIABLE" => $arParams["PRODUCT_PROPS_VARIABLE"], "PARTIAL_PRODUCT_PROPERTIES" => isset($arParams["PARTIAL_PRODUCT_PROPERTIES"]) ? $arParams["PARTIAL_PRODUCT_PROPERTIES"] : '', "USE_PRODUCT_QUANTITY" => $arParams['USE_PRODUCT_QUANTITY'], "SHOW_PRODUCTS_" . $arParams["IBLOCK_ID"] => "Y", "OFFER_TREE_PROPS_" . $arRecomData['OFFER_IBLOCK_ID'] => $arParams["OFFER_TREE_PROPS"], "ADDITIONAL_PICT_PROP_" . $arParams['IBLOCK_ID'] => $arParams['ADD_PICT_PROP'], "ADDITIONAL_PICT_PROP_" . $arRecomData['OFFER_IBLOCK_ID'] => $arParams['OFFER_ADD_PICT_PROP']), $component, array("HIDE_ICONS" => "Y"));
        }
        if (!isset($arParams['USE_BIG_DATA']) || $arParams['USE_BIG_DATA'] != 'N') {
            $APPLICATION->IncludeComponent("bitrix:catalog.bigdata.products", "", array("LINE_ELEMENT_COUNT" => 5, "TEMPLATE_THEME" => isset($arParams['TEMPLATE_THEME']) ? $arParams['TEMPLATE_THEME'] : '', "DETAIL_URL" => $arResult["FOLDER"] . $arResult["URL_TEMPLATES"]["element"], "BASKET_URL" => $arParams["BASKET_URL"], "ACTION_VARIABLE" => (!empty($arParams["ACTION_VARIABLE"]) ? $arParams["ACTION_VARIABLE"] : "action") . "_cbdp", "PRODUCT_ID_VARIABLE" => $arParams["PRODUCT_ID_VARIABLE"], "PRODUCT_QUANTITY_VARIABLE" => $arParams["PRODUCT_QUANTITY_VARIABLE"], "ADD_PROPERTIES_TO_BASKET" => isset($arParams["ADD_PROPERTIES_TO_BASKET"]) ? $arParams["ADD_PROPERTIES_TO_BASKET"] : '', "PRODUCT_PROPS_VARIABLE" => $arParams["PRODUCT_PROPS_VARIABLE"], "PARTIAL_PRODUCT_PROPERTIES" => isset($arParams["PARTIAL_PRODUCT_PROPERTIES"]) ? $arParams["PARTIAL_PRODUCT_PROPERTIES"] : '', "SHOW_OLD_PRICE" => $arParams['SHOW_OLD_PRICE'], "SHOW_DISCOUNT_PERCENT" => $arParams['SHOW_DISCOUNT_PERCENT'], "PRICE_CODE" => $arParams["PRICE_CODE"], "SHOW_PRICE_COUNT" => $arParams["SHOW_PRICE_COUNT"], "PRODUCT_SUBSCRIPTION" => $arParams['PRODUCT_SUBSCRIPTION'], "PRICE_VAT_INCLUDE" => $arParams["PRICE_VAT_INCLUDE"], "USE_PRODUCT_QUANTITY" => $arParams['USE_PRODUCT_QUANTITY'], "SHOW_NAME" => "Y", "SHOW_IMAGE" => "Y", "MESS_BTN_BUY" => $arParams['MESS_BTN_BUY'], "MESS_BTN_DETAIL" => $arParams['MESS_BTN_DETAIL'], "MESS_BTN_SUBSCRIBE" => $arParams['MESS_BTN_SUBSCRIBE'], "MESS_NOT_AVAILABLE" => $arParams['MESS_NOT_AVAILABLE'], "PAGE_ELEMENT_COUNT" => 5, "SHOW_FROM_SECTION" => "Y", "IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"], "IBLOCK_ID" => $arParams["IBLOCK_ID"], "DEPTH" => "2", "CACHE_TYPE" => $arParams["CACHE_TYPE"], "CACHE_TIME" => $arParams["CACHE_TIME"], "CACHE_GROUPS" => $arParams["CACHE_GROUPS"], "SHOW_PRODUCTS_" . $arParams["IBLOCK_ID"] => "Y", "HIDE_NOT_AVAILABLE" => $arParams["HIDE_NOT_AVAILABLE"], "CONVERT_CURRENCY" => $arParams["CONVERT_CURRENCY"], "CURRENCY_ID" => $arParams["CURRENCY_ID"], "SECTION_ID" => $intSectionID, "SECTION_CODE" => "", "SECTION_ELEMENT_ID" => "", "SECTION_ELEMENT_CODE" => "", "LABEL_PROP_" . $arParams["IBLOCK_ID"] => $arParams['LABEL_PROP'], "PROPERTY_CODE_" . $arParams["IBLOCK_ID"] => $arParams["LIST_PROPERTY_CODE"], "PROPERTY_CODE_" . $arRecomData['OFFER_IBLOCK_ID'] => $arParams["LIST_OFFERS_PROPERTY_CODE"], "CART_PROPERTIES_" . $arParams["IBLOCK_ID"] => $arParams["PRODUCT_PROPERTIES"], "CART_PROPERTIES_" . $arRecomData['OFFER_IBLOCK_ID'] => $arParams["OFFERS_CART_PROPERTIES"], "ADDITIONAL_PICT_PROP_" . $arParams["IBLOCK_ID"] => $arParams['ADD_PICT_PROP'], "ADDITIONAL_PICT_PROP_" . $arRecomData['OFFER_IBLOCK_ID'] => $arParams['OFFER_ADD_PICT_PROP'], "OFFER_TREE_PROPS_" . $arRecomData['OFFER_IBLOCK_ID'] => $arParams["OFFER_TREE_PROPS"], "RCM_TYPE" => isset($arParams['BIG_DATA_RCM_TYPE']) ? $arParams['BIG_DATA_RCM_TYPE'] : ''), $component, array("HIDE_ICONS" => "Y"));
        }
    }
}
示例#26
0
	public static function getTreeProperties($skuInfo, $propertiesCodes, $defaultFields = array())
	{
		$requireFields = array(
			'ID',
			'UF_XML_ID',
			'UF_NAME',
		);

		$result = array();
		if (empty($skuInfo))
			return $result;
		if (!is_array($skuInfo))
		{
			$skuInfo = intval($skuInfo);
			if ($skuInfo <= 0)
				return $result;
			if (self::$catalogIncluded === null)
				self::$catalogIncluded = \Freetrix\Main\Loader::includeModule('catalog');
			if (!self::$catalogIncluded)
				return $result;
			$skuInfo = CCatalogSKU::GetInfoByProductIBlock($skuInfo);
			if (empty($skuInfo) || !is_array($skuInfo))
				return $result;
		}
		if (empty($propertiesCodes) || !is_array($propertiesCodes))
			return $result;

		$showMode = '';

		$props = CIBlockProperty::GetList(
			array('SORT' => 'ASC', 'ID' => 'ASC'),
			array('IBLOCK_ID' => $skuInfo['IBLOCK_ID'], 'ACTIVE' => 'Y', 'MULTIPLE' => 'N')
		);
		while ($propInfo = $props->Fetch())
		{
			$propInfo['ID'] = intval($propInfo['ID']);
			if ($propInfo['ID'] == $skuInfo['SKU_PROPERTY_ID'])
				continue;
			if ('' == $propInfo['CODE'])
				$propInfo['CODE'] = $propInfo['ID'];
			if (!in_array($propInfo['CODE'], $propertiesCodes))
				continue;
			$propInfo['USER_TYPE'] = (string)$propInfo['USER_TYPE'];
			if ('L' != $propInfo['PROPERTY_TYPE'] && 'E' != $propInfo['PROPERTY_TYPE'] && !('S' == $propInfo['PROPERTY_TYPE'] && 'directory' == $propInfo['USER_TYPE']))
				continue;
			if ('S' == $propInfo['PROPERTY_TYPE'] && 'directory' == $propInfo['USER_TYPE'])
			{
				if (!isset($propInfo['USER_TYPE_SETTINGS']['TABLE_NAME']) || empty($propInfo['USER_TYPE_SETTINGS']['TABLE_NAME']))
					continue;
				if (null === self::$highLoadInclude)
					self::$highLoadInclude = \Freetrix\Main\Loader::includeModule('highloadblock');
				if (!self::$highLoadInclude)
					continue;

				$highBlock = \Freetrix\Highloadblock\HighloadBlockTable::getList(array("filter" => array('TABLE_NAME' => $propInfo['USER_TYPE_SETTINGS']['TABLE_NAME'])))->fetch();
				if (!isset($highBlock['ID']))
					continue;

				$entity = \Freetrix\Highloadblock\HighloadBlockTable::compileEntity($highBlock);
				$entityDataClass = $entity->getDataClass();
				$fieldsList = $entityDataClass::getMap();
				if (empty($fieldsList))
					continue;

				$flag = true;
				foreach ($requireFields as &$fieldCode)
				{
					if (!isset($fieldsList[$fieldCode]) || empty($fieldsList[$fieldCode]))
					{
						$flag = false;
						break;
					}
				}
				unset($fieldCode);
				if (!$flag)
					continue;
				$propInfo['USER_TYPE_SETTINGS']['FIELDS_MAP'] = $fieldsList;
				$propInfo['USER_TYPE_SETTINGS']['ENTITY'] = $entity;
			}
			switch ($propInfo['PROPERTY_TYPE'])
			{
				case 'E':
					$showMode = 'PICT';
					break;
				case 'L':
					$showMode = 'TEXT';
					break;
				case 'S':
					$showMode = (isset($fieldsList['UF_FILE']) ? 'PICT' : 'TEXT');
					break;
			}
			$treeProp = array(
				'ID' => intval($propInfo['ID']),
				'CODE' => $propInfo['CODE'],
				'NAME' => $propInfo['NAME'],
				'SORT' => intval($propInfo['SORT']),
				'PROPERTY_TYPE' => $propInfo['PROPERTY_TYPE'],
				'USER_TYPE' => $propInfo['USER_TYPE'],
				'LINK_IBLOCK_ID' => $propInfo['LINK_IBLOCK_ID'],
				'USER_TYPE_SETTINGS' => $propInfo['USER_TYPE_SETTINGS'],
				'VALUES' => array(),
				'SHOW_MODE' => $showMode,
				'DEFAULT_VALUES' => array(
					'PICT' => false,
					'NAME' => '-'
				)
			);
			if ('PICT' == $showMode)
			{
				if (isset($defaultFields['PICT']))
				{
					$treeProp['DEFAULT_VALUES']['PICT'] = $defaultFields['PICT'];
				}
			}
			if (isset($defaultFields['NAME']))
			{
				$treeProp['DEFAULT_VALUES']['NAME'] = $defaultFields['NAME'];
			}
			$result[$treeProp['CODE']] = $treeProp;
		}
		return $result;
	}
示例#27
0
$arResult["IS_SKU"] = true;
$lang = \Bitrix\Main\Application::getInstance()->getContext()->getLanguage();
if ($arParams["ELEMENT_ID"] <= 0) {
    ShowError(GetMessage("PRODUCT_NOT_EXIST"));
    return;
}
if ($this->StartResultCache()) {
    $arResult['STORES'] = array();
    $isProductExistSKU = CCatalogSKU::IsExistOffers($arParams['ELEMENT_ID'], $iblockId);
    if ($isProductExistSKU) {
        $res = CIBlockElement::GetList(array(), array('ID' => $arParams['ELEMENT_ID']), false, false, array('ID', 'IBLOCK_ID'));
        if ($productInfo = $res->Fetch()) {
            $productId = $productInfo['ID'];
            $iblockId = $productInfo['IBLOCK_ID'];
        }
        $skuInfo = CCatalogSKU::GetInfoByProductIBlock($iblockId);
        $skuIterator = CIBlockElement::GetList(array('ID' => 'DESC'), array('IBLOCK_ID' => $skuInfo['IBLOCK_ID'], 'PROPERTY_' . $skuInfo['SKU_PROPERTY_ID'] => $productId), false, false, array('ID'));
        $productSku = array();
        while ($sku = $skuIterator->Fetch()) {
            $amount = array();
            $sum = 0;
            $filter = array('PRODUCT_ID' => $sku['ID']);
            if (!empty($arParams['STORES'])) {
                $filter['STORE_ID'] = $arParams['STORES'];
            }
            $storeIterator = CCatalogStoreProduct::GetList(array(), $filter, false, false, array('ID', 'STORE_ID', 'AMOUNT'));
            while ($store = $storeIterator->Fetch()) {
                if ($arParams["SHOW_GENERAL_STORE_INFORMATION"] == "Y") {
                    $sum += $store['AMOUNT'];
                } else {
                    $amount[$store['STORE_ID']] = 0;
示例#28
0
$arElementSort = array();
//check catalog
if (count($arViewedId) > 0 && CModule::IncludeModule("iblock") && CModule::IncludeModule("catalog")) {
    $res = CIBlockElement::GetList(array(), array("ID" => $arViewedId), false, false, array('ID', 'IBLOCK_ID', 'IBLOCK_SECTION_ID'));
    while ($arElements = $res->Fetch()) {
        $arElements["DATE_VISIT"] = $arViewed[$arElements["ID"]]["DATE_VISIT"];
        $arElementSort[] = $arElements;
    }
    usort($arElementSort, "arraySort");
    foreach ($arElementSort as $arElements) {
        static $arCacheOffersIblock = array();
        $priceMin = 0;
        $arItems = $arViewed[$arElements["ID"]];
        $arItems["IBLOCK_ID"] = $arElements["IBLOCK_ID"];
        if (!is_set($arCacheOffersIblock[$arElements["IBLOCK_ID"]])) {
            $mxResult = CCatalogSKU::GetInfoByProductIBlock($arElements["IBLOCK_ID"]);
            if (is_array($mxResult)) {
                $arOffersIblock["OFFERS_IBLOCK_ID"] = $mxResult["IBLOCK_ID"];
                $arCacheOffersIblock[$arElements["IBLOCK_ID"]] = $arOffersIblock;
            }
        } else {
            $arOffersIblock = $arCacheOffersIblock[$arElements["IBLOCK_ID"]];
        }
        if (IntVal($arOffersIblock["OFFERS_IBLOCK_ID"]) > 0) {
            static $arCacheOfferProperties = array();
            if (!is_set($arCacheOfferProperties[$arOffersIblock["OFFERS_IBLOCK_ID"]])) {
                $dbOfferProperties = CIBlock::GetProperties($arOffersIblock["OFFERS_IBLOCK_ID"], array(), array("!XML_ID" => "CML2_LINK"));
                while ($arOfferProperties = $dbOfferProperties->Fetch()) {
                    $arCacheOfferProperties[$arOffersIblock["OFFERS_IBLOCK_ID"]][] = $arOfferProperties["CODE"];
                }
            }
示例#29
0
 public function getSkuPropsData($arBasketItems, $arParents, $arSkuProps = array())
 {
     $arRes = array();
     $arSkuIblockID = array();
     if (is_array($arParents)) {
         foreach ($arBasketItems as &$arItem) {
             if (array_key_exists($arItem["PRODUCT_ID"], $arParents)) {
                 $arSKU = CCatalogSKU::GetInfoByProductIBlock($arParents[$arItem["PRODUCT_ID"]]["IBLOCK_ID"]);
                 if (!array_key_exists($arSKU["IBLOCK_ID"], $arSkuIblockID)) {
                     $arSkuIblockID[$arSKU["IBLOCK_ID"]] = $arSKU;
                 }
                 $arItem["IBLOCK_ID"] = $arSKU["IBLOCK_ID"];
                 $arItem["SKU_PROPERTY_ID"] = $arSKU["SKU_PROPERTY_ID"];
             }
         }
         unset($arItem);
         foreach ($arSkuIblockID as $skuIblockID => $arSKU) {
             // possible props values
             $rsProps = CIBlockProperty::GetList(array('SORT' => 'ASC', 'ID' => 'ASC'), array('IBLOCK_ID' => $skuIblockID, 'ACTIVE' => 'Y'));
             while ($arProp = $rsProps->Fetch()) {
                 if ($arProp['PROPERTY_TYPE'] == 'L' || $arProp['PROPERTY_TYPE'] == 'E' || $arProp['PROPERTY_TYPE'] == 'S' && $arProp['USER_TYPE'] == 'directory') {
                     if ($arProp['XML_ID'] == 'CML2_LINK') {
                         continue;
                     }
                     if (!in_array($arProp['CODE'], $arSkuProps)) {
                         continue;
                     }
                     $arValues = array();
                     if ($arProp['PROPERTY_TYPE'] == 'L') {
                         $arValues = array();
                         $rsPropEnums = CIBlockProperty::GetPropertyEnum($arProp['ID']);
                         while ($arEnum = $rsPropEnums->Fetch()) {
                             $arValues['n' . $arEnum['ID']] = array('ID' => $arEnum['ID'], 'NAME' => $arEnum['VALUE'], 'PICT' => false);
                         }
                     } elseif ($arProp['PROPERTY_TYPE'] == 'E') {
                         $rsPropEnums = CIBlockElement::GetList(array('SORT' => 'ASC'), array('IBLOCK_ID' => $arProp['LINK_IBLOCK_ID'], 'ACTIVE' => 'Y'), false, false, array('ID', 'NAME', 'PREVIEW_PICTURE'));
                         while ($arEnum = $rsPropEnums->Fetch()) {
                             $arEnum['PREVIEW_PICTURE'] = CFile::GetFileArray($arEnum['PREVIEW_PICTURE']);
                             if (!is_array($arEnum['PREVIEW_PICTURE'])) {
                                 $arEnum['PREVIEW_PICTURE'] = false;
                             }
                             if ($arEnum['PREVIEW_PICTURE'] !== false) {
                                 $productImg = CFile::ResizeImageGet($arEnum['PREVIEW_PICTURE'], array('width' => 80, 'height' => 80), BX_RESIZE_IMAGE_PROPORTIONAL, false, false);
                                 $arEnum['PREVIEW_PICTURE']['SRC'] = $productImg['src'];
                             }
                             $arValues['n' . $arEnum['ID']] = array('ID' => $arEnum['ID'], 'NAME' => $arEnum['NAME'], 'SORT' => $arEnum['SORT'], 'PICT' => $arEnum['PREVIEW_PICTURE']);
                         }
                     } elseif ($arProp['PROPERTY_TYPE'] == 'S' && $arProp['USER_TYPE'] == 'directory') {
                         if (self::$highLoadInclude === null) {
                             self::$highLoadInclude = Loader::includeModule('highloadblock');
                         }
                         if (self::$highLoadInclude) {
                             $hlblock = HL\HighloadBlockTable::getList(array("filter" => array("=TABLE_NAME" => $arProp["USER_TYPE_SETTINGS"]["TABLE_NAME"])))->fetch();
                             if ($hlblock) {
                                 $entity = HL\HighloadBlockTable::compileEntity($hlblock);
                                 $entity_data_class = $entity->getDataClass();
                                 $rsData = $entity_data_class::getList();
                                 while ($arData = $rsData->fetch()) {
                                     $arValues['n' . $arData['ID']] = array('ID' => $arData['ID'], 'NAME' => $arData['UF_NAME'], 'SORT' => $arData['UF_SORT'], 'FILE' => $arData['UF_FILE'], 'PICT' => false, 'XML_ID' => $arData['UF_XML_ID']);
                                 }
                             }
                         }
                     }
                     if (!empty($arValues) && is_array($arValues)) {
                         $arRes[$skuIblockID][$arProp['ID']] = array('ID' => $arProp['ID'], 'CODE' => $arProp['CODE'], 'NAME' => $arProp['NAME'], 'TYPE' => $arProp['PROPERTY_TYPE'], 'USER_TYPE' => $arProp['USER_TYPE'], 'VALUES' => $arValues);
                     }
                 }
             }
         }
         foreach ($arBasketItems as &$arItem) {
             if (isset($arItem["IBLOCK_ID"]) && (int) $arItem["IBLOCK_ID"] > 0 && isset($arRes[$arItem["IBLOCK_ID"]])) {
                 $arItem["SKU_DATA"] = $arRes[$arItem["IBLOCK_ID"]];
                 $arUsedValues = array();
                 $arTmpRes = array();
                 $arOfFilter = array("IBLOCK_ID" => $arItem["IBLOCK_ID"], "PROPERTY_" . $arSkuIblockID[$arItem["IBLOCK_ID"]]["SKU_PROPERTY_ID"] => $arParents[$arItem["PRODUCT_ID"]]["PRODUCT_ID"]);
                 $rsOffers = CIBlockElement::GetList(array(), $arOfFilter, false, false, array("ID", "IBLOCK_ID"));
                 while ($obOffer = $rsOffers->GetNextElement()) {
                     $arProps = $obOffer->GetProperties();
                     foreach ($arProps as $propName => $propValue) {
                         if (in_array($propName, $arSkuProps)) {
                             if (array_key_exists('VALUE', $propValue)) {
                                 if (strlen($propValue['VALUE']) > 0 && (!is_array($arUsedValues[$arItem["PRODUCT_ID"]][$propName]) || !in_array($propValue['VALUE'], $arUsedValues[$arItem["PRODUCT_ID"]][$propName]))) {
                                     $arUsedValues[$arItem["PRODUCT_ID"]][$propName][] = $propValue['VALUE'];
                                 }
                             }
                         }
                     }
                 }
                 if (!empty($arUsedValues)) {
                     // add only used values to the item SKU_DATA
                     foreach ($arRes[$arItem["IBLOCK_ID"]] as $propId => $arProp) {
                         if (!array_key_exists($arProp["CODE"], $arUsedValues[$arItem["PRODUCT_ID"]])) {
                             continue;
                         }
                         $arTmpRes['n' . $propId] = array();
                         foreach ($arProp["VALUES"] as $valId => $arValue) {
                             // properties of various type have different values in the used values data
                             if ($arProp["TYPE"] == "L" && in_array($arValue["NAME"], $arUsedValues[$arItem["PRODUCT_ID"]][$arProp["CODE"]]) || $arProp["TYPE"] == "E" && in_array($arValue["ID"], $arUsedValues[$arItem["PRODUCT_ID"]][$arProp["CODE"]]) || $arProp["TYPE"] == "S" && in_array($arValue["XML_ID"], $arUsedValues[$arItem["PRODUCT_ID"]][$arProp["CODE"]])) {
                                 if ($arProp["TYPE"] == "S") {
                                     if (!empty($arValue["FILE"])) {
                                         $arTmpFile = CFile::GetFileArray($arValue["FILE"]);
                                         if (!empty($arTmpFile)) {
                                             $tmpImg = CFile::ResizeImageGet($arTmpFile, array('width' => 80, 'height' => 80), BX_RESIZE_IMAGE_PROPORTIONAL, false, false);
                                             $arValue['PICT']['SRC'] = $tmpImg['src'];
                                         }
                                     }
                                 }
                                 $arTmpRes['n' . $propId]["CODE"] = $arProp["CODE"];
                                 $arTmpRes['n' . $propId]["NAME"] = $arProp["NAME"];
                                 $arTmpRes['n' . $propId]["VALUES"][$valId] = $arValue;
                             }
                         }
                     }
                 }
                 $arItem["SKU_DATA"] = $arTmpRes;
             }
         }
         unset($arItem);
     }
     return $arBasketItems;
 }
示例#30
0
 function makeFilter($FILTER_NAME)
 {
     $bOffersIBlockExist = false;
     if (self::$catalogIncluded === null) {
         self::$catalogIncluded = Loader::includeModule('catalog');
     }
     if (self::$catalogIncluded) {
         $arCatalog = CCatalogSKU::GetInfoByProductIBlock($this->IBLOCK_ID);
         if (!empty($arCatalog)) {
             $bOffersIBlockExist = true;
         }
     }
     $gFilter = $GLOBALS[$FILTER_NAME];
     $arFilter = array("IBLOCK_ID" => $this->IBLOCK_ID, "IBLOCK_LID" => SITE_ID, "IBLOCK_ACTIVE" => "Y", "ACTIVE_DATE" => "Y", "ACTIVE" => "Y", "CHECK_PERMISSIONS" => "Y", "MIN_PERMISSION" => "R", "INCLUDE_SUBSECTIONS" => $this->arParams["INCLUDE_SUBSECTIONS"] != 'N' ? 'Y' : 'N');
     if ($this->SECTION_ID > 0 || $this->arParams["SHOW_ALL_WO_SECTION"] !== "Y") {
         $arFilter["SECTION_ID"] = $this->SECTION_ID;
     }
     if ($this->arParams['HIDE_NOT_AVAILABLE'] == 'Y') {
         $arFilter['CATALOG_AVAILABLE'] = 'Y';
     }
     if (self::$catalogIncluded && $bOffersIBlockExist) {
         $arPriceFilter = array();
         foreach ($gFilter as $key => $value) {
             if (preg_match('/^(>=|<=|><)CATALOG_PRICE_/', $key)) {
                 $arPriceFilter[$key] = $value;
                 unset($gFilter[$key]);
             }
         }
         if (!empty($gFilter["OFFERS"])) {
             if (empty($arPriceFilter)) {
                 $arSubFilter = $gFilter["OFFERS"];
             } else {
                 $arSubFilter = array_merge($gFilter["OFFERS"], $arPriceFilter);
             }
             $arSubFilter["IBLOCK_ID"] = $this->SKU_IBLOCK_ID;
             $arSubFilter["ACTIVE_DATE"] = "Y";
             $arSubFilter["ACTIVE"] = "Y";
             if ('Y' == $this->arParams['HIDE_NOT_AVAILABLE']) {
                 $arSubFilter['CATALOG_AVAILABLE'] = 'Y';
             }
             $arFilter["=ID"] = CIBlockElement::SubQuery("PROPERTY_" . $this->SKU_PROPERTY_ID, $arSubFilter);
         } elseif (!empty($arPriceFilter)) {
             $arSubFilter = $arPriceFilter;
             $arSubFilter["IBLOCK_ID"] = $this->SKU_IBLOCK_ID;
             $arSubFilter["ACTIVE_DATE"] = "Y";
             $arSubFilter["ACTIVE"] = "Y";
             $arFilter[] = array("LOGIC" => "OR", array($arPriceFilter), "=ID" => CIBlockElement::SubQuery("PROPERTY_" . $this->SKU_PROPERTY_ID, $arSubFilter));
         }
         unset($gFilter["OFFERS"]);
     }
     return array_merge($gFilter, $arFilter);
 }