Корзина пользователя. Хранится в базе данных, привязана к пользователю по идентификатору сессии. В сессии кэшируются общие данные о корзине. Данный класс также используется для работы с корзиной оформленного заказа.
Открытые члены | |
getItems () | |
setOrder (Orm\Order $order=null) | |
loadCart () | |
updateOrderItems (array $items) | |
cleanCache () | |
cleanInfoCache () | |
getCartItemsByType ($type=null) | |
enableAffiliateRestrictions ($bool) | |
getCartUserId () | |
prepareMultiOffersInfo ($product_id, $multioffers) | |
exists ($id, $offer=null, $multioffers=null, $concomitants=null, $type=self::TYPE_PRODUCT, $additional_uniq=null) | |
update ($products=[], $coupon=null, $safe=true, $manual=false) | |
removeItem ($uniq, $manual=false) | |
clean () | |
mergeEqual () | |
getPriceItemsData ($use_currency=true) | |
getTotalWithoutDelivery ($use_currency=true) | |
addDeliveryData ($result, $use_currency) | |
makeOrderCart () | |
saveOrderData () | |
getOrderProfit () | |
getOrderData ($format=true, $use_currency=true, $write_currency_liter=true) | |
getTotalWeight ($weight_unit=null) | |
getCustomOrderPrice (array $excludeTypesOfItem=[], $use_currency=true) | |
setCustomAmountChecker ($callback) | |
getCustomAmountChecker () | |
runAmountChecker ($result, $amount, $item, $n) | |
getCouponItems () | |
getCouponUsedTimesByCurrentUser (Discount $coupon) | |
addUserError ($message, $can_checkout=true, $key=null) | |
getUserError ($key) | |
cleanUserError ($key=null) | |
getOrder () | |
triggerChangeEvent (bool $update_items=true) | |
getMode () | |
getCartId () | |
__set ($name, $value) | |
__get ($name) | |
__isset ($name) | |
__unset ($name) | |
Открытые статические члены | |
static | currentCart () |
static | preOrderCart (Orm\Order $order=null) |
static | emptyCart (Orm\Order $order) |
static | orderCart (Orm\Order $order) |
static | userCart ($session_id, $site_id=null, $cart_mode=self::MODE_SESSION, $cart_id=0) |
static | destroy () |
static | deleteExpiredCartItems () |
static | getCurrentInfo ($format=true, $use_currency=true) |
static | evenlyAllocateTheSum (float $sum, array $items) |
static | correctDiscountSumByAmount ($discount_sum, $amount) |
static | getGlobalCartId () |
static | setGlobalCartId ($cart_id) |
Поля данных | |
const | CART_SESSION_VAR = 'cart' |
const | MODE_SESSION = 'session' |
const | MODE_PREORDER = 'preorder' |
const | MODE_ORDER = 'order' |
const | MODE_EMPTY = 'order' |
const | CART_ITEM_KEY = 'cartitem' |
const | TYPE_PRODUCT = 'product' |
const | TYPE_COUPON = 'coupon' |
const | TYPE_COMMISSION = 'commission' |
const | TYPE_TAX = 'tax' |
const | TYPE_ORDER_DISCOUNT = 'order_discount' |
const | TYPE_SUBTOTAL = 'subtotal' |
const | TYPE_DELIVERY = 'delivery' |
const | ITEM_EXTRA_KEY_ADDITIONAL_UNIQUE = 'additional_uniq' |
const | ITEM_EXTRA_KEY_SOURCE = 'source' |
const | CART_SOURCE_REPEAT_ORDER = 'repeat_order' |
const | DISCOUNT_SOURCE_OLD_COST = 'old_cost' |
const | SESSION_CART_PRODUCTS = 'cart_products' |
Защищенные члены | |
__construct ($mode=self::MODE_SESSION, Orm\Order $order=null, $session_id=null, $site_id=null, $cart_id=null) | |
generateId () | |
getPaymentCommissionValue ($price, $commission_percent) | |
addPaymentCommissionData ($result, $use_currency=true) | |
addOrderDiscountData ($result, $use_currency) | |
appendUserErrors ($result) | |
correctAmount (Product $product, float $amount,?int $offer) | |
getFlagPreventChangeEvent () | |
setFlagPreventChangeEvent ($value=true) | |
Защищенные данные | |
$mode | |
$order | |
$cartitem | |
$user_errors = [] | |
$select_expression = [] | |
$order_expression | |
$session_id | |
$site_id | |
$cache_coupons | |
$cache_commission | |
$cache_products | |
$cache_products_with_concomitants | |
$items = [] | |
$order_items = [] | |
$prevent_change_event = false | |
$first_cart_data_call = true | |
$enable_affiliate_restrictions = true | |
$options = [] | |
$cart_id | |
Статические защищенные данные | |
static | $instance |
|
protected |
Получать экземпляр класса можно только через ::currentCart()
string | $mode | режим работы корзины. см константы self::MODE_.... |
Orm\Order | null | $order | объект заказа, если корзина создается из заказа |
integer | null | $session_id | ID сессии корзины |
integer | null | $site_id | ID сайта |
integer | null | $cart_id |
__get | ( | $name | ) |
Возвращает значение произвольного свойства
string | $name | Идентификатор свойства |
__isset | ( | $name | ) |
Возвращает true, если произвольное свойство существует (было задано)
string | $name | Идентификатор свойства |
__set | ( | $name, | |
$value | |||
) |
Устанавливает значение произвольного свойства
string | $name | Идентификатор свойства |
__unset | ( | $name | ) |
Удаляет произвольное свойство
string | $name | Идентификатор свойства |
addDeliveryData | ( | $result, | |
$use_currency | |||
) |
Добавляет сведения о доставке в корзину
array | $result | |
bool | $use_currency |
|
protected |
Добавляет к результату информацию о скидках на заказ
array | $result | - массив со сведениями о корзине |
bool | $use_currency | - использовать ли текущую валюту? |
|
protected |
Добавляет сведения о комиссии в корзине
mixed | $result | |
bool | $use_currency | - Если true, то использовать текущую валюту, иначе используется базовая валюта |
addUserError | ( | $message, | |
$can_checkout = true , |
|||
$key = null |
|||
) |
|
protected |
Добавляет пользовательские ошибки к результату $result
array | $result | - массив со сведениями |
clean | ( | ) |
Очищает корзину
cleanCache | ( | ) |
Очищает кэш товаров корзины
cleanInfoCache | ( | ) |
Очищает кэшированные сведения о сумме и количестве товаров в корзине
cleanUserError | ( | $key = null | ) |
|
protected |
Возвращает откорректированное количество товара
Product | $product | - объект товара |
int | $offer | - комплектация |
float | $amount | - исходное количество |
|
static |
Возвращает сумму скидки, скорректированную относительно количества товаров
float | $discount_sum | - сумма скидки |
float | $amount | - количество товара |
|
static |
Возвращает объект корзины текущего пользователя.
|
static |
Очистка всех истекших по времени корзин
|
static |
Уничтожает загруженный экземпляр корзины. Означает, что при следующем вызове ::currentCart() будет произведена загрузка из базы заново
|
static |
Возвращает пустую корзину
Orm\Order | $order |
enableAffiliateRestrictions | ( | $bool | ) |
Включает или выключает установку ограничений по остаткам для филиалов. В случае запросов по API, иногда нужно отключать лимит по филиалам, т.к. филиал может неточно устанавливаться
bool | $bool |
|
static |
Равномерно распределяет указанную сумму между элементами
float | $sum | |
float[] | $items |
exists | ( | $id, | |
$offer = null , |
|||
$multioffers = null , |
|||
$concomitants = null , |
|||
$type = self::TYPE_PRODUCT , |
|||
$additional_uniq = null |
|||
) |
Проверяет существование элемента в корзине. Возвращает уникальный идентификатор позиции в корзине или false
mixed | $id | |
integer | $offer | - комплектация |
array | $multioffers | - многомерная комплектация |
array | $concomitants | - сопутствующие товары |
string | $type | - тип позиции в корзине |
string | $additional_uniq | - дополнительный идентификатор |
RSException |
|
protected |
Генерирует уникальный в рамках пользователя id позиции в корзине
getCartId | ( | ) |
Возвращает идентификатор корзины пользователя, у текущего объекта
getCartItemsByType | ( | $type = null | ) |
Возвращает элементы корзины по типу
string | null | $type | Если Type - null, то возвращаются элементы всех типов |
getCartUserId | ( | ) |
Возвращает id пользователя, которому принадлежит корзина
getCouponItems | ( | ) |
Возвращает объекты купонов на скидку
RSException |
getCouponUsedTimesByCurrentUser | ( | Discount | $coupon | ) |
Получает сколько раз был использован купон, текущим авторизованным пользователем
Discount | $coupon | - объект купона |
DbException | |
RSException |
|
static |
Возвращает информацию по количеству товаров и стоимости товаров в корзине
mixed | $format | - форматировать общую сумму заказа |
mixed | $use_currency | - если true, то использовать текущую валюту, иначе используется базовая валюта |
RSException |
getCustomAmountChecker | ( | ) |
Возвращает произвольный обработчик для контроля за остатком
getCustomOrderPrice | ( | array | $excludeTypesOfItem = [] , |
$use_currency = true |
|||
) |
Возвращает стоимость заказа
array | $excludeTypesOfItem | - массив элементов из констант self::TYPE_...., с помощью которого можно исключить из расчета различные компоненты заказа |
bool | $use_currency |
RSException |
|
protected |
Возвращает флаг, запрещающий вызов события "изменения в корзине"
|
static |
Возвращает глобальный идентификатор корзины пользователя
getItems | ( | ) |
Возвращает все элементы корзины
getMode | ( | ) |
Возвращает режим работы корзины
getOrder | ( | ) |
Возвращает объект заказа, которому принадлежит корзина
getOrderData | ( | $format = true , |
|
$use_currency = true , |
|||
$write_currency_liter = true |
|||
) |
Возвращает сведения об элементах заказа. Сведения не зависят от существования в магазине реальных элементов заказа.
bool | $format | - если true, то форматировать вывод |
bool | $use_currency | - если true, то конвертировать в валюту заказа |
bool | $write_currency_liter | - если true, то отображать символ валюты после суммы |
getOrderProfit | ( | ) |
Возвращает доходность товаров в заказе
|
protected |
Возвращает наценку на цену $price
float | $price | - сумма |
integer | $commission_percent | - процент комиссии |
getPriceItemsData | ( | $use_currency = true | ) |
Возвращает данные по товарам, налогам и скидкам в корзине
bool | $use_currency | - Если true, то использовать текущую валюту, иначе используется базовая валюта |
RSException |
getTotalWeight | ( | $weight_unit = null | ) |
Возвращает общий вес элементов корзины
null | string | $weight_unit | - идентификатор единицы измерения, в которй нужно получить вес (соотношение к граммам) |
RSException |
getTotalWithoutDelivery | ( | $use_currency = true | ) |
Возвращает стоимость товаров в заказе
bool | $use_currency | - Если true, то использовать текущую валюту, иначе используется базовая валюта |
RSException |
getUserError | ( | $key | ) |
Возвращает массив с ошибкой по ключу
string | $key | - ключ в массиве ошибок |
loadCart | ( | ) |
Загружает корзину из базы данных
makeOrderCart | ( | ) |
Переносит элементы из корзины в таблицу элементов заказа Вызывается при подтверждении заказа
RSException |
mergeEqual | ( | ) |
Объединяет одинаковые товары с одинаковой комплектацией, увеличивая количество.
DbException | |
RSException |
|
static |
Возвращает корзину оформленного заказа.
Orm\Order | $order |
|
static |
Возвращает корзину пользователя во время оформления заказа. т.е. элементы корзины еще привязаны к сессии, но к ним уже добавляются сведения из заказа (налоги, доставка)
Orm\Order | $order |
prepareMultiOffersInfo | ( | $product_id, | |
$multioffers | |||
) |
Подготавливает дополнительную информацию уточняя детали многомерных комплектаций Возвращет подготовленный двумерный массив с ключами id,title для каждой комплектации
integer | $product_id | - id товара |
array | $multioffers | - массив с мультикомплектациями полученными из запроса, ключи в нём id характеристики |
removeItem | ( | $uniq, | |
$manual = false |
|||
) |
Удаляет позицию из корзины.
string | $uniq | - Уникальный идентификатор элемента корзины |
bool | $manual | - операция вызвана пользователем |
RSException |
runAmountChecker | ( | $result, | |
$amount, | |||
$item, | |||
$n | |||
) |
Выполняет проверку наличия товара с учетом всех параметров
array | $result | Массив с результатом getCartData |
integer | $amount | Количество товара |
array | $item | Массив с товаром и элементом cartItem |
string | $n | Уникальный идентификатор позиции в корзине |
saveOrderData | ( | ) |
Сохраняет сформированный заказ в базу данных
setCustomAmountChecker | ( | $callback | ) |
Устанавливает произвольный обработчик для контроля за остатком товара
callback | $callback |
|
protected |
Устанавливает флаг, запрещающий вызов события "изменения в корзине"
bool | $value |
|
static |
Устанавливает глобальный идентификатор корзины пользователя. Будет использоваться, если при создании корзины явно не будет указан ИД Корзины
integer | $cart_id |
setOrder | ( | Orm\Order | $order = null | ) |
triggerChangeEvent | ( | bool | $update_items = true | ) |
Вызывает событие "изменения в корзине", обновляет содержимое корзины при изменении, предотвращает циклический вызов себя
bool | $update_items | - обновить товарные позиции в БД |
RSException |
update | ( | $products = [] , |
|
$coupon = null , |
|||
$safe = true , |
|||
$manual = false |
|||
) |
Обновляет информацию в корзине
array | $products | - новые сведения по товарам |
string | $coupon | - код купона на скидку |
bool | $safe | - если true, то цена, скидка и наименование товара в $products будет игнорироваться |
bool | $manual | - операция вызвана пользователем |
DbException | |
RSException |
updateOrderItems | ( | array | $items | ) |
Обновляет сведения об элементах заказа.
Orm\OrderItem[] | $items - массив элементов заказа |
RSException |
|
static |
Возвращает корзину конкретного пользователя по ID его сессии
string | $session_id | - ID сессии корзины |
int | $site_id | - ID сайта |
string | $cart_mode | - режим корзины |
integer | null | $cart_id | - ID корзины, 0 - корзина по умолчанию |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
staticprotected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
const CART_ITEM_KEY = 'cartitem' |
const CART_SESSION_VAR = 'cart' |
const CART_SOURCE_REPEAT_ORDER = 'repeat_order' |
const DISCOUNT_SOURCE_OLD_COST = 'old_cost' |
const ITEM_EXTRA_KEY_ADDITIONAL_UNIQUE = 'additional_uniq' |
const ITEM_EXTRA_KEY_SOURCE = 'source' |
const MODE_EMPTY = 'order' |
const MODE_ORDER = 'order' |
const MODE_PREORDER = 'preorder' |
const MODE_SESSION = 'session' |
const SESSION_CART_PRODUCTS = 'cart_products' |
const TYPE_COMMISSION = 'commission' |
const TYPE_COUPON = 'coupon' |
const TYPE_DELIVERY = 'delivery' |
const TYPE_ORDER_DISCOUNT = 'order_discount' |
const TYPE_PRODUCT = 'product' |
const TYPE_SUBTOTAL = 'subtotal' |
const TYPE_TAX = 'tax' |