Files
AtomicOld/api/Cart.php

409 lines
16 KiB
PHP
Raw Normal View History

2026-02-14 19:34:54 +03:00
<?php
/**
* Simpla CMS
*
* @copyright 2011 Denis Pikusov
* @link http://simplacms.ru
* @author Denis Pikusov
*
* @editor 2014 Vitaly Raevsky
* @link http://bwdesign.ru
* @email vitaly.raevsky@gmail.com
*
*/
require_once('Simpla.php');
class Cart extends Simpla
{
/*
*
* Функция возвращает корзину
*
*/
public function get_cart()
{
$cart = new stdClass();
$cart->purchases = array();
$cart->total_price = 0;
$cart->total_weight = 0;
$cart->total_products = 0;
$cart->coupon = null;
$cart->discount = 0;
$cart->coupon_discount = 0;
// Берем из сессии список variant_id=>amount
if(!empty($_SESSION['shopping_cart']))
{
$session_items = $_SESSION['shopping_cart'];
$variants = $this->variants->get_variants(array('id'=>array_keys($session_items)));
if(!empty($variants))
{
foreach($variants as $variant)
{
$items[$variant->id] = new stdClass();
$items[$variant->id]->variant = $variant;
$items[$variant->id]->amount = $session_items[$variant->id]['amount'];
$items[$variant->id]->options = $session_items[$variant->id]['options'];
$products_ids[] = $variant->product_id;
}
$products = array();
foreach($this->products->get_products(array('id'=>$products_ids)) as $p)
$products[$p->id]=$p;
$images = $this->products->get_images(array('product_id'=>$products_ids));
foreach($images as $image)
$products[$image->product_id]->images[$image->id] = $image;
foreach($items as $variant_id=>$item)
{
$purchase = null;
if(!empty($products[$item->variant->product_id]))
{
$purchase = new stdClass();
$purchase->product = $products[$item->variant->product_id];
$purchase->variant = $item->variant;
$purchase->amount = $item->amount;
$purchase->options = unserialize($item->options);
//$feat = $this->features->get_product_options($item->variant->product_id);
$feat = $this->features->get_features(array('category_id'=>$cat->id,'in_variant'=>1));
foreach($feat AS $fe){
$purchase->features[$fe->id] = $fe;
}
$cart->purchases[] = $purchase;
$cart->total_price += $item->variant->price*$item->amount;
$cart->total_weight += $item->variant->weight*$item->amount;
$cart->total_products += $item->amount;
}
}
// Пользовательская скидка
$cart->discount = 0;
if(isset($_SESSION['user_id']) && $user = $this->users->get_user(intval($_SESSION['user_id'])))
$cart->discount = $user->discount;
$cart->total_price *= (100-$cart->discount)/100;
// Скидка по купону
if(isset($_SESSION['coupon_code']))
{
$cart->coupon = $this->coupons->get_coupon($_SESSION['coupon_code']);
if($cart->coupon && $cart->coupon->valid && $cart->total_price>=$cart->coupon->min_order_price)
{
if($cart->coupon->type=='absolute')
{
// Абсолютная скидка не более суммы заказа
$cart->coupon_discount = $cart->total_price>$cart->coupon->value?$cart->coupon->value:$cart->total_price;
$cart->total_price = max(0, $cart->total_price-$cart->coupon->value);
}
else
{
$cart->coupon_discount = $cart->total_price * ($cart->coupon->value)/100;
$cart->total_price = $cart->total_price-$cart->coupon_discount;
}
}
else
{
unset($_SESSION['coupon_code']);
}
}
}
}
return $cart;
}
/*
*
* Добавление варианта товара в корзину
*
*/
public function add_item($variant_id, $amount = 1,$options = array())
{
$amount = max(1, $amount);
if(isset($_SESSION['shopping_cart'][$variant_id]['amount']))
$amount = max(1, $amount+$_SESSION['shopping_cart'][$variant_id]['amount']);
// Выберем товар из базы, заодно убедившись в его существовании
$variant = $this->variants->get_variant($variant_id);
// Если товар существует, добавим его в корзину
if(!empty($variant) && ($variant->stock>0) )
{
// Не дадим больше чем на складе
$amount = min($amount, $variant->stock);
$options = serialize($options);
$_SESSION['shopping_cart'][$variant_id] = intval($amount);
$_SESSION['shopping_cart'][$variant_id] = array('amount'=>intval($amount),'options'=>$options);
}
}
/*
*
* Обновление количества товара
*
*/
public function update_item($variant_id, $amount = 1,$options = array())
{
$amount = max(1, $amount);
// Выберем товар из базы, заодно убедившись в его существовании
$variant = $this->variants->get_variant($variant_id);
// Если товар существует, добавим его в корзину
if(!empty($variant) && $variant->stock>0)
{
// Не дадим больше чем на складе
$amount = min($amount, $variant->stock);
$options = serialize($options);
$_SESSION['shopping_cart'][$variant_id] = array('amount'=>intval($amount),'options'=>$options);
//$_SESSION['shopping_cart'][$variant_id] = intval($amount);
}
}
/*
*
* Удаление товара из корзины
*
*/
public function delete_item($variant_id)
{
unset($_SESSION['shopping_cart'][$variant_id]);
}
/*
*
* Очистка корзины
*
*/
public function empty_cart()
{
unset($_SESSION['shopping_cart']);
unset($_SESSION['coupon_code']);
}
/*
*
* Применить купон
*
*/
public function apply_coupon($coupon_code)
{
$coupon = $this->coupons->get_coupon((string)$coupon_code);
if($coupon && $coupon->valid)
{
$_SESSION['coupon_code'] = $coupon->code;
}
else
{
unset($_SESSION['coupon_code']);
}
}
public function getCity2(){
$city = array(
"city--moskva"=>"Москва",
"city--sankt-peterburg"=>"Санкт-Петербург",
"city--abakan"=>"Абакан",
"city--anadyr"=>"Анадырь",
"city--anapa"=>"Анапа",
"city--arhangelsk"=>"Архангельск",
"city--astrahan"=>"Астрахань",
"city--barnaul"=>"Барнаул",
"city--belgorod"=>"Белгород",
"city--birobidzhan"=>"Биробиджан",
"city--blagoveshhensk"=>"Благовещенск",
"city--brjansk"=>"Брянск",
"city--velikij-novgorod"=>"Великий Новгород ",
"city--vladivostok"=>"Владивосток",
"city--vladikavkaz"=>"Владикавказ",
"city--vladimir"=>"Владимир",
"city--volgograd"=>"Волгоград",
"city--vologda"=>"Вологда",
"city--vorkuta"=>"Воркута",
"city--voronezh"=>"Воронеж",
"city--gorno-altajsk"=>"Горно-Алтайск",
"city--groznyj"=>"Грозный",
"city--dudinka"=>"Дудинка",
"city--ekaterinburg"=>"Екатеринбург",
"city--elizovo"=>"Елизово",
"city--ivanovo"=>"Иваново",
"city--izhevsk"=>"Ижевск",
"city--irkutsk"=>"Иркутск",
"city--ioshkar-ola"=>"Йошкар-Ола",
"city--kazan"=>"Казань",
"city--kaliningrad"=>"Калининград",
"city--kaluga"=>"Калуга",
"city--kemerovo"=>"Кемерово",
"city--kirov"=>"Киров",
"city--kostomuksha"=>"Костомукша",
"city--kostroma"=>"Кострома",
"city--krasnodar"=>"Краснодар",
"city--krasnojarsk"=>"Красноярск",
"city--kurgan"=>"Курган",
"city--kursk"=>"Курск",
"city--kyzyl"=>"Кызыл",
"city--lipeck"=>"Липецк",
"city--magadan"=>"Магадан",
"city--magnitogorsk"=>"Магнитогорск",
"city--majkop"=>"Майкоп",
"city--mahachkala"=>"Махачкала",
"city--mirnyj"=>"Мирный",
"city--murmansk"=>"Мурманск",
"city--mytishhi"=>"Мытищи",
"city--naberezhnye-chelny"=>"Набережные Челны",
"city--nadym"=>"Надым",
"city--nazran"=>"Назрань",
"city--nalchik"=>"Нальчик",
"city--narjan-mar"=>"Нарьян-Мар",
"city--nerjungri"=>"Нерюнгри",
"city--neftejugansk"=>"Нефтеюганск",
"city--nizhnevartovsk"=>"Нижневартовск",
"city--nizhnij-novgorod"=>"Нижний Новгород",
"city--novokuzneck"=>"Новокузнецк",
"city--novorossijsk"=>"Новороссийск",
"city--novosibirsk"=>"Новосибирск",
"city--novyj-urengoj"=>"Новый Уренгой",
"city--norilsk"=>"Норильск",
"city--nojabrsk"=>"Ноябрьск",
"city--omsk"=>"Омск",
"city--orel"=>"Орел",
"city--orenburg"=>"Оренбург",
"city--penza"=>"Пенза",
"city--perm"=>"Пермь",
"city--petrozavodsk"=>"Петрозаводск",
"city--petropavlovsk-kamchatskij"=>"Петропавловск-Камчатский",
"city--pskov"=>"Псков",
"city--rostov-na-donu"=>"Ростов-на-Дону",
"city--rjazan"=>"Рязань",
"city--salehard"=>"Салехард",
"city--samara"=>"Самара",
"city--saransk"=>"Саранск",
"city--saratov"=>"Саратов",
"city--smolensk"=>"Смоленск",
"city--sochi"=>"Сочи",
"city--stavropol"=>"Ставрополь",
"city--strezhevoj"=>"Стрежевой",
"city--surgut"=>"Сургут",
"city--syktyvkar"=>"Сыктывкар",
"city--tambov"=>"Тамбов",
"city--tver"=>"Тверь",
"city--toljatti"=>"Тольятти",
"city--tomsk"=>"Томск",
"city--tula"=>"Тула",
"city--tynda"=>"Тында",
"city--tjumen"=>"Тюмень",
"city--ulan-udje"=>"Улан-Удэ",
"city--uljanovsk"=>"Ульяновск",
"city--usinsk"=>"Усинск",
"city--ufa"=>"Уфа",
"city--khabarovsk"=>"Хабаровск",
"city--khanty-mansijsk"=>"Ханты-Мансийск",
"city--kholmsk"=>"Холмск",
"city--cheboksary"=>"Чебоксары",
"city--cheljabinsk"=>"Челябинск",
"city--cherepovec"=>"Череповец",
"city--cherkessk"=>"Черкесск",
"city--chita"=>"Чита",
"city--elista"=>"Элиста",
"city--yuzhno-sahalinsk"=>"Южно-Сахалинск",
"city--yakutsk"=>"Якутск",
"city--yaroslavl"=>"Ярославль",
"region--respublika-adygeja"=>"Адыгея респ.",
"region--respublika-altaj"=>"Алтай респ.",
"region--altajskij-kraj"=>"Алтайский край",
"region--amurskaja-oblast"=>"Амурская обл.",
"region--arhangelskaja-oblast"=>"Архангельская обл.",
"region--astrahanskaja-oblast"=>"Астраханская обл.",
"region--respublika-bashkortostan"=>"Башкортостан респ.",
"region--belgorodskaja-oblast"=>"Белгородская обл.",
"region--brjanskaja-oblast"=>"Брянская обл.",
"region--respublika-burjatija"=>"Бурятия респ.",
"region--vladimirskaja-oblast"=>"Владимирская обл.",
"region--volgogradskaja-oblast"=>"Волгоградская обл.",
"region--vologodskaja-oblast"=>"Вологодская обл.",
"region--voronezhskaja-oblast"=>"Воронежская обл.",
"region--respublika-dagestan"=>"Дагестан респ.",
"region--evrejskaja-ao"=>"Еврейская авт.обл.",
"region--zabajkalskij-kraj"=>"Забайкальский край",
"region--ivanovskaja-oblast"=>"Ивановская обл.",
"region--respublika-ingushetija"=>"Ингушетия респ.",
"region--irkutskaja-oblast"=>"Иркутская обл.",
"region--kabardino-balkarskaja-respublika"=>"Кабардино-Балкарская респ.",
"region--kaliningradskaja-oblast"=>"Калининградская обл.",
"region--respublika-kalmykija"=>"Калмыкия респ.",
"region--kaluzhskaja-oblast"=>"Калужская обл.",
"region--kamchatskij-kraj"=>"Камчатский край",
"region--karachaevo-cherkesskaja-respublika"=>"Карачаево-Черкесская респ.",
"region--respublika-karelija"=>"Карелия респ.",
"region--kemerovskaja-oblast"=>"Кемеровская обл.",
"region--kirovskaja-oblast"=>"Кировская обл.",
"region--respublika-komi"=>"Коми респ.",
"region--kostromskaja-oblast"=>"Костромская обл.",
"region--krasnodarskij-kraj"=>"Краснодарский край",
"region--krasnojarskij-kraj"=>"Красноярский край",
"region--kurganskaja-oblast"=>"Курганская обл.",
"region--kurskaja-oblast"=>"Курская обл.",
"region--leningradskaja-oblast"=>"Ленинградская обл.",
"region--lipeckaja-oblast"=>"Липецкая обл.",
"region--magadanskaja-oblast"=>"Магаданская обл.",
"region--respublika-marij-el"=>"Марий Эл респ.",
"region--respublika-mordovija"=>"Мордовия респ.",
"region--moskovskaja-oblast"=>"Московская обл.",
"region--murmanskaja-oblast"=>"Мурманская обл.",
"region--neneckij-ao"=>"Ненецкий АО",
"region--nizhegorodskaja-oblast"=>"Нижегородская обл.",
"region--novgorodskaja-oblast"=>"Новгородская обл.",
"region--novosibirskaja-oblast"=>"Новосибирская обл.",
"region--omskaja-oblast"=>"Омская обл.",
"region--orenburgskaja-oblast"=>"Оренбургская обл.",
"region--orlovskaja-oblast"=>"Орловская обл.",
"region--penzenskaja-oblast"=>"Пензенская обл.",
"region--permskij-kraj"=>"Пермский край",
"region--primorskij-kraj"=>"Приморский край",
"region--pskovskaja-oblast"=>"Псковская обл.",
"region--rostovskaja-oblast"=>"Ростовская обл.",
"region--rjazanskaja-oblast"=>"Рязанская обл.",
"region--samarskaja-oblast"=>"Самарская обл.",
"region--saratovskaja-oblast"=>"Саратовская обл.",
"region--respublika-saha-yakutija"=>"Саха (Якутия) респ.",
"region--sahalinskaja-oblast"=>"Сахалинская обл.",
"region--sverdlovskaja-oblast"=>"Свердловская обл.",
"region--respublika-sev.osetija-alanija"=>"Северная Осетия - Алания респ.",
"region--smolenskaja-oblast"=>"Смоленская обл.",
"region--stavropolskij-kraj"=>"Ставропольский край",
"region--tambovskaja-oblast"=>"Тамбовская обл.",
"region--respublika-tatarstan"=>"Татарстан респ.",
"region--tverskaja-oblast"=>"Тверская обл.",
"region--tomskaja-oblast"=>"Томская обл.",
"region--tulskaja-oblast"=>"Тульская обл.",
"region--respublika-tyva"=>"Тыва респ.",
"region--tjumenskaja-oblast"=>"Тюменская обл.",
"region--udmurtskaja-respublika"=>"Удмуртская респ.",
"region--uljanovskaja-oblast"=>"Ульяновская обл.",
"region--khabarovskij-kraj"=>"Хабаровский край",
"region--respublika-khakasija"=>"Хакасия респ.",
"region--khanty-mansijskij-ao"=>"Ханты-Мансийский АО - Югра",
"region--cheljabinskaja-oblast"=>"Челябинская обл.",
"region--chechenskaja-respublika"=>"Чеченская респ.",
"region--chuvashskaja-respublika"=>"Чувашия респ.",
"region--chukotskij-ao"=>"Чукотский АО",
"region--yamalo-neneckij-ao"=>"Ямало-Ненецкий АО",
"region--yaroslavskaja-oblast"=>"Ярославская обл."
);
return $city;
}
}