Beispiel #1
0
 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;
 }
Beispiel #2
0
 /**
  * Определяет поведение при изменении и удаление данных в корзине,
  * а так же выводит список позиций к заказу.
  *
  * @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']);
 }