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; }
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; }
/** * Создает информацию для последующего сохранения свойства для товара положенного в корзину из входящего массива. * @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); }
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; }
/** * Получает список продуктов при вводе в поле поиска товара при создании заказа через админку. */ 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; }
/** * Обновляет корзину в соответствии с внесенными изменениями. */ 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; }
/** * Получает информацию о каждом товаре. * @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']); }