409 lines
16 KiB
PHP
409 lines
16 KiB
PHP
<?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;
|
||
}
|
||
|
||
} |