function __construct() { $model = new Models_Product(); // Требуется только пересчет цены товара. if (!empty($_REQUEST['calcPrice'])) { $model->calcPrice(); exit; } $product = Storage::get(md5('ControllersProduct' . URL::getUrl())); if ($product == null) { $settings = MG::get('settings'); $product = $model->getProduct(URL::getQueryParametr('id')); if (empty($product)) { MG::redirect('/404'); exit; } $product['meta_title'] = $product['meta_title'] ? $product['meta_title'] : $product['title']; $product['currency'] = $settings['currency']; $blockVariants = $model->getBlockVariants($product['id']); $blockedProp = $model->noPrintProperty(); $propertyFormData = $model->createPropertyForm($param = array('id' => $product['id'], 'maxCount' => $product['count'], 'productUserFields' => $product['thisUserFields'], 'action' => "/catalog", 'method' => "POST", 'ajax' => true, 'blockedProp' => $blockedProp, 'noneAmount' => false, 'noneButton' => $product['count'] ? false : true, 'titleBtn' => MG::getSetting('buttonBuyName'), 'blockVariants' => $blockVariants, 'currency_iso' => $product['currency_iso'])); // Легкая форма без характеристик. $liteFormData = $model->createPropertyForm($param = array('id' => $product['id'], 'maxCount' => $product['count'], 'productUserFields' => null, 'action' => "/catalog", 'method' => "POST", 'ajax' => true, 'blockedProp' => $blockedProp, 'noneAmount' => false, 'noneButton' => $product['count'] ? false : true, 'titleBtn' => MG::getSetting('buttonBuyName'), 'blockVariants' => $blockVariants)); //echo viewData($propertyFormData['defaultSet']); $product['price_course'] += $propertyFormData['marginPrice']; $currencyRate = MG::getSetting('currencyRate'); $currencyShopIso = MG::getSetting('currencyShopIso'); $product['currency_iso'] = $product['currency_iso'] ? $product['currency_iso'] : $currencyShopIso; $product['old_price'] = $product['old_price'] * $currencyRate[$product['currency_iso']]; $product['old_price'] = $product['old_price'] ? $product['old_price'] : 0; $product['price'] = MG::priceCourse($product['price_course']); $product['propertyForm'] = $propertyFormData['html']; $product['propertyNodummy'] = $propertyFormData['propertyNodummy']; $product['stringsProperties'] = $propertyFormData['stringsProperties']; $product['liteFormData'] = $liteFormData['html']; $product['description'] = MG::inlineEditor(PREFIX . 'product', "description", $product['id'], $product['description']); $product['title'] = MG::modalEditor('catalog', $product['title'], 'edit', $product["id"]); // Информация об отсутствии товара на складе. if (MG::getSetting('printRemInfo') == "true") { $message = 'Здравствуйте, меня интересует товар "' . str_replace("'", """, $product['title']) . '" с артикулом "' . $product['code'] . '", но его нет в наличии. Сообщите, пожалуйста, о поступлении этого товара на склад. '; if ($product['count'] != 0) { $style = 'style="display:none;"'; } $product['remInfo'] = "<span class='rem-info' " . $style . ">Товара временно нет на складе!<br/><a href='" . SITE . "/feedback?message=" . $message . "'>Сообщить когда будет в наличии.</a></span>"; } if ($product['count'] < 0) { $product['count'] = "много"; } $product['related'] = $model->createRelatedForm($product['related']); Storage::save(md5('ControllersProduct' . URL::getUrl()), $product); } // MG::set('propertyNodummy',$product['propertyNodummy']); // $_SESSION['propertyNodummy'] = $product['propertyNodummy']; $this->data = $product; }
/** * Определяет поведение при изменении и удаление данных в корзине, * а так же выводит список позиций к заказу. * * @return void */ public function __construct() { // Обновление данных. if (!empty($_REQUEST['updateCart'])) { $this->updateCart(); exit; } // Удаление данных. if (!empty($_REQUEST['delFromCart'])) { $this->delFromCart(); exit; } // Пересчет скидки купона. if (!empty($_POST['coupon'])) { $this->applyCoupon(); } $model = new Models_Cart(); // Если пользователь изменил данные в корзине. if (!empty($_REQUEST['refresh'])) { $update = array(); $refreshData = $_REQUEST; // Пробегаем по массиву, находим пометки на удаление и на изменение количества. foreach ($refreshData as $key => $val) { $id = ''; if ('item_' == substr($key, 0, 5)) { $id = substr($key, 5); // Находим propertyReal для текущего ID продукта. $propertyReal = array(); $variantId = array(); if (!empty($_SESSION['cart'])) { foreach ($_SESSION['cart'] as $item) { if ($item['id'] == $id) { $propertyReal[] = $item['propertyReal']; $variantId[] = $item['variantId']; } } } if (!empty($val)) { $product = new Models_Product(); foreach ($val as $k => $count) { $propertySetId = $refreshData['property_' . $id][$k]; if ($count > 0) { $tempProduct = $product->getProduct($id); $countMax = $tempProduct['count']; if ($variantId[$k]) { $tempProdVar = $product->getVariants($id); $countMax = $tempProdVar[$variantId[$k]]['count']; } if ($count > $countMax && $countMax > 0) { $count = $countMax; } $update[] = array('id' => $id, 'count' => $count >= 0 ? $count : 0, 'property' => $_SESSION['propertySetArray'][$propertySetId], 'propertyReal' => $propertyReal[$k], 'propertySetId' => $propertySetId, 'variantId' => $variantId[$k]); } else { if (!empty($_SESSION['propertySetArray'][$propertySetId])) { unset($_SESSION['propertySetArray'][$propertySetId]); } } } } } elseif ('del_' == substr($key, 0, 4)) { $id = substr($ItemId, 4); $count = 0; } } // Передаем в модель данные для обновления корзины. $model->refreshCart($update); // Пересчитываем маленькую корзину. header('Location: ' . SITE . '/cart'); exit; } if (!empty($_REQUEST['clear'])) { $model->clearCart(); // Пересчитываем маленькую корзину. SmalCart::setCartData(); header('Location: ' . SITE . '/cart'); exit; } $settings = MG::get('settings'); $cartData = $model->getItemsCart(); // Подготавливает список связанных товаров. foreach ($cartData['items'] as $item) { $related .= ',' . $item['related']; } if (!empty($related)) { $codes = explode(',', $related); $codes = array_unique($codes); $related = implode(',', $codes); $product = new Models_Product(); $related = $product->createRelatedForm($related, 'Добавить в заказ похожие товары', 'layout_relatedcart'); } $this->data = array('isEmpty' => $model->isEmptyCart(), 'productPositions' => $cartData['items'], 'totalSumm' => $cartData['totalSumm'], 'related' => $related, 'meta_title' => 'Корзина', 'meta_keywords' => !empty($model->currentCategory['meta_keywords']) ? $model->currentCategory['meta_keywords'] : "корзина,покупки,заказ,купленные товары", 'meta_desc' => !empty($model->currentCategory['meta_desc']) ? $model->currentCategory['meta_desc'] : "Положите понравившиеся товары в корзину и вы сможете оформить заказ.", 'currency' => $settings['currency']); }