Пример #1
0
 /**
  * Проверяет корректность введенных данных в форме регистрации.
  * 
  * @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);
 }
Пример #2
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'] : "Если вы забыли пароль от личного кабинета, его модно восстановить с помощью формы восстановления паролей.");
 }
Пример #3
0
 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;
 }
Пример #4
0
 /**
  * Получает список продуктов при вводе в поле поиска
  */
 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;
 }
Пример #5
0
 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);
 }
Пример #6
0
 /**
  * Если действие запрошенно стандартными файлами движка, то
  * маршрутизирует действие в класс 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;
 }
Пример #7
0
 /**
  * Метод проверяет корректность данных введенных в форму регистрации.
  * @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;
 }
Пример #8
0
 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'];
 }
Пример #9
0
 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;
 }
Пример #10
0
 /**
  * Получает список продуктов при вводе в поле поиска.
  */
 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;
 }
Пример #11
0
 /**
  * Возвращает сообщение о статусе заказа "Подтвержден".
  * @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;
 }
Пример #12
0
 /**
  * Получает список продуктов при вводе в поле поиска товара при создании заказа через админку.
  */
 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;
 }
Пример #13
0
<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>&larr; <?php 
echo $lang['BACK_PLUGIN'];
?>
</span></a>

        <?php 
MG::createHook(URL::getQueryParametr('mguniqueurl'));
?>
</div>

<div class="clear"></div>
</div>
Пример #14
0
 /**
  * Возвращает сообщение о статусе заказа "Подтвержден".
  * @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;
 }
Пример #15
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'] : "В личном кабинете нашего сайта вы сможете отслеживать состояние заказов и менять свои данные");
 }
Пример #16
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);
 }
Пример #17
0
 /**
  * Проверяет корректность ввода данных с формы авторизации.
  * @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;
 }
Пример #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('/');
     }
 }
Пример #19
0
 /**
  * Получает список продуктов при вводе в поле поиска.
  */
 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;
 }
Пример #20
0
 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;
 }