コード例 #1
0
ファイル: product.php プロジェクト: nellka/mebel
 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;
 }
コード例 #2
0
ファイル: product.php プロジェクト: WinGood/24karcher
 function __construct()
 {
     $model = new Models_Product();
     // Требуется только пересчет цены товара.
     if (!empty($_REQUEST['calcPrice'])) {
         $model->calcPrice();
         exit;
     }
     $settings = MG::get('settings');
     $product = $model->getProduct(URL::getQueryParametr('id'));
     $product['meta_title'] = $product['meta_title'] ? $product['meta_title'] : $product['title'];
     $product['currency'] = $settings['currency'];
     $blockVariants = $model->getBlockVariants($product['id']);
     $propertyFormData = $model->createPropertyForm($param = array('id' => $product['id'], 'maxCount' => $product['count'], 'productUserFields' => $product['thisUserFields'], 'action' => "/catalog", 'method' => "POST", 'ajax' => true, 'blockedProp' => array(), 'noneAmount' => false, 'titleBtn' => "В корзину", 'blockVariants' => $blockVariants));
     // Легкая форма без характеристик.
     $liteFormData = $model->createPropertyForm($param = array('id' => $product['id'], 'maxCount' => $product['count'], 'productUserFields' => null, 'action' => "/catalog", 'method' => "POST", 'ajax' => true, 'blockedProp' => array(), 'noneAmount' => false, 'titleBtn' => "В корзину", 'blockVariants' => $blockVariants));
     $product['price'] += $propertyFormData['marginPrice'];
     $product['propertyForm'] = $propertyFormData['html'];
     $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"]);
     $product["recommend"] = 0;
     $product["new"] = 0;
     $product['cat_title'] = $model->getTitleCat($product['cat_id']);
     // Случайные продукты
     $modelCatalog = new Models_Catalog();
     $likeGoods = $modelCatalog->getRandomProduct($product['cat_id'], $product['id']);
     $product['like_goods'] = $likeGoods;
     // Информация об отсутствии товара на складе.
     if (MG::getSetting('printRemInfo') == "true" && $product['count'] == 0) {
         $product['remInfo'] = "<span class='rem-info'>Товара временно нет на складе!</style>";
     }
     if ($product['count'] < 0) {
         $product['count'] = "∞";
     }
     $this->data = $product;
 }
コード例 #3
0
ファイル: catalog.php プロジェクト: WinGood/24karcher
 function __construct()
 {
     $settings = MG::get('settings');
     // Если нажата кнопка купить.
     $_REQUEST['category_id'] = URL::getQueryParametr('category_id');
     if (!empty($_REQUEST['inCartProductId'])) {
         $cart = new Models_Cart();
         // Если параметров  товара не передано
         // возможно была нажата кнопка купить из мини карточки,
         // в этом случае самостоятельно вычисляем набор
         // параметров, которые были бы указаны при открытии карточки товара.
         if (empty($_POST) || isset($_POST['updateCart']) && isset($_POST['inCartProductId']) && count($_POST) == 2) {
             $modelProduct = new Models_Product();
             $product = $modelProduct->getProduct($_REQUEST['inCartProductId']);
             if (empty($product)) {
                 MG::redirect('/404');
                 exit;
             }
             $blockVariants = $modelProduct->getBlockVariants($product['id']);
             $blockedProp = $modelProduct->noPrintProperty();
             $propertyFormData = $modelProduct->createPropertyForm($param = array('id' => $product['id'], 'maxCount' => $product['count'], 'productUserFields' => $product['thisUserFields'], 'action' => "/catalog", 'method' => "POST", 'ajax' => true, 'blockedProp' => $blockedProp, 'noneAmount' => false, 'titleBtn' => MG::getSetting('buttonBuyName'), 'blockVariants' => $blockVariants, 'currency_iso' => $product['currency_iso']));
             $_POST = $propertyFormData['defaultSet'];
             $_POST['inCartProductId'] = $product['id'];
         }
         $property = $cart->createProperty($_POST);
         $cart->addToCart($_REQUEST['inCartProductId'], $_REQUEST['amount_input'], $property);
         SmalCart::setCartData();
         MG::redirect('/cart');
     }
     if (!empty($_REQUEST['fastsearch'])) {
         $this->getSearchData();
     }
     $countСatalogProduct = $settings['countСatalogProduct'];
     // Показать первую страницу выбранного раздела.
     $page = 1;
     // Запрашиваемая страница.
     if (isset($_REQUEST['p'])) {
         $page = $_REQUEST['p'];
     }
     $model = new Models_Catalog();
     // Если происходит поиск по ключевым словам.
     $keyword = MG::defenderXss_decode(urldecode(URL::getQueryParametr('search')));
     if (!empty($keyword)) {
         $keyword = $this->convertLang($keyword);
         $items = $model->getListProductByKeyWord($keyword, false, true, false, 'groupBy');
         $searchData = array('keyword' => $keyword, 'count' => $items['numRows']);
     } else {
         // Получаем список вложенных категорий,
         // для вывода всех продуктов, на страницах текущей категории.
         if (empty($_REQUEST['category_id'])) {
             $_REQUEST['category_id'] = 0;
         }
         $model->categoryId = MG::get('category')->getCategoryList($_REQUEST['category_id']);
         // В конец списка, добавляем корневую текущую категорию.
         $model->categoryId[] = $_REQUEST['category_id'];
         // Записываем в глобальную переменную список всех вложенных категорий,
         // чтобы использовать в других местах кода, например в фильтре по характеристикам
         $_REQUEST['category_ids'] = $model->categoryId;
         // Передаем номер требуемой страницы, и количество выводимых объектов.
         $countСatalogProduct = $settings['countСatalogProduct'];
         $items = $model->getList($countСatalogProduct, false, true);
     }
     // Если с фильтра пришел запрос только на количество позиций.
     if (!empty($_REQUEST['getcount']) && !empty($_REQUEST['filter'])) {
         echo $items['totalCountItems'] ? $items['totalCountItems'] : 0;
         exit;
     }
     $settings = MG::get('settings');
     if (empty($items['catalogItems'])) {
         $items['catalogItems'] = array();
     } else {
         foreach ($items['catalogItems'] as $item) {
             if ($item['id']) {
                 $productIds[] = $item['id'];
             }
         }
         $product = new Models_Product();
         $blocksVariants = empty($productIds) ? null : $product->getBlocksVariantsToCatalog($productIds);
         $blockedProp = $product->noPrintProperty();
         $actionButton = MG::getSetting('actionInCatalog') === "true" ? 'actionBuy' : 'actionView';
         foreach ($items['catalogItems'] as $k => $item) {
             $imagesUrl = explode("|", $item['image_url']);
             $items['catalogItems'][$k]["image_url"] = "";
             if (!empty($imagesUrl[0])) {
                 $items['catalogItems'][$k]["image_url"] = $imagesUrl[0];
             }
             $items['catalogItems'][$k]['title'] = MG::modalEditor('catalog', $item['title'], 'edit', $item["id"]);
             if ($items['catalogItems'][$k]['count'] == 0) {
                 $buyButton = $items['catalogItems'][$k]['actionView'];
             } else {
                 $buyButton = $items['catalogItems'][$k][$actionButton];
                 if (!empty($items['catalogItems'][$k]['variants'])) {
                     foreach ($items['catalogItems'][$k]['variants'] as $variant) {
                         if ($variant['count'] == 0) {
                             $buyButton = $items['catalogItems'][$k]['actionView'];
                         }
                     }
                 }
             }
             // Легкая форма без характеристик.
             $liteFormData = $product->createPropertyForm($param = array('id' => $item['id'], 'maxCount' => $item['count'], 'productUserFields' => null, 'action' => "/catalog", 'method' => "POST", 'ajax' => true, 'blockedProp' => $blockedProp, 'noneAmount' => true, 'titleBtn' => "В корзину", 'blockVariants' => $blocksVariants[$item['id']], 'buyButton' => $buyButton));
             $items['catalogItems'][$k]['liteFormData'] = $liteFormData['html'];
             $buyButton = $items['catalogItems'][$k]['liteFormData'];
             $items['catalogItems'][$k]['buyButton'] = $buyButton;
         }
     }
     $categoryDesc = MG::get('category')->getDesctiption($_REQUEST['category_id']);
     if ($_REQUEST['category_id']) {
         $categoryDesc = MG::inlineEditor(PREFIX . 'category', "html_content", $_REQUEST['category_id'], $categoryDesc);
     }
     $catImg = MG::get('category')->getImageCategory($_REQUEST['category_id']);
     //$model->currentCategory['title'] = $_REQUEST['category_id'] ? $model->currentCategory['title'] : 0,
     //var_dump($model->currentCategory['title']);
     $data = array('items' => $items['catalogItems'], 'titeCategory' => $model->currentCategory['title'], 'cat_desc' => $categoryDesc, 'cat_img' => $catImg, 'cat_id' => $_REQUEST['category_id'] ? $_REQUEST['category_id'] : 0, 'filterBar' => $items['filterBarHtml'], 'totalCountItems' => $items['totalCountItems'], 'pager' => $items['pager'], 'searchData' => empty($searchData) ? '' : $searchData, 'meta_title' => !empty($model->currentCategory['meta_title']) ? $model->currentCategory['meta_title'] : $model->currentCategory['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'], 'actionButton' => $actionButton);
     if (URL::isSection('catalog') || MG::getSetting('catalogIndex') == 'true' && (URL::isSection('index') || URL::isSection(''))) {
         $html = MG::get('pages')->getPageByUrl('catalog');
         $html['html_content'] = MG::inlineEditor(PREFIX . 'page', "html_content", $html['id'], $html['html_content']);
         $data['meta_title'] = $html['meta_title'] ? $html['meta_title'] : $html['title'];
         $data['meta_title'] = $data['meta_title'] ? $data['meta_title'] : $model->currentCategory['title'];
         $data['meta_keywords'] = $html['meta_keywords'];
         $data['meta_desc'] = $html['meta_desc'];
         $data['cat_desc'] = $html['html_content'];
         $data['titeCategory'] = $html['title'];
     }
     if ($keyword) {
         $data['meta_title'] = 'Поиск по фразе: ' . $keyword;
     }
     $this->data = $data;
 }
コード例 #4
0
ファイル: cart.php プロジェクト: nellka/mebel
 /**
  * Создает информацию для последующего сохранения свойства для товара положенного в корзину из входящего массива.
  * @param mixed $arr
  */
 public function createProperty($arr)
 {
     $productId = $arr['inCartProductId'];
     $product = new Models_Product();
     unset($arr['inCartProductId']);
     unset($arr['buyWithProp']);
     unset($arr['amount_input']);
     unset($arr['ajax']);
     unset($arr['updateCart']);
     unset($arr['delFromCart']);
     unset($arr['propertySetId']);
     unset($arr['calcPrice']);
     $property = '';
     // Фиктивная информация о характеристиках, выводимая в публичной части, в понятном пользователям виде.
     $propertyReal = '';
     // Реальная защищенная информация о характеристиках, не выводимая в публичной части, хранящаяся в сессии в корзине.
     foreach ($arr as $key => $value) {
         // Разбор зашифрованых ключей (номер характеристики#номер пункта), для множественной характеристики (чекбоксы).
         $keyParse = array();
         $pattern = "/^(.*)#(.*)\$/";
         preg_match($pattern, $key, $matches);
         if (isset($matches[1]) && isset($matches[2])) {
             // Получили данные из ключа, теперь по ним можно достать реальную информацию о добавочной стоимости пункта.
             $keyParse = array('property_id' => $matches[1], 'numberElement' => $matches[2]);
         }
         // В значении тоже может передаваться дополнительная стоимость, это если доступен только один пункт (select и radiobutton).
         $valueParse = array();
         preg_match($pattern, $value, $matches);
         if (isset($matches[1]) && isset($matches[2])) {
             // Получили данные из ключа, теперь по ним можно достать реальную информацию о добавочной стоимости пункта.
             $valueParse = array('property_id' => $matches[1], 'numberElement' => $matches[2]);
         }
         $parseData = null;
         // Если и ключ и значение удалось распарсить, приоритет ключу.
         if (!empty($keyParse)) {
             $parseData = $keyParse;
         } elseif (!empty($valueParse)) {
             $parseData = $valueParse;
         }
         if (in_array($keyParse['property_id'], array(60, 61, 63))) {
             unset($parseData);
             //return array('property' => $property, 'propertyReal' => $propertyReal);
         }
         // Если ключ расшифрован найден, надо дописывать добавочные стоимости.
         if (!empty($parseData)) {
             $item = $product->getProduct($productId);
             // воспроизводим набор реальных характеристик, чтобы избежать бага с перезаписью сессиии из второй вкладки
             $propertyFormData = $product->createPropertyForm($param = array('id' => $productId, 'productUserFields' => $item['thisUserFields'], 'maxCount' => $item['count'], 'blockedProp' => $product->noPrintProperty(), 'currency_iso' => $item['currency_iso']));
             $currencyRate = MG::getSetting('currencyRate');
             $currencyShort = MG::getSetting('currencyShort');
             $currencyRate = $currencyRate[$item['currency_iso']];
             $currencyShort = $currencyShort[$item['currency_iso']];
             $realVal = $propertyFormData['propertyNodummy'][$parseData['property_id']][$parseData['numberElement']]['value'];
             $realName = $propertyFormData['propertyNodummy'][$parseData['property_id']][$parseData['numberElement']]['name'];
             $data = $product->parseMarginToProp($realVal);
             if (empty($data) && !empty($realVal)) {
                 $data['name'] = $realVal;
                 $data['margin'] = 0;
             }
             if (!empty($data)) {
                 $plus = $product->addMarginToProp($data['margin'], $currencyRate);
                 $plus = OUTPUT_MARGIN == '0' ? '' : $plus;
                 $property .= '<div class="prop-position"> <span class="prop-name">' . $realName . ': ' . str_replace('_', ' ', $data['name']) . '</span> <span class="prop-val">' . $plus . '</span></div>';
                 $propertyReal .= '<div class="prop-position"> <span class="prop-name">' . $realName . ': ' . str_replace('_', ' ', $data['name']) . '</span> <span class="prop-val"> ' . $realVal . '</span></div>';
             }
         } else {
             if (in_array($keyParse['property_id'], array(60, 61, 63))) {
                 $realName = $productId == 63 ? "Ткани для блузок" : ($productId == 60 ? "Ткани для платьев" : "Ткани для юбок");
                 $data_v = explode("#", $value);
                 $property .= '<div class="prop-position"> <span class="prop-name">' . $realName . ': ' . str_replace('_', ' ', $data_v[0]) . '</span> <span class="prop-val"> ' . $data_v[1] . ' руб.</span></div>';
                 $propertyReal .= '<div class="prop-position"> <span class="prop-name">' . $realName . ': ' . str_replace('_', ' ', $data_v[0]) . '</span> <span class="prop-val"> ' . $value . '</span></div>';
                 //unset($keyParse);
                 //return array('property' => $property, 'propertyReal' => $propertyReal);
             } else {
                 // Иначе, выбрана обычная характеристика без стоимости.
                 $property .= '<div class="prop-position"> <span class="prop-name">' . str_replace('_', ' ', $key) . '</span>: <span class="prop-val">' . $value . '</span></div>';
             }
         }
     }
     return array('property' => $property, 'propertyReal' => $propertyReal);
 }
コード例 #5
0
ファイル: group.php プロジェクト: WinGood/24karcher
 function __construct()
 {
     $settings = MG::get('settings');
     // Если нажата кнопка купить.
     $_REQUEST['type'] = $_GET['type'];
     $countСatalogProduct = $settings['countСatalogProduct'];
     // Показать первую страницу выбранного раздела.
     $page = 1;
     // Запрашиваемая страница.
     if (isset($_REQUEST['p'])) {
         $page = $_REQUEST['p'];
     }
     $model = new Models_Catalog();
     $currencyRate = MG::getSetting('currencyRate');
     $currencyShopIso = MG::getSetting('currencyShopIso');
     if (!empty($_REQUEST['type'])) {
         $titeCategory = 'Группы товаров';
         if ($_REQUEST['type'] == 'recommend') {
             $titeCategory = "Рекомендуемые товары";
             $classTitle = "m-p-recommended-products-title";
             // Формируем список товаров для блока рекомендуемой продукции.
             $items = $model->getListByUserFilter(MG::getSetting('countRecomProduct'), ' p.recommend = 1 and p.activity=1 ORDER BY sort ASC');
         } elseif ($_REQUEST['type'] == 'latest') {
             $titeCategory = "Новинки";
             $classTitle = "m-p-new-products-title";
             // Формируем список товаров для блока новинок.
             $items = $model->getListByUserFilter(MG::getSetting('countNewProduct'), ' p.new = 1 and p.activity=1 ORDER BY sort ASC');
         } elseif ($_REQUEST['type'] == 'sale') {
             $titeCategory = "Распродажа";
             $classTitle = "m-p-sale-products-title";
             // Формируем список товаров со старой ценой.
             $items = $model->getListByUserFilter(MG::getSetting('countSaleProduct'), ' (p.old_price>0 || pv.old_price>0) and p.activity=1 ORDER BY sort ASC');
         }
         $settings = MG::get('settings');
         if (!empty($items)) {
             foreach ($items['catalogItems'] as $k => $item) {
                 $productIds[] = $item['id'];
                 $items['catalogItems'][$k]['currency_iso'] = $item['currency_iso'] ? $item['currency_iso'] : $currencyShopIso;
                 // $item['price'] *= $currencyRate[$item['currency_iso']];
                 $items['catalogItems'][$k]['old_price'] = $item['old_price'] * $currencyRate[$item['currency_iso']];
                 $items['catalogItems'][$k]['old_price'] = $item['old_price'] ? MG::priceCourse($item['old_price']) : 0;
                 $items['catalogItems'][$k]['price'] = MG::priceCourse($item['price_course']);
             }
         }
         $product = new Models_Product();
         $blocksVariants = $product->getBlocksVariantsToCatalog($productIds);
         $blockedProp = $product->noPrintProperty();
         if (!empty($items)) {
             foreach ($items['catalogItems'] as $k => $item) {
                 $imagesUrl = explode("|", $item['image_url']);
                 $items['catalogItems'][$k]["image_url"] = "";
                 if (!empty($imagesUrl[0])) {
                     $items['catalogItems'][$k]["image_url"] = $imagesUrl[0];
                 }
                 $item['currency_iso'] = $item['currency_iso'] ? $item['currency_iso'] : $currencyShopIso;
                 //$item['price'] *= $currencyRate[$item['currency_iso']];
                 $item['old_price'] = $item['old_price'] * $currencyRate[$item['currency_iso']];
                 $item['old_price'] = $item['old_price'] ? MG::priceCourse($item['old_price']) : 0;
                 $item['price'] = MG::priceCourse($item['price_course']);
                 $items['catalogItems'][$k]['title'] = MG::modalEditor('catalog', $item['title'], 'edit', $item["id"]);
                 // Формируем варианты товара.
                 // if ($item['variant_exist']) {
                 // Легкая форма без характеристик.
                 $liteFormData = $product->createPropertyForm($param = array('id' => $item['id'], 'maxCount' => $item['count'], 'productUserFields' => null, 'action' => "/catalog", 'method' => "POST", 'ajax' => true, 'blockedProp' => $blockedProp, 'noneAmount' => true, 'titleBtn' => MG::getSetting('buttonBuyName'), 'buyButton' => $items['catalogItems'][$k]['count'] == 0 ? $items['catalogItems'][$k]['actionView'] : '', 'blockVariants' => $blocksVariants[$item['id']]));
                 $items['catalogItems'][$k]['liteFormData'] = $liteFormData['html'];
                 // }
                 // опледеляем для каждого продукта  тип выводимой формы: упрощенная, с кнопками или без.
                 if (!$items['catalogItems'][$k]['liteFormData']) {
                     if ($items['catalogItems'][$k]['count'] == 0) {
                         $buyButton = $items['catalogItems'][$k]['actionView'];
                     } else {
                         $buyButton = $items['catalogItems'][$k][$actionButton];
                     }
                 } else {
                     $buyButton = $items['catalogItems'][$k]['liteFormData'];
                 }
                 $items['catalogItems'][$k]['buyButton'] = $buyButton;
             }
         }
         $data = array('items' => $items['catalogItems'], 'titeCategory' => $titeCategory, 'pager' => $items['pager'], 'meta_title' => $titeCategory, 'meta_keywords' => "новинки, рекомендуемые, распродажа", 'meta_desc' => "Новинки, рекомендуемые, распродажа", 'currency' => $settings['currency'], 'actionButton' => MG::getSetting('actionInCatalog') === "true" ? 'actionBuy' : 'actionView', 'class_title' => $classTitle, 'actionButton' => MG::getSetting('actionInCatalog') === "true" ? 'actionBuy' : 'actionView', 'currency' => MG::getSetting('currency'));
     } else {
         $groupsData = $this->getGroupsData();
         $data = array('titeCategory' => $titeCategory, 'items' => array(), 'recommendProducts' => !empty($groupsData['recommendProducts']['catalogItems']) ? $groupsData['recommendProducts']['catalogItems'] : array(), 'newProducts' => !empty($groupsData['newProducts']['catalogItems']) ? $groupsData['newProducts']['catalogItems'] : array(), 'saleProducts' => !empty($groupsData['saleProducts']['catalogItems']) ? $groupsData['saleProducts']['catalogItems'] : array(), 'meta_title' => 'Группы товаров', 'meta_keywords' => "новинки, рекомендуемые, распродажа", 'meta_desc' => "Новинки, рекомендуемые, распродажа", 'actionButton' => MG::getSetting('actionInCatalog') === "true" ? 'actionBuy' : 'actionView', 'currency' => MG::getSetting('currency'));
     }
     $this->data = $data;
 }
コード例 #6
0
ファイル: actioner.php プロジェクト: WinGood/24karcher
 /**
  * Получает список продуктов при вводе в поле поиска товара при создании заказа через админку.
  */
 public function getSearchData()
 {
     $keyword = URL::getQueryParametr('search');
     if (!empty($keyword)) {
         $catalog = new Models_Catalog();
         $product = new Models_Product();
         $currencyRate = MG::getSetting('currencyRate');
         $currencyShort = MG::getSetting('currencyShort');
         $currencyShopIso = MG::getSetting('currencyShopIso');
         $items = $catalog->getListProductByKeyWord($keyword, true, false, true);
         //добавление к заказу из админки товара, который не выводится в каталог.
         $blockedProp = $product->noPrintProperty();
         foreach ($items['catalogItems'] as $key => $item) {
             $propertyFormData = $product->createPropertyForm($param = array('id' => $item['id'], 'maxCount' => 999, 'productUserFields' => $item['thisUserFields'], 'action' => "/catalog", 'method' => "POST", 'ajax' => true, 'blockedProp' => $blockedProp, 'noneAmount' => true, 'titleBtn' => "<span>" . $this->lang['EDIT_ORDER_14'] . "</span>", 'blockVariants' => $product->getBlockVariants($item['id']), 'classForButton' => 'addToCart buy-product buy custom-btn', 'printCompareButton' => false, 'currency_iso' => $item['currency_iso']));
             $items['catalogItems'][$key]['price'] = $items['catalogItems'][$key]['price'];
             $items['catalogItems'][$key]['propertyForm'] = $propertyFormData['html'];
         }
     }
     $searchData = array('status' => 'success', 'item' => array('keyword' => $keyword, 'count' => $items['numRows'], 'items' => $items), 'currency' => MG::getSetting('currency'));
     echo json_encode($searchData);
     exit;
 }
コード例 #7
0
ファイル: cart.php プロジェクト: nellka/mebel
 /**
  * Обновляет корзину в соответствии с внесенными изменениями.
  */
 public function updateCart()
 {
     $cart = new Models_Cart();
     // Если был выбран вариант, то запоминаем его ID.
     $variantId = null;
     if (!empty($_POST["variant"])) {
         $variantId = $_POST["variant"];
         unset($_POST["variant"]);
     }
     // Если происходит обновление по заданному id набора характеристик.
     if (isset($_POST['propertySetId'])) {
         foreach ($_SESSION['cart'] as $key => $item) {
             if ($item['propertySetId'] == $_POST['propertySetId'] && $item['id'] == $_POST['inCartProductId']) {
                 $_SESSION['cart'][$key]['count'] = $_REQUEST['amount_input'];
             }
         }
         $response = array('status' => 'success', 'data' => SmalCart::getCartData());
         echo json_encode($response);
         exit;
     }
     // Если характеристик не передано , то возможно
     // была нажата кнопка купить из мини карточки, в этом случае самостоятельно вычисляем набор
     // параметров, которые были бы указаны при открытии карточки товара.
     if (empty($_POST) || isset($_POST['updateCart']) && isset($_POST['inCartProductId']) && (count($_POST) == 3 || count($_POST) == 2)) {
         $modelProduct = new Models_Product();
         $product = $modelProduct->getProduct($_REQUEST['inCartProductId']);
         $blockVariants = $modelProduct->getBlockVariants($product['id']);
         if (!$variantId) {
             $variants = $modelProduct->getVariants($product['id']);
             $variantsKey = array_keys($variants);
             $variantId = $variantsKey[0];
         }
         $blockedProp = $modelProduct->noPrintProperty();
         $propertyFormData = $modelProduct->createPropertyForm($param = array('id' => $product['id'], 'maxCount' => $product['count'], 'productUserFields' => $product['thisUserFields'], 'action' => "/catalog", 'method' => "POST", 'ajax' => true, 'blockedProp' => $blockedProp, 'noneAmount' => false, 'titleBtn' => MG::getSetting('buttonBuyName'), 'blockVariants' => $blockVariants, 'currency_iso' => $product['id']));
         $_POST = $propertyFormData['defaultSet'];
         $_POST['inCartProductId'] = $product['id'];
     }
     $property = $cart->createProperty($_POST);
     $cart->addToCart($_REQUEST['inCartProductId'], $_REQUEST['amount_input'], $property, $variantId);
     $response = array('status' => 'success', 'data' => SmalCart::getCartData());
     echo json_encode($response);
     exit;
 }
コード例 #8
0
ファイル: catalog.php プロジェクト: WinGood/24karcher
 public function __construct()
 {
     $aUri = URL::getSections();
     $settings = MG::get('settings');
     // Если нажата кнопка купить.
     $_REQUEST['category_id'] = URL::getQueryParametr('category_id');
     if (!empty($_REQUEST['inCartProductId'])) {
         $cart = new Models_Cart();
         $property = $cart->createProperty($_POST);
         $cart->addToCart($_REQUEST['inCartProductId'], $_REQUEST['amount_input'], $property);
         SmalCart::setCartData();
         MG::redirect('/cart');
     }
     $countСatalogProduct = $settings['countСatalogProduct'];
     // Показать первую страницу выбранного раздела.
     $page = 1;
     // Запрашиваемая страница.
     if (isset($_REQUEST['p'])) {
         $page = $_REQUEST['p'];
     }
     $sortType = 'desc';
     $countGoods = $settings['countСatalogProduct'];
     $isStock = 0;
     // Обработка GET параметров
     if (isset($_GET['count'])) {
         switch ($_GET['count']) {
             case 8:
                 $countGoods = 8;
                 break;
             case 12:
                 $countGoods = 12;
                 break;
             case 16:
                 $countGoods = 16;
                 break;
             default:
                 $countGoods = 8;
                 break;
         }
     }
     if (isset($_GET['sort'])) {
         switch ($_GET['sort']) {
             case 'priceDesc':
                 $sortType = 'desc';
                 break;
             case 'priceAsc':
                 $sortType = 'asc';
                 break;
             case 'comments':
                 $sortType = 'comments';
                 break;
             case 'popular':
                 $sortType = 'popular';
                 break;
             default:
                 $sortType = 'desc';
                 break;
         }
     }
     if (isset($_GET['stock'])) {
         if ($_GET['stock'] == 1) {
             $isStock = 1;
         } else {
             $isStock = 0;
         }
     }
     $model = new Models_Catalog();
     $isMainCat = TRUE;
     $subCat = MG::get('category')->getCategoryList($_REQUEST['category_id']);
     if (empty($subCat)) {
         $isMainCat = FALSE;
     }
     // Если происходит поиск по ключевым словам.
     $keyword = URL::getQueryParametr('search');
     if (!empty($keyword)) {
         $items = $model->getListProductByKeyWord($keyword, false, false, false, $sortType, $isStock, $countGoods);
         $searchData = array('keyword' => $keyword, 'count' => $items['numRows']);
     } else {
         if ($isMainCat) {
             $model->categoryId = MG::get('category')->getCategoryList($_REQUEST['category_id']);
             $model->categoryId[] = $_REQUEST['category_id'];
             $subCatList = $model->getChildCat();
             if (!empty($subCatList)) {
                 $productList = $model->getMainCatProduct($subCatList);
                 $catList = $model->getMainCatInfo($subCatList);
                 $i = 0;
                 foreach ($catList as $cat) {
                     foreach ($productList as $prd) {
                         if ($prd['cat_id'] == $cat['id']) {
                             $imagesUrl = explode("|", $prd['image_url']);
                             if (!empty($imagesUrl[0])) {
                                 $prd['image_url'] = $imagesUrl[0];
                             }
                             $catList[$i]['items'][] = $prd;
                         }
                     }
                     $i++;
                 }
             }
         } else {
             // Получаем список вложенных категорий, для вывода всех продуктов, на страницах текущей категории.
             $model->categoryId = MG::get('category')->getCategoryList($_REQUEST['category_id']);
             // В конец списка, добавляем корневую текущую категорию.
             $model->categoryId[] = $_REQUEST['category_id'];
             $items = $model->getList($countGoods, false, true, $sortType, $isStock);
         }
     }
     $settings = MG::get('settings');
     if (!$isMainCat) {
         foreach ($items['catalogItems'] as $item) {
             $productIds[] = $item['id'];
         }
         $product = new Models_Product();
         $blocksVariants = $product->getBlocksVariantsToCatalog($productIds);
         foreach ($items['catalogItems'] as $k => $item) {
             $items['catalogItems'][$k]["recommend"] = 0;
             $items['catalogItems'][$k]["new"] = 0;
             $imagesUrl = explode("|", $item['image_url']);
             $items['catalogItems'][$k]["image_url"] = "";
             if (!empty($imagesUrl[0])) {
                 $items['catalogItems'][$k]["image_url"] = $imagesUrl[0];
             }
             $items['catalogItems'][$k]['title'] = MG::modalEditor('catalog', $item['title'], 'edit', $item["id"]);
             // Формируем варианты товара.
             if ($item['variant_exist']) {
                 // Легкая форма без характеристик.
                 $liteFormData = $product->createPropertyForm($param = array('id' => $item['id'], 'maxCount' => $item['count'], 'productUserFields' => null, 'action' => "/catalog", 'method' => "POST", 'ajax' => true, 'blockedProp' => array(), 'noneAmount' => true, 'titleBtn' => "В корзину", 'blockVariants' => $blocksVariants[$item['id']]));
                 $items['catalogItems'][$k]['liteFormData'] = $liteFormData['html'];
             }
         }
     }
     $categoryDesc = MG::get('category')->getDesctiption($_REQUEST['category_id']);
     if ($_REQUEST['category_id']) {
         $categoryDesc = MG::inlineEditor(PREFIX . 'category', "html_content", $_REQUEST['category_id'], $categoryDesc);
     }
     if ($isMainCat) {
         $data = array('titeCategory' => $model->currentCategory['title'], 'cat_desc' => $categoryDesc, 'meta_title' => !empty($model->currentCategory['meta_title']) ? $model->currentCategory['meta_title'] : $model->currentCategory['title'], 'meta_keywords' => !empty($model->currentCategory['meta_keywords']) ? $model->currentCategory['meta_keywords'] : "товары,продукты,изделия", 'meta_desc' => !empty($model->currentCategory['meta_desc']) ? $model->currentCategory['meta_desc'] : "В каталоге нашего магазина есть все.", 'is_main_cat' => $isMainCat, 'category_info' => $catList, 'currency' => MG::getSetting('currency'), 'id_category' => $model->getCurrentId(), 'searchData' => empty($searchData) ? '' : $searchData);
     } else {
         $data = array('items' => $items['catalogItems'], 'titeCategory' => $model->currentCategory['title'], 'cat_desc' => $categoryDesc, 'pager' => $items['pager'], 'searchData' => empty($searchData) ? '' : $searchData, 'meta_title' => !empty($model->currentCategory['meta_title']) ? $model->currentCategory['meta_title'] : $model->currentCategory['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'], 'actionButton' => MG::getSetting('actionInCatalog') === "true" ? 'actionBuy' : 'actionView', 'is_main_cat' => $isMainCat, 'id_category' => $model->getCurrentId());
     }
     if ($keyword) {
         $data['meta_title'] = 'Поиск по фразе: ' . $keyword;
     }
     $this->data = $data;
     if ($aUri[1] == 'catalog' && empty($aUri[2]) && empty($_GET['search'])) {
         MG::redirect('/');
     }
 }
コード例 #9
0
ファイル: compare.php プロジェクト: nellka/mebel
 /**
  * Получает информацию о каждом товаре.
  * @param array $viewCategoryId - массив id категорий.
  */
 public function getInfoProducts($viewCategoryId)
 {
     if (empty($viewCategoryId)) {
         return false;
     }
     $listProductsArray = array();
     $countProduct = 0;
     foreach ($viewCategoryId as $k => $id) {
         $listProductsIdTemp = $_SESSION['compareList'][$id];
         $countProduct += count($_SESSION['compareList'][$id]);
         $listProductsArray = array_merge($listProductsArray, $listProductsIdTemp);
     }
     $listProductsId = implode(',', $listProductsArray);
     $catalogModel = new Models_Catalog();
     $productModel = new Models_Product();
     if (!empty($listProductsId)) {
         $arrProduct = $catalogModel->getListByUserFilter($countProduct, ' p.id IN (' . DB::quote($listProductsId, true) . ')');
     }
     $currencyRate = MG::getSetting('currencyRate');
     $currencyShopIso = MG::getSetting('currencyShopIso');
     $currencyShopIso = MG::getSetting('currencyShopIso');
     foreach ($arrProduct['catalogItems'] as &$product) {
         $blockVariants = $productModel->getBlockVariants($product['id']);
         $blockedProp = $productModel->noPrintProperty();
         $propertyFormData = $productModel->createPropertyForm($param = array('id' => $product['id'], 'maxCount' => $product['count'], 'productUserFields' => $product['thisUserFields'], 'action' => "/catalog", 'method' => "POST", 'ajax' => true, 'blockedProp' => $blockedProp, 'noneAmount' => false, 'titleBtn' => MG::getSetting('buttonBuyName'), 'blockVariants' => $blockVariants, 'printStrProp' => 'false', 'printCompareButton' => 'false', 'currency_iso' => $product['currency_iso']));
         if ($product['count'] < 0) {
             $product['count'] = "много";
         }
         $product['price'] += $propertyFormData['marginPrice'];
         $product['currency_iso'] = $product['currency_iso'] ? $product['currency_iso'] : $currencyShopIso;
         $product['currency'] = MG::getSetting('currency');
         $product['old_price'] = $product['old_price'] * $currencyRate[$product['currency_iso']];
         $product['old_price'] = $product['old_price'] ? MG::priceCourse($product['old_price']) : 0;
         $product['price'] = MG::priceCourse($product['price_course'], true, true);
         $product['propertyForm'] = $propertyFormData['html'];
         $product['propertyNodummy'] = $propertyFormData['propertyNodummy'];
         $product['stringsProperties'] = $propertyFormData['stringsProperties'];
         $product['image_url'] = explode('|', $product['image_url']);
         $product['image_url'] = $product['image_url'][0];
     }
     return array('catalogItems' => $arrProduct['catalogItems']);
 }