Версия: 3.x
Класс Cart

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

Корзина пользователя. Хранится в базе данных, привязана к пользователю по идентификатору сессии. В сессии кэшируются общие данные о корзине. Данный класс также используется для работы с корзиной оформленного заказа.

Открытые члены

 getItems ()
 
 setOrder (Orm\Order $order=null)
 
 loadCart ()
 
 updateOrderItems (array $items)
 
 cleanCache ()
 
 cleanInfoCache ()
 
 getCartItemsByType ($type=null)
 
 getProductItems ($cache=true)
 
 prepareMultiOffersInfo ($product_id, $multioffers)
 
 exists ($id, $offer=null, $multioffers=null, $concomitants=null, $type=self::TYPE_PRODUCT, $additional_uniq=null)
 
 update ($products=array(), $coupon=null, $safe=true)
 
 removeItem ($uniq)
 
 clean ()
 
 mergeEqual ()
 
 getPriceItemsData ($use_currency=true)
 
 getTotalWithoutDelivery ($use_currency=true)
 
 getCartData ($format=true, $use_currency=true)
 
 addDeliveryData ($result, $use_currency)
 
 makeOrderCart ()
 
 saveOrderData ()
 
 getOrderProfit ()
 
 getOrderData ($format=true, $use_currency=true, $write_currency_liter=true)
 
 canEdit ()
 
 getTotalWeight ()
 
 getCustomOrderPrice (array $excludeTypesOfItem=array(), $use_currency=true)
 
 splitSubProducts ()
 
 getCouponItems ()
 
 getCouponUsedTimesByCurrentUser (\Shop\Model\Orm\Discount $coupon)
 
 addCoupon ($code, array $extra=null)
 
 addUserError ($message, $can_checkout=true, $key=null)
 
 getUserError ($key)
 
 cleanUserError ($key=null)
 
 getOrder ()
 

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

static currentCart ()
 
static preOrderCart (Orm\Order $order=null)
 
static emptyCart (Orm\Order $order)
 
static orderCart (Orm\Order $order)
 
static destroy ()
 
static deleteExpiredCartItems ()
 
static getCurrentInfo ($format=true, $use_currency=true)
 

Поля данных

const CART_SESSION_VAR = 'cart'
 
const MODE_SESSION = 'session'
 
const MODE_PREORDER = 'preorder'
 
const MODE_ORDER = 'order'
 
const MODE_EMPTY = 'order'
 
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'
 
 $order
 
 $cartitem
 
 $user_errors = array()
 
 $select_expression = array()
 
 $order_expression
 
 $session_id
 
 $cache_coupons
 
 $cache_commission
 
 $cache_products
 
 $items = array()
 
 $order_items = array()
 

Защищенные члены

 __construct ($mode=self::MODE_SESSION, Orm\Order $order=null)
 
 generateId ()
 
 getPaymentCommissionValue ($price, $commission_percent)
 
 addPaymentCommissionData ($result, $use_currency=true)
 
 addOrderDiscountData ($result, $use_currency)
 
 addInternalProductDiscount ($result, $use_currency)
 
 getCouponsUsage ($coupons_items)
 
 appendUserErrors ($result)
 

Защищенные данные

 $mode
 

Статические защищенные данные

static $instance
 

Конструктор(ы)

__construct (   $mode = self::MODE_SESSION,
Orm\Order  $order = null 
)
protected

Получать экземпляр класса можно только через ::currentBasket()

Методы

addCoupon (   $code,
array  $extra = null 
)

Добавляет купон на скидку

Аргументы
string$code- код купона
array$extra- массив дополнительных данных
Возвращает
bool | string возвращает true или текст ошибки
addDeliveryData (   $result,
  $use_currency 
)

Добавляет сведения о доставке в корзину

addInternalProductDiscount (   $result,
  $use_currency 
)
protected

Добавляет сведения по скидкам к товарам, без купонов

Аргументы
array$result- массив со сведениями о корзине
bool$use_currency- использовать ли текущую валюту?
addOrderDiscountData (   $result,
  $use_currency 
)
protected

Добавляет к результату информацию о скидках на заказ

Аргументы
array$result- массив со сведениями о корзине
bool$use_currency- использовать ли текущую валюту?
Возвращает
array
addPaymentCommissionData (   $result,
  $use_currency = true 
)
protected

Добавляет сведения о комиссии в корзине

Аргументы
mixed$result
bool$use_currency- Если true, то использовать текущую валюту, иначе используется базовая валюта
addUserError (   $message,
  $can_checkout = true,
  $key = null 
)

Добавляет ошибки к корзине

Аргументы
string$message
bool$can_checkout
mixed$key
Возвращает
Cart
appendUserErrors (   $result)
protected

Добавляет пользовательские ошибки к результату $result

Аргументы
array$result- массив со сведениями
Возвращает
array
canEdit ( )

Возвращает true, если уже оформленный заказ можно редактировать и все связи с налогами и доставками в порядке

Возвращает
bool
clean ( )

Очищает корзину

cleanCache ( )

Очищает кэш товаров корзины

cleanInfoCache ( )

Очищает кэшированные сведения о сумме и количестве товаров в корзине

Возвращает
void
cleanUserError (   $key = null)

Удаляет одну по ключу или все пользовательские ошибки

Аргументы
mixed$key
Возвращает
Cart
static currentCart ( )
static

Возвращает объект корзины текущего пользователя.

Возвращает
Cart
static deleteExpiredCartItems ( )
static

Очистка всех истекших по времени корзин

static destroy ( )
static

Уничтожает загруженный экземпляр корзины. Означает, что при следующем вызове ::currentCart() будет произведена загрузка из базы заново

Возвращает
void
static emptyCart ( Orm\Order  $order)
static

Возвращает пустую корзину

Аргументы
Orm\Order$order
Возвращает
cart
exists (   $id,
  $offer = null,
  $multioffers = null,
  $concomitants = null,
  $type = self::TYPE_PRODUCT,
  $additional_uniq = null 
)

Проверяет существование элемента в корзине.

Аргументы
mixed$id
integer$offer- комплектация
array$multioffers- многомерная комплектация
array$concomitants- сопутствующие товары
mixed$type- тип позиции в корзине
Возвращает
Возвращает уникальный идентификатор позиции в корзине или false
generateId ( )
protected

Генерирует уникальный в рамках пользователя id позиции в корзине

Возвращает
string
getCartData (   $format = true,
  $use_currency = true 
)

Возвращает калькулируемые данные, необходимые для отображения корзины пользователя. Результат не содержит объекты товаров. Объекты товаров можно получить вызвав метод getProductItems

Аргументы
bool$format- форматировать цены
bool$use_currency- Если true, то использовать текущую валюту, иначе используется базовая валюта
Возвращает
array
getCartItemsByType (   $type = null)

Возвращает элементы корзины по типу

Аргументы
string | null$typeЕсли Type - null, то возвращаются элементы всех типов
Возвращает
array
getCouponItems ( )

Возвращает объекты купонов на скидку

Возвращает
array
getCouponsUsage (   $coupons_items)
protected

Возвращает товары, на которые данный купон предоставляет скидку

Аргументы
array$coupons_items- результат выполнения getCouponItems()
Возвращает
array
getCouponUsedTimesByCurrentUser ( \Shop\Model\Orm\Discount  $coupon)

Получает сколько раз был использован купон, текущим авторизованным пользователем

Аргументы
\Shop\Model\Orm\Discount$coupon- объект купона
static getCurrentInfo (   $format = true,
  $use_currency = true 
)
static

Возвращает информацию по количеству товаров и стоимости товаров в корзине

Аргументы
mixed$format- форматировать общую сумму заказа
mixed$in_base_currency- возвращать в базовой валюте
Возвращает
array
getCustomOrderPrice ( array  $excludeTypesOfItem = array(),
  $use_currency = true 
)

Возвращает стоимость заказа

Аргументы
array$excludeTypesOfItem- массив элементов из констант self::TYPE_...., с помощью которого можно исключить из расчета различные компоненты заказа
Возвращает
float
getItems ( )

Возвращает все элементы корзины

Возвращает
array
getOrder ( )

Возвращает объект заказа, которому принадлежит корзина

Возвращает
getOrderData (   $format = true,
  $use_currency = true,
  $write_currency_liter = true 
)

Возвращает сведения об элементах заказа. Сведения не зависят от существования в магазине реальных элементов заказа.

Аргументы
bool$format- если true, то форматировать вывод
bool$use_currency- если true, то конвертировать в валюту заказа
bool$write_currency_liter- если true, то отображать символ валюты после суммы
Возвращает
array
getOrderProfit ( )

Возвращает доходность товаров в заказе

Возвращает
double
getPaymentCommissionValue (   $price,
  $commission_percent 
)
protected

Возвращает наценку на цену $price

Аргументы
float$price- сумма
integer$commission_percent- процент комиссии
getPriceItemsData (   $use_currency = true)

Возвращает данные по товарам, налогам и скидкам в корзине

Аргументы
bool$format- форматировать цены
bool$use_currency- Если true, то использовать текущую валюту, иначе используется базовая валюта
Возвращает
array
getProductItems (   $cache = true)

Возвращает список товаров в корзине

Аргументы
boolean$cache- использовать кэш?
Возвращает
[]
getTotalWeight ( )

Возвращает общий вес элементов корзины

Возвращает
integer
getTotalWithoutDelivery (   $use_currency = true)

Возвращает стоимость товаров в заказе

Аргументы
bool$use_currency- Если true, то использовать текущую валюту, иначе используется базовая валюта
Возвращает
float
getUserError (   $key)

Возвращает массив с ошибкой по ключу

Аргументы
string$key- ключ в массиве ошибок
Возвращает
boolean
loadCart ( )

Загружает корзину из базы данных

Возвращает
void
makeOrderCart ( )

Переносит элементы из корзины в таблицу элементов заказа Вызывается при подтверждении заказа

Возвращает
bool
mergeEqual ( )

Объединяет одинаковые товары с одинаковой комплектацией, увеличивая количество.

Возвращает
void
static orderCart ( Orm\Order  $order)
static

Возвращает корзину оформленного заказа.

Аргументы
Orm\Order$order
Возвращает
cart
static preOrderCart ( Orm\Order  $order = null)
static

Возвращает корзину пользователя во время оформления заказа. т.е. элементы корзины еще привязаны к сессии, но к ним уже добавляются сведения из заказа (налоги, доставка)

Аргументы
Orm\Order$order
Возвращает
cart
prepareMultiOffersInfo (   $product_id,
  $multioffers 
)

Подготавливает дополнительную информацию уточняя детали многомерных комплектаций Возвращет подготовленный двумерный массив с ключами id,title для каждой комплектации

Аргументы
integer$product_id- id товара
array$multioffers- массив с мультикомплектациями полученными из запроса, ключи в нём id характеристики
Возвращает
array
removeItem (   $uniq)

Удаляет позицию из корзины.

Аргументы
string$uniq- Уникальный идентификатор элемента корзины
Возвращает
bool
saveOrderData ( )

Сохраняет сформированный заказ в базу данных

Возвращает
bool
setOrder ( Orm\Order  $order = null)

Устанавливает объект заказа в режиме PREORDER

Аргументы
Orm\Order$order
splitSubProducts ( )

Разделение товаров

update (   $products = array(),
  $coupon = null,
  $safe = true 
)

Обновляет информацию в корзине

Аргументы
array$products- новые сведения по товарам
string$coupon- код купона на скидку
bool$safe- если true, то цена, скидка и наименование товара в $products будет игнорироваться
Возвращает
bool | false
updateOrderItems ( array  $items)

Обновляет сведения об элементах заказа.

Аргументы
mixed$items
Возвращает
void

Поля

$cache_commission
$cache_coupons
$cache_products
$cartitem
$instance
staticprotected
$items = array()

Элементы корзины

$mode
protected
Shop Model Orm Order $order
$order_expression
$order_items = array()

Элементы оформленного заказа

$select_expression = array()
$session_id
$user_errors = array()
const CART_SESSION_VAR = 'cart'
const MODE_EMPTY = 'order'

Режим пустой корзины

const MODE_ORDER = 'order'

Режим привязки к заказу

const MODE_PREORDER = 'preorder'

Режим оформления заказа.

const MODE_SESSION = 'session'

Режим обычной корзины. Корзина привязана к сессии

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'