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'] : "Если вы забыли пароль от личного кабинета, его модно восстановить с помощью формы восстановления паролей."); }
private function sendMail() { $msg = ''; foreach ($_POST as $k => $v) { $msg .= '<b>' . $k . ':' . '</b> ' . htmlspecialchars($v) . '<br>'; } $msg .= "<b>Отвечать на письмо не нужно</b>"; $siteName = MG::getOption('sitename'); return Mailer::sendMimeMail(array('nameFrom' => $siteName, 'emailFrom' => MG::getSetting('noReplyEmail'), 'nameTo' => 'Администратору сайта ' . $siteName, 'emailTo' => MG::getOption('adminEmail'), 'subject' => 'Форма обратного звонка ' . $siteName, 'body' => $msg, 'html' => true)); }
private function getComments() { $result = array(); // Если запрос был со стороны сайта выполняется первая ветка условия. Иначе - вторая. if (isset($_POST['showComments']) && isset($_POST['uri'])) { $uri = explode('/', $_POST['uri']); if (!empty($uri[1])) { unset($uri[0]); $uri = implode('/', $uri); } else { $uri = $uri[0]; } // Запрос для генерации блока пагинации $sql = "\n\t\t\t\tSELECT id, name, comment, UNIX_TIMESTAMP(date) as date\n\t\t\t\tFROM `comments` \n\t\t\t\tWHERE uri = " . DB::quote($uri) . " AND approved = '1'\n\t\t\t\tORDER BY `id` DESC"; $res = DB::query($sql); //Получаем блок пагинации if ($_POST["page"]) { $page = $_POST["page"]; } //если был произведен запрос другой страницы, то присваиваем переменной новый индекс $navigator = new Navigator($sql, $page, MG::getOption('countPrintRowsComments')); //определяем класс $pagination = $navigator->getPager('forAjax'); /* Получаем непосредственно комментарии. Если была запрошена не первая страница комментариев, выполняем вторую ветку условия. */ if (empty($_POST['page'])) { $sql = "\n\t\t\t\tSELECT id, name, comment, UNIX_TIMESTAMP(date) as date\n\t\t\t\tFROM `comments` \n\t\t\t\tWHERE uri = " . DB::quote($uri) . " AND approved = '1'\n\t\t\t\tORDER BY `id` DESC\n\t\t\t\tLIMIT 0, " . MG::getOption('countPrintRowsComments'); $res = DB::query($sql); } else { $start = ($_POST['page'] - 1) * MG::getOption('countPrintRowsComments'); $amount = MG::getOption('countPrintRowsComments'); $sql = "\n\t\t\t\tSELECT id, name, comment, UNIX_TIMESTAMP(date) as date\n\t\t\t\tFROM `comments` \n\t\t\t\tWHERE uri = " . DB::quote($uri) . " AND approved = '1'\n\t\t\t\tORDER BY `id` DESC\n\t\t\t\tLIMIT " . $start . ", " . $amount; $res = DB::query($sql); } while ($row = DB::fetchAssoc($res)) { $row['date'] = date('d.m.Y H:i', $row['date']); $result['comments'][] = $row; } $result['pagination'] = $pagination; echo json_encode($result); exit; } else { $sql = "\n\t\t\t\tSELECT id, name, comment, date\n\t\t\t\tFROM `comments`\n\t\t\t\tORDER BY date DESC"; $res = DB::query($sql); while ($row = DB::fetchAssoc($res)) { $row['date'] = date('d.m.Y H:i', $row['date']); $result[$row['id']] = $row; } return $result; } }
/** * Сохраняет опции плагина * * @return boolean */ public function saveBaseOption() { $this->messageSucces = $this->lang['SAVE_BASE']; $this->messageError = $this->lang['NOT_SAVE_BASE']; if (!empty($_POST['data'])) { @($oldData = unserialize(stripslashes(MG::getOption('pozvonimOption')))); $oldData = is_array($oldData) ? $oldData : array(); $data = $_POST['data']; if (isset($data['reset'])) { $data = unserialize(stripslashes(MG::getOption('pozvonimOption'))); if (is_array($data)) { unset($data['id']); MG::setOption(array('option' => 'pozvonimOption', 'value' => addslashes(serialize($data)))); } $this->removeShortCode(); $this->messageSucces = 'reload'; return true; } if (isset($data['code']) && !empty($data['code'])) { $data['token'] = $oldData['token']; if (!preg_match('/\\/([a-z0-9]{32})\\/connect/iu', $data['code'], $code)) { $this->messageError = $this->lang['BAD_CODE']; return false; } $code = $code[1]; $data['key'] = $code; MG::setOption(array('option' => 'pozvonimOption', 'value' => addslashes(serialize($data)))); $this->messageSucces = $this->lang['CODE_SAVED']; $this->installShortCode(); return true; } if ($data = $this->valid($data)) { if (isset($data['code'])) { unset($data['code']); } MG::setOption(array('option' => 'pozvonimOption', 'value' => addslashes(serialize($data)))); if ($data = $this->register($data)) { if (isset($data['code'])) { unset($data['code']); } MG::setOption(array('option' => 'pozvonimOption', 'value' => addslashes(serialize($data)))); $this->messageSucces = 'reload'; } else { $this->messageError = $this->apiError ? $this->apiError : $this->lang['EMAIL_EXIST']; return false; } } else { return false; } } return true; }
function __construct($x, $kop = true, $currencyString = ' рублей', $kopShort = 'коп.') { $this->kopShort = $kopShort; $this->currencyString = $currencyString; $propertyOrder = MG::getOption('propertyOrder'); $propertyOrder = stripslashes($propertyOrder); $propertyOrder = unserialize($propertyOrder); $rankUser = explode(",", $propertyOrder["currency"]); if (count($rankUser) == 3) { $this->rank[1] = $rankUser; } $this->num = $this->prepare($x); $this->test(); $this->rub($kop); }
public function __construct($ckeditMode = true) { include 'mg-admin/locales/' . MG::getOption('languageLocale') . '.php'; $this->lang = $lang; if ($ckeditMode) { $uploaddir = 'uploads'; $arrData = $this->addImage(); $msg = $arrData['msg']; if ($arrData['status'] == "error") { echo '<script type="text/javascript">window.parent.CKEDITOR.tools.callFunction(' . $_REQUEST['CKEditorFuncNum'] . ', "' . $full_path . '","' . $arrData['msg'] . '" );</script>'; } else { $full_path = SITE . '/uploads/' . $arrData['actualImageName']; echo '<script type="text/javascript">window.parent.CKEDITOR.tools.callFunction("' . $_REQUEST['CKEditorFuncNum'] . '", "' . $full_path . '","' . $arrData['msg'] . '" );</script>'; } } }
static function createTable() { DB::query("\n\t CREATE TABLE IF NOT EXISTS `" . PREFIX . "call_back` (\n\t `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Порядковый номер записи',\n\t\t `name` text NOT NULL COMMENT 'Имя',\n\t `phone` text NOT NULL COMMENT 'Телефон', \n\t `time` timestamp DEFAULT NOW() COMMENT 'Время добавления заявки',\n\t `invisible` int(1) NOT NULL COMMENT 'Просмотр заявки',\n\t `comment` text NULL COMMENT 'Комментарий к заявке',\n\t PRIMARY KEY (`id`)\n\t ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); DB::query("\n\t \tCREATE TABLE IF NOT EXISTS `" . PREFIX . "call_back_config` (\n\t \t`id` int(11) NOT NULL AUTO_INCREMENT ,\n\t \t`send_mail` ENUM('0','1') DEFAULT '0',\n\t \t`email_address` VARCHAR(200) NOT NULL DEFAULT '" . MG::getOption('adminEmail') . "',\n\t \tPRIMARY KEY (`id`)\n\t ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;"); $seeds = DB::query("SELECT * FROM `" . PREFIX . 'call_back_config' . "`"); $numb = DB::numRows($seeds); if ($numb == 0) { DB::query("\n\t \t\tINSERT INTO `" . PREFIX . 'call_back_config' . "` VALUES(NULL, '0', '" . MG::getOption('adminEmail') . "')\n\t \t"); } // Был ли плагин активирован ранее? $res = DB::query("\n\t \tSELECT id\n\t \tFROM `" . PREFIX . "call_back`\n\t \tWHERE id in (1,2,3)\n\t "); // Если плагин впервые активирован, то задаются настройки по умолчанию if (!DB::numRows($res)) { $array = array('countRows' => '10'); MG::setOption(array('option' => 'call-backOption', 'value' => addslashes(serialize($array)))); } }
<?php mgAddMeta('<link type="text/css" href="' . SCRIPT . 'standard/css/layout.cart.css" rel="stylesheet"/>'); mgAddMeta('<script type="text/javascript" src="' . PATH_SITE_TEMPLATE . '/js/layout.cart.js"></script>'); ?> <?php if (MG::getOption('popupCart') == 'true') { ?> <?php mgAddMeta('<link type="text/css" href="' . SCRIPT . 'standard/css/layout.fake.cart.css" rel="stylesheet"/>'); ?> <div class="mg-fake-cart" style="display: none;"> <a class="mg-close-fake-cart mg-close-popup" href="javascript:void(0);"></a> <div class="popup-header"> <h2>Корзина товаров</h2> </div> <div class="popup-body"> <table class="small-cart-table"> <?php if (!empty($data['cartData']['dataCart'])) { ?> <?php foreach ($data['cartData']['dataCart'] as $item) { ?> <tr> <td class="small-cart-img"> <a href="<?php echo SITE . "/" . (isset($item['category_url']) ? $item['category_url'] : 'catalog/') . $item['product_url'];
/** * Метод отправки письма для активации пользователя. * @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); }
*/ $lang = MG::get('lang'); $model = new Models_Order(); $listStatus['null'] = 'Не выбрано'; $ls = Models_Order::$status; foreach ($ls as $key => $value) { $listStatus[$key] = $lang[$value]; $listStatusTemp[$key] = $lang[$value]; } $this->statusList = $listStatusTemp; $listStatus['null'] = 'Не выбрано'; $dateFilterValues = array('default' => $lang['FILTER_ORDER_START_DEFAULT'], 'month' => $lang['FILTER_ORDER_START_MOUNTH'], 'year' => $lang['FILTER_ORDER_START_YEAR']); $maxPrice = $model->getMaxPrice(); $minPrice = $model->getMinPrice(); $maxDate = $model->getMaxDate(); $propertyOrder = unserialize(stripslashes(MG::getOption('propertyOrder'))); if (!empty($propertyOrder['default_date_filter'])) { switch ($propertyOrder['default_date_filter']) { case 'month': $minDate = date('Y-m') . '-01 00:00:00'; break; case 'year': $minDate = date('Y') . '-01-01 00:00:00'; break; default: $minDate = $model->getMinDate(); } } else { $minDate = $model->getMinDate(); } $property = array('id' => array('type' => 'text', 'label' => $lang['EDIT_ORDER_13'], 'value' => !empty($_POST['id']) ? $_POST['id'] : null), 'number' => array('type' => 'text', 'label' => $lang['EDIT_ORDER_16'], 'value' => !empty($_POST['number']) ? $_POST['number'] : null), 'user_email' => array('type' => 'text', 'label' => 'email', 'value' => !empty($_POST['user_email']) ? $_POST['user_email'] : null), 'name_buyer' => array('type' => 'text', 'special' => 'like', 'label' => $lang['ORDER_BUYER'], 'value' => !empty($_POST['name_buyer'][0]) ? $_POST['name_buyer'][0] : null), 'status_id' => array('type' => 'select', 'option' => $listStatus, 'selected' => !empty($_POST['status_id']) || $_POST['status_id'] === '0' ? $_POST['status_id'] : 'null', 'label' => $lang['ORDER_STATUS']), 'summ' => array('type' => 'beetwen', 'label1' => $lang['EDIT_ORDER_12'], 'label2' => $lang['FILTR_PRICE4'], 'min' => !empty($_POST['summ'][0]) ? $_POST['summ'][0] : $minPrice, 'max' => !empty($_POST['summ'][1]) ? $_POST['summ'][1] : $maxPrice, 'factMin' => $minPrice, 'factMax' => $maxPrice, 'class' => 'price numericProtection'), 'add_date' => array('type' => 'beetwen', 'label1' => $lang['FILTR_PRICE5'], 'label2' => $lang['FILTR_PRICE6'], 'min' => !empty($_POST['add_date'][0]) ? $_POST['add_date'][0] : $minDate, 'max' => !empty($_POST['add_date'][1]) ? $_POST['add_date'][1] : $maxDate, 'factMin' => '', 'factMax' => '', 'special' => 'date', 'class' => 'date'), 'sorter' => array('type' => 'hidden', 'label' => 'сортировка по полю', 'value' => !empty($_POST['sorter']) ? $_POST['sorter'] : null));
static function getPanelCode($place = 0) { /* * Выводит в форму html для генерации виджета */ $redirect_uri = urlencode(SITE . '/socialauth?backurl=' . urlencode(ULoginAuth::ulogin_get_current_page_url())); $ulogin_default_options = array(); $ulogin_default_options['display'] = 'small'; $ulogin_default_options['providers'] = 'vkontakte,odnoklassniki,mailru,facebook'; $ulogin_default_options['fields'] = 'first_name,last_name,email,photo,photo_big'; $ulogin_default_options['optional'] = 'sex,bdate,country,city'; $ulogin_default_options['hidden'] = 'other'; $ulogin_options = array(); if (!URL::isSection('mg-admin')) { $option = MG::getSetting('uLoginSettings'); } else { $option = MG::getOption('uLoginSettings'); } $option = stripslashes($option); $options = unserialize($option); $ulogin_options['ulogin_id1'] = $options['uloginid1']; $ulogin_options['ulogin_id2'] = $options['uloginid2']; $default_panel = false; switch ($place) { case 0: $ulogin_id = $ulogin_options['ulogin_id1']; break; case 1: $ulogin_id = $ulogin_options['ulogin_id2']; break; default: $ulogin_id = $ulogin_options['ulogin_id1']; } if (empty($ulogin_id)) { $ul_options = $ulogin_default_options; $default_panel = true; } $panel = ''; $panel .= '<div class="ulogin_panel"'; if ($default_panel) { $ul_options['redirect_uri'] = $redirect_uri; unset($ul_options['label']); $x_ulogin_params = ''; foreach ($ul_options as $key => $value) { $x_ulogin_params .= $key . '=' . $value . ';'; } if ($ul_options['display'] != 'window') { $panel .= ' data-ulogin="******"></div>'; } else { $panel .= ' data-ulogin="******" href="#"><img src="https://ulogin.ru/img/button.png" width=187 height=30 alt="МультиВход"/></div>'; } } else { $panel .= ' data-uloginid="' . $ulogin_id . '" data-ulogin="******"></div>'; } $panel = '<div class="ulogin_block place' . $place . '">' . $panel . '</div><div style="clear:both"></div>'; return $panel; }
/** * Аутентифицирует данные, с помощью криптографического алгоритма * @param $email - емайл. * @param $pass - пароль. * @return bool */ public static function auth($email, $pass, $cap) { // проверка заблокирована ли авторизация, if (isset($_SESSION['blockTimeStart'])) { $period = time() - $_SESSION['blockTimeStart']; if ($period < 15 * 60) { return false; } else { unset($_SESSION['loginAttempt']); unset($_SESSION['blockTimeStart']); } } $result = DB::query(' SELECT * FROM `' . PREFIX . 'user` WHERE email = "%s" ', $email, $pass); // если был введен код капчи, if ($cap && ($cap == '' || strtolower($cap) != strtolower($_SESSION['capcha']))) { $_SESSION['loginAttempt'] += 1; return false; } if ($row = DB::fetchObject($result)) { if ($row->pass == crypt($pass, $row->pass)) { self::$_instance->auth = $row; $_SESSION['userAuthDomain'] = $_SERVER['SERVER_NAME']; $_SESSION['user'] = self::$_instance->auth; $_SESSION['loginAttempt'] = ''; return true; } } // если в настройках блокировка отменена, то количество попыток не суммируется. $lockAuth = MG::getOption('lockAuthorization') == 'false' ? false : true; if ($lockAuth) { if (!isset($_SESSION['loginAttempt'])) { $_SESSION['loginAttempt'] = 0; } $_SESSION['loginAttempt'] += 1; } return false; }
/** * Выводит на экран печатную форму для печати заказа в админке. * @param int $id - id заказа. * @param boolean $sign использовать ли подпись. * @return array */ public function printOrder($id, $sign = true) { $orderInfo = $this->getOrder('id=' . DB::quote($id, true)); $order = $orderInfo[$id]; $perOrders = unserialize(stripslashes($order['order_content'])); $currency = MG::getSetting('currency'); $totSumm = $order['summ'] + $order['cost']; $paymentArray = $this->getPaymentMethod($order['payment_id']); $order['name'] = $paymentArray['name']; $propertyOrder = MG::getOption('propertyOrder'); $propertyOrder = stripslashes($propertyOrder); $propertyOrder = unserialize($propertyOrder); $paramArray = $this->getParamArray(7, $order['id'], $order['summ']); foreach ($paramArray as $k => $field) { $paramArray[$k]['value'] = htmlentities($paramArray[$k]['value'], ENT_QUOTES, "UTF-8"); } $customer = unserialize(stripslashes($order['yur_info'])); $customerInfo = $customer['inn'] . ', ' . $customer['kpp'] . ', ' . $customer['nameyur'] . ', ' . $customer['adress'] . ', ' . $customer['bank'] . ', ' . $customer['bik'] . ', ' . $customer['ks'] . ', ' . $customer['rs'] . ', ' . $customer['nameyur']; //var_dump(json_decode($order['yur_info'])); //viewData(json_decode(stripslashes($order['yur_info']))); $ylico = false; if (empty($customer['inn']) || empty($customer['bik'])) { $fizlico = true; $userInfo = USER::getUserInfoByEmail($order['user_email']); $customerInfo = $order['name_buyer'] . ',' . $order['address'] . ', тел. ' . $order['phone'] . ', ' . $order['email']; } // $customerInfo = '0'; $customerInfo = htmlspecialchars($customerInfo); $data['propertyOrder'] = $propertyOrder; $data['order'] = $order; $data['customerInfo'] = $customerInfo; $data['perOrders'] = $perOrders; $data['currency'] = $currency; $html = MG::layoutManager('print_order', $data); return $html; }
/** * Отключает публичную часть сайта. Обычно требуется для внесения изменений администратором. * @return bool */ public function downTime() { $downtime = MG::getOption('downtime'); if ('Y' == $downtime) { $activ = 'N'; } else { $activ = 'Y'; } $res = DB::query(' UPDATE `' . PREFIX . 'setting` SET `value` = "' . $activ . '" WHERE `option` = "downtime" '); if ($res) { return true; } }
/** * Выводит на экран печатную форму для печати заказа в админке. * @param int $id - id заказа. * @param boolean $sign использовать ли подпись. * @return array */ public function printOrder($id, $sign = true) { $orderInfo = $this->getOrder('id=' . DB::quote($id, true)); $order = $orderInfo[$id]; $perOrders = unserialize(stripslashes($order['order_content'])); $currency = MG::getSetting('currency'); $totSumm = $order['summ'] + $order['cost']; $paymentArray = $this->getPaymentMethod($order['payment_id']); $order['name'] = $paymentArray['name']; $propertyOrder = MG::getOption('propertyOrder'); $propertyOrder = stripslashes($propertyOrder); $propertyOrder = unserialize($propertyOrder); $paramArray = $this->getParamArray(7, $order['id'], $order['summ']); foreach ($paramArray as $k => $field) { $paramArray[$k]['value'] = htmlentities($paramArray[$k]['value'], ENT_QUOTES, "UTF-8"); } $customer = unserialize(stripslashes($order['yur_info'])); $customerInfo = $customer['inn'] . ', ' . $customer['kpp'] . ', ' . $customer['nameyur'] . ', ' . $customer['adress'] . ', ' . $customer['bank'] . ', ' . $customer['bik'] . ', ' . $customer['ks'] . ', ' . $customer['rs'] . ', ' . $customer['nameyur']; $ylico = false; if (empty($order['yur_info'])) { $fizlico = true; $userInfo = USER::getUserInfoByEmail($order['user_email']); $customerInfo = $userInfo->name . ' ' . $userInfo->sname . ',' . $order['address'] . ', тел. ' . $order['phone'] . ', ' . $order['email']; } $html = ' <style type="text/css"> .form-wrapper table{border-collapse: collapse;width:100%;color:#000;} .form-wrapper small-table{border-collapse: separate;} .form-wrapper table tr th{padding: 10px;border: 1px solid #000;background:#FFFFE0;} .form-wrapper .who-pay tr td{padding: 5px;} .form-wrapper .who-pay tr td.name{width: 110px;} .form-wrapper .who-pay{margin: 10px 0 0 0;} .form-wrapper table tr td{padding: 5px;border: 1px solid #000;} .form-wrapper table tr td.bottom{border: none;text-align: right;} .form-wrapper .order-total{margin: 10px 0 0 0;color:#000;} .form-wrapper .title{text-align:center;font-size:24px;color:#000;} .form-wrapper .total-list{list-style:none;} .form-wrapper .no-border, .form-wrapper .who-pay tr td, .form-wrapper .small-table tr td{border:none;} .form-wrapper .colspan4{border:none;text-align:right;} .form-wrapper .rowspan2{vertical-align:bottom;} .form-wrapper .nowrap{white-space:nowrap;} .yur-table td {height:30px;} .form-table td {height:30px; vertical-align: baseline;} .p {height:30px; vertical-align: baseline;} </style> <div class="form-wrapper"> <strong>' . $propertyOrder['nameyur'] . '</strong><br> ' . $propertyOrder['adress'] . ' <br/> <br/> <table class="yur-table"> <tr> <td> ИНН ' . $propertyOrder['inn'] . ' </td> <td>КПП ' . $propertyOrder['kpp'] . '</td> <td rowspan="2" class="rowspan2 nowrap" valign="middle">Сч. №</td> <td rowspan="2" class="rowspan2" valign="bottom">' . $propertyOrder['rs'] . '</td> </tr> <tr> <td colspan="2">Получатель <br>' . $propertyOrder['nameyur'] . '</td> </tr> <tr> <td colspan="2" rowspan="2">Банк получателя <br>' . $propertyOrder['bank'] . '</td> <td>БИК</td> <td>' . $propertyOrder['bik'] . '</td> </tr> <tr> <td class="nowrap">Сч. №</td> <td>' . $propertyOrder['ks'] . '</td> </tr> </table> <h1 class="title"> Счет <strong>№ ' . $propertyOrder['prefix'] . $order['id'] . '</strong> от ' . date('d.m.Y', strtotime($order['add_date'])) . ' </h1> <table class="who-pay"> <tr> <td class="name" width="100">Плательщик:</td> <td width="760">' . $customerInfo . '</td> </tr> </table> <br /> <br /> <table class="form-table"> <tr> <th bgcolor="#FFFFE0" width="40">№</th> <th bgcolor="#FFFFE0" width="327">Товар</th> <th bgcolor="#FFFFE0" >Артикул</th> <th bgcolor="#FFFFE0" >Цена</th> <th bgcolor="#FFFFE0" width="70">Кол-во</th> <th bgcolor="#FFFFE0" width="50">НДС</th> <th bgcolor="#FFFFE0" >Сумма</th> </tr>'; $i = 1; $ndsPercent = is_numeric($propertyOrder['nds']) ? $propertyOrder['nds'] : 0; $totalNds = 0; if ($ndsPercent === 0) { $totalNds = '-'; } if (!empty($perOrders)) { foreach ($perOrders as $perOrder) { if ($totalNds !== '-') { $marginNds = $perOrder['price'] * $ndsPercent / (100 + $ndsPercent); $perOrder['price'] -= $marginNds; $totalNds += $marginNds; } $html .= '<tr> <td style="padding: 5px;">' . $i++ . '</td> <td cellpadding="5"> ' . $perOrder['name'] . ' ' . htmlspecialchars_decode(str_replace('&', '&', $perOrder['property'])) . ' </td> <td >' . $perOrder['code'] . '</td> <td >' . sprintf('%2.2f', $perOrder['price']) . ' ' . $currency . '</td> <td >' . $perOrder['count'] . ' шт.</td> <td >' . ($propertyOrder['nds'] >= 0 && is_numeric($propertyOrder['nds']) ? $propertyOrder['nds'] . '%' : '---') . '</td> <td >' . sprintf('%2.2f', $perOrder['price'] * $perOrder['count']) . ' ' . $currency . '</td> </tr>'; } } $html .= ' <tr> <td colspan="6" class="colspan4"> <strong>Итого без НДС:</strong> </td> <td>' . sprintf('%2.2f', $order['summ'] - $totalNds) . ' ' . $currency . '</td> </tr> <tr> <td colspan="6" class="colspan4"> <strong>Итого НДС:</strong> </td>'; if ($totalNds !== '-') { $html .= '<td>' . sprintf('%2.2f', $totalNds) . ' ' . $currency . '</td>'; } else { $html .= '<td>---</td>'; } $html .= '</tr> <tr> <td colspan="6" class="colspan4"> <strong>Доставка:</strong> </td>'; $html .= '<td><strong>' . $order['delivery_cost'] . ' ' . $currency . '</strong></td>'; $totalsumm = $order['summ'] + $order['delivery_cost']; $html .= '</tr> <tr> <td colspan="6" class="colspan4"> <strong>Всего к оплате:</strong> </td> <td><strong>' . sprintf('%2.2f', $totalsumm) . ' ' . $currency . '</strong></td> </tr> </table> <p>Всего наименований ' . $i . ', на сумму ' . $totalsumm . ' ' . $currency . '</p> '; include 'int2str.php'; $sumToWord = new int2str($totalsumm); $sumToWord->ucfirst($sumToWord->rub); $html .= '<p><strong style="font-size: 18px;">' . $sumToWord->ucfirst($sumToWord->rub) . '</strong></p> <div class="clear"> </div> </div>'; $imgSing = ''; if (file_exists($propertyOrder['sing'])) { $imgSing = '<img src="' . SITE . '/' . $propertyOrder['sing'] . '">'; } else { if (file_exists('uploads/sing.jpg')) { $imgSing = '<img src="' . SITE . '/uploads/sing.jpg">'; } } $imgStamp = ''; if (file_exists($propertyOrder['stamp'])) { $imgStamp = '<img src="' . SITE . '/' . $propertyOrder['stamp'] . '">'; } else { if (file_exists('uploads/stamp.jpg')) { $imgStamp = '<img src="' . SITE . '/uploads/stamp.jpg">'; } } if (empty($propertyOrder['usedsing'])) { $imgSing = ''; $imgStamp = ''; } $html .= ' <br /> <br /> <table> <tr> <td width="240"></td> <td width="10"></td> <td width="140" align="center">' . $imgSing . '</td> <td width="30"></td> <td width="240"></td> </tr> <tr> <td width="240">Генеральный директор</td> <td width="10"></td> <td width="140"></td> <td width="30"></td> <td width="240" align="center">/' . $propertyOrder['general'] . '/</td> </tr> <tr> <td width="240"></td> <td width="10"></td> <td width="140"><hr> подпись</td> <td width="30"></td> <td width="240"><hr><strong style="font-size: 10px;"> расшифровка подписи</strong></td> </tr> <tr> <td width="240"></td> <td width="10"></td> <td width="140"></td> <td width="30"></td> <td width="240"></td> </tr> <tr> <td width="240"></td> <td width="10"></td> <td width="140"></td> <td width="30"></td> <td width="240">М.П.' . $imgStamp . '</td> </tr> <tr> </tr> </table> '; return $html; }
?> </a> <?php } ?> </li> <li> <span class="error-key link-fail" style="display: <?php echo $updataDisabled != "disabled" ? 'none' : 'block'; ?> "><?php echo $lang['SETTING_LOCALE_1']; ?> </span> <?php $dateActivate = MG::getOption('dateActivateKey'); if ($dateActivate != '0000-00-00 00:00:00') { $now_date = strtotime($dateActivate); $future_date = strtotime(date("Y-m-d")); $dayActivate = 365 - floor(($future_date - $now_date) / 86400); if ($dayActivate <= 0) { $dayActivate = 0; $extend = " [<a href='http://moguta.ru/extendcenter'>Продлить</a>]"; } $activeDate = " " . $lang['SETTING_BASE_4'] . " <span class='key-days-number'>" . $dayActivate . " " . $lang['SETTING_BASE_5'] . "</span>" . $extend; } else { $activeDate = " <span class='link-result'>" . $lang['SETTING_LOCALE_2'] . "</span>"; } ?> <?php echo $activeDate;
<li><a href="">Акции</a></li> <li><a href="">Карта сайта</a></li> </ul> </div> <div class="left-big"> <p class="title">О нас</p> <?php echo TplInfo::getOption('aboutFooter'); ?> </div> </div><!-- !div.footer-wrapper --> </div><!-- !div#footer-top-bg --> <div id="footer-bottom-bg"> <div id="copyright-info" class="footer-wrapper"> <p><span>© 2014</span> <?php echo MG::getOption('sitename'); ?> <span><?php echo TplInfo::getOption('slogan'); ?> </span></p> </div> </div><!-- !#footer-bottom-bg --> </div><!-- !div#footer --> <div id="bottom-basket" class="static-basket"> <div class="title clearfix"> <span class="left">Корзина</span> <span class="right count">цена</span> <span class="right count-static"><?php echo $data['cartCount'] ? $data['cartCount'] : 0; ?>
$this->itemsCount = $navigator->getNumRowsSql(); $sql = "\r\n SELECT SUM(o.summ+o.delivery_cost) as totalsum FROM `" . PREFIX . "order` as o\r\n LEFT JOIN `" . PREFIX . "user` as u ON o.user_email = u.email\r\n WHERE " . $userFilter . "\r\n"; $res = DB::query($sql); if ($row = DB::fetchAssoc($res)) { $totalSumm = $row['totalsum']; } $this->totalSumm = $totalSumm; // Десериализация строки в массив (состав заказа) foreach ($orders as $k => $order) { $orders[$k]['order_content'] = unserialize(stripslashes($order['order_content'])); if ($orders[$k]['number'] == '') { $orders[$k]['number'] = $orders[$k]['id']; DB::query("UPDATE `" . PREFIX . "order` SET `number`= " . DB::quote($orders[$k]['number']) . " WHERE `id`=" . DB::quote($orders[$k]['id']) . ""); } } $propertyOrder = MG::getOption('propertyOrder'); $propertyOrder = stripslashes($propertyOrder); $propertyOrder = unserialize($propertyOrder); $product = new Models_Product(); $exampleName = $product->getProductByUserFilter(' 1=1 LIMIT 0,1'); $ids = array_keys($exampleName); $this->exampleName = $exampleName[$ids[0]]['title']; $this->assocStatus = Models_Order::$status; $this->assocStatusClass = array('get-paid', 'get-paid', 'paid', 'get-paid', 'dont-paid', 'paid', 'get-paid'); // цветная подсветка статусов $model = new Models_Order(); $this->assocDelivery = $model->getListDelivery(); $this->assocPay = $model->getListPayment(); $this->orders = $orders; $this->pager = $navigator->getPager('forAjax'); $this->orderCount = $model->getOrderCount();
/** * Обработчик шотркода вида [slider-action] * выполняется когда при генерации страницы встречается [slider-action] */ static function sliderAction() { if (!URL::isSection('mg-admin')) { $option = MG::getSetting('sliderActionOption'); } else { $option = MG::getOption('sliderActionOption'); } $option = stripslashes($option); $options = unserialize($option); $options["width"] = $options["width"] ? $options["width"] . 'px' : '100%'; $options["height"] = $options["height"] ? $options["height"] . 'px' : 'auto'; if ($options["position"] == 'right') { $options["position"] = "float:right;"; } if ($options["position"] == 'left') { $options["position"] = "float:left;"; } if ($options["position"] == 'center') { $options["position"] = "margin: 0 auto;"; } $slides = self::getEntity(); $html = '<div class="m-p-slider-wrapper" style="width:' . $options["width"] . '; height:' . $options["height"] . '; ' . $options["position"] . '">'; if ($options["titleslider"] != "") { $html .= '<h2>' . $options["titleslider"] . '</h2>'; } $html .= '<div class="m-p-slider-contain">'; foreach ($slides as $slide) { if (!$slide['invisible']) { continue; } if ($slide["type"] == "img" && !empty($slide["href"])) { $slide["value"] = '<a href="' . $slide["href"] . '">' . $slide["value"] . '</a>'; } $html .= "<div class='m-p-slide-unit'>" . $slide["value"]; if ($options["nameaction"] == 'true') { $html .= "<div class='nameaction'>" . $slide["nameaction"] . "</div>"; } $html .= "</div>"; } $html .= "</div>\r\n\t\t\t</div>\r\n <div class='clear fix-slider-block' style='display:inline-block'></div>\r\n "; $options["pause"] = $options["pause"] ? $options["pause"] : '1500'; $options["mode"] = $options["mode"] ? $options["mode"] : 'horizontal'; $options["speed"] = $options["speed"] ? $options["speed"] : '3000'; $html .= ' <script type="text/javascript"> $(document).ready(function() { $(".m-p-slider-contain").bxSlider({ minSlides: 1, maxSlides: 1, pager:true, adaptiveHeight: false, auto:true, pause: ' . $options["pause"] . ', useCSS: false, speed:' . $options["speed"] . ', mode: "' . $options["mode"] . '", }); }); </script> '; $html .= '<div class="after-slider-content"></div>'; return $html; }
/** * Обработчик шотркода вида [pozvonim] * выполняется когда при генерации страницы встречается [pozvonim] */ static function handleShortCode() { if (!URL::isSection('mg-admin')) { $option = MG::getSetting('pozvonimOption'); } else { $option = MG::getOption('pozvonimOption'); } // преобразование строки опций в массив $option = stripslashes($option); $options = unserialize($option); if (isset($options['key']) && !empty($options['key'])) { return '<script crossorigin="anonymous" async type="text/javascript" src="//api.pozvonim.com/widget/callback/v3/' . $options['key'] . '/connect" id="check-code-pozvonim" charset="UTF-8"></script>'; } return ''; }
/** * Возвращает значение для запрошенной опции (настройки). * Имеет два режима: * 1. getOption('optionName') - вернет только значение; * 2. getOption('optionName' , true) - вернет всю информацию об опции в * виде массива. * <code> * $data = array( * option => 'идентификатор опции например: sitename' * value => 'значение опции например: moguta.ru' * active => 'в будущем будет отвечать за автоподгрузку опций в кеш Y/N' * name => 'Метка для опции например: Имя сайта' * desc => 'Описание опции: Настройа задает имя для сайта' * ) * </code> * @return void */ function getOption($option, $data = false) { return MG::getOption($option, $data); }
/** * Метод отправки письма администратору с с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; }
public static function preDownload($version) { $post = 'step=1' . '&sName=' . $_SERVER['SERVER_NAME'] . '&sIP=' . ($_SERVER['SERVER_ADDR'] == "::1" ? '127.0.0.1' : $_SERVER['SERVER_ADDR']) . '&sKey=' . MG::getOption('licenceKey') . '&ver=' . $version; $res = self::sendCurl(self::$_updataServer . '/updataserver', $post); try { $data = json_decode($res, true); } catch (Exception $exc) { $data['msg'] = $exc; $data['status'] = 'error'; } MG::setOption(array('option' => 'dateActivateKey ', 'value' => $data['dateActivateKey'])); if ('succes' == $data['status']) { $file = self::updataSystem($data['msg'], $version); if (!file_exists($file)) { $data['msg'] = 'Обновление не удалось!'; $data['status'] = 'error'; } } return $data; }
$groups = array('STNG_GROUP_1' => array('sitename', 'adminEmail', 'noReplyEmail', 'templateName', 'currencyShopIso', 'priceFormat', 'phoneMask', 'widgetCode'), 'STNG_GROUP_2' => array('horizontMenu', 'actionInCatalog', 'printRemInfo', 'printProdNullRem', 'printStrProp', 'printCompareButton', 'compareCategory', 'useCaptcha', 'autoRegister', 'printFilterResult', 'lockAuthorization', 'orderNumber', 'popupCart', 'catalogIndex', 'productInSubcat', 'copyrightMoguta', 'picturesCategory', 'requiredFields'), 'STNG_GROUP_3' => array('mainPageIsCatalog', 'countСatalogProduct', 'countNewProduct', 'countRecomProduct', 'countSaleProduct', 'randomProdBlock', 'buttonBuyName', 'buttonMoreName', 'buttonCompareName'), 'STNG_GROUP_4' => array('heightPreview', 'widthPreview', 'heightSmallPreview', 'widthSmallPreview', 'waterMark', 'waterMarkVariants'), 'STNG_GROUP_5' => array('smtp', 'smtpHost', 'smtpLogin', 'smtpPass', 'smtpPort'), 'STNG_GROUP_6' => array('shopName', 'shopPhone', 'shopAddress', 'shopLogo', 'backgroundSite'), 'STNG_GROUP_7' => array('cacheObject', 'cacheMode', 'cacheTime', 'cacheHost', 'cachePort', 'cacheCssJs')); foreach (MG::getSetting('currencyRate') as $key => $val) { $currencySettings[$key]['rate'] = $val; } foreach (MG::getSetting('currencyShort') as $key => $val) { $currencySettings[$key]['short'] = $val; } $this->groups = $groups; $this->data = array('setting-shop' => array('options' => $options, 'templates' => $templates), 'setting-system' => array('options' => array('downtime' => MG::getOption('downtime', true), 'licenceKey' => $licenceKey)), 'setting-template' => array('files' => array('template.php' => array('/template.php', 'Каркас шаблона сайта'), 'functions.php' => array('/functions.php', 'Пользовательские функции'), 'ajaxuser.php' => array('/ajaxuser.php', 'Пользовательская обработка ajax'), '404.php' => array('/404.php', 'Страница с 404 ошибкой'), 'style.css' => array('/css/style.css', 'Стили сайта'), 'script.js' => array('/js/script.js', 'Javascript сайта'), 'cart.php' => array('/views/cart.php', 'Верстка страницы корзины'), 'catalog.php' => array('/views/catalog.php', 'Верстка страницы каталога'), 'enter.php' => array('/views/enter.php', 'Верстка страницы авторизации'), 'feedback.php' => array('/views/feedback.php', 'Верстка страницы обратной связи'), 'forgotpass.php' => array('/views/forgotpass.php', 'Верстка страницы восстановления пароля'), 'index.php' => array('/views/index.php', 'Верстка главной страницы'), 'personal.php' => array('/views/personal.php', 'Верстка личного кабинета'), 'product.php' => array('/views/product.php', 'Верстка карточки товара'), 'registration.php' => array('/views/registration.php', 'Верстка страницы регистрации пользователя'), 'order.php' => array('/views/order.php', 'Верстка страницы оформления заказа')), 'email_layout' => array('email_template.php' => array('/layout/email_template.php', 'Каркас шаблона писем'), 'email_feedback.php' => array('/layout/email_feedback.php', 'Письма с обратной связи'), 'email_forgot.php' => array('/layout/email_forgot.php', 'Письмо восстановления пароля'), 'email_order.php' => array('/layout/email_order.php', 'Письмо оформления заказа'), 'email_registry.php' => array('/layout/email_registry.php', 'Письмо регистрации'), 'email_order_electro.php' => array('/layout/email_order_electro.php', 'Письмо электронных товаров')), 'layout' => array('layout_cart.php' => array('/layout/layout_cart.php', 'Верстка блока с маленькой корзиной'), 'layout_contacts.php' => array('/layout/layout_contacts.php', 'Верстка блока с контактами'), 'layout_related.php' => array('/layout/layout_related.php', 'Верстка блока связанных товаров'), 'layout_search.php' => array('/layout/layout_search.php', 'Верстка блока с поиском'), 'layout_topmenu.php' => array('/layout/layout_topmenu.php', 'Верстка блока с верхним меню'), 'layout_leftmenu.php' => array('/layout/layout_leftmenu.php', 'Верстка блока с левым меню'), 'layout_images.php' => array('/layout/layout_images.php', 'Верстка блока с галерей товара'), 'layout_compare.php' => array('/layout/layout_compare.php', 'Верстка блока сравнений'), 'layout_auth.php' => array('/layout/layout_auth.php', 'Верстка блока с элементами авторизации')), 'print_layout' => array('print_order.php' => array('/layout/print_order.php', 'Верстка PDF счета по заказу'), 'print_qittance.php' => array('/layout/print_qittance.php', 'Верстка квитанции сбербанка'))), 'interface-settings' => array('options' => array('themeColor' => MG::getOption('themeColor', true), 'themeBackground' => MG::getOption('themeBackground', true), 'staticMenu' => MG::getOption('staticMenu', true))), 'paymentMethod-settings' => array('paymentArray' => $paymentArray), 'deliveryMethod-settings' => array('deliveryArray' => $deliveryArray), 'currency-settings' => $currencySettings, 'numericFields' => array('countСatalogProduct', 'countNewProduct', 'countRecomProduct', 'countSaleProduct'), 'checkFields' => array('horizontMenu', 'mainPageIsCatalog', 'actionInCatalog', 'printRemInfo', 'printProdNullRem', 'smtp', 'waterMark', 'printStrProp', 'noneSupportOldTemplate', 'printCompareButton', 'cacheObject', 'randomProdBlock', 'compareCategory', 'useCaptcha', 'autoRegister', 'printFilterResult', 'lockAuthorization', 'orderNumber', 'popupCart', 'catalogIndex', 'productInSubcat', 'copyrightMoguta', 'picturesCategory', 'requiredFields', 'waterMarkVariants', 'cacheCssJs'), 'textFields' => array('widgetCode')); // для отображения текущего шаблона $this->pathTemplate = 'mg-templates' . DIRECTORY_SEPARATOR . MG::getSetting('templateName'); /** * Раздел управления системой * */ $downtime = MG::getOption('downtime'); if ('Y' == $downtime) { $checked = 'checked'; } $this->checked = $checked; if (!($checkLibs = MG::libExists())) { $newVer = Updata::checkUpdata(); preg_match('/Ближайшая версия для обновления:(.*)/', $newVer['msg'], $m); if (!empty($m[1])) { $this->newFirstVersiov = $m[1]; } preg_match('/Последняя версия системы:(.*)/', $newVer['msg'], $m); if (!empty($m[1])) { $this->newLastVersiov = $m[1]; } $this->newVersionMsg = 'none';
/** * Вывод страницы плагина в админке */ static function pagePluginComments() { $lang = PM::plugLocales('comments'); if ($_POST["page"]) { $page = $_POST["page"]; } //если был произведен запрос другой страницы, то присваиваем переменной новый индекс $countPrintRowsComments = MG::getOption('countPrintRowsComments'); $navigator = new Navigator("SELECT * FROM `" . PREFIX . "comments` ORDER BY `id` DESC", $page, $countPrintRowsComments); //определяем класс $comments = $navigator->getRowsSql(); $pagination = $navigator->getPager('forAjax'); // подключаем view для страницы плагина include 'pagePlugin.php'; }
/** * Метод отправки письма для активации пользователя. * @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'); $message = ' Здравствуйте!<br> Вы получили данное письмо так как зарегистрировались на сайте ' . $siteName . ' с логином ' . $userEmail . '.<br> Для активации пользователя и возможности пользоваться личным кабинетом пройдите по ссылке: <a href="' . SITE . '/registration?sec=' . $hash . '&id=' . $userId . '" target="blank">' . SITE . '/registration?sec=' . $hash . '&id=' . $userId . '</a>.<br> Отвечать на данное сообщение не нужно.'; $emailData = array('nameFrom' => $siteName, 'emailFrom' => MG::getSetting('noReplyEmail'), 'nameTo' => 'Пользователю сайта ' . $siteName, 'emailTo' => $userEmail, 'subject' => 'Активация пользователя на сайте ' . $siteName, 'body' => $message, 'html' => true); $this->fPass->sendUrlToEmail($emailData); }