This shows you the differences between two versions of the page.
| 
                    market:short_cart:lib_config.php [06.05.15 в 15:50] Артем Куц создано  | 
                — (current) | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | <code><?php | ||
| - | /** | ||
| - | * ТДС корзины с объединением всех шагов на одной странице v. 6.2 | ||
| - | * обязательно использовать с соответствующей страницей настроек ТДС | ||
| - | * для вывода типов доставки и пересчета используется ajax | ||
| - | * | ||
| - | * @author Kuts Artem, KAD Systems (©) 2014 | ||
| - | * @date 01-09-2014 | ||
| - | */ | ||
| - | // Игнорировать модуль "Пользователи" | ||
| - | define("SHORTCART_IGNOREUSERS", false); | ||
| - | // Режим отображения 2 - 2 шага оформления, 3 - 3 шага оформления | ||
| - | define("SHORTCART_CARTMODE", 2); | ||
| - | // Использовать captcha | ||
| - | define("SHORTCART_USECAPTCHA", false); | ||
| - | // Ошибка неправильного ввода | ||
| - | define("SHORTCART_ERROR_WC", "Введен неверный код подтверждения!"); | ||
| - | |||
| - | $oShop = Core_Entity::factory('Shop', Core_Array::get(Core_Page::instance()->libParams, 'shopId')); | ||
| - | |||
| - | // ------------------------------------------------ | ||
| - | // Обработка запросов от Яндекс.Денег | ||
| - | // ------------------------------------------------ | ||
| - | if (isset($_POST['action']) && isset($_POST['invoiceId']) && isset($_POST['orderNumber'])) | ||
| - | { | ||
| - | // Получаем ID заказа | ||
| - | $order_id = intval(Core_Array::getPost('orderNumber')); | ||
| - | |||
| - | $oShop_Order = Core_Entity::factory('Shop_Order')->find($order_id); | ||
| - | |||
| - | if (!is_null($oShop_Order->id)) | ||
| - | { | ||
| - | header("Content-type: application/xml"); | ||
| - | |||
| - | // Вызов обработчика платежной системы | ||
| - | Shop_Payment_System_Handler::factory($oShop_Order->Shop_Payment_System) | ||
| - | ->shopOrder($oShop_Order) | ||
| - | ->paymentProcessing(); | ||
| - | } | ||
| - | } | ||
| - | |||
| - | if (isset($_REQUEST['type'])) | ||
| - | { | ||
| - | // Получаем ID заказа | ||
| - | $order_id = intval(Core_Array::getPost('pay_for')); | ||
| - | |||
| - | $oShop_Order = Core_Entity::factory('Shop_Order')->find($order_id); | ||
| - | |||
| - | if (!is_null($oShop_Order->id)) | ||
| - | { | ||
| - | header("Content-type: application/xml"); | ||
| - | |||
| - | // Вызов обработчика платежной системы | ||
| - | Shop_Payment_System_Handler::factory($oShop_Order->Shop_Payment_System) | ||
| - | ->shopOrder($oShop_Order) | ||
| - | ->paymentProcessing(); | ||
| - | } | ||
| - | } | ||
| - | |||
| - | // ------------------------------------------------ | ||
| - | // Обработка уведомления об оплате от IntellectMoney | ||
| - | // ------------------------------------------------ | ||
| - | if (isset($_REQUEST['orderId'])) | ||
| - | { | ||
| - | // Получаем ID заказа | ||
| - | $order_id = intval(Core_Array::getRequest('orderId')); | ||
| - | |||
| - | $oShop_Order = Core_Entity::factory('Shop_Order')->find($order_id); | ||
| - | |||
| - | if (!is_null($oShop_Order->id)) | ||
| - | { | ||
| - | // Вызов обработчика платежной системы | ||
| - | Shop_Payment_System_Handler::factory($oShop_Order->Shop_Payment_System) | ||
| - | ->shopOrder($oShop_Order) | ||
| - | ->paymentProcessing(); | ||
| - | } | ||
| - | } | ||
| - | |||
| - | // ------------------------------------------------ | ||
| - | // Обработка уведомления об оплате от ROBOKASSA | ||
| - | // должно быть только в настройках типовой дин. страницы | ||
| - | // ------------------------------------------------ | ||
| - | if (isset($_REQUEST['SignatureValue']) | ||
| - | // для отличия от SuccessURL/FailURL | ||
| - | && !isset($_REQUEST['Culture'])) | ||
| - | { | ||
| - | // Получаем ID заказа | ||
| - | $order_id = intval(Core_Array::getRequest('InvId')); | ||
| - | |||
| - | $oShop_Order = Core_Entity::factory('Shop_Order')->find($order_id); | ||
| - | |||
| - | if (!is_null($oShop_Order->id)) | ||
| - | { | ||
| - | // Вызов обработчика платежной системы | ||
| - | Shop_Payment_System_Handler::factory($oShop_Order->Shop_Payment_System) | ||
| - | ->shopOrder($oShop_Order) | ||
| - | ->paymentProcessing(); | ||
| - | } | ||
| - | |||
| - | exit(); | ||
| - | } | ||
| - | |||
| - | // Добавление товара в корзину | ||
| - | if (Core_Array::getRequest('add')) | ||
| - | { | ||
| - | $shop_item_id = intval(Core_Array::getRequest('add')); | ||
| - | |||
| - | if ($shop_item_id) | ||
| - | { | ||
| - | $oShop_Cart_Controller = Shop_Cart_Controller::instance(); | ||
| - | $oShop_Cart_Controller | ||
| - | ->shop_item_id($shop_item_id) | ||
| - | ->quantity(Core_Array::getRequest('count', 1)) | ||
| - | ->add(); | ||
| - | } | ||
| - | |||
| - | // Ajax | ||
| - | if (Core_Array::getRequest('_', FALSE)) | ||
| - | { | ||
| - | ob_start(); | ||
| - | |||
| - | // Краткая корзина | ||
| - | $Shop_Cart_Controller_Show = new Shop_Cart_Controller_Show( | ||
| - | $oShop | ||
| - | ); | ||
| - | $Shop_Cart_Controller_Show | ||
| - | ->xsl( | ||
| - | Core_Entity::factory('Xsl')->getByName( | ||
| - | Core_Array::get(Core_Page::instance()->libParams, 'littleCartXsl') | ||
| - | ) | ||
| - | ) | ||
| - | ->couponText(Core_Array::get($_SESSION, 'coupon_text')) | ||
| - | ->show(); | ||
| - | |||
| - | echo json_encode(ob_get_clean()); | ||
| - | |||
| - | exit(); | ||
| - | } | ||
| - | } | ||
| - | |||
| - | if (Core_Array::getGet('action') == 'repeat') | ||
| - | { | ||
| - | $guid = Core_Array::getGet('guid'); | ||
| - | if (strlen($guid)) | ||
| - | { | ||
| - | $oShop_Order = $oShop->Shop_Orders->getByGuid($guid); | ||
| - | |||
| - | if (!is_null($oShop_Order)) | ||
| - | { | ||
| - | $aShop_Order_Items = $oShop_Order->Shop_Order_Items->findAll(); | ||
| - | |||
| - | $oShop_Cart_Controller = Shop_Cart_Controller::instance(); | ||
| - | |||
| - | foreach ($aShop_Order_Items as $oShop_Order_Item) | ||
| - | { | ||
| - | $oShop_Order_Item->shop_item_id && $oShop_Cart_Controller | ||
| - | ->shop_item_id($oShop_Order_Item->shop_item_id) | ||
| - | ->quantity($oShop_Order_Item->quantity) | ||
| - | ->add(); | ||
| - | } | ||
| - | } | ||
| - | } | ||
| - | } | ||
| - | |||
| - | if (!is_null(Core_Array::getGet('ajaxLoad'))) | ||
| - | { | ||
| - | $aObjects = array(); | ||
| - | |||
| - | if (Core_Array::getGet('shop_country_id')) | ||
| - | { | ||
| - | $oShop_Country_Location = Core_Entity::factory('Shop_Country_Location'); | ||
| - | $oShop_Country_Location | ||
| - | ->queryBuilder() | ||
| - | ->where('shop_country_id', '=', intval(Core_Array::getGet('shop_country_id'))); | ||
| - | $aObjects = $oShop_Country_Location->findAll(); | ||
| - | } | ||
| - | elseif (Core_Array::getGet('shop_country_location_id')) | ||
| - | { | ||
| - | $oShop_Country_Location_City = Core_Entity::factory('Shop_Country_Location_City'); | ||
| - | $oShop_Country_Location_City | ||
| - | ->queryBuilder() | ||
| - | ->where('shop_country_location_id', '=', intval(Core_Array::getGet('shop_country_location_id'))); | ||
| - | $aObjects = $oShop_Country_Location_City->findAll(); | ||
| - | } | ||
| - | elseif (Core_Array::getGet('shop_country_location_city_id')) | ||
| - | { | ||
| - | $oShop_Country_Location_City_Area = Core_Entity::factory('Shop_Country_Location_City_Area'); | ||
| - | $oShop_Country_Location_City_Area | ||
| - | ->queryBuilder() | ||
| - | ->where('shop_country_location_city_id', '=', intval(Core_Array::getGet('shop_country_location_city_id'))); | ||
| - | $aObjects = $oShop_Country_Location_City_Area->findAll(); | ||
| - | } | ||
| - | |||
| - | $aArray = array('…'); | ||
| - | foreach ($aObjects as $Object) | ||
| - | { | ||
| - | |||
| - | $aArray['_' . $Object->id] = $Object->name; | ||
| - | // Если не работает подгрузка городов - раскомментить строчку выше | ||
| - | // и закомментить строчку ниже | ||
| - | //$aArray[$Object->id] = $Object->name; | ||
| - | } | ||
| - | |||
| - | echo json_encode($aArray); | ||
| - | exit(); | ||
| - | } | ||
| - | |||
| - | // Удаление товара из корзины | ||
| - | if (Core_Array::getGet('delete')) | ||
| - | { | ||
| - | $shop_item_id = intval(Core_Array::getGet('delete')); | ||
| - | |||
| - | if ($shop_item_id) | ||
| - | { | ||
| - | $oShop_Cart_Controller = Shop_Cart_Controller::instance(); | ||
| - | $oShop_Cart_Controller | ||
| - | ->shop_item_id($shop_item_id) | ||
| - | ->delete(); | ||
| - | } | ||
| - | } | ||
| - | |||
| - | // KAD: Удаление всех товаров из корзины | ||
| - | if (Core_Array::getGet('delete_all')) | ||
| - | { | ||
| - | $oShop_Cart_Controller = Shop_Cart_Controller::instance(); | ||
| - | $oItemsInCart = $oShop_Cart_Controller->getAll($oShop); | ||
| - | foreach( $oItemsInCart as $oItemInCart) | ||
| - | { | ||
| - | $oShop_Cart_Controller | ||
| - | ->shop_item_id($oItemInCart->shop_item_id) | ||
| - | ->delete(); | ||
| - | } | ||
| - | if (isset($_SERVER['HTTP_REFERER'])) | ||
| - | { | ||
| - | header('location: '.$_SERVER['HTTP_REFERER']); | ||
| - | exit(); | ||
| - | } | ||
| - | } | ||
| - | |||
| - | // KAD: ajax обработчик вывода типов доставки | ||
| - | if (Core_Array::getRequest('ajaxget') == "delivery") | ||
| - | { | ||
| - | $_SESSION['hostcmsOrder']['shop_country_id'] = intval(Core_Array::getRequest('shop_country_id', 0)); | ||
| - | $_SESSION['hostcmsOrder']['shop_country_location_id'] = intval(Core_Array::getRequest('shop_country_location_id', 0)); | ||
| - | $_SESSION['hostcmsOrder']['shop_country_location_city_id'] = intval(Core_Array::getRequest('shop_country_location_city_id', 0)); | ||
| - | $_SESSION['hostcmsOrder']['shop_country_location_city_area_id'] = intval(Core_Array::getRequest('shop_country_location_city_area_id', 0)); | ||
| - | |||
| - | $Shop_Delivery_Controller_Show = new Shop_Delivery_Controller_Show($oShop); | ||
| - | |||
| - | $Shop_Delivery_Controller_Show | ||
| - | ->shop_country_id($_SESSION['hostcmsOrder']['shop_country_id']) | ||
| - | ->shop_country_location_id($_SESSION['hostcmsOrder']['shop_country_location_id']) | ||
| - | ->shop_country_location_city_id($_SESSION['hostcmsOrder']['shop_country_location_city_id']) | ||
| - | ->shop_country_location_city_area_id($_SESSION['hostcmsOrder']['shop_country_location_city_area_id']) | ||
| - | ->couponText(Core_Array::get(Core_Array::get($_SESSION, 'hostcmsOrder', array()), 'coupon_text')) | ||
| - | ->setUp() | ||
| - | ->xsl( | ||
| - | Core_Entity::factory('Xsl')->getByName( | ||
| - | Core_Array::get(Core_Page::instance()->libParams, 'deliveryXsl') | ||
| - | ) | ||
| - | ) | ||
| - | ->show(); | ||
| - | |||
| - | header("Content-Type: text/html; charset=utf-8"); | ||
| - | exit(); | ||
| - | } | ||
| - | |||
| - | // KAD: ajax обработчик вывода платежных систем | ||
| - | if (Core_Array::getRequest('ajaxget') == "payment") | ||
| - | { | ||
| - | |||
| - | $Shop_Payment_System_Controller_Show = new Shop_Payment_System_Controller_Show($oShop); | ||
| - | |||
| - | // Если включена кэпча | ||
| - | if (SHORTCART_USECAPTCHA) | ||
| - | { | ||
| - | $Shop_Payment_System_Controller_Show->addEntity( | ||
| - | Core::factory('Core_Xml_Entity') | ||
| - | ->name('siteuser_id') | ||
| - | ->value((Core::moduleIsActive('siteuser') && !is_null(Core_Entity::factory('Siteuser')->getCurrent()))?Core_Entity::factory('Siteuser')->getCurrent()->id:0) | ||
| - | )->addEntity( | ||
| - | Core::factory('Core_Xml_Entity') | ||
| - | ->name('captcha_id') | ||
| - | ->value(Core_Captcha::getCaptchaId()) | ||
| - | ); | ||
| - | } | ||
| - | |||
| - | $shop_delivery_condition_id = strval(Core_Array::getRequest('shop_delivery_condition_id', 0)); | ||
| - | |||
| - | if (is_numeric($shop_delivery_condition_id)) | ||
| - | { | ||
| - | $_SESSION['hostcmsOrder']['shop_delivery_condition_id'] = intval($shop_delivery_condition_id); | ||
| - | } | ||
| - | else | ||
| - | { | ||
| - | $_SESSION['hostcmsOrder']['shop_delivery_condition_id'] = 0; | ||
| - | |||
| - | // в shop_delivery_condition_id тогда "123#", ID элемента массива в сессии, в котором | ||
| - | // хранится стоимость доставки, налог, название специфичного условия доставки | ||
| - | list($shopDeliveryInSession) = explode('#', $shop_delivery_condition_id); | ||
| - | |||
| - | if (isset($_SESSION['hostcmsOrder']['deliveries'][$shopDeliveryInSession])) | ||
| - | { | ||
| - | $aTmp = $_SESSION['hostcmsOrder']['deliveries'][$shopDeliveryInSession]; | ||
| - | |||
| - | $_SESSION['hostcmsOrder']['shop_delivery_id'] = $aTmp['shop_delivery_id']; | ||
| - | $_SESSION['hostcmsOrder']['shop_delivery_price'] = $aTmp['price']; | ||
| - | $_SESSION['hostcmsOrder']['shop_delivery_rate'] = $aTmp['rate']; | ||
| - | $_SESSION['hostcmsOrder']['shop_delivery_name'] = $aTmp['name']; | ||
| - | } | ||
| - | } | ||
| - | |||
| - | $oShop_Delivery_Condition = Core_Entity::factory('Shop_Delivery_Condition', $_SESSION['hostcmsOrder']['shop_delivery_condition_id']); | ||
| - | |||
| - | $Shop_Payment_System_Controller_Show | ||
| - | ->shop_delivery_id($oShop_Delivery_Condition->shop_delivery_id) | ||
| - | ->xsl( | ||
| - | Core_Entity::factory('Xsl')->getByName( | ||
| - | Core_Array::get(Core_Page::instance()->libParams, 'paymentSystemXsl') | ||
| - | ) | ||
| - | ) | ||
| - | ->show(); | ||
| - | |||
| - | header("Content-Type: text/html; charset=utf-8"); | ||
| - | exit(); | ||
| - | } | ||
| - | |||
| - | if (Core_Array::getPost('recount') || Core_Array::getPost('step') == 1) | ||
| - | { | ||
| - | $oShop_Cart_Controller = Shop_Cart_Controller::instance(); | ||
| - | $aCart = $oShop_Cart_Controller->getAll($oShop); | ||
| - | |||
| - | foreach ($aCart as $oShop_Cart) | ||
| - | { | ||
| - | $oShop_Cart_Controller | ||
| - | ->shop_item_id($oShop_Cart->shop_item_id) | ||
| - | ->quantity(Core_Array::getPost('quantity_' . $oShop_Cart->shop_item_id)) | ||
| - | ->postpone(is_null(Core_Array::getPost('postpone_' . $oShop_Cart->shop_item_id)) ? 0 : 1) | ||
| - | ->shop_warehouse_id(Core_Array::getPost('warehouse_' . $oShop_Cart->shop_item_id, 0)) | ||
| - | ->update(); | ||
| - | } | ||
| - | |||
| - | // Запоминаем купон | ||
| - | $_SESSION['hostcmsOrder']['coupon_text'] = trim(strval(Core_Array::getPost('coupon_text'))); | ||
| - | } | ||
| - | |||
| - | $Shop_Cart_Controller_Show = new Shop_Cart_Controller_Show($oShop); | ||
| - | |||
| - | /* | ||
| - | * KAD: ajax обработчик вывода корзины | ||
| - | * совместим с формой быстрого заказа | ||
| - | */ | ||
| - | if (Core_Array::getRequest('ajaxget') == "cart") | ||
| - | { | ||
| - | |||
| - | $oShop_Cart_Controller = Shop_Cart_Controller::instance(); | ||
| - | $aCart = $oShop_Cart_Controller->getAll($oShop); | ||
| - | |||
| - | foreach ($aCart as $oShop_Cart) | ||
| - | { | ||
| - | if (Core_Array::getRequest('quantity_' . $oShop_Cart->shop_item_id)) | ||
| - | { | ||
| - | |||
| - | $quantity = Core_Array::getRequest('quantity_' . $oShop_Cart->shop_item_id); | ||
| - | if ($quantity == -1) | ||
| - | { | ||
| - | $quantity = 0; | ||
| - | } | ||
| - | |||
| - | $oShop_Cart_Controller | ||
| - | ->shop_item_id($oShop_Cart->shop_item_id) | ||
| - | ->quantity($quantity) | ||
| - | ->postpone(is_null(Core_Array::getRequest('postpone_' . $oShop_Cart->shop_item_id)) ? 0 : 1) | ||
| - | ->shop_warehouse_id(Core_Array::getRequest('warehouse_' . $oShop_Cart->shop_item_id, 0)) | ||
| - | ->update(); | ||
| - | } | ||
| - | } | ||
| - | |||
| - | // Запоминаем купон | ||
| - | $_SESSION['hostcmsOrder']['coupon_text'] = trim(strval(Core_Array::getRequest('coupon_text'))); | ||
| - | |||
| - | $xslName = Core_Array::get(Core_Page::instance()->libParams, 'cartXsl'); | ||
| - | $Shop_Cart_Controller_Show | ||
| - | ->couponText(Core_Array::get(Core_Array::get($_SESSION, 'hostcmsOrder', array()), 'coupon_text')) | ||
| - | ->itemsProperties(FALSE) | ||
| - | //->itemsPropertiesList(FALSE) | ||
| - | ->xsl( | ||
| - | Core_Entity::factory('Xsl')->getByName($xslName) | ||
| - | ) | ||
| - | ->show(); | ||
| - | |||
| - | header("Content-Type: text/html; charset=utf-8"); | ||
| - | exit(); | ||
| - | } | ||
| - | |||
| - | Core_Page::instance()->object = $Shop_Cart_Controller_Show;</code> | ||