Your IP : 216.73.216.86


Current Path : /var/www/homesaver/www/bitrix/components/skyweb24/sharebasket.show/
Upload File :
Current File : /var/www/homesaver/www/bitrix/components/skyweb24/sharebasket.show/class.php

<?

use Bitrix\Main\Localization\Loc;

\Bitrix\Main\Loader::IncludeModule("sale");
\Bitrix\Main\Loader::includeModule("catalog");

Loc::loadMessages(__FILE__);

if (\Bitrix\Main\Loader::IncludeModule("skyweb24.sharebasket")) {
    class ShareBasketShow extends \CBitrixComponent
    {
        public function executeComponent()
        {
            global $APPLICATION;
            global $USER;

            $APPLICATION->SetTitle(GetMessage("skyweb24_sharebasketshow.SHARE_BASKET"));
            $APPLICATION->AddChainItem(GetMessage("skyweb24_sharebasketshow.SHARE_BASKET"), "");

            $id = (!empty($_REQUEST['id'])) ? $_REQUEST['id'] : 0;
            $basketData = new \Skyweb24\Sharebasket\Show;

            $arProducts = $basketData->unserializeProducts($id);

            if (empty($arProducts)) {
                return;
            }

            $protocol = (\CMain::IsHTTPS()) ? "https://" : "http://";
            $this->arResult["URL_SITE"] = $protocol . $_SERVER["SERVER_NAME"];
            $this->arResult["OPTION_LINK_BASKET"] = $this->arParams["LINK_BASKET"];
            $this->arResult['PRODUCTS'] = [];

            foreach ($arProducts as $key => $props) {

                $quantityProducts = $props['QUANTITY'];

                $this->arResult['PRODUCTS'][$key]['PRODUCT_ID'] = $props['PRODUCT_ID'];
                $this->arResult['PRODUCTS'][$key]['PROPERTIES'] = $props['PROPERTIES'];
                $this->arResult['PRODUCTS'][$key]['PRICE'] = $props['PRICE'];
                $this->arResult['PRODUCTS'][$key]['CURRENCY'] = $props['CURRENCY'];
                $this->arResult['PRODUCTS'][$key]['LID'] = $props['LID'];
                $this->arResult['PRODUCTS'][$key]['NAME'] = $props['NAME'];
                $this->arResult['PRODUCTS'][$key]['MODULE'] = $props['MODULE'];
                $this->arResult['PRODUCTS'][$key]['WEIGHT'] = $props['WEIGHT'];
                $this->arResult['PRODUCTS'][$key]['PRODUCT_PROVIDER_CLASS'] = $props['PRODUCT_PROVIDER_CLASS'];


                $arFilter = array("ID" => $this->arResult['PRODUCTS'][$key]['PRODUCT_ID']);
                $dbIBlockElement = CIBlockElement::GetList(array(), $arFilter);

                $catalogProduct = CCatalogProduct::GetByID($this->arResult['PRODUCTS'][$key]['PRODUCT_ID']);

                $this->arResult['PRODUCTS'][$key]["ID"] = $catalogProduct["ID"];
                $this->arResult['PRODUCTS'][$key]["QUANTITY"] = $catalogProduct["QUANTITY"];
                $this->arResult['PRODUCTS'][$key]["QUANTITY_TRACE"] = $catalogProduct["QUANTITY_TRACE"];
                $this->arResult['PRODUCTS'][$key]["CAN_BUY_ZERO"] = $catalogProduct["CAN_BUY_ZERO"];
                $this->arResult['PRODUCTS'][$key]["NEGATIVE_AMOUNT_TRACE"] = $catalogProduct["NEGATIVE_AMOUNT_TRACE"];
                $this->arResult['PRODUCTS'][$key]["SELECT_BEST_PRICE"] = $catalogProduct["SELECT_BEST_PRICE"];
                $this->arResult['PRODUCTS'][$key]["TYPE"] = $catalogProduct["TYPE"];
                $this->arResult['PRODUCTS'][$key]["AVAILABLE"] = $catalogProduct["AVAILABLE"];


                $measureProduct = \Bitrix\Catalog\ProductTable::getCurrentRatioWithMeasure($this->arResult['PRODUCTS'][$key]['PRODUCT_ID']);
                $this->arResult['PRODUCTS'][$key]["MEASURE_SYMBOL_RUS"] = $measureProduct[$catalogProduct["ID"]]["MEASURE"]["SYMBOL_RUS"];

                if ($arIBlockElement = $dbIBlockElement->GetNext()) {
                    if ($arIBlock = CIBlock::GetArrayByID($arIBlockElement["IBLOCK_ID"])) {
                        $this->arResult['PRODUCTS'][$key]["IBLOCK_ID"] = $arIBlock["ID"];
                        $this->arResult['PRODUCTS'][$key]["IBLOCK_NAME"] = htmlspecialcharsbx($arIBlock["NAME"]);
                        $this->arResult['PRODUCTS'][$key]["~IBLOCK_NAME"] = $arIBlock["NAME"];
                    }

                    $res = CIBlockSection::GetByID($arIBlockElement["IBLOCK_SECTION_ID"]);
                    if ($ar_res = $res->GetNext())
                        $this->arResult['PRODUCTS'][$key]["IBLOCK_SECTION_NAME"] = $ar_res['NAME'];

                    $this->arResult['PRODUCTS'][$key]["ACTIVE"] = $arIBlockElement["ACTIVE"];
                    $this->arResult['PRODUCTS'][$key]["SITE_ID"] = $arIBlockElement["SITE_ID"];
                    $this->arResult['PRODUCTS'][$key]["NAME"] = $arIBlockElement["NAME"];
                    $this->arResult['PRODUCTS'][$key]["DETAIL_PAGE_URL"] = $arIBlockElement["DETAIL_PAGE_URL"];
                    $this->arResult['PRODUCTS'][$key]["PREVIEW_PICTURE"] = $arIBlockElement["PREVIEW_PICTURE"];
                    $this->arResult['PRODUCTS'][$key]["~PREVIEW_PICTURE"] = $arIBlockElement["~PREVIEW_PICTURE"];
                    $this->arResult['PRODUCTS'][$key]["DETAIL_PICTURE"] = $arIBlockElement["DETAIL_PICTURE"];
                    $this->arResult['PRODUCTS'][$key]["~DETAIL_PICTURE"] = $arIBlockElement["~DETAIL_PICTURE"];
                }


                $arPrice = CCatalogProduct::GetOptimalPrice($this->arResult['PRODUCTS'][$key]['PRODUCT_ID'], $quantityProducts, $USER->GetUserGroupArray(), "N");

                $arPrice['RESULT_PRICE']["DISCOUNT_PRICE"] = $arPrice['RESULT_PRICE']["DISCOUNT_PRICE"] * $quantityProducts;
                $this->arResult['PRODUCTS'][$key]['PRICES']["PRICE_TYPE_ID"] = $arPrice['RESULT_PRICE']["PRICE_TYPE_ID"];
                $this->arResult['PRODUCTS'][$key]['PRICES']["BASE_PRICE"] = $arPrice['RESULT_PRICE']["BASE_PRICE"];
                $this->arResult['PRODUCTS'][$key]['PRICES']["~BASE_PRICE"] = CCurrencyLang::CurrencyFormat($arPrice['RESULT_PRICE']["BASE_PRICE"], $arPrice['RESULT_PRICE']["CURRENCY"]);
                $this->arResult['PRODUCTS'][$key]['PRICES']["DISCOUNT_PRICE"] = $arPrice['RESULT_PRICE']["DISCOUNT_PRICE"];
                $this->arResult['PRODUCTS'][$key]['PRICES']["~DISCOUNT_PRICE"] = CCurrencyLang::CurrencyFormat($arPrice['RESULT_PRICE']["DISCOUNT_PRICE"], $arPrice['RESULT_PRICE']["CURRENCY"]);
                $this->arResult['PRODUCTS'][$key]['PRICES']["CURRENCY"] = $arPrice['RESULT_PRICE']["CURRENCY"];
                $this->arResult['PRODUCTS'][$key]['PRICES']["DISCOUNT"] = $arPrice['RESULT_PRICE']["DISCOUNT"];
                $this->arResult['PRODUCTS'][$key]['PRICES']["PERCENT"] = $arPrice['RESULT_PRICE']["PERCENT"];

                $dbPrices = CPrice::GetList(array("SORT" => "ASC"), array("PRODUCT_ID" => $this->arResult['PRODUCTS'][$key]['PRODUCT_ID'], "CATALOG_GROUP_ID" => $this->arResult['PRODUCTS'][$key]['PRICES']["PRICE_TYPE_ID"]), array('CATALOG_GROUP_ID', 'CATALOG_GROUP_NAME'));
                if ($arPrices = $dbPrices->Fetch())
                    $this->arResult['PRODUCTS'][$key]['PRICES']['CATALOG_GROUP_NAME'] = $arPrices["CATALOG_GROUP_NAME"];

                $this->arResult['PRODUCTS'][$key]['QUANTITY_BUY'] = $quantityProducts;

                $totalPriceProduct = floatval($arPrice['RESULT_PRICE']["DISCOUNT_PRICE"]) * floatval($this->arResult['PRODUCTS'][$key]["QUANTITY_BUY"]);
                $totalPrice += $totalPriceProduct;

            }
            

            $this->arResult['AR_PRODUCTS'] = serialize($arProducts);
            
            $this->IncludeComponentTemplate();
        }

        public function addProductsToBasket($arProducts)
        {
            foreach ($arProducts as $product) {

                $arFields = array(
                    "PRODUCT_ID" => $product['PRODUCT_ID'],
                    "PRICE"      => $product['PRICE'],
                    "CURRENCY"   => $product['CURRENCY'],
                    "QUANTITY"   => $product['QUANTITY'],
                    "LID"        => $product['LID'],
                    "NAME"       => $product['NAME'],
                    "MODULE"     => $product['MODULE'],
                    "WEIGHT"     => $product['WEIGHT'] * $product['QUANTITY'],
                    "PRODUCT_PROVIDER_CLASS" => str_replace("/", "\\", $product['PRODUCT_PROVIDER_CLASS'])
                );
                $arFields["PROPS"] = $product['PROPERTIES'];

                // \CSaleBasket::Update(4872, ["PRODUCT_PROVIDER_CLASS" => "CCatalogProductProviderCustom"]);
                if(!\CSaleBasket::Add($arFields))
                {
                    echo "error add to basket";
                }

            }
        }
    }
} else {
    class ShareBasketShow extends \CBitrixComponent
    {
        public function executeComponent()
        {
            ShowMessage(Loc::getMessage('skyweb24_sharebasketshow.MODULE_NOT_INCLUDE'));
        }
    }
}
?>