Example #1
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'] : "Если вы забыли пароль от личного кабинета, его модно восстановить с помощью формы восстановления паролей.");
 }
Example #2
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;
 }
Example #3
0
 /**
  * Возвращает меню в HTML виде.
  * @param string type = top или footer. Footer - вернет  три списка с равным количеством пунктов
  */
 public static function getMenuFull($type = 'top')
 {
     if ($type == 'top') {
         $pages = MG::get('pages')->getHierarchyPage();
         $print = MG::layoutManager('layout_topmenu', array('pages' => $pages));
     }
     if ($type == 'footer') {
         $print .= MG::get('pages')->getFooterPagesUl(0);
     }
     $args = func_get_args();
     return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $print, $args);
 }
Example #4
0
/**
 * Выводит верстку содержащуюся в заданном layout. 
 * @param  $layout - название верстки  в папке шаблона layout, без префикса 'layout_';
 * @param  $data - массив данных переданых в layout';
 */
function layout($layout, $data = null)
{
    if (in_array($layout, array('cart', 'auth', 'contacts', 'search'))) {
        $data = MG::get('templateData');
    }
    if ($layout == 'topmenu') {
        echo Menu::getMenuFull('top');
        return true;
    }
    if ($layout == 'leftmenu') {
        echo MG::get('category')->getCategoriesHTML();
        return true;
    }
    if ($layout == 'horizontmenu') {
        echo MG::get('category')->getCategoriesHorHTML();
        return true;
    }
    if ($layout == 'content') {
        $data = MG::get('templateData');
        echo $data['content'];
        return true;
    }
    if ($layout == 'widget') {
        echo MG::getSetting('widgetCode');
        return true;
    }
    if ($layout == 'logo') {
        $logo = MG::getSetting('shopLogo') != '' ? MG::getSetting('shopLogo') : "/mg-templates/" . MG::getSetting('templateName') . "/images/logo.png";
        echo '<img src="' . SITE . $logo . '" alt="">';
        return true;
    }
    echo MG::layoutManager('layout_' . $layout, $data);
    return true;
}
Example #5
0
 /**
  * Выводит на экран печатную форму для печати квитанции на оплату заказа.
  * @param boolean вывод на печать в публичной части, либо в админке.
  * @return array 
  */
 public function printQittance($public = true)
 {
     MG::disableTemplate();
     $data['line'] = "<p class='line'></p>";
     $data['line2'] = "<p class='line2'></p>";
     $data['name'] = !empty($_POST['name']) ? $_POST['name'] : $line;
     $data['inn'] = !empty($_POST['inn']) ? $_POST['inn'] : $line;
     $data['nsp'] = !empty($_POST['nsp']) ? $_POST['nsp'] : $line;
     $data['ncsp'] = !empty($_POST['ncsp']) ? $_POST['ncsp'] : $data['line2'];
     $data['bank'] = !empty($_POST['bank']) ? $_POST['bank'] : $line;
     $data['bik'] = !empty($_POST['bik']) ? $_POST['bik'] : $data['line2'];
     $data['appointment'] = !empty($_POST['appointment']) ? $_POST['appointment'] : $line;
     $data['nls'] = !empty($_POST['nls']) ? $_POST['nls'] : $line;
     $data['payer'] = !empty($_POST['payer']) ? $_POST['payer'] : $data['line2'];
     $data['addrPayer'] = !empty($_POST['addrPayer']) ? $_POST['addrPayer'] : $data['line2'];
     $data['sRub'] = !empty($_POST['sRub']) ? $_POST['sRub'] : '_______';
     $data['sKop'] = !empty($_POST['sKop']) ? $_POST['sKop'] : 0;
     $data['uRub'] = !empty($_POST['uRub']) ? $_POST['uRub'] : '_______';
     $data['uKop'] = !empty($_POST['uKop']) ? $_POST['uKop'] : 0;
     $data['day'] = !isset($_POST['day']) || $_POST['day'] == '_' ? '____' : $_POST['day'];
     $data['month'] = !isset($_POST['month']) || $_POST['month'] == '_' ? '___________________' : $_POST['month'];
     if (!isset($_POST['sKop'])) {
         $sKop = '___';
     }
     if (!isset($_POST['uKop'])) {
         $uKop = '___';
     }
     $sResult = !empty($sKop) ? $sResult = "{$sRub}.{$sKop}" : $sRub;
     $uResult = !empty($uKop) ? $uResult = "{$uRub}.{$uKop}" : $uRub;
     $rubResult = $sResult + $uResult;
     if (empty($rubResult)) {
         settype($rubResult, 'null');
     }
     if (is_double($rubResult)) {
         list($rub, $kop) = explode('.', $rubResult);
     } else {
         if (is_int($rubResult)) {
             $rub = $rubResult;
             $kop = "0";
         }
     }
     if (empty($rub)) {
         $rub = '_______';
     }
     if (!isset($kop)) {
         $kop = '___';
     }
     $data['rub'] = $rub;
     $data['kop'] = $kop;
     $data['uKop'] = $uKop;
     $data['sKop'] = $sKop;
     $html = MG::layoutManager('print_qittance', $data);
     if ($public) {
         echo $html;
         exit;
     }
     return $html;
 }
Example #6
0
 /**
  * Возвращает HTML блок связанных товаров
  * @param type $args
  * @return type
  */
 public function createRelatedForm($args, $title = 'С этим товаром покупают', $layout = 'layout_related')
 {
     if ($args) {
         $data['title'] = $title;
         $stringRelated = ' null';
         $sortRelated = array();
         foreach (explode(',', $args) as $item) {
             $stringRelated .= ',' . DB::quote($item);
             $sortRelated[$item] = $item;
         }
         $stringRelated = substr($stringRelated, 1);
         $data['products'] = $this->getProductByUserFilter(' p.code IN (' . $stringRelated . ') and p.activity = 1 ');
         if (!empty($data['products'])) {
             $data['currency'] = MG::getSetting('currency');
             foreach ($data['products'] as $item) {
                 $img = explode('|', $item['image_url']);
                 $item['img'] = $img[0];
                 $item['category_url'] = SHORT_LINK == '1' ? '' : $item['category_url'] . '/';
                 $item['url'] = SITE . '/' . (isset($item["category_url"]) ? $item["category_url"] : 'catalog/') . $item["product_url"];
                 $item['price'] = MG::priceCourse($item['price_course']);
                 $sortRelated[$item['code']] = $item;
             }
             $data['products'] = array();
             //сортируем связанные товары в том порядке, в котором они идут в строке артикулов
             foreach ($sortRelated as $item) {
                 if (!empty($item['id']) && is_array($item)) {
                     $data['products'][$item['id']] = $item;
                 }
             }
             $result = MG::layoutManager($layout, $data);
         }
     }
     $args = func_get_args();
     return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $result, $args);
 }
Example #7
0
 /**
  * Метод отправки письма для активации пользователя.
  * @param type $userEmail
  * @return void 
  */
 private function _sendActivationMail($userEmail)
 {
     $userId = USER::getUserInfoByEmail($userEmail)->id;
     $hash = $this->fPass->getHash($userEmail);
     $this->fPass->sendHashToDB($userEmail, $hash);
     $siteName = MG::getOption('sitename');
     $link = '<a href="' . SITE . '/registration?sec=' . $hash . '&id=' . $userId . '" target="blank">' . SITE . '/registration?sec=' . $hash . '&id=' . $userId . '</a>';
     $paramToMail = array('siteName' => $siteName, 'userEmail' => $userEmail, 'link' => $link);
     $message = MG::layoutManager('email_registry', $paramToMail);
     $emailData = array('nameFrom' => $siteName, 'emailFrom' => MG::getSetting('noReplyEmail'), 'nameTo' => 'Пользователю сайта ' . $siteName, 'emailTo' => $userEmail, 'subject' => 'Активация пользователя на сайте ' . $siteName, 'body' => $message, 'html' => true);
     $this->fPass->sendUrlToEmail($emailData);
 }
Example #8
0
 /**
  * Метод отправки письма администратору с сcылкой для отмены блокировки авторизации .
  * @param type $unlockCode
  * @return void 
  */
 private function sendUnlockMail($unlockCode)
 {
     $link = '<a href="' . SITE . '/enter?unlock=' . $unlockCode . '" target="blank">' . SITE . '/enter?unlock=' . $unlockCode . '</a>';
     $siteName = MG::getOption('sitename');
     $paramToMail = array('siteName' => $siteName, 'link' => $link);
     $message = MG::layoutManager('email_unclockauth', $paramToMail);
     $emailData = array('nameFrom' => $siteName, 'emailFrom' => MG::getSetting('noReplyEmail'), 'nameTo' => 'Администратору сайтй ' . $siteName, 'emailTo' => MG::getSetting('adminEmail'), 'subject' => 'Подбор паролей на сайте ' . $siteName . ' предотвращен!', 'body' => $message, 'html' => true);
     if (Mailer::sendMimeMail($emailData)) {
         return true;
     }
     return false;
 }
Example #9
0
 /**
  * Возвращает закэшированное горизонтальное меню категорий.
  */
 public function getCategoriesHorHTML()
 {
     $result = Storage::get(md5('getCategoriesHorHTML'));
     if ($result == null) {
         $category = $this->getHierarchyCategory();
         $result = MG::layoutManager('layout_horizontmenu', array('categories' => $category));
         if (MG::getSetting("enabledSiteEditor") == "false") {
             Storage::save(md5('getCategoriesHorHTML'), $result);
         }
     }
     $args = func_get_args();
     return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $result, $args);
 }