| Current Path : /var/www/homesaver/www/bitrix/components/skyweb24/sharebasket.show/ |
| 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'));
}
}
}
?>