コード例 #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
ファイル: index.php プロジェクト: WinGood/24karcher
 static function counterView($arg)
 {
     $model = new Models_Product();
     $product = $model->getProduct(URL::getQueryParametr('id'));
     $user_ip = $_SERVER['REMOTE_ADDR'];
     $date = date('Y-m-d');
     $id_product = $product['id'];
     $visits_today = DB::query("SELECT `id` FROM `" . PREFIX . self::$pluginName . '_visits' . "` WHERE `date`='" . $date . "'");
     $product = DB::query("SELECT `id` FROM `" . PREFIX . self::$pluginName . '_visits' . "` WHERE id_product='" . $id_product . "'");
     if (!DB::numRows($product)) {
         DB::query("INSERT INTO `" . PREFIX . self::$pluginName . '_visits' . "` SET `views`=1, `id_product`='" . $id_product . "', `date`='" . $date . "'");
     } else {
         DB::query("UPDATE `" . PREFIX . self::$pluginName . '_visits' . "` SET `date`='" . $date . "', `views`=`views`+1 WHERE `id_product`='" . $id_product . "'");
     }
     return $arg['result'];
 }
コード例 #3
0
ファイル: functions.php プロジェクト: WinGood/24karcher
function getBestSeller($count = 4)
{
    $getOrder = DB::query("SELECT order_content FROM `" . PREFIX . 'order' . "`");
    if (DB::numRows($getOrder) != 0) {
        $product = new Models_Product();
        while ($row = DB::fetchArray($getOrder)) {
            $orderData[] = unserialize(stripslashes($row['order_content']));
        }
        $res = array();
        foreach ($orderData as $k => $v) {
            foreach ($v as $key => $val) {
                $res[] = $product->getProduct($val['id']);
            }
        }
        $goodsSale = getCount($res);
        return array_slice($goodsSale, 0, $count);
    }
}
コード例 #4
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;
 }
コード例 #5
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;
 }
コード例 #6
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);
 }
コード例 #7
0
ファイル: order.php プロジェクト: kostiukoleg/all4web.loc
 /**
  * Отправляет письмо со ссылками на приобретенные электронные товары
  * @param string $orderNamber - номер заказа.
  */
 public function sendLinkForElectro($orderId)
 {
     $linksElectro = array();
     $orderInfo = $this->getOrder(' id = ' . DB::quote($orderId, true));
     $orderInfo[$orderId]['order_content'] = unserialize(stripslashes($orderInfo[$orderId]['order_content']));
     $product = new Models_Product();
     foreach ($orderInfo[$orderId]['order_content'] as $item) {
         $productInfo = $product->getProduct($item['id']);
         if ($productInfo['link_electro']) {
             $linksElectro[] = $productInfo['link_electro'];
         }
     }
     // если нет электронных товаров в заказе, то не высылаем письмо
     if (empty($linksElectro)) {
         return false;
     }
     $siteName = MG::getSetting('sitename');
     $adminEmail = MG::getSetting('adminEmail');
     $userEmail = $orderInfo[$orderId]['user_email'];
     $orderNumber = $orderInfo['orderNumber'] != '' ? $orderInfo['orderNumber'] : $orderId;
     $subj = 'Ссылка для скачивания по заказу' . $orderNamber . ' на сайте ' . $siteName;
     $paramToMail = array('orderNumber' => $orderNumber, 'getElectro' => SITE . '/order?getFileToOrder=' . $orderId);
     $emailToUser = MG::layoutManager('email_order_electro', $paramToMail);
     if (preg_match('/^[-._a-zA-Z0-9]+@(?:[a-zA-Z0-9][-a-zA-Z0-9]+\\.)+[a-zA-Z]{2,6}$/', $userEmail)) {
         Mailer::sendMimeMail(array('nameFrom' => $siteName, 'emailFrom' => MG::getSetting('noReplyEmail'), 'nameTo' => $userEmail, 'emailTo' => $userEmail, 'subject' => $subj, 'body' => $emailToUser, 'html' => true));
     }
     $mails = explode(',', MG::getSetting('adminEmail'));
     foreach ($mails as $mail) {
         if (preg_match('/^[-._a-zA-Z0-9]+@(?:[a-zA-Z0-9][-a-zA-Z0-9]+\\.)+[a-zA-Z]{2,6}$/', $mail)) {
             Mailer::sendMimeMail(array('nameFrom' => $siteName, 'emailFrom' => MG::getSetting('noReplyEmail'), 'nameTo' => $sitename, 'emailTo' => $mail, 'subject' => $subj, 'body' => 'Пользователю ' . $userEmail . ' выслана ссылка на электронные товары', 'html' => true));
         }
     }
 }
コード例 #8
0
ファイル: actioner.php プロジェクト: WinGood/24karcher
 /**
  * Получает параметры заказа
  */
 public function getOrderData()
 {
     $model = new Models_Order();
     $orderData = $model->getOrder(" id = " . DB::quote($_POST['id']));
     $orderData = $orderData[$_POST['id']];
     if ($orderData['number'] == '') {
         $orderData['number'] = $orderData['id'];
         DB::query("UPDATE `" . PREFIX . "order` SET `number`= " . DB::quote($orderData['number']) . " WHERE `id`=" . DB::quote($orderData['id']) . "");
     }
     $orderData['yur_info'] = unserialize(stripslashes($orderData['yur_info']));
     $orderData['order_content'] = unserialize(stripslashes($orderData['order_content']));
     // Запрос для проверки, существует ли система скидок
     $percent = false;
     $discountSyst = false;
     $res = DB::query('SELECT * FROM `' . PREFIX . 'plugins` WHERE `folderName` = "discount-system"');
     $act = DB::fetchArray($res);
     $result = DB::query('SHOW TABLES LIKE "' . PREFIX . 'discount-system%"');
     if (DB::numRows($result) == 2 && $act['active']) {
         $percent = 0;
         $discountSyst = true;
     }
     if (!empty($orderData['order_content'])) {
         $product = new Models_Product();
         foreach ($orderData['order_content'] as &$item) {
             foreach ($item as &$v) {
                 $v = rawurldecode($v);
             }
         }
         foreach ($orderData['order_content'] as &$items) {
             $res = $product->getProduct($items['id']);
             $items['image_url'] = $res['image_url'];
             $items['property'] = htmlspecialchars_decode(str_replace('&amp;', '&', $items['property']));
             $response['discount'] = $items['discount'];
             $percent = $items['discount'];
             $items['maxCount'] = $res['count'];
             $variants = DB::query("SELECT `id`, `count` FROM `" . PREFIX . "product_variant`\n                  WHERE `product_id`=" . DB::quote($items['id']) . " AND `code`=" . DB::quote($items['code']));
             if ($variant = DB::fetchAssoc($variants)) {
                 $items['variant'] = $variant['id'];
                 $items['maxCount'] = $variant['count'];
             }
         }
     }
     //заменить на получение скидки
     $codes = array();
     // Запрос для проверки , существуют ли промокоды.
     $result = DB::query('SHOW TABLES LIKE "' . PREFIX . 'promo-code"');
     if (DB::numRows($result)) {
         $res = DB::query('SELECT * FROM `' . PREFIX . 'plugins` WHERE `folderName` = "promo-code"');
         $act = DB::fetchArray($res);
         if ($act['active']) {
             $res = DB::query('SELECT code, percent FROM `' . PREFIX . 'promo-code` 
       WHERE invisible = 1 
       AND now() >= `from_datetime`
       AND now() <= `to_datetime`');
             while ($code = DB::fetchAssoc($res)) {
                 $codes[] = $code['code'];
                 if ($code['code'] == $orderData['order_content'][0]['coupon']) {
                     $percent = $percent == 0 ? $code['percent'] : $percent;
                 }
             }
         }
     }
     $response['order'] = $orderData;
     $response['order']['discountsSystem'] = $discountSyst;
     $response['order']['discontPercent'] = $percent;
     $response['order']['promoCodes'] = $codes;
     $response['order']['date_delivery'] = $orderData['date_delivery'] ? date('d.m.Y', strtotime($orderData['date_delivery'])) : '';
     $deliveryArray = $model->getDeliveryMethod();
     $response['deliveryArray'] = $deliveryArray;
     $paymentArray = array();
     $i = 1;
     while ($payment = $model->getPaymentMethod($i)) {
         $paymentArray[$i] = $payment;
         $i++;
     }
     $response['paymentArray'] = $paymentArray;
     $this->data = $response;
     return true;
 }
コード例 #9
0
ファイル: cart.php プロジェクト: WinGood/24karcher
 /**
  * Возвращает данные о всех продуктах в корзине.
  * @return array
  */
 public function getItemsCart()
 {
     $productPositions = array();
     // Создает модель для работы с продуктами.
     $itemPosition = new Models_Product();
     $totalSumm = 0;
     if (!empty($_SESSION['cart'])) {
         foreach ($_SESSION['cart'] as $key => $item) {
             $variant = '';
             if (!empty($item['variantId'])) {
                 $variants = $itemPosition->getVariants($item['id']);
                 $variant = $variants[$item['variantId']];
             }
             // Заполняет массив информацией о каждом продукте по id из куков.
             // Если куки не актуальны, пропускает товар.
             $product = $itemPosition->getProduct($item['id']);
             if (!empty($product)) {
                 $product['property'] = $_SESSION['cart'][$key]['propertySetId'];
                 $product['property_html'] = htmlspecialchars_decode(str_replace('&amp;', '&', $_SESSION['cart'][$key]['property']));
                 $product['propertySetId'] = $_SESSION['cart'][$key]['propertySetId'];
                 if (!empty($variant)) {
                     $product['price'] = $variant['price'];
                     $product['code'] = $variant['code'];
                     $product['count'] = $variant['count'];
                     $product['title'] .= " " . $variant['title_variant'];
                     $product['variantId'] = $variant['id'];
                 }
                 $price = $product['price'];
                 if ($item['id'] == $product['id']) {
                     $count = $item['count'];
                     $price = SmalCart::plusPropertyMargin($price, $item['propertyReal']);
                     $product['price'] = $price;
                     // применение скидки по купону
                     $product['price'] = $this->applyCoupon($_SESSION['couponCode'], $product['price'], $product);
                     $product['priceInCart'] = $price * $count . " " . MG::getSetting('currency');
                     $arrayImages = explode("|", $product['image_url']);
                     if (!empty($arrayImages)) {
                         $product['image_url'] = $arrayImages[0];
                     }
                 }
                 $product['countInCart'] = $item['count'];
                 if ($product['countInCart'] > 0) {
                     $productPositions[] = $product;
                 }
                 $totalSumm += $product['price'] * $item['count'];
             }
         }
     }
     $result = array('items' => $productPositions, 'totalSumm' => $totalSumm);
     $args = func_get_args();
     return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $result, $args);
 }
コード例 #10
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;
 }
コード例 #11
0
ファイル: cart.php プロジェクト: WinGood/24karcher
 /**
  * Определяет поведение при изменении и удаление данных в корзине,
  * а так же выводит список позиций к заказу
  *
  * @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;
                             }
                             if (isset($refreshData['del_' . $id])) {
                                 continue;
                             }
                             $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);
         // Пересчитываем маленькую корзину.
         echo "<meta http-equiv=\"refresh\" content=\"0;url=" . $_SERVER['HTTP_REFERER'] . "\">";
         exit;
     }
     if (!empty($_REQUEST['clear'])) {
         $model->clearCart();
         // Пересчитываем маленькую корзину.
         SmalCart::setCartData();
         header('Location: ' . SITE . '/cart');
         exit;
     }
     $settings = MG::get('settings');
     $cartData = $model->getItemsCart();
     // Формируем стандартный массив для представления.
     $this->data = array('isEmpty' => $model->isEmptyCart(), 'productPositions' => $cartData['items'], 'totalSumm' => $cartData['totalSumm'], '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']);
 }
コード例 #12
0
ファイル: order.php プロジェクト: WinGood/24karcher
 /**
  * Сохраняет заказ в базу сайта.
  * Добавляет в массив корзины третий параметр 'цена товара', для сохранения в заказ.
  * Это нужно для тогою чтобы в последствии вывести детальную информацию о заказе.
  * Если оставить только id то информация может оказаться неверной, так как цены меняютcя.
  * @return int $id номер заказа.
  */
 public function addOrder($adminOrder = false)
 {
     $itemPosition = new Models_Product();
     $cart = new Models_Cart();
     $catalog = new Models_Catalog();
     $categoryArray = $catalog->getCategoryArray();
     $this->summ = 0;
     // Массив запросов на обновление количества товаров.
     $updateCountProd = array();
     // Добавляем в массив корзины параметр 'цена товара'.
     if ($adminOrder) {
         $this->email = $adminOrder['user_email'];
         $this->phone = $adminOrder['phone'];
         $this->address = $adminOrder['address'];
         $this->delivery = $adminOrder['delivery_id'];
         $this->delivery_cost = $adminOrder['delivery_cost'];
         $this->payment = $adminOrder['payment_id'];
         $this->fio = $adminOrder['user_email'];
         $formatedDate = date('Y-m-d H:i:s');
         // Форматированная дата ГГГГ-ММ-ДД ЧЧ:ММ:СС.
         foreach ($adminOrder['order_content'] as $item) {
             $product = $itemPosition->getProduct($item['id']);
             $_SESSION['couponCode'] = $item['coupon'];
             $productUrl = $product['category_url'] . '/' . $product['url'];
             $itemCount = $item['count'];
             if (!empty($product)) {
                 $product['price'] = $item['price'];
                 $product['price'] = $cart->applyCoupon($_SESSION['couponCode'], $product['price'], $product);
                 $discount = 100 - $product['price'] * 100 / $item['price'];
                 $productPositions[] = array('id' => $product['id'], 'name' => $item['title'], 'url' => $productUrl, 'code' => $item['code'], 'price' => $product['price'], 'count' => $itemCount, 'property' => $item['property'], 'coupon' => $_SESSION['couponCode'], 'discount' => $discount, 'info' => $this->info);
                 $this->summ += $product['price'] * $itemCount;
                 $product['count'] = $product['count'] - $itemCount >= 0 ? $product['count'] - $itemCount : 0;
                 // По ходу формируем массив запросов на обновление количества товаров.
                 $updateCountProd[] = "UPDATE `" . PREFIX . "product` SET `count`= " . DB::quote($product['count']) . " WHERE `id`=" . DB::quote($product['id']) . " AND `count`>0";
             }
         }
     } elseif (!empty($_SESSION['cart'])) {
         foreach ($_SESSION['cart'] as $item) {
             $product = $itemPosition->getProduct($item['id']);
             // Дописываем к массиву продуктов данные о выбранных характеристиках из корзины покупок, чтобы приплюсовать к сумме заказа.
             if ($item['id'] == $product['id']) {
                 $product['property_html'] = $item['propertyReal'];
             }
             $variant = null;
             if (!empty($item['variantId']) && $item['id'] == $product['id']) {
                 $variants = $itemPosition->getVariants($product['id']);
                 $variant = $variants[$item['variantId']];
                 $product['price'] = $variant['price'];
                 $product['price'] = $cart->applyCoupon($_SESSION['couponCode'], $product['price'], $product);
                 $product['code'] = $variant['code'];
                 $product['count'] = $variant['count'];
                 $product['title'] .= " " . $variant['title_variant'];
                 //По ходу формируем массив запросов на обновление количества товаров
                 $resCount = $variant['code'];
                 $resCount = $variant['count'] - $item['count'] >= 0 ? $variant['count'] - $item['count'] : 0;
                 $updateCountProd[] = "UPDATE `" . PREFIX . "product_variant` SET `count`= " . DB::quote($resCount) . " WHERE `id`=" . DB::quote($item['variantId']) . " AND `count`>0";
             }
             $productUrl = $product['category_url'] . '/' . $product['url'];
             // Eсли куки не актуальны исключает попадание несуществующего продукта в заказ
             if (!empty($product)) {
                 $product['price'] = SmalCart::plusPropertyMargin($product['price'], $product['property_html']);
                 $tempPrice = $product['price'];
                 $product['price'] = $cart->applyCoupon($_SESSION['couponCode'], $product['price'], $product);
                 $discount = 100 - $product['price'] * 100 / $tempPrice;
                 $productPositions[] = array('id' => $product['id'], 'name' => $product['title'], 'url' => $productUrl, 'code' => $product['code'], 'price' => $product['price'], 'count' => $item['count'], 'property' => $item['property'], 'coupon' => $_SESSION['couponCode'], 'discount' => $discount, 'info' => $this->info);
                 $this->summ += $product['price'] * $item['count'];
                 if (!$resCount) {
                     $resCount = $product['count'] - $item['count'] >= 0 ? $product['count'] - $item['count'] : 0;
                 }
                 //По ходу формируем массив запросов на обновление количества товаров
                 $updateCountProd[] = "UPDATE `" . PREFIX . "product` SET `count`= " . DB::quote($resCount) . " WHERE `id`=" . DB::quote($product['id']) . " AND `count`>0";
                 $resCount = null;
             }
         }
     }
     // Сериализует данные в строку для записи в бд.
     $orderContent = addslashes(serialize($productPositions));
     // Сериализует данные в строку для записи в бд информации об юридическом лице.
     $yurInfo = '';
     if (!empty($adminOrder['yur_info'])) {
         $yurInfo = addslashes(serialize($adminOrder['yur_info']));
     }
     if (!empty($_POST['yur_info'])) {
         $yurInfo = addslashes(serialize($_POST['yur_info']));
     }
     // Создает новую модель корзины, чтобы узнать сумму заказа.
     $cart = new Models_Cart();
     // Генерируем уникальный хэш для подтверждения заказа.
     $hash = $this->_getHash($this->email);
     // Формируем массив параметров для SQL запроса.
     $array = array('user_email' => $this->email, 'summ' => $this->summ, 'order_content' => $orderContent, 'phone' => $this->phone, 'address' => $this->address, 'delivery_id' => $this->delivery, 'delivery_cost' => $this->delivery_cost, 'payment_id' => $this->payment, 'paided' => '0', 'status_id' => '0', 'confirmation' => $hash, 'yur_info' => $yurInfo, 'name_buyer' => $this->fio);
     // Если заказ оформляется через админку.
     if ($adminOrder) {
         $array['comment'] = $adminOrder['comment'];
         $array['status_id'] = $adminOrder['status_id'];
         $array['add_date'] = $formatedDate;
         DB::buildQuery("INSERT INTO `" . PREFIX . "order` SET ", $array);
     } else {
         // Отдает на обработку  родительской функции buildQuery.
         DB::buildQuery("INSERT INTO `" . PREFIX . "order` SET add_date = now(), ", $array);
     }
     // Заказ номер id добавлен в базу.
     $id = null;
     $id = DB::insertId();
     unset($_SESSION['couponCode']);
     // Ссылка для подтверждения заказа
     $link = 'ссылке <a href="' . SITE . '/order?sec=' . $hash . '&id=' . $id . '" target="blank">' . SITE . '/order?sec=' . $hash . '&id=' . $id . '</a>';
     $table = "";
     // Формирование тела письма.
     if ($id) {
         // Уменьшаем количество купленных товаров
         if (!empty($updateCountProd)) {
             foreach ($updateCountProd as $sql) {
                 DB::query($sql);
             }
         }
         // Если заказ создался, то уменьшаем количество товаров на складе.
         $settings = MG::get('settings');
         $delivery = $this->getDeliveryMethod(false, $this->delivery);
         $sitename = $settings['sitename'];
         $currency = MG::getSetting('currency');
         $subj = 'Оформлена заявка №' . $id . ' на сайте ' . $sitename;
         $subj = str_replace('№', '#', $subj);
         if ($this->fio) {
             $table .= '<br/><b>Покупатель:</b> ' . $this->fio;
         }
         $table .= '<br/><b>E-mail:</b> ' . $this->email;
         $table .= '<br/><b>Тел:</b> ' . $this->phone;
         if ($this->address) {
             $table .= '<br/><b>Адрес:</b> ' . $this->address;
         }
         $table .= '<br/><b>Доставка:</b> ' . $delivery['description'];
         $paymentArray = $this->getPaymentMethod($this->payment);
         $table .= '<br/><b>Оплата:</b> ' . $paymentArray['name'];
         $table .= '
     <style>
       table {border: 4px double black;border-collapse: collapse;}
       th {text-align: left;background: #ccc;padding: 5px;border: 1px solid black;}
       td {padding: 5px;border: 1px solid black;}
     </style>';
         $table .= '<br><br><table>';
         if (!empty($_SESSION['cart']) || $adminOrder) {
             $table .= '
         <tr>
           <th>Наименование товара</th>
           <th>Артикул</th>
           <th>Стоимость</th>
           <th>Количество</th>
         </tr>';
             foreach ($productPositions as $product) {
                 $product['property'] = htmlspecialchars_decode(str_replace('&amp;', '&', $product['property']));
                 $table .= '
         <tr>
           <td>' . $product['name'] . $product['property'] . '</td>
           <td>' . $product['code'] . '</td>
           <td>' . $product['price'] . ' ' . $currency . '</td>
           <td>' . $product['count'] . ' шт.</td>
         </tr>';
             }
         }
         $table .= '</table>';
         $table .= '<br><b>Итого:</b> ' . $this->summ . ' ' . $currency;
         $table .= '<br/><b>Стоимость доставки:</b> ' . $this->delivery_cost . " " . $currency;
         $totalSumm = $this->delivery_cost + $this->summ;
         $table .= '<br/><b>Всего к оплате:</b> <span style="color:red">' . $totalSumm . ' ' . $currency . '</span>';
         $msg = MG::getSetting('orderMessage') . '<br><u>Обязательно подтвердите</u> свой заказ, перейдя по ' . $link . '.<br>' . $table;
         $msg = str_replace('#ORDER#', $id, $msg);
         $msg = str_replace('#SITE#', $sitename, $msg);
         $msg = str_replace('№', '#', $msg);
         $mails = explode(',', MG::getSetting('adminEmail'));
         // Отправка заявки админам.
         // Дополнительная информация для админов.
         $msgAdmin .= '<br/><br/><b>Покупатель перешел к нам на сайт из: </b><br/>' . $_SESSION['lastvisit'] . '<br/><br/><b>Покупатель впервые перешел к нам на сайт из: </b><br/>' . $_SESSION['firstvisit'];
         foreach ($mails as $mail) {
             if (preg_match('/^[-._a-z0-9]+@(?:[a-z0-9][-a-z0-9]+\\.)+[a-z]{2,6}$/', $mail)) {
                 Mailer::addHeaders(array("Reply-to" => $this->email));
                 Mailer::sendMimeMail(array('nameFrom' => $this->fio, 'emailFrom' => MG::getSetting('noReplyEmail'), 'nameTo' => $sitename, 'emailTo' => $mail, 'subject' => $subj, 'body' => $msg . $msgAdmin, 'html' => true));
             }
         }
         // Добавление в тело письма ссылки для задания пароля.
         $msg .= '<br>Подтвердите свой заказ, перейдя по ' . $link;
         // Отправка заявки пользователю.
         Mailer::sendMimeMail(array('nameFrom' => $sitename, 'emailFrom' => MG::getSetting('noReplyEmail'), 'nameTo' => $this->fio, 'emailTo' => $this->email, 'subject' => $subj, 'body' => $msg, 'html' => true));
         // Если заказ успешно записан, то очищает корзину.
         if (!$adminOrder) {
             $cart->clearCart();
         }
     }
     // Возвращаем номер созданого заказа.
     $args = func_get_args();
     return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $id, $args);
 }
コード例 #13
0
ファイル: compare.php プロジェクト: nellka/mebel
 /**
  * Определяет поведение при изменении и удаление данных в корзине,
  * а так же выводит список позиций к заказу.
  * @return void
  */
 public function __construct()
 {
     $productModel = new Models_Product();
     if (isset($_GET['delCompareProductId'])) {
         foreach ($_SESSION['compareList'] as $key => $category) {
             unset($_SESSION['compareList'][$key][$_GET['delCompareProductId']]);
         }
         foreach ($_SESSION['compareList'] as $key => $category) {
             if (empty($category)) {
                 unset($_SESSION['compareList'][$key]);
             }
         }
     }
     if (isset($_GET['delCompare'])) {
         unset($_SESSION['compareList']);
     }
     if (isset($_GET['inCompareProductId'])) {
         $prodData = $productModel->getProduct($_GET['inCompareProductId']);
         if ($prodData) {
             if ($prodData['cat_id'] >= 0) {
                 $_GET['viewCategory'] === $prodData['cat_id'];
                 $_SESSION['compareList'][$prodData['cat_id']][$_GET['inCompareProductId']] = $_GET['inCompareProductId'];
             }
         }
     }
     // Если не задана категория, то выводим товары из первой.
     if (!isset($_GET['viewCategory'])) {
         if (!empty($_SESSION['compareList'])) {
             $idCategory = array_keys($_SESSION['compareList']);
             $_GET['viewCategory'] = $idCategory[0];
         }
     }
     $error = '';
     if (MG::getSetting('compareCategory') != 'true') {
         $listCatId[] = $_GET['viewCategory'];
     } else {
         foreach ($_SESSION['compareList'] as $idCat => $idsProd) {
             $listCatId[] = $idCat;
         }
     }
     $info = $this->getInfoProducts($listCatId);
     if (!empty($info)) {
         $catalogItems = $info['catalogItems'];
     } else {
         $error = "Нет товаров для сравнения в этой категории";
     }
     $arrCategory = MG::get('category')->getArrayCategory();
     $catIds = array(0);
     $arrCategoryTitle = array();
     if (!empty($_SESSION['compareList'])) {
         $catIds = array();
         foreach ($_SESSION['compareList'] as $catId => $v) {
             if ($catId > 0) {
                 $arrCategoryTitle[$catId] = $arrCategory[$catId]['title'];
             }
             if ($catId === 0) {
                 $arrCategoryTitle[$catId] = 'Каталог';
             }
             $catIds[] = $catId;
         }
     }
     $moreThanThree = '';
     if (count($catalogItems) > 3) {
         $moreThanThree = 'more-than-three';
     }
     $_SESSION['compareCount'] = 0;
     if (!empty($_SESSION['compareList'])) {
         foreach ($_SESSION['compareList'] as $category) {
             $_SESSION['compareCount'] += count($category);
         }
     }
     if (isset($_GET['updateCompare'])) {
         $array = array('count' => $_SESSION['compareCount']);
         echo json_encode($array);
         exit;
     }
     // Получаем все характеристики для текущей категории и вложенных в нее,
     // а также характеристики выводимые для всех категорий.
     $catIds = implode(',', $catIds);
     $sql = "\r\n      SELECT * FROM `" . PREFIX . "property` as pp\r\n      LEFT JOIN `" . PREFIX . "category_user_property` as cp\r\n         ON  pp.id = cp.property_id\r\n      WHERE cp.category_id IN (" . DB::quote($catIds, true) . ") and pp.filter = 1\r\n        ORDER BY pp.sort DESC\r\n    ";
     $res = DB::query($sql);
     while ($row = DB::fetchAssoc($res)) {
         $property[$row['name']] = $row['description'];
     }
     $this->data = array('error' => $error, 'compareList' => $_SESSION['compareList'], 'catalogItems' => $catalogItems, 'arrCategoryTitle' => $arrCategoryTitle, 'moreThanThree' => $moreThanThree, 'meta_title' => 'Список сравнения товаров', 'meta_keywords' => !empty($model->currentCategory['meta_keywords']) ? $model->currentCategory['meta_keywords'] : "сравнение,сравнить", 'meta_desc' => !empty($model->currentCategory['meta_desc']) ? $model->currentCategory['meta_desc'] : "Список сравнения товаров", 'property' => $property);
 }