/** * Проверяет корректность введенных данных в форме регистрации. * * @param array $userData массив данных пользователя. * @param string $mode режим проверки данных (full|pass) полный (по умолчанию) или только пароль. * @return string ошибка в случае не верного ввода данных в одном из полей. */ public function validDataForm($userData, $mode = 'full') { // Проверка электронного адреса. if (USER::getUserInfoByEmail($userData['email']) && 'full' == $mode) { $error .= '<span class="email-in-use">Указанный email уже используется</span>'; } // Пароль должен быть больше 5-ти символов. if (strlen($userData['pass']) < 5) { $error .= '<span class="passError">Пароль менее 5 символов</span>'; } // Проверяем равенство введенных паролей. if (URL::getQueryParametr('pass2') != $userData['pass']) { $error .= '<span class="wrong-pass">Введенные пароли не совпадают</span>'; } if ('full' == $mode) { // Проверка электронного адреса. if (!preg_match('/^[-._a-zA-Z0-9]+@(?:[a-zA-Z0-9][-a-zA-Z0-9]{0,61}+\\.)+[a-zA-Z]{2,6}$/', $userData['email'])) { $error .= '<span class="errorEmail">Неверно заполнено email</span>'; } if (MG::getSetting('useCaptcha') == "true") { if (strtolower(URL::getQueryParametr('capcha')) != strtolower($_SESSION['capcha'])) { $error .= "<span class='error-captcha-text'>Текст с картинки введен неверно!</span>"; } } } $args = func_get_args(); return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $error, $args); }
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'] : "Если вы забыли пароль от личного кабинета, его модно восстановить с помощью формы восстановления паролей."); }
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; }
/** * Получает список продуктов при вводе в поле поиска */ public function getSearchData() { $keyword = URL::getQueryParametr('search'); if (!empty($keyword)) { $catalog = new Models_Catalog(); $items = $catalog->getListProductByKeyWord($keyword, true, true); $searchData = array('status' => 'success', 'item' => array('keyword' => $keyword, 'count' => $items['numRows'], 'items' => $items), 'currency' => MG::getSetting('currency')); } echo json_encode($searchData); exit; }
function __construct() { $this->msg = ""; $paymentID = URL::getQueryParametr('id'); $paymentStatus = URL::getQueryParametr('pay'); $_POST['url'] = URL::getUrl(); $modelOrder = new Models_Order(); switch ($paymentID) { case 1: //webmoney $msg = $this->webmoney($paymentID, $paymentStatus); break; case 5: //robokassa $msg = $this->robokassa($paymentID, $paymentStatus); break; case 6: //qiwi $msg = $this->qiwi($paymentID, $paymentStatus); break; case 8: //interkassa $msg = $this->interkassa($paymentID, $paymentStatus); break; case 2: //ЯндексДеньги $msg = $this->yandex($paymentID, $paymentStatus); break; case 9: //PayAnyWay $msg = $this->payanyway($paymentID, $paymentStatus); case 10: //PayMastert $msg = $this->paymaster($paymentID, $paymentStatus); break; case 11: //alfabank $msg = $this->alfabank($paymentID, $paymentStatus); break; case 14: //Яндекс.Касса $msg = $this->yandexKassa($paymentID, $paymentStatus); break; case 15: //privat24 $msg = $this->privat24($paymentID, $paymentStatus); break; } $this->data = array('payment' => $paymentID, 'status' => $paymentStatus, 'message' => $msg); }
/** * Если действие запрошенно стандартными файлами движка, то * маршрутизирует действие в класс Actioner для дальнейшего выполнения. * * Если действие запрошено из страницы плагина, то передает действие в * пользовательский класс плагина. Класс плагина передается * в переменной URL::getQueryParametr('action') * * @param string $url ссылка на действие * @param string $plugin папка с плагином * @param string $actioner - обработчик аякс запросов * */ public function routeAction($url, $plugin = null, $actioner = false) { // Если не плагин. if (!$plugin) { //Защита контролера от несанкционированного доступа вне админки. if (!$this->checkAccess(User::getThis()->role)) { echo "Для доступа к методу необходимо иметь права администратора!"; exit; return false; } $parts = explode('/', $url); if ($parts[0] == 'action') { $act = new Actioner(); $act->runAction($parts[1]); return true; } } else { // Подключам пользовательский класс для обаботки. $action = URL::getQueryParametr('action'); if (empty($action)) { $parts = explode('/', $url); if ($parts[0] == 'action') { $action = $parts[1]; } } // Формируем путь до класса плагина, который обработает действие. $pluginClassPath = PLUGIN_DIR . $plugin . "/" . strtolower($actioner) . '.php'; if (file_exists($pluginClassPath)) { $pathPluginActioner = $pluginClassPath; } else { $pathPluginActioner = PLUGIN_DIR . $plugin . "/" . $actioner . '.php'; } // Подключаем класс плагина. include $pathPluginActioner; // Создаем экземпляр класа обработчика. // (он обязательно должен наследоваться от стандартноко класса Actioner) $lang = PLUGIN_DIR . $plugin . "/locales/" . MG::getSetting('languageLocale') . '.php'; if (file_exists($lang)) { include $lang; $act = new $actioner($lang); } else { $act = new $actioner(); } // выполняем стандартный метод класса Actioner $act->runAction($action); return true; } return false; }
/** * Метод проверяет корректность данных введенных в форму регистрации. * @return boolean */ public function unValidForm() { if (!URL::getQueryParametr('name')) { $name = 'Пользователь'; } else { $name = URL::getQueryParametr('name'); } $this->userData = array('pass' => URL::getQueryParametr('pass'), 'email' => URL::getQueryParametr('email'), 'role' => 2, 'name' => $name, 'sname' => URL::getQueryParametr('sname'), 'address' => URL::getQueryParametr('address'), 'phone' => URL::getQueryParametr('phone'), 'ip' => URL::getQueryParametr('ip')); $registration = new Models_Registration(); if ($err = $registration->validDataForm($this->userData)) { $this->error = $err; return true; } return false; }
static function counterView($arg) { $model = new Models_Product(); $product = $model->getProduct(URL::getQueryParametr('id')); $user_ip = $_SERVER['REMOTE_ADDR']; $date = date('Y-m-d'); $id_product = $product['id']; $visits_today = DB::query("SELECT `id` FROM `" . PREFIX . self::$pluginName . '_visits' . "` WHERE `date`='" . $date . "'"); $product = DB::query("SELECT `id` FROM `" . PREFIX . self::$pluginName . '_visits' . "` WHERE id_product='" . $id_product . "'"); if (!DB::numRows($product)) { DB::query("INSERT INTO `" . PREFIX . self::$pluginName . '_visits' . "` SET `views`=1, `id_product`='" . $id_product . "', `date`='" . $date . "'"); } else { DB::query("UPDATE `" . PREFIX . self::$pluginName . '_visits' . "` SET `date`='" . $date . "', `views`=`views`+1 WHERE `id_product`='" . $id_product . "'"); } return $arg['result']; }
function __construct() { $model = new Models_Product(); // Требуется только пересчет цены товара. if (!empty($_REQUEST['calcPrice'])) { $model->calcPrice(); exit; } $settings = MG::get('settings'); $product = $model->getProduct(URL::getQueryParametr('id')); $product['meta_title'] = $product['meta_title'] ? $product['meta_title'] : $product['title']; $product['currency'] = $settings['currency']; $blockVariants = $model->getBlockVariants($product['id']); $propertyFormData = $model->createPropertyForm($param = array('id' => $product['id'], 'maxCount' => $product['count'], 'productUserFields' => $product['thisUserFields'], 'action' => "/catalog", 'method' => "POST", 'ajax' => true, 'blockedProp' => array(), 'noneAmount' => false, 'titleBtn' => "В корзину", 'blockVariants' => $blockVariants)); // Легкая форма без характеристик. $liteFormData = $model->createPropertyForm($param = array('id' => $product['id'], 'maxCount' => $product['count'], 'productUserFields' => null, 'action' => "/catalog", 'method' => "POST", 'ajax' => true, 'blockedProp' => array(), 'noneAmount' => false, 'titleBtn' => "В корзину", 'blockVariants' => $blockVariants)); $product['price'] += $propertyFormData['marginPrice']; $product['propertyForm'] = $propertyFormData['html']; $product['liteFormData'] = $liteFormData['html']; $product['description'] = MG::inlineEditor(PREFIX . 'product', "description", $product['id'], $product['description']); $product['title'] = MG::modalEditor('catalog', $product['title'], 'edit', $product["id"]); $product["recommend"] = 0; $product["new"] = 0; $product['cat_title'] = $model->getTitleCat($product['cat_id']); // Случайные продукты $modelCatalog = new Models_Catalog(); $likeGoods = $modelCatalog->getRandomProduct($product['cat_id'], $product['id']); $product['like_goods'] = $likeGoods; // Информация об отсутствии товара на складе. if (MG::getSetting('printRemInfo') == "true" && $product['count'] == 0) { $product['remInfo'] = "<span class='rem-info'>Товара временно нет на складе!</style>"; } if ($product['count'] < 0) { $product['count'] = "∞"; } $this->data = $product; }
/** * Получает список продуктов при вводе в поле поиска. */ public function getSearchData() { $keyword = MG::defenderXss_decode(URL::getQueryParametr('text')); if (!empty($keyword)) { $keyword = $this->convertLang($keyword); $catalog = new Models_Catalog(); $items = $catalog->getListProductByKeyWord($keyword, true, true, false, 'groupBy'); foreach ($items['catalogItems'] as $key => $value) { $path = URL::$documentRoot . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . 'thumbs' . DIRECTORY_SEPARATOR . '30_' . $value["image_url"]; if (!file_exists($path)) { $items['catalogItems'][$key]['noneFile'] = SITE . '/uploads/thumbs/30_' . $value['image_url']; } } $searchData = array('status' => 'success', 'item' => array('keyword' => $keyword, 'count' => $items['numRows'], 'items' => $items), 'currency' => MG::getSetting('currency')); } echo json_encode($searchData); exit; }
/** * Возвращает сообщение о статусе заказа "Подтвержден". * @param type $pay - id заказа. * @return mixed - сообщение и email пользователя. */ public function confirmOrder($id) { // Модель для работы заказом. $model = new Models_Order(); // Информация о заказе по переданному id. $orderInfo = $model->getOrder('`' . PREFIX . 'order`.id = "' . $id . '"'); $hash = URL::getQueryParametr('sec'); // Информация о пользователе, сделавший заказ . $orderUser = USER::getUserInfoByEmail($orderInfo[$id]['user_email']); // Если присланный хэш совпадает с хэшом из БД для соответствующего id. if ($orderInfo[$id]['confirmation'] == $hash) { if ($orderInfo[$id]['hash'] == '') { $msg = 'Посмотреть статус заказа Вы можете в <a href="' . SITE . '/personal">личном кабинете</a>.'; } else { $msg = 'Следить за статусом заказа Вы можете по ссылке <br> ' . '<a href="' . SITE . '/order?hash=' . $orderInfo[$id]['hash'] . '">' . SITE . '/order?hash=' . $orderInfo[$id]['hash'] . '</a>'; } // Если статус заказа "Не подтвержден". if (0 == $orderInfo[$id]['status_id']) { // Подтверждаем заказ. $orderStatus = 1; // если оплата выбрана наложенным платежём, то статус заказа изменяем на "в доставке" if ($orderInfo[$id]['payment_id'] == 3) { $orderStatus = 3; } $model->sendStatusToEmail($id, $orderStatus); $model->setOrderStatus($id, $orderStatus); $orderNumber = $orderInfo[$id]['number']; $orderId = $id; $msg = 'Ваш заказ №' . $orderNumber . ' подтвержден и передан на обработку. <br> ' . $msg; } else { $msg = 'Заказ уже подтвержден и находится в работе. <br> ' . $msg; } if (!$orderUser->activity) { $userEmail = $orderUser->email; $_SESSION['id'] = $orderUser->id; } } else { $msg = 'Некорректная ссылка.<br> Заказ не подтвержден<br>'; } $result = array('msg' => $msg, 'userEmail' => $userEmail); return $result; }
/** * Получает список продуктов при вводе в поле поиска товара при создании заказа через админку. */ public function getSearchData() { $keyword = URL::getQueryParametr('search'); if (!empty($keyword)) { $catalog = new Models_Catalog(); $product = new Models_Product(); $currencyRate = MG::getSetting('currencyRate'); $currencyShort = MG::getSetting('currencyShort'); $currencyShopIso = MG::getSetting('currencyShopIso'); $items = $catalog->getListProductByKeyWord($keyword, true, false, true); //добавление к заказу из админки товара, который не выводится в каталог. $blockedProp = $product->noPrintProperty(); foreach ($items['catalogItems'] as $key => $item) { $propertyFormData = $product->createPropertyForm($param = array('id' => $item['id'], 'maxCount' => 999, 'productUserFields' => $item['thisUserFields'], 'action' => "/catalog", 'method' => "POST", 'ajax' => true, 'blockedProp' => $blockedProp, 'noneAmount' => true, 'titleBtn' => "<span>" . $this->lang['EDIT_ORDER_14'] . "</span>", 'blockVariants' => $product->getBlockVariants($item['id']), 'classForButton' => 'addToCart buy-product buy custom-btn', 'printCompareButton' => false, 'currency_iso' => $item['currency_iso'])); $items['catalogItems'][$key]['price'] = $items['catalogItems'][$key]['price']; $items['catalogItems'][$key]['propertyForm'] = $propertyFormData['html']; } } $searchData = array('status' => 'success', 'item' => array('keyword' => $keyword, 'count' => $items['numRows'], 'items' => $items), 'currency' => MG::getSetting('currency')); echo json_encode($searchData); exit; }
<div class="widget-table-wrapper"> <div class="widget-table-title"> <h4 class="settings-table-icon"><?php $lang = MG::get('lang'); echo $lang['SETTINGS_PLUGIN']; ?> "<?php echo URL::getQueryParametr('pluginTitle'); ?> "</h4> </div> <div class="widget-table-body"> <a href="javascript:void(0);" onclick="$('a[id=plugins]').click();" class="go-back-plugins"><span>← <?php echo $lang['BACK_PLUGIN']; ?> </span></a> <?php MG::createHook(URL::getQueryParametr('mguniqueurl')); ?> </div> <div class="clear"></div> </div>
/** * Возвращает сообщение о статусе заказа "Подтвержден". * @param type $pay - id заказа. * @return mixed - сообщение и email пользователя. */ public function confirmOrder($id) { // Модель для работы заказом. $model = new Models_Order(); // Информация о заказе по переданному id. $orderInfo = $model->getOrder(PREFIX . 'order.id = "' . $id . '"'); $hash = URL::getQueryParametr('sec'); // Информация о пользователе, сделавший заказ . $orderUser = USER::getUserInfoByEmail($orderInfo[$id]['user_email']); // Если присланный хэш совпадает с хэшом из БД для соответствующего id. if ($orderInfo[$id]['confirmation'] == $hash) { // Если статус заказа "Не подтвержден". if (0 == $orderInfo[$id]['status_id']) { // Подтверждаем заказ. $model->setOrderStatus($id, 1); $orderId = $id; } else { $msg = 'Заказ уже подтвержден и находится в работе. <br> Посмотреть статус заказа Вы можете в <a href="' . SITE . '/personal">личном кабинете</a>.'; } if (!$orderUser->activity) { $userEmail = $orderUser->email; $_SESSION['id'] = $orderUser->id; } } else { $msg = 'Некорректная ссылка.<br> Заказ не подтвержден<br>'; } $result = array('msg' => $msg, 'userEmail' => $userEmail); return $result; }
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(); $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); }
/** * Проверяет корректность ввода данных с формы авторизации. * @return void */ public function validForm() { $email = URL::getQueryParametr('email'); $pass = URL::getQueryParametr('pass'); if (!$email || !$pass) { // При первом показе, не выводить ошибку. if (strpos($_SERVER['HTTP_REFERER'], '/enter')) { $this->data = array('msgError' => '<span class="msgError">' . 'Одно из обязательных полей не заполнено!' . '</span>', 'meta_title' => 'Авторизация', 'meta_keywords' => !empty($model->currentCategory['meta_keywords']) ? $model->currentCategory['meta_keywords'] : "Авторизация,вход, войти в личный кабинет", 'meta_desc' => !empty($model->currentCategory['meta_desc']) ? $model->currentCategory['meta_desc'] : "Авторизуйтесь на сайте и вы получите дополнительные возможности, недоступные для обычных пользователей."); } return false; } return true; }
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('/'); } }
/** * Получает список продуктов при вводе в поле поиска. */ public function getSearchData() { $keyword = MG::defenderXss_decode(URL::getQueryParametr('text')); if (!empty($keyword)) { $keyword = $this->convertLang($keyword); $catalog = new Models_Catalog(); $items = $catalog->getListProductByKeyWord($keyword, true, true, false, 'groupBy'); foreach ($items['catalogItems'] as $key => $value) { $items['catalogItems'][$key]['image_url'] = mgImageProductPath($value["image_url"], $value['id'], 'small'); } $searchData = array('status' => 'success', 'item' => array('keyword' => $keyword, 'count' => $items['numRows'], 'items' => $items), 'currency' => MG::getSetting('currency')); } echo json_encode($searchData); exit; }
public function yandexKassa($paymentID, $paymentStatus) { $order = new Models_Order(); $action = URL::getQueryParametr('action'); $orderNumber = URL::getQueryParametr('orderNumber'); if ($paymentStatus == 'success' && $action == 'PaymentSuccess') { $orderInfo = $order->getOrder(" id = " . DB::quote($orderNumber, 1)); $msg = 'Вы успешно оплатили заказ №' . $orderInfo[$orderNumber]['number']; $msg .= $this->msg; return $msg; } elseif ($paymentStatus == 'fail') { $orderInfo = $order->getOrder(" id = " . DB::quote($orderNumber, 1)); $msg = 'При попытке оплаты заказа №' . $orderInfo[$orderNumber]['number'] . ' произошла ошибка.<br />Пожалуста, попробуте позже или используйте другой способ оплаты'; $msg .= $this->msg; return $msg; } $error = false; $orderSumAmount = URL::getQueryParametr('orderSumAmount'); $orderSumCurrencyPaycash = URL::getQueryParametr('orderSumCurrencyPaycash'); $orderSumBankPaycash = URL::getQueryParametr('orderSumBankPaycash'); $shopId = URL::getQueryParametr('shopId'); $invoiceId = URL::getQueryParametr('invoiceId'); $customerNumber = URL::getQueryParametr('customerNumber'); $key = URL::getQueryParametr('md5'); $responseXml = '<?xml version="1.0" encoding="UTF-8"?> <checkOrderResponse performedDatetime="' . date('c') . '" '; if (!empty($orderSumAmount) && !empty($orderNumber)) { $orderInfo = $order->getOrder(" id = " . DB::quote($orderNumber, 1) . " and summ+delivery_cost = " . DB::quote($orderSumAmount, 1)); $paymentInfo = $order->getParamArray($paymentID, $orderNumber, $orderInfo[$orderNumber]['summ']); $shopPassword = trim($paymentInfo[3]['value']); //$shopPassword = '******'; } else { $error = true; $responseXml .= 'code="200" message="не пришла сумма или номер"'; } //action;orderSumAmount;orderSumCurrencyPaycash;orderSumBankPaycash;shopId;invoiceId;customerNumber;shopPassword if (!empty($orderInfo)) { $hash = strtoupper(md5($action . ';' . $orderSumAmount . ';' . $orderSumCurrencyPaycash . ';' . $orderSumBankPaycash . ';' . $shopId . ';' . $invoiceId . ';' . $customerNumber . ';' . $shopPassword)); if ($action == 'checkOrder') { if ($hash == $key) { $responseXml .= 'code="0" '; } else { $responseXml .= 'code="1" '; } } elseif ($action == 'paymentAviso') { if ($hash == $key) { $responseXml .= 'code="0" '; } else { $responseXml .= 'code="1" paymentAviso '; } if ($orderInfo[$orderNumber]['status_id'] != 2 && $orderInfo[$orderNumber]['status_id'] != 4 && $orderInfo[$orderNumber]['status_id'] != 5) { $this->actionWhenPayment(array('paymentOrderId' => $orderNumber, 'paymentAmount' => $orderInfo[$orderNumber]['summ'], 'paymentID' => $paymentID)); } } else { $responseXml .= 'code="200" message="Неизвестное действие"'; } } elseif (!$error) { $responseXml .= ' code="200" message="Указаны неверные параметры заказа"'; } $responseXml .= ' invoiceId="' . $invoiceId . '" shopId="' . $shopId . '" />'; header('content-type: text/xml; charset=UTF-8'); echo $responseXml; exit; }