Пример #1
0
 function __construct()
 {
     if (!USER::isAuth() || '1' != USER::getThis()->role) {
         MG::redirect('/');
     }
     $this->data = array('content' => $_POST['content']);
 }
Пример #2
0
/mg-core/script/codemirror/lib/codemirror.css">
<!--[if lte IE 9]>
    <link href="<?php 
echo SITE;
?>
/mg-admin/design/css/ie.css" rel="stylesheet" type="text/css">
    <script type="text/javascript" src="<?php 
echo SITE;
?>
/mg-core/script/css3-mediaqueries.js"></script>
<![endif]-->
<title>Панель управления | Moguta.CMS</title>


<?php 
if (USER::isAuth() && ('1' == USER::getThis()->role || '3' == USER::getThis()->role || '4' == USER::getThis()->role)) {
    ?>


 <?php 
    MG::titlePage($lang['ADMIN_BAR']);
    ?>

    <script>var phoneMask =  "<?php 
    echo MG::getSetting('phoneMask');
    ?>
" </script>
    <script>var SITE = "<?php 
    echo SITE;
    ?>
";</script>
Пример #3
0
    /**
     * Вывод списка аккаунтов пользователя
     * @param int $user_id - ID пользователя (значение по умолчанию = текущий пользователь)
     * @return string
     */
    static function getSyncPanelCode($user_id = 0)
    {
        $current_user = USER::isAuth() ? USER::getThis() : 0;
        $current_user = isset($current_user->id) ? $current_user->id : 0;
        $user_id = empty($user_id) ? $current_user : $user_id;
        if (empty($user_id)) {
            return '';
        }
        $res = DB::query("SELECT * FROM " . PREFIX . "ulogin WHERE user_id = " . DB::quote($user_id));
        foreach ($res as $network) {
            $networks[] = $network;
        }
        $output = '
			<style>
			    .big_provider {
			        display: inline-block;
			        margin-right: 10px;
			    }
			</style>
			<p class="change-pass-title">' . self::$lang['ULOGIN_SYNC'] . '</p>' . self::getPanelCode(1) . '<p>' . self::$lang['ULOGIN_SYNC_HELP'] . '</p>
            <p class="change-pass-title">' . self::$lang['ULOGIN_SYNC_LIST'] . '</p>';
        $output .= '<div id="ulogin_accounts">';
        foreach ($networks as $network) {
            if ($network['user_id'] = $user_id) {
                $output .= "<div data-ulogin-network='{$network['network']}'  data-ulogin-identity='{$network['identity']}' class='ulogin_network big_provider {$network['network']}_big'></div>";
            }
        }
        $output .= '</div>
		<p>' . self::$lang['ULOGIN_SYNC_DELETE'] . '</p>';
        return $output;
        return '';
    }
Пример #4
0
 /**
  * Сохраняет заказ в базу сайта.
  * Добавляет в массив корзины третий параметр 'цена товара', для сохранения в заказ.
  * Это нужно для тогою чтобы в последствии вывести детальную информацию о заказе.
  * Если оставить только id то информация может оказаться неверной, так как цены меняютcя.
  * @return int $id номер заказа.
  */
 public function addOrder($adminOrder = false)
 {
     $itemPosition = new Models_Product();
     $cart = new Models_Cart();
     $catalog = new Models_Catalog();
     $categoryArray = $catalog->getCategoryArray();
     $this->summ = 0;
     $currencyRate = MG::getSetting('currencyRate');
     $currencyShopIso = MG::getSetting('currencyShopIso');
     // Массив запросов на обновление количества товаров.
     $updateCountProd = array();
     // Добавляем в массив корзины параметр 'цена товара'.
     if ($adminOrder) {
         $this->email = $adminOrder['user_email'];
         $this->phone = $adminOrder['phone'];
         $this->address = $adminOrder['address'];
         $this->delivery = $adminOrder['delivery_id'];
         $this->dateDelivery = $adminOrder['date_delivery'];
         $this->delivery_cost = $adminOrder['delivery_cost'];
         $this->payment = $adminOrder['payment_id'];
         $this->fio = $adminOrder['name_buyer'];
         $formatedDate = date('Y-m-d H:i:s');
         // Форматированная дата ГГГГ-ММ-ДД ЧЧ:ММ:СС.
         foreach ($adminOrder['order_content'] as $item) {
             $product = $itemPosition->getProduct($item['id']);
             $_SESSION['couponCode'] = $item['coupon'];
             $product['category_url'] = $product['category_url'] ? $product['category_url'] : 'catalog';
             $productUrl = $product['category_url'] . '/' . $product['url'];
             $itemCount = $item['count'];
             if (!empty($product)) {
                 $fulPrice = $item['fulPrice'];
                 // полная стоимость без скидки
                 $product['price'] = $item['price'];
                 // $product['price'] = $item['price_course'];
                 //$product['currency_iso'] = $product['currency_iso']?$product['currency_iso']:$currencyShopIso;
                 //$product['price'] *= $currencyRate[$product['currency_iso']];
                 $discount = 0;
                 if (!empty($item['price']) && (!empty($item['coupon']) || stristr($item['discSyst'], 'true') !== false)) {
                     $discount = 100 - $product['price'] * 100 / $fulPrice;
                 }
                 $productPositions[] = array('id' => $product['id'], 'name' => $item['title'], 'url' => $productUrl, 'code' => $item['code'], 'price' => $product['price'], 'count' => $itemCount, 'property' => $item['property'], 'coupon' => $_SESSION['couponCode'], 'discount' => round($discount, 1), 'fulPrice' => $fulPrice, 'weight' => $product['weight'], 'currency_iso' => $currencyShopIso, 'discSyst' => !empty($item['discSyst']) ? $item['discSyst'] : '');
                 $this->summ += $product['price'] * $itemCount;
                 // По ходу формируем массив запросов на обновление количества товаров.
                 if ($item['variant'] == 0) {
                     $product['count'] = $product['count'] - $itemCount >= 0 ? $product['count'] - $itemCount : 0;
                     $updateCountProd[] = "UPDATE `" . PREFIX . "product` SET `count`= " . DB::quote($product['count']) . " WHERE `id`=" . DB::quote($product['id']) . " AND `count`>0";
                 } else {
                     $count = DB::query('
           SELECT count
           FROM `' . PREFIX . 'product_variant`
           WHERE id = ' . DB::quote($item['variant']));
                     $count = DB::fetchAssoc($count);
                     $product['count'] = $count['count'] - $itemCount >= 0 ? $count['count'] - $itemCount : 0;
                     $updateCountProd[] = "UPDATE `" . PREFIX . "product_variant` SET `count`= " . DB::quote($product['count']) . " WHERE `id`=" . DB::quote($item['variant']) . " AND `count`>0";
                     $variants = $itemPosition->getVariants($product['id']);
                     $firstVariant = reset($variants);
                     if ($firstVariant['id'] == $item['variant']) {
                         // если приобретен вариант товара, то выясним является ли он первым в наборе, если да то обновим информацию в mg_product
                         $updateCountProd[] = "UPDATE `" . PREFIX . "product` SET `count`= " . DB::quote($product['count']) . " WHERE `id`=" . DB::quote($product['id']) . " AND `count`>0";
                     }
                 }
                 $updateCountProd[] = "UPDATE `" . PREFIX . "product` SET `count_buy`= `count_buy` + 1 WHERE `id`=" . DB::quote($product['id']);
             }
         }
     } elseif (!empty($_SESSION['cart'])) {
         foreach ($_SESSION['cart'] as $item) {
             $product = $itemPosition->getProduct($item['id']);
             // Дописываем к массиву продуктов данные о выбранных характеристиках из корзины покупок, чтобы приплюсовать к сумме заказа.
             if ($item['id'] == $product['id']) {
                 $product['property_html'] = $item['propertyReal'];
             }
             $variant = null;
             $discount = null;
             $promocode = null;
             if (!empty($item['variantId']) && $item['id'] == $product['id']) {
                 $variants = $itemPosition->getVariants($product['id']);
                 $variant = $variants[$item['variantId']];
                 $product['price'] = $variant['price_course'];
                 $fulPrice = $product['price'];
                 $priceWithCoupon = $cart->applyCoupon($_SESSION['couponCode'], $product['price'], $product);
                 $priceWithDiscount = $cart->applyDiscountSystem($product['price']);
                 //$product['price'] = $priceWithCoupon < $priceWithDiscount['price'] ? $priceWithCoupon : $priceWithDiscount['price'];
                 $product['price'] = $cart->customPrice(array('product' => $product, 'priceWithCoupon' => $priceWithCoupon, 'priceWithDiscount' => $priceWithDiscount['price']));
                 $product['code'] = $variant['code'];
                 $product['count'] = $variant['count'];
                 $product['weight'] = $variant['weight'];
                 $product['title'] .= " " . $variant['title_variant'];
                 $discountSystem = $priceWithDiscount['discounts'];
                 $promocode = $priceWithDiscount['discounts'] != '' ? $priceWithDiscount['promo'] : $_SESSION['couponCode'];
                 //По ходу формируем массив запросов на обновление количества товаров
                 $resCount = $variant['code'];
                 $resCount = $variant['count'] - $item['count'] >= 0 ? $variant['count'] - $item['count'] : 0;
                 $updateCountProd[] = "UPDATE `" . PREFIX . "product_variant` SET `count`= " . DB::quote($resCount) . " WHERE `id`=" . DB::quote($item['variantId']) . " AND `count`>0";
             }
             $product['category_url'] = $product['category_url'] ? $product['category_url'] : 'catalog';
             $productUrl = $product['category_url'] . '/' . $product['url'];
             // Eсли куки не актуальны исключает попадание несуществующего продукта в заказ
             if (!empty($product)) {
                 if (!$variant) {
                     $product['price'] = $product['price_course'];
                     $fulPrice = $product['price'];
                 }
                 $product['price'] = SmalCart::plusPropertyMargin($fulPrice, $product['property_html'], $currencyRate[$product['currency_iso']]);
                 //$product['currency_iso'] = $product['currency_iso']?$product['currency_iso']:$currencyShopIso;
                 //$product['price'] *= $currencyRate[$product['currency_iso']];
                 $fulPrice = $product['price'];
                 $tempPrice = $product['price'];
                 //   if (!$variant) {
                 $priceWithCoupon = $cart->applyCoupon($_SESSION['couponCode'], $product['price'], $product);
                 $priceWithDiscount = $cart->applyDiscountSystem($product['price']);
                 //$product['price'] = $priceWithCoupon < $priceWithDiscount['price'] ? $priceWithCoupon : $priceWithDiscount['price'];
                 $product['price'] = $cart->customPrice(array('product' => $product, 'priceWithCoupon' => $priceWithCoupon, 'priceWithDiscount' => $priceWithDiscount['price']));
                 $discountSystem = $priceWithDiscount['discounts'];
                 $promocode = $priceWithDiscount['discounts'] != '' ? $priceWithDiscount['promo'] : $_SESSION['couponCode'];
                 //    }
                 $discount = 0;
                 if (!empty($tempPrice)) {
                     $discount = 100 - $product['price'] * 100 / $tempPrice;
                 }
                 $productPositions[] = array('id' => $product['id'], 'name' => $product['title'], 'url' => $productUrl, 'code' => $product['code'], 'price' => $product['price'], 'count' => $item['count'], 'property' => $item['property'], 'coupon' => $promocode, 'discount' => round($discount), 'fulPrice' => $fulPrice, 'weight' => $product['weight'], 'currency_iso' => $currencyShopIso, 'discSyst' => $discountSystem ? $discountSystem : '');
                 $this->summ += $product['price'] * $item['count'];
                 if (!$resCount) {
                     $resCount = $product['count'] - $item['count'] >= 0 ? $product['count'] - $item['count'] : 0;
                 }
                 //По ходу формируем массив запросов на обновление количества товаров
                 if (!$variant) {
                     $updateCountProd[] = "UPDATE `" . PREFIX . "product` SET `count`= " . DB::quote($resCount) . " WHERE `id`=" . DB::quote($product['id']) . " AND `count`>0";
                 } else {
                     $firstVariant = reset($variants);
                     if ($firstVariant['id'] == $item['variantId']) {
                         // если приобретен вариант товара, то выясним является ли он первым в наборе, если да то обновим информацию в mg_product
                         $updateCountProd[] = "UPDATE `" . PREFIX . "product` SET `count`= " . DB::quote($resCount) . " WHERE `id`=" . DB::quote($product['id']) . " AND `count`>0";
                     }
                 }
                 $updateCountProd[] = "UPDATE `" . PREFIX . "product` SET `count_buy`= `count_buy` + 1 WHERE `id`=" . DB::quote($product['id']);
                 $resCount = null;
             }
         }
     }
     // Сериализует данные в строку для записи в бд.
     $orderContent = addslashes(serialize($productPositions));
     // Сериализует данные в строку для записи в бд информации об юридическом лице.
     $yurInfo = '';
     if (!empty($adminOrder['yur_info'])) {
         $yurInfo = addslashes(serialize($adminOrder['yur_info']));
     }
     if (!empty($_POST['yur_info'])) {
         $yurInfo = addslashes(serialize($_POST['yur_info']));
     }
     // Создает новую модель корзины, чтобы узнать сумму заказа.
     $cart = new Models_Cart();
     // Генерируем уникальный хэш для подтверждения заказа.
     $hash = $this->_getHash($this->email);
     //Достаем настройки заказов, чтобы установить статус для нового заказа.
     $propertyOrder = MG::getOption('propertyOrder');
     $propertyOrder = stripslashes($propertyOrder);
     $propertyOrder = unserialize($propertyOrder);
     $order_status_id = $this->payment == 3 && $propertyOrder['order_status'] == 1 ? 3 : $propertyOrder['order_status'];
     // Формируем массив параметров для SQL запроса.
     $array = array('user_email' => $this->email, 'summ' => number_format($this->summ, 2, '.', ''), 'order_content' => $orderContent, 'phone' => $this->phone, 'address' => $this->address, 'delivery_id' => $this->delivery, 'delivery_cost' => $this->delivery_cost, 'payment_id' => $this->payment, 'paided' => '0', 'status_id' => $order_status_id, 'confirmation' => $hash, 'yur_info' => $yurInfo, 'name_buyer' => $this->fio, 'date_delivery' => $this->dateDelivery, 'user_comment' => $this->info, 'ip' => $_SERVER['REMOTE_ADDR']);
     // Если заказ оформляется через админку.
     if ($adminOrder) {
         $array['comment'] = $adminOrder['comment'];
         $array['status_id'] = $adminOrder['status_id'];
         $array['add_date'] = $formatedDate;
         $array['date_delivery'] = $adminOrder['date_delivery'];
         DB::buildQuery("INSERT INTO `" . PREFIX . "order` SET ", $array);
     } else {
         // Отдает на обработку  родительской функции buildQuery.
         DB::buildQuery("INSERT INTO `" . PREFIX . "order` SET add_date = now(), ", $array);
     }
     // Заказ номер id добавлен в базу.
     $id = null;
     $id = DB::insertId();
     $_SESSION['usedCouponCode'] = $_SESSION['couponCode'];
     unset($_SESSION['couponCode']);
     $orderNumber = $this->getOrderNumber($id);
     $hashStatus = '';
     $linkToStatus = '';
     if (MG::getSetting('autoRegister') == "false" && !USER::isAuth()) {
         $hashStatus = md5($id . $this->email . rand(9999));
         $linkToStatus = '<a href="' . SITE . '/order?hash=' . $hashStatus . '" target="blank">' . SITE . '/order?hash=' . $hashStatus . '</a>';
     }
     DB::query("UPDATE `" . PREFIX . "order` SET `number`= " . DB::quote($orderNumber) . ", `hash`=" . DB::quote($hashStatus) . " WHERE `id`=" . DB::quote($id) . "");
     // Ссылка для подтверждения заказа
     $link = 'ссылке <a href="' . SITE . '/order?sec=' . $hash . '&id=' . $id . '" target="blank">' . SITE . '/order?sec=' . $hash . '&id=' . $id . '</a>';
     $table = "";
     // Формирование тела письма.
     if ($id) {
         // Уменьшаем количество купленных товаров
         if (!empty($updateCountProd)) {
             foreach ($updateCountProd as $sql) {
                 DB::query($sql);
             }
             foreach ($productPositions as $product) {
                 Storage::clear(md5('ControllersProduct' . $product['url']));
             }
         }
         // Если заказ создался, то уменьшаем количество товаров на складе.
         $settings = MG::get('settings');
         $delivery = $this->getDeliveryMethod(false, $this->delivery);
         $sitename = $settings['sitename'];
         $currency = MG::getSetting('currency');
         $paymentArray = $this->getPaymentMethod($this->payment);
         $subj = 'Оформлена заявка №' . ($orderNumber != "" ? $orderNumber : $id) . ' на сайте ' . $sitename;
         foreach ($productPositions as &$item) {
             foreach ($item as &$v) {
                 $v = rawurldecode($v);
             }
         }
         $paramToMail = array('orderNumber' => $orderNumber, 'siteName' => MG::getSetting('sitename'), 'delivery' => $delivery, 'currency' => MG::getSetting('currency'), 'fio' => $this->fio, 'email' => $this->email, 'phone' => $this->phone, 'address' => $this->address, 'delivery' => $delivery['description'], 'payment' => $paymentArray['name'], 'adminOrder' => $adminOrder, 'result' => $this->summ, 'deliveryCost' => $this->delivery_cost, 'date_delivery' => $this->dateDelivery, 'total' => $this->delivery_cost + $this->summ, 'confirmLink' => $link, 'ip' => $this->ip, 'lastvisit' => $_SESSION['lastvisit'], 'firstvisit' => $_SESSION['firstvisit'], 'supportEmail' => MG::getSetting('noReplyEmail'), 'shopName' => MG::getSetting('shopName'), 'shopPhone' => MG::getSetting('shopPhone'), 'formatedDate' => date('Y-m-d H:i:s'), 'productPositions' => $productPositions, 'couponCode' => $_SESSION['couponCode'], 'toKnowStatus' => $linkToStatus);
         $emailToUser = MG::layoutManager('email_order', $paramToMail);
         $paramToMail['adminMail'] = true;
         $emailToAdmin = MG::layoutManager('email_order', $paramToMail);
         $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" => $this->email));
                 Mailer::sendMimeMail(array('nameFrom' => $this->fio, 'emailFrom' => MG::getSetting('noReplyEmail'), 'nameTo' => $sitename, 'emailTo' => $mail, 'subject' => $subj, 'body' => $emailToAdmin, 'html' => true));
             }
         }
         // Отправка заявки пользователю.
         Mailer::sendMimeMail(array('nameFrom' => $sitename, 'emailFrom' => MG::getSetting('noReplyEmail'), 'nameTo' => $this->fio, 'emailTo' => $this->email, 'subject' => $subj, 'body' => $emailToUser, 'html' => true));
         // Если заказ успешно записан, то очищает корзину.
         if (!$adminOrder) {
             $cart->clearCart();
         }
     }
     $result = array('id' => $id, 'orderNumber' => $orderNumber);
     // Возвращаем номер созданого заказа.
     $args = func_get_args();
     return MG::createHook(__CLASS__ . "_" . __FUNCTION__, $result, $args);
 }
Пример #5
0
/**
 * Регистрация на сайте и в таблице uLogin
 * @param Array $u_user - данные о пользователе, полученные от uLogin
 * @param int $in_db - при значении 1 необходимо переписать данные в таблице uLogin
 * @return bool|int|Error
 */
function ulogin_registration_user($u_user, $in_db = 0)
{
    if (!isset($u_user['email'])) {
        die("Через данную форму выполнить вход/регистрацию невозможно. </br>" . "Сообщиете администратору сайта о следующей ошибке: </br></br>" . "Необходимо указать <b>email</b> в возвращаемых полях <b>uLogin</b>");
    }
    $u_user['network'] = isset($u_user['network']) ? $u_user['network'] : '';
    $u_user['phone'] = isset($u_user['phone']) ? $u_user['phone'] : '';
    // данные о пользователе есть в ulogin_table, но отсутствуют в Базе
    if ($in_db == 1) {
        DB::query("DELETE FROM " . PREFIX . "ulogin   WHERE `identity` = " . DB::quote($u_user['identity']));
    }
    $user_id = USER::getUserInfoByEmail($u_user['email']);
    $user_id = $user_id->id;
    // $check_m_user == true -> есть пользователь с таким email
    $check_m_user = $user_id > 0 ? true : false;
    $current_user = USER::isAuth() ? USER::getThis() : 0;
    // $isLoggedIn == true -> ползователь онлайн
    $isLoggedIn = isset($current_user->id) && $current_user->id > 0 ? true : false;
    if (!$check_m_user && !$isLoggedIn) {
        // отсутствует пользователь с таким email в базе -> регистрация
        $date = explode('.', $u_user['bdate']);
        $insert_user = array('pass' => md5(microtime(true)), 'email' => $u_user['email'], 'role' => 2, 'name' => $u_user['first_name'], 'sname' => $u_user['last_name'], 'address' => '', 'phone' => $u_user['phone'], 'birthday' => $date['2'] . '-' . $date['1'] . '-' . $date['0'], 'activity' => 1);
        $user_id = USER::add($insert_user);
        $user_id = DB::insertId();
        $userData = USER::getUserById($user_id);
        $res = DB::query("INSERT INTO " . PREFIX . "ulogin (user_id, identity, network)\n\t\tVALUES (" . DB::quote($user_id) . "," . DB::quote($u_user['identity']) . "," . DB::quote($u_user['network']) . ")");
        return $userData->id;
    } else {
        // существует пользователь с таким email или это текущий пользователь
        if (!isset($u_user["verified_email"]) || intval($u_user["verified_email"]) != 1) {
            die('<head></head><body><script src="//ulogin.ru/js/ulogin.js"  type="text/javascript"></script><script type="text/javascript">uLogin.mergeAccounts("' . $_POST['token'] . '")</script>' . "Электронный адрес данного аккаунта совпадает с электронным адресом существующего пользователя. <br>Требуется подтверждение на владение указанным email.</br></br>" . "Подтверждение аккаунта" . "</body>");
        }
        if (intval($u_user["verified_email"]) == 1) {
            $user_id = $isLoggedIn ? $current_user->id : $user_id;
            $other_u = DB::query("SELECT identity FROM " . PREFIX . "ulogin where `user_id` = " . DB::quote($user_id));
            $other_u = DB::fetchAssoc($other_u);
            if ($other_u) {
                if (!$isLoggedIn && !isset($u_user['merge_account'])) {
                    die('<head></head><body><script src="//ulogin.ru/js/ulogin.js"  type="text/javascript"></script><script type="text/javascript">uLogin.mergeAccounts("' . $_POST['token'] . '","' . $other_u['identity'] . '")</script>' . "С данным аккаунтом уже связаны данные из другой социальной сети. <br>Требуется привязка новой учётной записи социальной сети к этому аккаунту.<br/>" . "Синхронизация аккаунтов" . "</body>");
                }
            }
            DB::query("INSERT INTO " . PREFIX . "ulogin (user_id, identity, network)\n\t\t\tVALUES (" . DB::quote($user_id) . "," . DB::quote($u_user['identity']) . "," . DB::quote($u_user['network']) . ")");
            return $user_id;
        }
    }
    return false;
}
Пример #6
0
    /**
     * Устанавливает meta данные страницы.
     * @param string|bool $title заголовок страницы.
     * @return void.
     */
    public static function meta()
    {
        $metaTitle = self::get('metaTitle');
        $metaKeywords = self::get('metaKeywords');
        $metaDescription = self::get('metaDescription');
        $title = $metaTitle ? $metaTitle : self::get('title');
        $meta = ' 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>' . $title . '</title>
    <meta name="keywords" content="' . $metaKeywords . '" />
    <meta name="description" content="' . $metaDescription . '" />
   ';
        $head = '<script type="text/javascript" src="' . SITE . '/mg-core/script/jquery-1.10.2.min.js"></script>';
        if (!URL::isSection(null)) {
            $head .= '<script type="text/javascript" src="' . SITE . '/mg-core/script/jquery-ui-1.10.3.custom.min.js"></script>';
            $head .= '<script type="text/javascript" src="' . SITE . '/mg-core/script/jquery.form.js"></script>';
            $head .= '<script type="text/javascript" src="' . SITE . '/mg-core/script/engine-script.js?protocol=' . PROTOCOL . '&amp;mgBaseDir=' . SITE . '&amp;currency=' . MG::getSetting('currency') . '&amp;phoneMask=' . MG::getSetting('phoneMask') . '"></script> ';
        }
        // поддержка js для старых шаблонов
        if (MG::getSetting('noneSupportOldTemplate') == 'true') {
            $head .= '
    <script type="text/javascript" src="' . SITE . '/mg-core/script/old-engine-script.js"></script>
    ';
        }
        $userMeta = MG::get('register');
        $currentController = MG::get('controller');
        $head .= '
    <!--Реестр определенных стилей в плагинах движка-->
    ';
        if (!empty($userMeta)) {
            foreach ($userMeta as $key => $headers) {
                //выводим мета заголовок, только если соответствует контролер или его нужно выводить всегда
                if ($key == 'all' || $key == $currentController) {
                    foreach ($headers as $value) {
                        // отдельно берем стили для мобильной версии, чтобы поместить их в нужном порядке, после всех остальных
                        if (stripos($value, 'mobile.css') !== false) {
                            $mobileCss .= $value . '
    ';
                            continue;
                        }
                        if (stripos($value, '<script') !== false) {
                            $metaScript .= $value . '
    ';
                        } else {
                            $head .= $value . '
    ';
                        }
                    }
                }
            }
        }
        $head .= '<!--/Реестр определенных стилей в плагинах движка-->
    ';
        $head .= '
    <!--Обязательный файл стилей для каждого шаблона-->
    <link rel="stylesheet" href="' . PATH_SITE_TEMPLATE . '/css/style.css" type="text/css" />
    <!--/Обязательный файл стилей для каждого шаблона-->
    
    ';
        $colorScheme = MG::getSetting('colorScheme');
        if (PREVIEW_TEMPLATE) {
            if (!empty($_GET['color'])) {
                SetCookie('color', $_GET['color'], time() + 3600 * 24 * 365);
                $colorScheme = $_GET['color'];
            } else {
                $colorScheme = $_COOKIE['color'];
            }
        }
        if ($colorScheme) {
            $head .= '
    <!--Цветовая схема шаблона-->
    <link href="' . PATH_SITE_TEMPLATE . '/css/color-scheme/color_' . $colorScheme . '.css" rel="stylesheet" type="text/css" />
    <!--/Цветовая схема шаблона-->
';
        }
        $head .= $mobileCss;
        $head .= '
    <!--Реестр определенных скриптов в плагинах движка-->
    ';
        $head .= $metaScript;
        $head .= '<!--/Реестр определенных скриптов в плагинах движка-->
    
    ';
        // $meta .= $head;
        // $meta .= self::mergeStaticFile($head);
        if (USER::isAuth() && ('1' == USER::getThis()->role || USER::getThis()->role == '3' || '4' == USER::getThis()->role)) {
            // для админа подключаем все стили из отдельных файлов как есть.
            $meta .= $head;
            $meta .= '
    <link rel="stylesheet" href="' . SITE . '/mg-admin/design/css/adminbar.css" type="text/css" />
    <link rel="stylesheet" href="' . SITE . '/mg-admin/design/css/style.css" type="text/css" />  
    <script type="text/javascript" src="' . SITE . '/mg-core/script/admin/admin.js?mgBaseDir=' . SITE . '&currency=' . MG::getSetting('currency') . '&lang=' . MG::getSetting('languageLocale') . '" /></script>  
    <script>  $(document).ready(function(){admin.publicAdmin();}); var lang = "";</script>
      
    ';
        } else {
            // если не админ, то отдаем сжатые файлы
            $meta .= self::mergeStaticFile($head);
        }
        $args = func_get_args();
        return self::createHook(__CLASS__ . "_" . __FUNCTION__, $meta, $args);
    }