Files
AtomicOld/api/Cart.php
2026-02-14 19:34:54 +03:00

409 lines
16 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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;
}
}