Your IP : 3.145.180.166


Current Path : /home/bitrix/ext_www/dev.ballu.in.ua/bitrix/components/bitrix/sale.basket.basket/
Upload File :
Current File : /home/bitrix/ext_www/dev.ballu.in.ua/bitrix/components/bitrix/sale.basket.basket/component.php

<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
/** @var CBitrixBasketComponent $this */
/** @var array $arParams */
/** @var array $arResult */
/** @var string $componentPath */
/** @var string $componentName */
/** @var string $componentTemplate */
/** @global CDatabase $DB */
/** @global CUser $USER */
/** @global CMain $APPLICATION */
use Bitrix\Main\Loader;

if (!Loader::includeModule('sale'))
{
	ShowError(GetMessage("SALE_MODULE_NOT_INSTALL"));
	return;
}

include_once(dirname(__FILE__)."/functions.php");

$arResult["WARNING_MESSAGE"] = array();

$headersData = $this->getCustomColumns(); // custom product table columns

// BASKET REFRESH
if (strlen($_REQUEST["BasketRefresh"]) > 0 || strlen($_REQUEST["BasketOrder"]) > 0 || strlen($_REQUEST[$arParams["ACTION_VARIABLE"]]) > 0 )
{
	// todo: tmp hack until ajax recalculation is made
	if (isset($_REQUEST["BasketRefresh"]) && strlen($_REQUEST["BasketRefresh"]) > 0)
		unset($_REQUEST["BasketOrder"]);

	// if action is performed
	if (strlen($_REQUEST[$arParams["ACTION_VARIABLE"]]) > 0)
	{
		$id = intval($_REQUEST["id"]);
		if ($id > 0)
		{
			$fuserId = CSaleBasket::GetBasketUserID(); 
			$dbBasketItems = CSaleBasket::GetList(
				array(),
				array(
					"FUSER_ID" => $fuserId,
					"LID" => SITE_ID,
					"ORDER_ID" => "NULL",
					"ID" => $id,
				),
				false,
				false,
				array('ID', 'DELAY', 'CAN_BUY', 'SET_PARENT_ID', 'TYPE', 'NAME')
			);
			$arItem = $dbBasketItems->Fetch();
			if ($arItem && !CSaleBasketHelper::isSetItem($arItem))
			{
				if ($_REQUEST[$arParams["ACTION_VARIABLE"]] == "delete" && in_array("DELETE", $arParams["COLUMNS_LIST"]))
				{
					CSaleBasket::Delete($arItem["ID"]);
					$_SESSION["SALE_BASKET_NUM_PRODUCTS"][SITE_ID]--;
				}
				elseif ($_REQUEST[$arParams["ACTION_VARIABLE"]] == "delay" && in_array("DELAY", $arParams["COLUMNS_LIST"]))
				{
					if ($arItem["DELAY"] == "N" && $arItem["CAN_BUY"] == "Y")
					{
						CSaleBasket::Update($arItem["ID"], array("DELAY" => "Y"));
						$_SESSION["SALE_BASKET_NUM_PRODUCTS"][SITE_ID]--;
					}
				}
				elseif ($_REQUEST[$arParams["ACTION_VARIABLE"]] == "add" && in_array("DELAY", $arParams["COLUMNS_LIST"]))
				{
					if ($arItem["DELAY"] == "Y" && $arItem["CAN_BUY"] == "Y")
					{
						CSaleBasket::Update($arItem["ID"], array("DELAY" => "N"));
						$_SESSION["SALE_BASKET_NUM_PRODUCTS"][SITE_ID]++;
					}
					else
					{
						$_SESSION["SALE_BASKET_MESSAGE"][] = \Bitrix\Main\Localization\Loc::getMessage("SBB_PRODUCT_NOT_AVAILABLE", array("#PRODUCT#" => $arItem["NAME"]));
					}
				}
			}
		}

		LocalRedirect($APPLICATION->GetCurPage());
	}
	else // if quantity is changed or coupon is set
	{
		if (isset($_REQUEST["COUPON"]))
			$_REQUEST["coupon"] = $_REQUEST["COUPON"];

		$arRes = $this->recalculateBasket($_REQUEST);

		foreach ($arRes as $key => $value)
			$arResult[$key] = $value;
		
		if (!empty($_REQUEST["BasketOrder"]) && empty($arResult["WARNING_MESSAGE"]))
		{
			if (!array_key_exists('paypalbutton_x', $_POST) && !array_key_exists('paypalbutton_y', $_POST))
				LocalRedirect($arParams["PATH_TO_ORDER"]);
		}
		else
		{
			unset($_REQUEST["BasketRefresh"], $_REQUEST["BasketOrder"]);

			if (!empty($arResult["WARNING_MESSAGE"]))
				$_SESSION["SALE_BASKET_MESSAGE"] = $arResult["WARNING_MESSAGE"];

			LocalRedirect($APPLICATION->GetCurPage());
		}
	}
}

$basketData = $this->getBasketItems();

$arResult = array_merge($arResult, $basketData);

$arResult["GRID"]["HEADERS"] = $headersData;

if (is_array($_SESSION["SALE_BASKET_MESSAGE"]))
{
	foreach ($_SESSION["SALE_BASKET_MESSAGE"] as $message)
		$arResult["WARNING_MESSAGE"][] = $message;

	unset($_SESSION["SALE_BASKET_MESSAGE"]);
}

CJSCore::Init(array('ajax'));

$this->IncludeComponentTemplate();