Your IP : 3.15.179.238


Current Path : /home/bitrix/ext_www/dev.home-comfort.in.ua/ajax/
Upload File :
Current File : /home/bitrix/ext_www/dev.home-comfort.in.ua/ajax/add2basketpromo.php

<? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

$_REQUEST["action"] = "ADD2BASKET"; // чтобы в ссылках везде не менять. Это нужно в crm_provider.php

CModule::IncludeModule("iblock");
CModule::IncludeModule("catalog");

$id = (int) (!empty($_REQUEST['id'])?$_REQUEST['id']:$_REQUEST['ID']);

//$rewriteFields['PRODUCT_PROVIDER_CLASS'] = "CRMCatalogProductProvider";




/*генерация названия комплекта*/
$milliseconds = round(microtime(true) * 1000);


if(isset($id) && isset($_REQUEST['quantity'])){

    $quantity = intval($_REQUEST['quantity']);

/*    Add2BasketByProductID( $id, $quantity, $rewriteFields,  array("NAME" => "Цвет", "CODE" => "STYLE", "VALUE" => "красный", "SORT"=> 100 ) );

    Add2BasketByProductID( 38497, $quantity, $rewriteFields,  array("NAME" => "Цвет", "CODE" => "STYLE", "VALUE" => "красный1", "SORT"=> 100)); /*Добавляем инвертер*/
 /*   Add2BasketByProductID( 41103, $quantity, $rewriteFields,  array("NAME" => "Цвет", "CODE" => "STYLE", "VALUE" => "красный2", "SORT"=> 100) );*/ /*Добавляем wi-fi*/

    /*Добавляем товар*/
    $arSelect = Array("ID", "IBLOCK_ID", "NAME", "CATALOG_GROUP_1");
    $arFilter = Array("ID"=> $id, "ACTIVE"=>"Y");
    $res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
    while($ob = $res->GetNextElement())
    {
        $arFields = $ob->GetFields();


        $arFields = array(
            "PRODUCT_ID" => $id,
            "PRICE" => $arFields['CATALOG_PRICE_1'],
            "CURRENCY" => "RUB",
            "QUANTITY" => $quantity,
            "LID" => LANG,
            "DELAY" => "N",
            "CAN_BUY" => "Y",
            "NAME" => $arFields['NAME'],

        );

        $arProps = array();

        $arProps[] = array(
            "NAME" => "Комплект",
            "CODE" => "COMP",
            "VALUE" => $milliseconds
        );

        $arFields["PROPS"] = $arProps;

        CSaleBasket::Add($arFields);

    }



    /*Добавляем инвертер*/
    $arSelect = Array("ID", "IBLOCK_ID", "NAME", "CATALOG_GROUP_1");
    $arFilter = Array("ID"=> 38497, "ACTIVE"=>"Y");
    $res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
    while($ob = $res->GetNextElement())
    {
        $arFields = $ob->GetFields();


    $arFields = array(
        "PRODUCT_ID" => 38497,
        "PRICE" => $arFields['CATALOG_PRICE_1'],
        "CURRENCY" => "RUB",
        "QUANTITY" => $quantity,
        "LID" => LANG,
        "DELAY" => "N",
        "CAN_BUY" => "Y",
        "NAME" => $arFields['NAME'],

    );

    $arProps = array();

    $arProps[] = array(
        "NAME" => "Комплект",
        "CODE" => "COMP",
        "VALUE" => $milliseconds
    );

    $arFields["PROPS"] = $arProps;

    CSaleBasket::Add($arFields);

    }

    /*Добавляем wi-fi*/
    $arSelect = Array("ID", "IBLOCK_ID", "NAME", "CATALOG_GROUP_1");
    $arFilter = Array("ID"=>  41103, "ACTIVE"=>"Y");
    $res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
    while($ob = $res->GetNextElement()) {
        $arFields = $ob->GetFields();


        $arFields = array(
            "PRODUCT_ID" => 41103,
            "PRICE" => $arFields['CATALOG_PRICE_1'],
            "CURRENCY" => "RUB",
            "QUANTITY" => $quantity,
            "LID" => LANG,
            "DELAY" => "N",
            "CAN_BUY" => "Y",
            "NAME" => $arFields['NAME'],

        );

        $arProps = array();

        $arProps[] = array(
            "NAME" => "Комплект",
            "CODE" => "COMP",
            "VALUE" => $milliseconds
        );

        $arFields["PROPS"] = $arProps;

        CSaleBasket::Add($arFields);
    }

}else{

    /*Добавляем товар*/
    $arSelect = Array("ID", "IBLOCK_ID", "NAME", "CATALOG_GROUP_1");
    $arFilter = Array("ID"=> $id, "ACTIVE"=>"Y");
    $res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
    while($ob = $res->GetNextElement())
    {
        $arFields = $ob->GetFields();


        $arFields = array(
            "PRODUCT_ID" => $id,
            "PRICE" => $arFields['CATALOG_PRICE_1'],
            "CURRENCY" => "RUB",
            "QUANTITY" => 1,
            "LID" => LANG,
            "DELAY" => "N",
            "CAN_BUY" => "Y",
            "NAME" => $arFields['NAME'],

        );

        $arProps = array();

        $arProps[] = array(
            "NAME" => "Комплект",
            "CODE" => "COMP",
            "VALUE" => $milliseconds
        );

        $arFields["PROPS"] = $arProps;

        CSaleBasket::Add($arFields);

    }

    /*Добавляем инвертер*/
    $arSelect = Array("ID", "IBLOCK_ID", "NAME", "CATALOG_GROUP_1");
    $arFilter = Array("ID"=> 38497, "ACTIVE"=>"Y");
    $res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
    while($ob = $res->GetNextElement()) {
        $arFields = $ob->GetFields();


        $arFields = array(
            "PRODUCT_ID" => 38497,
            "PRICE" => $arFields['CATALOG_PRICE_1'],
            "CURRENCY" => "RUB",
            "QUANTITY" => 1,
            "LID" => LANG,
            "DELAY" => "N",
            "CAN_BUY" => "Y",
            "NAME" => $arFields['NAME'],

        );

        $arProps = array();

        $arProps[] = array(
            "NAME" => "Комплект",
            "CODE" => "COMP",
            "VALUE" => $milliseconds
        );

        $arFields["PROPS"] = $arProps;

        CSaleBasket::Add($arFields);

    }


    /*Добавляем wi-fi*/
    $arSelect = Array("ID", "IBLOCK_ID", "NAME", "CATALOG_GROUP_1");
    $arFilter = Array("ID"=>  41103, "ACTIVE"=>"Y");
    $res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
    while($ob = $res->GetNextElement()) {
        $arFields = $ob->GetFields();


        $arFields = array(
            "PRODUCT_ID" => 41103,
            "PRICE" => $arFields['CATALOG_PRICE_1'],
            "CURRENCY" => "RUB",
            "QUANTITY" => 1,
            "LID" => LANG,
            "DELAY" => "N",
            "CAN_BUY" => "Y",
            "NAME" => $arFields['NAME'],

        );

        $arProps = array();

        $arProps[] = array(
            "NAME" => "Комплект",
            "CODE" => "COMP",
            "VALUE" => $milliseconds
        );

        $arFields["PROPS"] = $arProps;

        CSaleBasket::Add($arFields);

    }


/*    Add2BasketByProductID(
        $id,
        1,
        $rewriteFields,
        array("NAME" => "Цвет", "CODE" => "CLR", "VALUE" => "красный")
    );

    Add2BasketByProductID( 38497, 1, $rewriteFields,  array("NAME" => "Цвет", "CODE" => "STYLE", "VALUE" => "красный", "SORT"=> 100) ); /*Добавляем инвертер*/
/*	Add2BasketByProductID( 41103, 1, $rewriteFields,  array("NAME" => "Цвет", "CODE" => "STYLE", "VALUE" => "красный", "SORT"=> 100) );*/ /*Добавляем wi-fi*/




}



// Alex: ищем комплекты #129095
$filterSet = [
	array(
		"LOGIC" => "OR",
		"PROPERTY_PRODUCTS_1" => $id,
		"PROPERTY_PRODUCTS_2" => $id,
		"PROPERTY_PRODUCTS_3" => $id,
		"PROPERTY_PRODUCTS_4" => $id,
	),

];
$arSet = CIBlockElement::GetList([],$filterSet,false,false,["ID","NAME","PROPERTY_PRODUCTS_1","PROPERTY_PRODUCTS_2","PROPERTY_PRODUCTS_3","PROPERTY_PRODUCTS_4","TEXT_MAIN", "TEXT_NO_MAIN", "TEXT_BASKET"])->Fetch();
// END: ищем комплекты


$arRelatedProdIds = [];
$resElem = CIBlockElement::GetList([],["ID"=>$id],false,false,["ID","IBLOCK_ID","NAME","PROPERTY_RELATE", "IBLOCK_SECTION_ID","CATALOG_PRICE_1", "CATALOG_GROUP_1", "DETAIL_PICTURE", "PREVIEW_PICTURE", "CODE", "PROPERTY_PICTURE1_HOME_NEW", "DETAIL_PAGE_URL", "PROPERTY_RELATED_PRODUCTS"]);
while($obElem = $resElem->GetNext())
{
	if(!empty($obElem["PROPERTY_PICTURE1_HOME_NEW_VALUE"]))
		$obElem["PICTURE"] = CFile::ResizeImageGet($obElem["PROPERTY_PICTURE1_HOME_NEW_VALUE"], ["width"=>150,"height"=>150])["src"];

	$element = $obElem;
	
	if(!empty($obElem["PROPERTY_RELATED_PRODUCTS_VALUE"]))
		$arRelatedProdIds[] = $obElem["PROPERTY_RELATED_PRODUCTS_VALUE"];
}

// получение инфомации

if(!empty($arSet)) // Комплекты
{
	$allIdsSet = array_merge($arSet["PROPERTY_PRODUCTS_1_VALUE"],$arSet["PROPERTY_PRODUCTS_2_VALUE"],$arSet["PROPERTY_PRODUCTS_3_VALUE"],$arSet["PROPERTY_PRODUCTS_4_VALUE"]);

	$arSetProducts = [];
	$cache = new CPHPCache();

	if($cache->InitCache(30,"relate_prod_".$id, "/"))
	{
		$arSetProducts = $cache->GetVars();
	}
	elseif($cache->StartDataCache())
	{
		$resSet = CIBlockElement::GetList([],["ID"=>$allIdsSet, "ACTIVE"=>"Y"],false,false,["ID","IBLOCK_ID","NAME","IBLOCK_SECTION_ID", "DETAIL_PICTURE", "PREVIEW_PICTURE","CATALOG_PRICE_1", "CATALOG_GROUP_1", "CODE", "DETAIL_PAGE_URL", "PROPERTY_PICTURE1_HOME_NEW"]);
		while($obSet = $resSet->GetNext())
		{
			if(!empty($obSet["PROPERTY_PICTURE1_HOME_NEW_VALUE"]))
				$obSet["PICTURE"] = CFile::ResizeImageGet($obSet["PROPERTY_PICTURE1_HOME_NEW_VALUE"],["width"=>140,"height"=>140])['src'];

			$arSetProducts[$obSet["ID"]] = $obSet;
		}
		$cache->EndDataCache($arSetProducts);
	}

	if(!empty($arSetProducts))
	{
		// для каждой группы выберем по одному товару
		$arSetGroup = [1=>[],2=>[],3=>[],4=>[],5=>[]];

		// уберем группу нашего текущего товара
		foreach ($arSetGroup as $n => $arGSet)
		{
			if(in_array($id, $arSet["PROPERTY_PRODUCTS_" . $n . "_VALUE"]))
			{
				unset($arSetGroup[$n]);
			}
		}

		// смотрим по каждой обязательные товары
		foreach ($arSetGroup as $n => $arGSet)
		{
			if(empty($arSet["PROPERTY_PRODUCTS_" . $n . "_VALUE"]))
				continue;

			$keysReqProds = array_keys($arSet["PROPERTY_PRODUCTS_" . $n . "_DESCRIPTION"], "on"); // все осн.товары в группе

			if(!empty($keysReqProds))
			{
				foreach ($keysReqProds as $key)
				{
					$idProd = $arSet["PROPERTY_PRODUCTS_" . $n . "_VALUE"][$key]; // IDшник основного товара

					if(!empty($arSetProducts[$idProd]))
					{
						$arSetGroup[$n] = $arSetProducts[$idProd];
						break;
					}
				}
			}
		}

		// теперь смотрим где нет товаров и добавляем необязательными
		foreach ($arSetGroup as $n => $arGSet)
		{
			// смотрим чтобы блок был и в группе уже не было товаров
			if(empty($arSet["PROPERTY_PRODUCTS_" . $n . "_VALUE"]) || !empty($arGSet))
				continue;

			foreach ($arSet["PROPERTY_PRODUCTS_" . $n . "_VALUE"] as $idProd)
			{
				if(!empty($arSetProducts[$idProd]))
				{
					$arSetGroup[$n] = $arSetProducts[$idProd];
					break;
				}
			}
		}
	}
}
elseif(count($arRelatedProdIds) > 0) // сопутка
{
	$arRelate = [];
	$cache = new CPHPCache();
	
	if($cache->InitCache(36000,"relate_prod_".$id, "/"))
	{
		$arRelate = $cache->GetVars();
	}
	elseif($cache->StartDataCache())
	{
		$resRelate = CIBlockElement::GetList([],["ID"=>$arRelatedProdIds],false,Array("nPageSize"=>4),["ID","IBLOCK_ID","NAME","IBLOCK_SECTION_ID", "DETAIL_PICTURE", "PREVIEW_PICTURE", "CATALOG_PRICE_1", "CATALOG_GROUP_1", "CODE", "DETAIL_PAGE_URL", "PROPERTY_PICTURE1_HOME_NEW"]);
		while($obRelate = $resRelate->GetNext())
		{
			if(!empty($obRelate["PROPERTY_PICTURE1_HOME_NEW_VALUE"]))
				$obRelate["PICTURE"] = CFile::ResizeImageGet($obRelate["PROPERTY_PICTURE1_HOME_NEW_VALUE"],["width"=>140,"height"=>140])['src'];
			
			$arRelate[] = $obRelate;
		}
		$cache->EndDataCache($arRelate);
	}	
}

// вывод

// основной блок
$html = '
<div class="cart-modal bem">
	<div class="cart-modal__holder">
		<div class="cart-modal__head">
			<div class="cart-modal__head-content">
				<div class="cart-modal__head-title">
					<span class="cart-modal__heading">Товар успешно добавлен в корзину</span>
				</div>
				<br>
<br>
			</div>
			<div class="cart-modal__buttons">
					<a href="#" class="multiple-popup__button btn_hollow cart-modal__shopping-link">Продолжить покупки</a>
					<a href="/cart/order/" class="multiple-popup__button btn btn_blue">Перейти в корзину</a>
    </div>
		</div>
';


echo $html;