function __construct() { $html = MG::get('pages')->getPageByUrl('feedback'); $html['html_content'] = MG::inlineEditor(PREFIX . 'page', "html_content", $html['id'], $html['html_content']); $data = array('dislpayForm' => true, 'meta_title' => $html['meta_title'] ? $html['meta_title'] : $html['title'], 'meta_keywords' => $html['meta_keywords'], 'meta_desc' => $html['meta_desc'], 'html_content' => $html['html_content'], 'title' => $html['title']); // Если пришли данные с формы. if (isset($_POST['send'])) { // Создает модель отправки сообщения. $feedBack = new Models_Feedback(); // Проверяет на корректность вода. $error = $feedBack->isValidData($_POST); $data['error'] = $error; // Если есть ошибки заносит их в переменную. if (!$error) { $_POST['message'] = nl2br($_POST['message']); //Отправляем админам. $sitename = MG::getSetting('sitename'); //$message = str_replace('№', '#', $feedBack->getMessage()); $body = MG::layoutManager('email_feedback', array('msg' => $_POST['message'], 'email' => $feedBack->getEmail(), 'name' => $feedBack->getFio())); $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::addHeaders(array("Reply-to" => $feedBack->getEmail())); Mailer::sendMimeMail(array('nameFrom' => $feedBack->getFio(), 'emailFrom' => $feedBack->getEmail(), 'nameTo' => $sitename, 'emailTo' => $mail, 'subject' => 'Сообщение с формы обратной связи', 'body' => $body, 'html' => true)); } } MG::redirect('/feedback?thanks=1'); } } // Формирует сообщение. if (isset($_REQUEST['thanks'])) { $data = array('message' => 'Ваше сообщение отправлено!', 'dislpayForm' => false, 'meta_title' => 'Обратная связь', 'meta_keywords' => $model->currentCategory['meta_keywords'] ? $model->currentCategory['meta_keywords'] : "Обратная сввязь, быстрое сообщение, вопрос в поддержку", 'meta_desc' => $model->currentCategory['meta_desc'] ? $model->currentCategory['meta_desc'] : "Задайте свой вопрос по средствам формы обратной связи."); } $this->data = $data; }
/** * Обработка коротких ссылок на продукты * @return type */ public function convertFastCpuProduct() { // вычисляем url для возможной категории. // если запрошен адрес http://[сайт]/templates/free/my/templ2.html // то на выходе $categoryUrl будет равно /templates/free/my , а $productUrl=templ2 $productUrl = URL::getLastSection(); $countSection = URL::getCountSections(); // Получает id продукта по заданной секции. $sql = ' SELECT p.id FROM `' . PREFIX . 'product` p WHERE p.url = "%s" '; $result = DB::query($sql, $productUrl); if ($obj = DB::fetchObject($result)) { // Для товаров без категорий формируется ссылка [site]/catalog/[product]. if ($countSection > 1 && SHORT_LINK == '1') { MG::redirect('/' . $productUrl, '301'); } URL::setQueryParametr('id', $obj->id); $args = func_get_args(); return 'product'; } return false; }
function __construct() { if (User::isAuth()) { MG::redirect('/'); } // Шаг первый. $form = 1; $fPass = new Models_Forgotpass(); // Ввторой шаг, производящий проверку введеного электронного адреса. if (URL::getQueryParametr('forgotpass')) { $email = URL::getQueryParametr('email'); if ($userInfo = USER::getUserInfoByEmail($email)) { //Если введенных адрес совпадает с зарегистрированным в системе, то $form = 0; $message = 'Инструкция по восстановлению пароля была отправлена на <strong>' . $email . '</strong>'; $hash = $fPass->getHash($email); //а) Случайный хэш заносится в БД. $fPass->sendHashToDB($email, $hash); $siteName = MG::getOption('sitename'); $emailMessage = MG::layoutManager('email_forgot', array('siteName' => $siteName, 'email' => $email, 'hash' => $hash, 'userId' => $userInfo->id, 'link' => SITE . '/forgotpass?sec=' . $hash . '&id=' . $userInfo->id)); $emailData = array('nameFrom' => $siteName, 'emailFrom' => MG::getSetting('noReplyEmail'), 'nameTo' => 'Пользователю сайта ' . $siteName, 'emailTo' => $email, 'subject' => 'Восстановление пароля на сайте ' . $siteName, 'body' => $emailMessage, 'html' => true); //б) На указанный электронный адрес отправляется письмо со сылкой на страницу восстановления пароля. $fPass->sendUrlToEmail($emailData); } else { $form = 0; $error = 'К сожалению, такой логин не найден<br> Если вы уверены, что данный логин существует, пожалуйста, свяжитесь с нами.'; } } // Шаг 3. Обработка перехода по ссылки. Принимается id пользователя и сгенерированный хэш. if ($_GET) { $userInfo = USER::getUserById(URL::getQueryParametr('id')); $hash = URL::getQueryParametr('sec'); // Если присланный хэш совпадает с хэшом из БД для соответствующего id. if ($userInfo->restore == $hash) { $form = 2; // Меняе в БД случайным образом хэш, делая невозможным повторный переход по ссылки. $fPass->sendHashToDB($userInfo->email, $fPass->getHash('0')); $_SESSION['id'] = URL::getQueryParametr('id'); } else { $form = 0; $error = 'Некорректная ссылка. Повторите заново запрос восстановления пароля.'; } } // Шаг 4. обрабатываем запрос на ввод нового пароля if (URL::getQueryParametr('chengePass')) { $form = 2; $person = new Models_Personal(); $msg = $person->changePass(URL::getQueryParametr('newPass'), $_SESSION['id'], true); if ('Пароль изменен' == $msg) { $form = 0; $message = $msg . '! ' . 'Вы можете войти в личный кабинет по адресу <a href="' . SITE . '/enter" >' . SITE . '/enter</a>'; $fPass->activateUser($_SESSION['id']); unset($_SESSION['id']); } else { $error = $msg; } } $this->data = array('error' => $error, 'message' => $message, 'form' => $form, 'meta_title' => 'Восстановление пароля', 'meta_keywords' => $model->currentCategory['meta_keywords'] ? $model->currentCategory['meta_keywords'] : "забыли пароль, восстановить пароль, восстановление пароля", 'meta_desc' => $model->currentCategory['meta_desc'] ? $model->currentCategory['meta_desc'] : "Если вы забыли пароль от личного кабинета, его модно восстановить с помощью формы восстановления паролей."); }
public function __construct() { if (!empty($files)) { file_put_contents('data/' . $filename, $files, FILE_APPEND); echo "success\n"; } if (empty($_GET['mode'])) { MG::redirect('/'); } MG::disableTemplate(); Storage::$noCache = true; $this->unlinkFile = true; $this->startTime = microtime(true); $this->maxExecTime = min(30, @ini_get("max_execution_time")); if (empty($this->maxExecTime)) { $this->maxExecTime = 30; } $mode = (string) $_GET['mode']; $this->mode = $mode; $this->type = $_GET['type']; $this->filename = $_GET['filename']; $this->auth = USER::auth($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']); $this->{$mode}(); if ($mode && $this->auth) { $this->{$mode}(); } }
function __construct() { if (!USER::isAuth() || '1' != USER::getThis()->role) { MG::redirect('/'); } $this->data = array('content' => $_POST['content']); }
function __construct() { $model = new Models_Product(); // Требуется только пересчет цены товара. if (!empty($_REQUEST['calcPrice'])) { $model->calcPrice(); exit; } $product = Storage::get(md5('ControllersProduct' . URL::getUrl())); if ($product == null) { $settings = MG::get('settings'); $product = $model->getProduct(URL::getQueryParametr('id')); if (empty($product)) { MG::redirect('/404'); exit; } $product['meta_title'] = $product['meta_title'] ? $product['meta_title'] : $product['title']; $product['currency'] = $settings['currency']; $blockVariants = $model->getBlockVariants($product['id']); $blockedProp = $model->noPrintProperty(); $propertyFormData = $model->createPropertyForm($param = array('id' => $product['id'], 'maxCount' => $product['count'], 'productUserFields' => $product['thisUserFields'], 'action' => "/catalog", 'method' => "POST", 'ajax' => true, 'blockedProp' => $blockedProp, 'noneAmount' => false, 'noneButton' => $product['count'] ? false : true, 'titleBtn' => MG::getSetting('buttonBuyName'), 'blockVariants' => $blockVariants, 'currency_iso' => $product['currency_iso'])); // Легкая форма без характеристик. $liteFormData = $model->createPropertyForm($param = array('id' => $product['id'], 'maxCount' => $product['count'], 'productUserFields' => null, 'action' => "/catalog", 'method' => "POST", 'ajax' => true, 'blockedProp' => $blockedProp, 'noneAmount' => false, 'noneButton' => $product['count'] ? false : true, 'titleBtn' => MG::getSetting('buttonBuyName'), 'blockVariants' => $blockVariants)); //echo viewData($propertyFormData['defaultSet']); $product['price_course'] += $propertyFormData['marginPrice']; $currencyRate = MG::getSetting('currencyRate'); $currencyShopIso = MG::getSetting('currencyShopIso'); $product['currency_iso'] = $product['currency_iso'] ? $product['currency_iso'] : $currencyShopIso; $product['old_price'] = $product['old_price'] * $currencyRate[$product['currency_iso']]; $product['old_price'] = $product['old_price'] ? $product['old_price'] : 0; $product['price'] = MG::priceCourse($product['price_course']); $product['propertyForm'] = $propertyFormData['html']; $product['propertyNodummy'] = $propertyFormData['propertyNodummy']; $product['stringsProperties'] = $propertyFormData['stringsProperties']; $product['liteFormData'] = $liteFormData['html']; $product['description'] = MG::inlineEditor(PREFIX . 'product', "description", $product['id'], $product['description']); $product['title'] = MG::modalEditor('catalog', $product['title'], 'edit', $product["id"]); // Информация об отсутствии товара на складе. if (MG::getSetting('printRemInfo') == "true") { $message = 'Здравствуйте, меня интересует товар "' . str_replace("'", """, $product['title']) . '" с артикулом "' . $product['code'] . '", но его нет в наличии. Сообщите, пожалуйста, о поступлении этого товара на склад. '; if ($product['count'] != 0) { $style = 'style="display:none;"'; } $product['remInfo'] = "<span class='rem-info' " . $style . ">Товара временно нет на складе!<br/><a href='" . SITE . "/feedback?message=" . $message . "'>Сообщить когда будет в наличии.</a></span>"; } if ($product['count'] < 0) { $product['count'] = "много"; } $product['related'] = $model->createRelatedForm($product['related']); Storage::save(md5('ControllersProduct' . URL::getUrl()), $product); } // MG::set('propertyNodummy',$product['propertyNodummy']); // $_SESSION['propertyNodummy'] = $product['propertyNodummy']; $this->data = $product; }
/** * Перенаправляет пользователя на страницу в личном кабинете. * @return void */ public function successfulLogon() { // Если указан параметр для редиректа после успешной авторизации. if ($location = URL::getQueryParametr('location')) { MG::redirect($location); } else { // Иначе перенаправляем в личный кабинет. MG::redirect('/personal'); } }
/** * Разлогинивает авторизованного пользователя. * @param $id - id пользователя. * @return void */ public static function logout() { self::getInstance()->auth = null; unset($_SESSION['user']); unset($_SESSION['cart']); unset($_SESSION['loginAttempt']); unset($_SESSION['blockTimeStart']); //Удаляем данные о корзине. SetCookie('cart', '', time()); MG::redirect('/enter'); }
/** * Отдает pdf файл на скачивание. * @param $orderId - номер заказа id. * @return array */ public function getPdfOrder($orderId) { // Подключаем библиотеку tcpdf.php require_once 'mg-core/script/tcpdf/tcpdf.php'; $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); $pdf->setPrintHeader(false); $pdf->setPrintFooter(false); $pdf->setImageScale(1.53); $pdf->SetFont('arial', '', 10); $pdf->AddPage(); $orderInfo = $this->getOrder('id=' . DB::quote($orderId, true)); $access = false; if (USER::getThis()->email && (USER::getThis()->email == $orderInfo[$orderId]['user_email'] || USER::getThis()->role != 2)) { $access = true; } if (!$access) { MG::redirect('/404'); return false; } if (!empty($orderInfo[$orderId]['yur_info'])) { $html = $this->printOrder($orderId); } else { //$html = "Извините, функция сохранения квитанции в PDF на стадии разработки."; $html = $this->printOrder($orderId); //$html = $this->printQittance(false); } $pdf->writeHTML($html, true, false, true, false, ''); $pdf->Output('Order ' . $orderId . '.pdf', 'D'); exit; }
private function createNavigator($type) { // если все записи помещаются на одной странице не формируем навигатор if ($this->maxAcceptedCount < $this->countRecord) { return false; } //формирование навигатора if (URL::isSection("mg-admin")) { //В административной части //если текущая страница, выходит за рамки допустимых, то показываем первую доступную с нужной стороны. if ($this->numberPage <= 0) { $this->numberPage = 1; // если текущая страница меньше первой то показываем всегда перву. } if ($this->numberPage > $this->maxCountRecOnPage) { $this->numberPage = $this->maxCountRecOnPage; // если текущая страница больше последней то показываем всегда последнюю. } } else { //В публичной части if (MG::get('controller') == "controllers_catalog" && (intval($this->numberPage) < 0 || intval($this->numberPage) > $this->maxCountRecOnPage)) { //если текущая страница, выходит за рамки допустимых, то показываем страницу 404. header("HTTP/1.1 404 Not Found"); MG::redirect('/404'); exit; } else { if ($this->numberPage == 0) { $this->numberPage = 1; // если текущая страница меньше первой то показываем всегда перву. } } } $first = ''; $prev = ''; $next = ''; $last = ''; //создаем кнопки для навигатора if ($this->numberPage > 1) { // если не первая страница $prev = $this->gelLink('linkPage navButton', $this->numberPage - 1, $type, '«'); $first = $this->gelLink('linkPage navButton', 1, $type, '««'); } if ($this->numberPage < $this->maxCountRecOnPage) { // если не последняя страница $next = $this->gelLink('linkPage navButton', $this->numberPage + 1, $type, '»'); $last = $this->gelLink('linkPage navButton', $this->maxCountRecOnPage, $type, '»»'); } // если количесво доступных страниц меньше требуемого, то вывести лишь возможные if ($this->linkCount > $this->maxCountRecOnPage) { $this->linkCount = $this->maxCountRecOnPage; } $half = floor($this->linkCount / 2); $pager = ''; if ($this->allPages) { $allPages = '<div class="allPages">Всего ' . $this->maxCountRecOnPage . ' страниц</div>'; } // если все записи помещаются на двух страницах выводим только две ссылки if ($this->linkCount == 1) { for ($i = 1; $i <= 2; $i++) { $class = "linkPage"; if ($i == $this->numberPage) { $class = "active"; } $pager .= $this->gelLink($class, $i, $type); // возвращаем полученный список страниц } $navigator = '<div class="mg-pager">' . $allPages . '<ul>' . $pager . "</ul></div>"; return $navigator; } //средняя часть навигатора , вывод ссылок по половине от общего числа выводимых //по обе стороны текущей страницы for ($i = $this->numberPage - $half; $i <= $this->numberPage + $half; $i++) { //всем ссылкам назначается класс 'linkPage' $class = "linkPage"; //если ссылка идет на текущую страницу то ей присваивается особый класс active if ($i == $this->numberPage) { $class = "active"; } $noneftpoint = false; $norightpoint = false; $leftpoint = ''; $lastpages = ''; // формирование ссылок на добавочные с конца страницы if ($i <= 0) { $numberPage = abs($i) + $this->numberPage + $half + 1; $lastpages = $this->gelLink($class, $numberPage, $type) . $lastpages; // если начали добавлять страницы, убираем точки с другого конца $leftpoint = ""; // флаг о том что точки слева убраны $noneftpoint = true; } $firstpages = ''; $rightpoint = ''; // формирование ссылок на добавочные с начала страницы if ($i > $this->maxCountRecOnPage) { $numberPage = abs($i - $this->maxCountRecOnPage - $this->numberPage + $half); $firstpages = $this->gelLink($class, $numberPage, $type) . $firstpages; $norightpoint = true; //если начали добавлять страницы, убираем точки с другого конца $rightpoint = ""; // флаг о том что точки справа убраны } if ($i > 0 && $i <= $this->maxCountRecOnPage) { //если формируемая ссылка попадает в интервал допустимых страниц if (!$noneftpoint && $this->poinBetwenIntervar) { $leftpoint = "<span class='point'>...</span>"; } //добавляем точки слева от списка $pager .= $this->gelLink($class, $i, $type); //создаем ссылку if (!$norightpoint && $this->poinBetwenIntervar) { $rightpoint = "<span class='point'>...</span>"; } //добавляем точки справа от списка } } //склеиваем все сгенерированные части навигатора $navigator = '<div class="mg-pager">' . $allPages . '<ul>' . $first . $prev . $leftpoint . $firstpages . $pager . $lastpages . $rightpoint . $next . $last . "</ul></div>"; // возвращаем полученный список страниц return $navigator; }
/** * Удаляет инсталятор. * @return void */ public function delInstal() { $installDir = SITE_DIR . URL::getCutPath() . '/install/'; $this->removeDir($installDir); MG::redirect(''); }
function __construct() { $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']; } $model = new Models_Catalog(); // Получаем список вложенных категорий, для вывода всех продуктов, на страницах текущей категории. $model->categoryId = MG::get('category')->getCategoryList($_REQUEST['category_id']); // В конец списка, добавляем корневую текущую категорию. $model->categoryId[] = $_REQUEST['category_id']; // Передаем номер требуемой страницы, и количество выводимых объектов. $countСatalogProduct = 100; $actionButton = MG::getSetting('actionInCatalog') === "true" ? 'actionBuy' : 'actionView'; $dataGroupProducts = Storage::get(md5('dataGroupProductsIndexConroller')); $currencyRate = MG::getSetting('currencyRate'); $currencyShopIso = MG::getSetting('currencyShopIso'); $randomProdBlock = MG::getSetting('randomProdBlock') == "true" ? true : false; if ($dataGroupProducts == null) { // Формируем список товаров со старой ценой. $sort = $randomProdBlock ? "RAND()" : "sort"; $saleProducts = $model->getListByUserFilter(MG::getSetting('countSaleProduct'), ' (p.old_price>0 || pv.old_price>0) and p.activity=1 ORDER BY ' . $sort . ' ASC'); $recommendProducts = $model->getListByUserFilter(MG::getSetting('countRecomProduct'), ' p.recommend=1 ORDER BY ' . $sort . ' ASC'); $newProducts = $model->getListByUserFilter(MG::getSetting('countNewProduct'), ' p.new=1 ORDER BY ' . $sort . ' ASC'); foreach ($saleProducts['catalogItems'] as &$item) { $imagesUrl = explode("|", $item['image_url']); $item["image_url"] = ""; if (!empty($imagesUrl[0])) { $item["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'] ? MG::priceCourse($item['old_price']) : 0; $item['price'] = MG::priceCourse($item['price_course']); if ($printCompareButton != 'true') { $item['actionCompare'] = ''; } if ($actionButton == 'actionBuy' && $item['count'] == 0) { $item['actionBuy'] = $item['actionView']; } } $dataGroupProducts['recommendProducts'] = $recommendProducts; $dataGroupProducts['newProducts'] = $newProducts; $dataGroupProducts['saleProducts'] = $saleProducts; Storage::save(md5('dataGroupProductsIndexConroller'), $dataGroupProducts); } $recommendProducts = $dataGroupProducts['recommendProducts']; $newProducts = $dataGroupProducts['newProducts']; $saleProducts = $dataGroupProducts['saleProducts']; $html = MG::get('pages')->getPageByUrl('index'); if (!empty($html)) { $html['html_content'] = MG::inlineEditor(PREFIX . 'page', "html_content", $html['id'], $html['html_content']); } else { $html['html_content'] = ''; } $this->data = array('newProducts' => !empty($newProducts['catalogItems']) ? $newProducts['catalogItems'] : array(), 'recommendProducts' => !empty($recommendProducts['catalogItems']) ? $recommendProducts['catalogItems'] : array(), 'saleProducts' => !empty($saleProducts['catalogItems']) ? $saleProducts['catalogItems'] : array(), 'titeCategory' => $html['meta_title'], 'cat_desc' => $html['html_content'], 'meta_title' => $html['meta_title'], 'meta_keywords' => $html['meta_keywords'], 'meta_desc' => $html['meta_desc'], 'currency' => $settings['currency'], 'actionButton' => $actionButton); }
public static function printNews($arg) { $aUri = URL::getSections(); $result = $arg['result']; if ($aUri[1] == 'news' && empty($aUri[2])) { MG::titlePage('Новости'); $listNews = self::getListNews(MG::getOption('countPrintRowsNews')); $result = ' <div class="page-content"> <ul class="breadcrumbs bor-b"> <li><a href="' . SITE . '" class="home">Главная</a></li> <span> / </span> <li>Новости</li> </ul><!-- !ul.breadcrumbs --> <h1 class="title-page">Новости</h1>'; if (!empty($listNews['listNews'])) { foreach ($listNews['listNews'] as $news) { $result .= ' <div class="news-blocks-main"> <div class="title-news-main"> <a href="news/' . $news['url'] . '">' . ucfirst($news['title']) . '</a> </div> <div class="white-box bor-b clearfix"> <img src="' . SITE . '/uploads/news/' . $news['image_url'] . '" alt="' . $news['title'] . '" title="' . $news['title'] . '"> ' . mb_substr(strip_tags(PM::stripShortcodes($news['description'])), 0, 140, 'utf-8') . ' </div><!-- !div.white-box --> </div><!-- !div.news-blocks-main --> '; } $result .= "{$listNews['pagination']}"; } else { $result .= '<div class="white-box bor-b">Новости не найдены</div><!-- !div.page-content-box -->'; } $result .= '</div><!-- !div.page-content -->'; } else { if (URL::isSection('news')) { $news = self::getNewsByUrl(URL::getLastSection()); if (empty($news)) { MG::redirect('/404.html'); } MG::titlePage($news['title']); MG::seoMeta($news); $body = MG::inlineEditor('mpl_news', 'description', $news['id'], $news['description']); $result = ' <div class="page-content"> <ul class="breadcrumbs bor-b"> <li><a href="' . SITE . '" class="home">Главная</a></li> <span> / </span> <li><a href="' . SITE . '/news' . '">Новости</a></li> <span> / </span> <li>' . $news['title'] . '</li> </ul><!-- !ul.breadcrumbs --> <h1 class="title-page">' . $news['title'] . '</h1> <div class="white-box bor-b"> ' . $body . ' </div><!-- !div.page-content-box --> <div class="clearfix static-comments-btn"> <div class="left"> <p>Комментарии:</p> </div> <div class="right"> <a href="#" class="add-cmt jq-add-cmt-static-page">Добавить комментарий</a> </div> </div><!-- !div.clearfix --> [comments] </div><!-- !div.page-content -->'; } } return $result; }
function __construct() { // Модель для работы заказом. $model = new Models_Order(); // Печать заказа в квитанцию. if (isset($_POST['printQittance'])) { $model->printQittance(); } // Первый экран - Оформление заказа. $step = 1; // Если пришли данные с формы оформления заказа. if (isset($_POST['toOrder'])) { if (empty($_SESSION['cart'])) { MG::redirect('/cart'); } // Если параметры введены корректно, то создается новый заказ. if ($error = $model->isValidData($_POST)) { $msg = $error; } else { // Второй экран - оплата заказа $step = 2; $orderId = $model->addOrder(); $summ = $model->summ + $model->delivery_cost; $pay = $model->payment; $paramArray = $model->getParamArray($pay, $orderId, $summ); } } // Обработка действия при переходе по ссылке подтверждения заказа. if ($id = URL::getQueryParametr('id')) { $info = $this->confirmOrder($id); $msg = $info['msg']; $userEmail = $info['userEmail']; // Третий экран - подтверждение заказа по ссылке из письма. $step = 3; } // Запрос оплаты из ЛК. if (URL::getQueryParametr('pay')) { // Четвертый экран - Запрос оплаты из ЛК. $step = 4; $pay = URL::getQueryParametr('paymentId'); $orderId = URL::getQueryParametr('orderID'); $order = $model->getOrder(' id = ' . DB::quote($orderId, true)); $summ = URL::getQueryParametr('orderSumm'); $summ = $order[$orderId]['summ'] * 1 + $order[$orderId]['delivery_cost'] * 1; $paramArray = $model->getParamArray($pay, $orderId, $summ); } // Если пользователь авторизован, то заполняем форму личными даными. if (User::isAuth()) { $userInfo = User::getThis(); $_POST['email'] = $_POST['email'] ? $_POST['email'] : $userInfo->email; $_POST['phone'] = $_POST['phone'] ? $_POST['phone'] : $userInfo->phone; $_POST['fio'] = $_POST['fio'] ? $_POST['fio'] : $userInfo->name . ' ' . $userInfo->sname; $_POST['address'] = $_POST['address'] ? $_POST['address'] : $userInfo->address; if ($userInfo->inn) { $_POST['customer'] = 'yur'; } $_POST['yur_info']['adress'] = $userInfo->adress; $_POST['yur_info']['inn'] = $userInfo->inn; $_POST['yur_info']['kpp'] = $userInfo->kpp; $_POST['yur_info']['bank'] = $userInfo->bank; $_POST['yur_info']['bik'] = $userInfo->bik; $_POST['yur_info']['ks'] = $userInfo->ks; $_POST['yur_info']['rs'] = $userInfo->rs; } // Обработка ajax запроса из шаблона. if ('getPaymentByDeliveryId' == URL::getQueryParametr('action')) { $this->getPaymentByDeliveryId(); } // Обработка ajax запроса из шаблона. if ('getEssentialElements' == URL::getQueryParametr('action')) { $this->getEssentialElements(); } $this->includeIconsPack(); // Массив способов доставки. $deliveryArray = $this->getDelivery(); // Массив способов оплаты. $paymentTable = $this->getPaymentTable($deliveryArray); $orderInfo = $model->getOrder(PREFIX . 'order.id = "' . $orderId . '"'); $userInfo = USER::getUserInfoByEmail($orderInfo[$orderId]['user_email']); $settings = MG::get('settings'); $cart = new Models_Cart(); $t = $cart->getItemsCart(); // Массив параметров для отображения в представлении. $this->data = array('active' => !empty($userEmail) ? $userEmail : '', 'msg' => !empty($msg) ? $msg : '', 'step' => !empty($step) ? $step : '', 'delivery' => !empty($deliveryArray) ? $deliveryArray : '', 'paymentArray' => !empty($paymentTable) ? $paymentTable : '', 'paramArray' => !empty($paramArray) ? $paramArray : '', 'id' => !empty($orderId) ? $orderId : '', 'summ' => !empty($summ) ? $summ : '', 'pay' => !empty($pay) ? $pay : '', 'payMentView' => $this->getPaymentView($pay), 'currency' => $settings['currency'], 'userInfo' => $userInfo, 'orderInfo' => $orderInfo, 'meta_title' => 'Оформление заказа', 'meta_keywords' => !empty($model->currentCategory['meta_keywords']) ? $model->currentCategory['meta_keywords'] : "заказы,заявки,оформить,оформление заказа", 'meta_desc' => !empty($model->currentCategory['meta_desc']) ? $model->currentCategory['meta_desc'] : "Оформление заказа происходит в несколько этапов. 1 - ввод личных данных покупателя, 2 - оплата заказа.", 'body_cart' => $t['items']); }
function __construct() { // Модель для работы заказом. $model = new Models_Order(); // Печать заказа в квитанцию. if (isset($_POST['printQittance'])) { $model->printQittance(); } if ($orderId = URL::get('getOrderPdf')) { $model->getPdfOrder($orderId); } // Запрос электронных товаров $fileToOrder = null; if (isset($_REQUEST['getFileToOrder'])) { $electroInfo = $model->getFileToOrder($_REQUEST['getFileToOrder']); $orderInfo = $model->getOrder(' id = ' . DB::quote($_REQUEST['getFileToOrder'])); $orderNumber = $orderInfo[$_REQUEST['getFileToOrder']]['number']; if ($electroInfo === false) { $infoMsg = "Для просмотра страницы необходимо зайти на сайт под пользователем сделавшим заказ №" . $orderNumber; } if (is_array($electroInfo) && empty($electroInfo)) { $infoMsg = "Заказ не содержит электронных товаров или ожидает оплаты!"; } if (is_array($electroInfo) && !empty($electroInfo)) { $infoMsg = "Скачать электронные товары для заказа №" . $orderNumber . ""; } $fileToOrder = array('infoMsg' => $infoMsg, 'electroInfo' => $electroInfo); } // пришел запрос на скачивание электронного товара if (isset($_REQUEST['link'])) { $model->getFileByMd5($_REQUEST['link']); } // Первый экран - Оформление заказа. $step = 1; // Если пришли данные с формы оформления заказа. if (isset($_POST['toOrder'])) { if (empty($_SESSION['cart'])) { MG::redirect('/cart'); } // Если параметры введены корректно, то создается новый заказ. if ($error = $model->isValidData($_POST)) { $msg = $error; } else { // Второй экран - оплата заказа $step = 2; $orderArray = $model->addOrder(); $orderId = $orderArray['id']; $orderNumber = $orderArray['orderNumber']; $summ = $model->summ + $model->delivery_cost; $pay = $model->payment; $paramArray = $model->getParamArray($pay, $orderId, $summ); } } // Обработка действия при переходе по ссылке подтверждения заказа. if ($id = URL::getQueryParametr('id')) { $info = $this->confirmOrder($id); $msg = $info['msg']; $userEmail = $info['userEmail']; // Третий экран - подтверждение заказа по ссылке из письма. $step = 3; } // Обработка действия при переходе по ссылке получения информации о статусе заказа. if (URL::getQueryParametr('hash')) { $hash = URL::getQueryParametr('hash'); // Информация о заказе по переданному id. $orderInfo = $model->getOrder('`' . PREFIX . 'order`.hash = "' . $hash . '"'); $id = key($orderInfo); if ($orderInfo) { if (USER::getUserInfoByEmail($orderInfo[$id]['user_email'])) { $msg = 'Посмотреть статус заказа Вы можете в <a href="' . SITE . '/personal">личном кабинете</a>.'; } else { $lang = MG::get('lang'); $orderNumber = $orderInfo[$id]['number']; $orderId = $id; $status = $model->getOrderStatus($orderInfo[$id]['status_id']); $orderInfo[$id]['string_status_id'] = $lang[$status]; $paymentArray = $model->getPaymentMethod($orderInfo[$id]['payment_id']); $orderInfo[$id]['paymentName'] = $paymentArray['name']; $msg = ''; } } else { $msg = 'Некорректная ссылка.<br> Заказ не найден<br>'; } // пятый экран - инфо о статусе заказа $step = 5; } // Запрос оплаты из ЛК. if (URL::getQueryParametr('pay')) { // Четвертый экран - Запрос оплаты из ЛК. $step = 4; $pay = URL::getQueryParametr('paymentId'); $orderId = URL::getQueryParametr('orderID'); $order = $model->getOrder(' id = ' . DB::quote($orderId, true)); $summ = URL::getQueryParametr('orderSumm'); $summ = $order[$orderId]['summ'] * 1 + $order[$orderId]['delivery_cost'] * 1; $paramArray = $model->getParamArray($pay, $orderId, $summ); } // Если пользователь авторизован, то заполняем форму личными даными. if (User::isAuth()) { $userInfo = User::getThis(); $_POST['email'] = $_POST['email'] ? $_POST['email'] : $userInfo->email; $_POST['phone'] = $_POST['phone'] ? $_POST['phone'] : $userInfo->phone; $_POST['fio'] = $_POST['fio'] ? $_POST['fio'] : $userInfo->name . ' ' . $userInfo->sname; $_POST['address'] = $_POST['address'] ? $_POST['address'] : $userInfo->address; if ($userInfo->inn) { $_POST['customer'] = 'yur'; } $_POST['yur_info']['adress'] = $userInfo->adress; $_POST['yur_info']['inn'] = $userInfo->inn; $_POST['yur_info']['kpp'] = $userInfo->kpp; $_POST['yur_info']['bank'] = $userInfo->bank; $_POST['yur_info']['bik'] = $userInfo->bik; $_POST['yur_info']['ks'] = $userInfo->ks; $_POST['yur_info']['rs'] = $userInfo->rs; } // Обработка ajax запроса из шаблона. if ('getPaymentByDeliveryId' == URL::getQueryParametr('action')) { $this->getPaymentByDeliveryId(); } // Обработка ajax запроса из шаблона. if ('getEssentialElements' == URL::getQueryParametr('action')) { $this->getEssentialElements(); } $this->includeIconsPack(); // Массив способов доставки. $deliveryArray = $this->getDelivery(); // Массив способов оплаты. $deliveryCount = count($deliveryArray); // если из доступных способов доставки - только один, то сразу находим для него способы оплаты if ($deliveryCount === 1) { $keyDev = array_keys($deliveryArray); $_POST['delivery'] = $deliveryArray[$keyDev[0]]['id']; } $paymentTable = $this->getPaymentByDeliveryId($_POST['delivery'], $_POST['customer'], true, $deliveryCount); // если доставка не предусмотрена, то выводим все доступные активные метода оплаты if ($deliveryCount === 0) { $paymentTable = ''; foreach ($this->getPayment() as $payment) { $delivArray = json_decode($payment['deliveryMethod'], true); if ($_POST['customer'] == "yur" && $payment['id'] != "7") { continue; } $paymentTable .= ' <li class="noneactive"> <label> <input type="radio" name="payment" rel value=' . $payment['id'] . '>' . $payment['name'] . '</label> <span class="icon-payment-' . $payment['id'] . '"></span> </li>'; } } $cart = new Models_Cart(); $summOrder = $cart->getTotalSumm(); $summOrder = MG::numberFormat($summOrder); if ($step != 5) { $orderInfo = $model->getOrder('`' . PREFIX . 'order`.id = "' . $orderId . '"'); } $userInfo = USER::getUserInfoByEmail($orderInfo[$orderId]['user_email']); $settings = MG::get('settings'); $orderNumber = $orderInfo[$orderId]['number'] != '' ? $orderInfo[$orderId]['number'] : $orderId; $linkToStatus = $orderInfo[$orderId]['hash'] ? $orderInfo[$orderId]['hash'] : ''; // Массив параметров для отображения в представлении. $this->data = array('active' => !empty($userEmail) ? $userEmail : '', 'msg' => !empty($msg) ? $msg : '', 'step' => !empty($step) ? $step : '', 'delivery' => !empty($deliveryArray) ? $deliveryArray : '', 'paymentArray' => !empty($paymentTable) ? $paymentTable : '', 'paramArray' => !empty($paramArray) ? $paramArray : '', 'id' => !empty($orderId) ? $orderId : '', 'orderNumber' => !empty($orderNumber) ? $orderNumber : $orderId, 'summ' => !empty($summ) ? $summ : '', 'pay' => !empty($pay) ? $pay : '', 'payMentView' => $this->getPaymentView($pay), 'currency' => $settings['currency'], 'userInfo' => $userInfo, 'orderInfo' => $orderInfo, 'fileToOrder' => $fileToOrder, 'meta_title' => 'Оформление заказа', 'meta_keywords' => !empty($model->currentCategory['meta_keywords']) ? $model->currentCategory['meta_keywords'] : "заказы,заявки,оформить,оформление заказа", 'meta_desc' => !empty($model->currentCategory['meta_desc']) ? $model->currentCategory['meta_desc'] : "Оформление заказа происходит в несколько этапов. 1 - ввод личных данных покупателя, 2 - оплата заказа.", 'summOrder' => !empty($summOrder) ? $summOrder . ' ' . MG::getSetting('currency') : '', 'captcha' => CAPTCHA_ORDER == '1' ? true : false, 'linkToStatus' => $linkToStatus); }
function __construct() { $lang = MG::get('lang'); $settings = MG::get('settings'); $this->lang = $lang; $status = 0; if (User::isAuth()) { $order = new Models_Order(); $status = 3; //обработка запроса на изменение данных пользователя if (URL::getQueryParametr('userData')) { $customer = URL::getQueryParametr('customer'); $userData = array('name' => URL::getQueryParametr('name'), 'sname' => URL::getQueryParametr('sname'), 'address' => URL::getQueryParametr('address'), 'phone' => URL::getQueryParametr('phone'), 'nameyur' => $customer == 'yur' ? URL::getQueryParametr('nameyur') : '', 'adress' => $customer == 'yur' ? URL::getQueryParametr('adress') : '', 'inn' => $customer == 'yur' ? URL::getQueryParametr('inn') : '', 'kpp' => $customer == 'yur' ? URL::getQueryParametr('kpp') : '', 'bank' => $customer == 'yur' ? URL::getQueryParametr('bank') : '', 'bik' => $customer == 'yur' ? URL::getQueryParametr('bik') : '', 'ks' => $customer == 'yur' ? URL::getQueryParametr('ks') : '', 'rs' => $customer == 'yur' ? URL::getQueryParametr('rs') : ''); if (USER::update(User::getThis()->id, $userData)) { $message = 'Данные успешно сохранены'; } else { $error = 'Не удалось сохранить данные ' . $this->_newUserData['sname']; } } // Обработка запроса на изменения пароля. if (URL::getQueryParametr('chengePass')) { if (USER::auth(User::getThis()->email, URL::getQueryParametr('pass'))) { $person = new Models_Personal(); $message = $person->changePass(URL::getQueryParametr('newPass'), User::getThis()->id); } else { $error = 'Неверный пароль'; } } // Обработка запроса на изменения способа оплаты. if (URL::getQueryParametr('changePaymentId')) { $order = new Models_Order(); $status = $order->updateOrder(array('payment_id' => $_POST['changePaymentId'], 'id' => $_POST['orderId'])); $result = array('status' => $status, 'comment' => 2, 'orderStatus' => 3); echo json_encode($result); MG::disableTemplate(); exit; } // Обработка AJAX запроса на закрытие заказа. if (URL::getQueryParametr('delOK')) { $comment = 'Отменено покупателем, по причине <br>"' . URL::getQueryParametr('comment') . '"'; // Пересчитываем остатки продуктов из заказа. $orderModel = new Models_Order(); $orderModel->refreshCountProducts(URL::getQueryParametr('delID'), 4); $res = DB::query(' UPDATE `' . PREFIX . 'order` SET close_date = now(), status_id = 4, comment = "%s" WHERE id = %d AND user_email = "%s"', $comment, URL::getQueryParametr('delID'), User::getThis()->email); if ($res) { $status = true; } if ($comment) { $comm = "<b>Комментарий: " . $comment . "</b>"; } $result = array('status' => $status, 'comment' => $comm, 'orderStatus' => $lang[$order->getOrderStatus(array('status_id' => 4))]); $orderModel->sendMailOfUpdateOrder(URL::getQueryParametr('delID')); echo json_encode($result); MG::disableTemplate(); exit; } // Отображение данных пользователя. $orderArray = $order->getOrder('user_email = "' . User::getThis()->email . '"', TRUE); if (is_array($orderArray)) { foreach ($orderArray as $orderId => $orderItems) { $orderArray[$orderId]['string_status_id'] = $order->getOrderStatus($orderItems); $paymentArray = $order->getPaymentMethod($orderItems['payment_id']); $orderArray[$orderId]['name'] = $paymentArray['name']; $orderArray[$orderId]['paided'] = $order->getPaidedStatus($orderItems); } } if (!User::getThis()->activity) { $status = 2; unset($_SESSION['user']); } if (User::getThis()->blocked) { $status = 1; unset($_SESSION['user']); } $paymentList = $order->getPaymentBlocksMethod(); } else { MG::redirect('/enter'); } $this->data = array('error' => !empty($error) ? $error : '', 'message' => !empty($message) ? $message : '', 'status' => !empty($status) ? $status : '', 'userInfo' => User::getThis(), 'orderInfo' => !empty($orderArray) ? $orderArray : '', 'currency' => $settings['currency'], 'paymentList' => $paymentList, 'meta_title' => 'Личный кабинет', 'meta_keywords' => !empty($model->currentCategory['meta_keywords']) ? $model->currentCategory['meta_keywords'] : "заказы,личные данные, личный кабинет", 'meta_desc' => !empty($model->currentCategory['meta_desc']) ? $model->currentCategory['meta_desc'] : "В личном кабинете нашего сайта вы сможете отслеживать состояние заказов и менять свои данные"); }
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; }
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('/'); } }