Поддержка серверов

Add2BasketByProductID: метод Битрикс

Постоянная ссылка: http://bxapi.ru/src/?id=164252

<?php 
//    /bitrix/modules/catalog/include.phpAdd2BasketByProductID()
//    1520:

function Add2BasketByProductID($productId$quantity 1$rewriteFields = array(), $productParams false)
{
    global 
$APPLICATION;

    
$result false;

    
/* for old use */
    
if ($productParams === false)
    {
        
$productParams $rewriteFields;
        
$rewriteFields = array();
    }

    
$rewrite = (!empty($rewriteFields) && is_array($rewriteFields));
    if (
$rewrite && isset($rewriteFields['SUBSCRIBE']) && $rewriteFields['SUBSCRIBE'] == 'Y')
        return 
SubscribeProduct($productId$rewriteFields$productParams);

    
$quantity = (empty($quantity) ? 1 : (float)$quantity);
    if (
$quantity <= 0)
        
$quantity 1;

    
$product = array(
        
'PRODUCT_ID' => $productId,
        
'QUANTITY' => $quantity
    
);
    if (!empty(
$productParams))
        
$product['PROPS'] = $productParams;

    
$basketResult Catalog\Product\Basket::addProduct($product, ($rewrite $rewriteFields : array()));
    if (
$basketResult->isSuccess())
    {
        
$data $basketResult->getData();
        
$result $data['ID'];
        unset(
$data);

        if (!empty(
$rewriteFields['ORDER_ID']) && intval($rewriteFields['ORDER_ID']) > 0)
        {
            
trigger_error("Wrong API usage of adding a product in order"E_USER_WARNING);

            
$productId = (int)$productId;
            if (
$productId <= 0)
            {
                
$APPLICATION->ThrowException(
                    
Main\Localization\Loc::getMessage('BX_CATALOG_PRODUCT_BASKET_ERR_NO_PRODUCT')
                );
                return 
$result;
            }

            
$module 'catalog';
            if (
array_key_exists('MODULE'$rewriteFields))
            {
                
$module $rewriteFields['MODULE'];
            }

            
$siteId SITE_ID;
            if (!empty(
$rewriteFields['LID']))
            {
                
$siteId $rewriteFields['LID'];
            }

            
$basket = \Bitrix\Sale\Basket::loadItemsForFUser(\Bitrix\Sale\Fuser::getId(), $siteId);

            
$propertyList = array();
            if (!empty(
$product['PROPS']) && is_array($product['PROPS']))
            {
                
$propertyList $product['PROPS'];
            }

            
$basketItem $basket->getExistsItem($module$productId$propertyList);
            if (
$basketItem)
            {
                
$basketItem->setFieldNoDemand('ORDER_ID'intval($rewriteFields['ORDER_ID']));
                
$r $basket->save();

                
$orderId intval($rewriteFields['ORDER_ID']);
                
$order = \Bitrix\Sale\Order::load($orderId);
                if (
$order)
                {
                    
$basket $order->getBasket();
                    
$basket->refresh();
                    
$r $order->save();
                    if (!
$r->isSuccess())
                    {
                        
$APPLICATION->ThrowException(
                            
implode('; '$r->getErrorMessages())
                        );
                    }
                }

            }
        }

    }
    else
    {
        
$APPLICATION->ThrowException(
            
implode('; '$basketResult->getErrorMessages())
        );
    }
    unset(
$product);
    unset(
$basketResult);

    return 
$result;
}

Блог разработчика

9 Августа 2016 ResizeImageGet и простой водяной знак налету

Сегодня поговорим о том как проще всего воткнуть водяной знак на картинки в Битрикс. Например, на все изображения каталога.

21 Июля 2016 Добавление вкладки в CRM коробки Битрикс24

В этом посте я покажу, как легко и просто добавить вкладку в сущность CRM. И не просто добавить, а вывести там свой контент.

21 Июля 2016 Как просто обращаться из коробки Битрикс24 на сайт на базе Битрикс

К примеру вам хочется внутренним скриптом дернуть с сайта-магазина информацию, которая там, в свою очередь, закрыта некоторыми правами. Например, админскими. Можно конечно мутить свой REST, или иной формат общения, но проще всего воспользоваться штатным инструментом:

Текст сообщения*
Загрузить изображение