예제 #1
0
 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;
 }
예제 #2
0
 /**
  * Обработка коротких ссылок на продукты
  * @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;
 }
예제 #3
0
 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'] : "Если вы забыли пароль от личного кабинета, его модно восстановить с помощью формы восстановления паролей.");
 }
예제 #4
0
 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}();
     }
 }
예제 #5
0
 function __construct()
 {
     if (!USER::isAuth() || '1' != USER::getThis()->role) {
         MG::redirect('/');
     }
     $this->data = array('content' => $_POST['content']);
 }
예제 #6
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("'", "&quot;", $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;
 }
예제 #7
0
파일: enter.php 프로젝트: nellka/mebel
 /**
  * Перенаправляет пользователя на страницу в личном кабинете.
  * @return void
  */
 public function successfulLogon()
 {
     // Если указан параметр для редиректа после успешной авторизации.
     if ($location = URL::getQueryParametr('location')) {
         MG::redirect($location);
     } else {
         // Иначе  перенаправляем в личный кабинет.
         MG::redirect('/personal');
     }
 }
예제 #8
0
파일: user.php 프로젝트: WinGood/24karcher
 /**
  * Разлогинивает авторизованного пользователя.
  * @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');
 }
예제 #9
0
 /**
  * Отдает 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;
 }
예제 #10
0
 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, '&laquo;');
         $first = $this->gelLink('linkPage navButton', 1, $type, '&laquo;&laquo;');
     }
     if ($this->numberPage < $this->maxCountRecOnPage) {
         // если не последняя страница
         $next = $this->gelLink('linkPage navButton', $this->numberPage + 1, $type, '&raquo;');
         $last = $this->gelLink('linkPage navButton', $this->maxCountRecOnPage, $type, '&raquo;&raquo;');
     }
     // если количесво доступных страниц меньше требуемого, то вывести лишь возможные
     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;
 }
예제 #11
0
 /**
  * Удаляет инсталятор.
  * @return void
  */
 public function delInstal()
 {
     $installDir = SITE_DIR . URL::getCutPath() . '/install/';
     $this->removeDir($installDir);
     MG::redirect('');
 }
예제 #12
0
 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);
 }
예제 #13
0
파일: index.php 프로젝트: WinGood/24karcher
 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;
 }
예제 #14
0
파일: order.php 프로젝트: WinGood/24karcher
 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']);
 }
예제 #15
0
 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);
 }
예제 #16
0
 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'] : "В личном кабинете нашего сайта вы сможете отслеживать состояние заказов и менять свои данные");
 }
예제 #17
0
 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;
 }
예제 #18
0
 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('/');
     }
 }