Bitrix-D7  20.0.0
Класс Basket
Граф наследования:Basket:
BasketBundleCollection

Открытые статические члены

static addProduct (array $product, array $basketFields=[], array $options=[])
 Add to basket from public components. Подробнее...
 
static addProductToBasket (Sale\BasketBase $basket, array $fields, array $context, array $options=[])
 Proxy method of adding a item to the basket. Подробнее...
 
static addProductToBasketWithPermissions (Sale\BasketBase $basket, array $fields, array $context, $options=true)
 Proxy method of adding a item to the basket. Подробнее...
 
static getDefaultProviderName ()
 
static isNotCrawler ()
 Returns the result of checking that the current user is not a search robot. Подробнее...
 

Подробное описание

См. определение в файле catalog/lib/product/basket.php строка 17

Методы

◆ addProduct()

static addProduct ( array  $product,
array  $basketFields = [],
array  $options = [] 
)
static

Add to basket from public components.

Аргументы
array$productProduct data (with properties).
array$basketFieldsBasket fields (if used).
array$optionsExecute options.
Возвращает
Main\Result
Исключения
Main

См. определение в файле catalog/lib/product/basket.php строка 34

35  {
36  $result = new Main\Result();
37 
38  if (empty($product['PRODUCT_ID']))
39  {
40  $result->addError(new Main\Error(Loc::getMessage('BX_CATALOG_PRODUCT_BASKET_ERR_NO_PRODUCT')));
41  return $result;
42  }
43  $productId = (int)$product['PRODUCT_ID'];
44  if ($productId <= 0)
45  {
46  $result->addError(new Main\Error(Main\Localization\Loc::getMessage('BX_CATALOG_PRODUCT_BASKET_ERR_NO_PRODUCT')));
47  return $result;
48  }
49 
50  $product['MODULE'] = 'catalog';
51  $product['PRODUCT_PROVIDER_CLASS'] = self::getDefaultProviderName();
52 
53  if (!empty($basketFields))
54  $product = array_merge($product, $basketFields);
55 
56  if (self::$saleIncluded === null)
57  self::$saleIncluded = Loader::includeModule('sale');
58 
59  if (!self::$saleIncluded)
60  {
61  $result->addError(new Main\Error(Loc::getMessage('BX_CATALOG_PRODUCT_BASKET_ERR_NO_SALE')));
62  return $result;
63  }
64 
65  $siteId = SITE_ID;
66  if (!empty($basketFields['LID']))
67  $siteId = $basketFields['LID'];
68 
69  $context = array(
70  'SITE_ID' => $siteId,
71  );
72  $basket = Sale\Basket::loadItemsForFUser(Sale\Fuser::getId(), $siteId);
73 
74  $options['CHECK_PERMISSIONS'] = 'Y';
75  $options['USE_MERGE'] = (isset($options['USE_MERGE']) && $options['USE_MERGE'] == 'N' ? 'N' : 'Y');
76  $options['CHECK_CRAWLERS'] = 'Y';
77 
78  $result = static::add($basket, $product, $context, $options);
79 
80  if ($result->isSuccess())
81  {
82  $saveResult = $basket->save();
83  if ($saveResult->isSuccess())
84  {
85  $resultData = $result->getData();
86  if (!empty($resultData['BASKET_ITEM']))
87  {
88  $item = $resultData['BASKET_ITEM'];
89  if ($item instanceof Sale\BasketItemBase)
90  {
91  if (self::$statisticIncluded === null)
92  self::$statisticIncluded = Main\Loader::includeModule('statistic');
93 
94  if (self::$statisticIncluded)
95  {
96  \CStatistic::Set_Event(
97  'sale2basket', 'catalog', $item->getField('DETAIL_PAGE_URL')
98  );
99  }
100  $result->setData(array(
101  'ID' => $item->getId()
102  ));
103  }
104  else
105  {
106  $result->addError(new Main\Error(Loc::getMessage('BX_CATALOG_PRODUCT_BASKET_ERR_UNKNOWN')));
107  }
108  unset($item);
109  }
110  else
111  {
112  $result->addError(new Main\Error(Loc::getMessage('BX_CATALOG_PRODUCT_BASKET_ERR_UNKNOWN')));
113  }
114  unset($resultData);
115  }
116  else
117  {
118  $result->addErrors($saveResult->getErrors());
119  }
120  unset($saveResult);
121  }
122  unset($basket, $context, $siteId);
123 
124  return $result;
125  }

◆ addProductToBasket()

static addProductToBasket ( Sale\BasketBase  $basket,
array  $fields,
array  $context,
array  $options = [] 
)
static

Proxy method of adding a item to the basket.

Аргументы
Sale\BasketBase$basketWorking basket.
array$fieldsBasket item fields for add.
array$contextWorking context (site, user).
array$optionsExecute options.
Возвращает
Main\Result
Исключения
Main

См. определение в файле catalog/lib/product/basket.php строка 140

141  {
142  $options['CHECK_CRAWLERS'] = 'N';
143  return static::add($basket, $fields, $context, $options);
144  }

◆ addProductToBasketWithPermissions()

static addProductToBasketWithPermissions ( Sale\BasketBase  $basket,
array  $fields,
array  $context,
  $options = true 
)
static

Proxy method of adding a item to the basket.

Already check iblock permissions.

Аргументы
Sale\BasketBase$basketWorking basket.
array$fieldsBasket item fields for add.
array$contextWorking context (site, user).
bool | array$optionsExecute options (by default - search existing row in basket before add options value).
Возвращает
Main\Result
Исключения
Main

См. определение в файле catalog/lib/product/basket.php строка 159

160  {
161  if (!is_array($options))
162  $options = ['USE_MERGE' => ($options ? 'Y' : 'N')];
163  $options['CHECK_PERMISSIONS'] = 'Y';
164  $options['CHECK_CRAWLERS'] = 'Y';
165  return static::add($basket, $fields, $context, $options);
166  }

◆ getDefaultProviderName()

static getDefaultProviderName ( )
static
Возвращает
string

См. определение в файле catalog/lib/product/basket.php строка 741

742  {
743  return "\Bitrix\Catalog\Product\CatalogProvider";
744  }

◆ isNotCrawler()

static isNotCrawler ( )
static

Returns the result of checking that the current user is not a search robot.

Возвращает
bool

См. определение в файле catalog/lib/product/basket.php строка 751

752  {
753  $result = static::checkCurrentUser();
754  return $result->isSuccess();
755 
756  }

Объявления и описания членов класса находятся в файле:
Bitrix\Main\Localization\Loc\getMessage
static getMessage($code, $replace=null, $language=null)
Returns translation by message code.
Definition: loc.php:29
Bitrix\Catalog\Product\Basket\getDefaultProviderName
static getDefaultProviderName()
Definition: catalog/lib/product/basket.php:741
Bitrix\Sale\Fuser\getId
static getId($skipCreate=false)
Return fuserId.
Definition: fuser.php:29
Sale
Class RestHandler.
Bitrix\Main\Loader\includeModule
static includeModule($moduleName)
Includes module by its name.
Definition: main/lib/loader.php:70