/**
 * Вызывается при запросе несуществующей
 * страницы или ошибки и использования спецсимволов в параметрах
 * @param bool $LowProtect
 * @param bool $Redirect
 * @return void
 */
function HackOff($LowProtect = false, $Redirect = true)
{
    global $config;
    if (System::user()->isAdmin() || $LowProtect) {
        if (defined('MAIN_SCRIPT') || defined('PLUG_SCRIPT') || !defined('ADMIN_SCRIPT')) {
            if ($Redirect) {
                GO(Ufu('index.php'));
            }
        } elseif (defined('ADMIN_SCRIPT')) {
            GO(ADMIN_FILE);
        }
    } else {
        if (System::config('security/hack_event') == 'alert') {
            die(System::config('security/hack_alert'));
        } elseif (System::config('security/hack_event') == 'ban') {
            die('Вам был запрещен доступ к сайту, возможно система обнаружила подозрительные
			действия с Вашей стороны. Если Вы считаете, что это произошло по ошибке, - обратитесь
			в службу поддержки по e-mail ' . System::config('general/site_email') . '.');
        } else {
            if ($Redirect) {
                GO(Ufu('index.php'));
            }
        }
    }
}
function GoBack($exit = true, $response_code = 303)
{
    if (isset($_SERVER['HTTP_REFERER'])) {
        return GO($_SERVER['HTTP_REFERER'], $exit, $response_code);
    } else {
        return GO(Ufu('index.php'), $exit, $response_code);
    }
}
function ___SitemapPluginForum($Forum, $Level, $i, $c)
{
    global $forums_tree;
    $forum_config = $forums_tree->GetForumConfigRecursive($Forum['id'], ACCESS_ALL);
    if (!$forum_config['access']) {
        return false;
    }
    SitemapAddObject($Level, $Forum['title'], Ufu('index.php?name=forum&op=showforum&forum=' . SafeDB($Forum['id'], 11, int), 'forum/{forum}/'));
}
function IndexForumMarkRead()
{
    $mark_forums = array();
    // Форумы на которых устанавливать метки
    $forums_tree = ForumTree::Instance();
    if (isset($_GET['forum'])) {
        // Только внутри определённого форума
        $forum = SafeDB($_GET['forum'], 11, int);
        $mark_forums = $forums_tree->GetAllAccessForumId($forum);
    } else {
        // На всех форумах
        $mark_forums = $forums_tree->GetAllAccessForumId();
    }
    $user_id = System::user()->Get('u_id');
    if (System::user()->Auth) {
        // Загружаем данные о прочтении тем пользователем
        $read_data = Forum_Marker_GetReadData();
        // Загружаем топики (агрегированы по forum_id)
        $topics = ForumCacheGetTopics();
        $del_where = '';
        $insert_values = array();
        $time = time();
        foreach ($mark_forums as $forum_id) {
            if (!isset($topics[$forum_id])) {
                continue;
            }
            foreach ($topics[$forum_id] as $topic) {
                $tid = SafeEnv($topic['id'], 11, int);
                // Не прочитана или метка устарела
                if (!isset($read_data[$topic['id']])) {
                    $insert_values[] = "'{$user_id}','{$tid}','{$time}'";
                    // Добавить новую метку
                } elseif ($read_data[$topic['id']]['date'] < $topic['last_post']) {
                    $del_where .= "(`tid`='{$tid}' and `mid`= '{$user_id}') or ";
                    // Удалить текущую метку
                    $insert_values[] = "'{$user_id}','{$tid}','{$time}'";
                    // Добавить новую метку
                }
            }
        }
        // Удаляем устаревшие метки
        if ($del_where != '') {
            $del_where = substr($del_where, 0, -4);
            // Удаляем .or.
            System::database()->Delete('forum_topics_read', $del_where);
        }
        // Добавляем новые метки
        // TODO: В будущем нужно перейти на InnoDB и использовать транзакции как в MySQL так и в FilesDB.
        if (count($insert_values) > 0) {
            foreach ($insert_values as $vals) {
                System::database()->Insert('forum_topics_read', $vals);
            }
        }
    }
    GO(GetSiteUrl() . Ufu('index.php?name=forum' . (isset($forum) ? '&op=showforum&forum=' . $forum : ''), 'forum/' . (isset($forum) ? '{forum}/' : '')));
}
 /**
  * Выводит путь в хлебных крошках в категории форума.
  * @param type $CatId Текущая открытая категория.
  */
 public function BreadCrumbsF($CatId)
 {
     if ($CatId == 0) {
         return;
     }
     $parents = $this->GetAllParent($CatId);
     foreach ($parents as $parent) {
         $link = Ufu('index.php?name=' . $this->moduleName . '&op=showforum&forum=' . SafeDB($parent['id'], 11, int), $this->moduleName . '/{forum}/');
         System::site()->BreadCrumbAdd(SafeDB($parent['title'], 255, str), $link);
     }
 }
function IndexForumSubscription()
{
    global $forum_lang;
    $forums_tree = ForumTree::Instance();
    // Проверки на доступ
    if (CheckGet('topic')) {
        // Тема
        $topic_id = SafeEnv($_GET['topic'], 11, int);
        System::database()->Select('forum_topics', "`id`='{$topic_id}'");
        if (System::database()->NumRows() > 0) {
            $topic = System::database()->FetchRow();
        } else {
            System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_access_category']);
            return;
        }
        if ($topic['delete'] == '1') {
            // Тема на удалении
            System::site()->AddTextBox($forum_lang['error'], $forum_lang['topic_basket'] . '.' . $forum_lang['no_topic_basket_edit']);
            return;
        }
        if ($topic['close_topics'] == '1') {
            // Тема закрыта
            System::site()->AddTextBox($forum_lang['error'], $forum_lang['topic_close_for_discussion'] . '.' . $forum_lang['no_create_new_message_current_topic_add']);
            return;
        }
        // Форум
        $forum_id = SafeEnv($topic['forum_id'], 11, int);
        if (!isset($forums_tree->IdCats[$forum_id])) {
            System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_data']);
            return;
        }
        $forum_config = $forums_tree->GetForumConfigRecursive($forum_id);
        if (!$forum_config['access']) {
            // Доступ
            System::site()->AddTextBox($forum_lang['error'], $forum_config['access_reason']);
            return;
        } elseif (!$forum_config['new_message_email']) {
            // Разрешено ли подписываться на новые сообщения (+ защита от гостей)
            System::site()->AddTextBox($forum_lang['error'], $forum_config['add_post_reason']);
            return;
        }
    } else {
        System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_data']);
        return;
    }
    Forum_Subscription($topic_id);
    // Подписка (обратное действие, если пользователь уже подписан)
    GO(Ufu('index.php?name=forum&op=showtopic&topic=' . $topic_id . '&view=lastpost', 'forum/topic{topic}-new.html'));
}
function IndexForumCloseTopic()
{
    if (!System::user()->isAdmin()) {
        HackOff();
        return;
    }
    if (CheckGet('topic')) {
        $topic_id = SafeEnv($_GET['topic'], 11, int);
    } else {
        System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_data']);
        return;
    }
    System::database()->Select('forum_topics', "`id`='{$topic_id}'");
    $topic = System::database()->FetchRow();
    $forum_id = SafeDB($topic['forum_id'], 11, int);
    System::database()->Update('forum_topics', "`close_topics`='1'", "`id`='{$topic_id}'");
    GO(Ufu('index.php?name=forum&op=showforum&forum=' . $forum_id, 'forum/{forum}/'));
}
 /**
  * Выводит дерево в html-коде для отображения в админ-панели
  * @param int $ParentId
  * @return bool|string
  */
 public function ShowCats($ParentId = 0)
 {
     UseScript('jquery_ui_treeview');
     if ($ParentId == 0 && isset($_GET['_cat_parent'])) {
         $ParentId = SafeEnv($_GET['_cat_parent'], 11, int);
     }
     $elements = array();
     if ($ParentId == 0 && !isset($this->Cats[$ParentId])) {
         return 'Нет категорий';
     }
     foreach ($this->Cats[$ParentId] as $cat) {
         $id = SafeDB($cat['id'], 11, int);
         $icon = trim(SafeDB($cat['icon'], 255, str));
         $info = '';
         if ($icon != '') {
             $info .= '<img src="' . $icon . '">';
         }
         if ($this->index_id_par_name != '') {
             $link_go = Ufu('index.php?name=' . $this->module . '&' . $this->index_id_par_name . '=' . $id, $this->module . '/{' . $this->index_id_par_name . '}/');
             $info .= ($icon != '' ? '<br>' : '') . '<b>Адрес</b>: <a href="' . $link_go . '" target="_blank">/' . $link_go . '</a>';
         }
         $icon = 'images/folder.png';
         $add_cat_link = ADMIN_FILE . '?exe=' . $this->module . '&' . $this->action_par_name . '=' . $this->edit_met . '&_cat_adto=' . $id;
         $edit_cat_link = ADMIN_FILE . '?exe=' . $this->module . '&' . $this->action_par_name . '=' . $this->edit_met . '&' . $this->id_par_name . '=' . $id;
         $func = '';
         $func .= System::admin()->SpeedButton('Добавить дочернюю категорию', $add_cat_link, 'images/admin/folder_add.png');
         $func .= System::admin()->SpeedButton('Редактировать', $edit_cat_link, 'images/admin/edit.png');
         $func .= System::admin()->SpeedConfirmJs('Удалить категорию', '$(\'#cats_tree_container\').treeview(\'deleteNode\', ' . $id . ');', 'images/admin/delete.png', 'Уверены что хотите удалить? Все дочерние объекты так-же будут удалены.');
         $obj_counts = $this->GetCountersRecursive($id);
         $elements[] = array('id' => $id, 'icon' => $icon, 'title' => '<b>' . System::admin()->Link(SafeDB($cat['title'], 255, str) . ' (' . $obj_counts['files'] . ')', $edit_cat_link) . '</b>', 'info' => $info, 'func' => $func, 'isnode' => isset($this->Cats[$id]), 'child_url' => ADMIN_FILE . '?exe=' . $this->module . '&' . $this->action_par_name . '=' . $this->showcats_met . '&_cat_parent=' . $id);
     }
     if ($ParentId == 0) {
         System::admin()->AddOnLoadJS('$("#cats_tree_container").treeview({del: \'' . ADMIN_FILE . '?exe=' . $this->module . '&' . $this->action_par_name . '=' . $this->del_met . '&ok=1\', delRequestType: \'GET\', tree: ' . JsonEncode($elements) . '});');
         return '<div id="cats_tree_container"></div>';
     } else {
         echo JsonEncode($elements);
         exit;
     }
 }
 public function ActiveTopicAuthors()
 {
     $this->topic_authors_count = count(array_unique($this->_author_count));
     $this->active_topic_authors = ' ';
     if (count($this->_author_name) > 0) {
         SortArray($this->_author_name, 'count', true);
         $i = 0;
         foreach ($this->_author_name as $author) {
             $i++;
             $author_link = Ufu('index.php?name=user&op=userinfo&user='******'id'], 'user/{user}/info/');
             $usertopics_link = Ufu('index.php?name=forum&op=usertopics&user='******'id'], 'forum/usertopics/{user}/');
             $this->active_topic_authors .= '<a href="' . $author_link . '">' . $author['name'] . '</a> <font size="1">[<a href="' . $usertopics_link . '">' . $author['count'] . '</a>]</font>';
             if ($i == 20 || count($this->_author_name) == $i) {
                 $this->active_topic_authors .= '.';
             } else {
                 $this->active_topic_authors .= ', ';
             }
             if ($i == 20) {
                 break;
             }
         }
     }
     return $this->active_topic_authors;
 }
function ___SitemapPluginArticles($Cat, $Level)
{
    SitemapAddObject($Level, $Cat['title'], Ufu('index.php?name=articles&cat=' . SafeDB($Cat['id'], 11, int), 'articles/{cat}'));
}
/*
 * LinkorCMS 1.4
 * © 2012 LinkorCMS Development Group
 */
define('RSS_SCRIPT', true);
define('VALID_RUN', true);
require 'config/init.php';
// Конфигурация и инициализация
@header("Content-Type: text/xml");
@header("Cache-Control: no-cache");
@header("Pragma: no-cache");
$rss_title = 'Новости на ' . System::config('general/site_url');
$rss_link = System::config('general/site_url');
$rss_description = 'RSS канал сайта ' . System::config('general/site_url') . '.';
$rss = new RssChannel($rss_title, $rss_link, $rss_description);
$rss->pubDate = gmdate('D, d M Y H:i:s') . ' GMT';
$rss->generator = CMS_NAME . ' ' . CMS_VERSION;
$rss->managingEditor = '*****@*****.**';
$rss->webMaster = System::config('general/site_email');
$num = 10;
// Пока максимум 10 заголовков по умолчанию
$news = System::database()->Select('news', "`enabled`='1'", $num, 'date', true);
foreach ($news as $s) {
    $title = SafeDB($s['title'], 255, str);
    $description = SafeDB($s['start_text'], 4048, str);
    $link = HtmlChars(GetSiteUrl() . Ufu('index.php?name=news&op=readfull&news=' . $s['id'] . '&topic=' . $s['topic_id'], 'news/{topic}/{news}/'));
    $pubDate = gmdate('D, d M Y H:i:s', $s['date']) . ' GMT';
    $rss->AddItem($title, $description, $link, $pubDate, $link);
}
echo $rss->Generate();
<?php

/*
 * LinkorCMS 1.4
 * © 2012 LinkorCMS Development Group
 */
// Ѕлок пользовател¤
if (!defined('VALID_RUN')) {
    header("HTTP/1.1 404 Not Found");
    exit;
}
$info = System::user()->Online();
$vars['title'] = $title;
$tempvars['content'] = 'block/content/online.html';
System::site()->AddBlock('block_online', true, false, 'online');
$block_vars['num_admins'] = count($info['admins']);
$block_vars['num_members'] = count($info['members']);
$block_vars['num_guests'] = count($info['guests']);
$block_vars['num_online'] = count($info['admins']) + count($info['members']) + count($info['guests']);
$block_vars['show_uselist'] = true;
$block_vars['userlist_link'] = Ufu('index.php?name=user', '{name}/');
System::site()->Blocks['block_online']['vars'] = $block_vars;
/**
 * Главная страница форума, список форумов в категории или подфорумов в форуме.
 * @param int   $cat_id Идентификатор просматриваемого каталога
 * @global type $forum_lang
 * @return type
 */
function IndexForumMain($cat_id = null, &$topics_data = null)
{
    global $forum_lang;
    $forums_tree = ForumTree::Instance();
    if (isset($cat_id)) {
        $parent = $forums_tree->IdCats[$cat_id]['parent_id'];
        // Чтобы сделать просмотр категории нужно её выводить как подкатегорию родительской категории
        $cat = $parent == 0;
        // Просмотр категории или главной страницы форума
        $main = false;
        // Не главная страница (просмотр категории или форума)
    } else {
        $cat = true;
        // Однозначно просматриваем категрию или главную страницу форума (выводим блоки онлайн и статистики)
        $cat_id = 0;
        $parent = 0;
        // Корневой раздел в качестве родительской категории
        $main = true;
        // Главная страница
    }
    // Нет категорий, выводим сообщение
    if (!isset($forums_tree->Cats[$parent]) && $cat) {
        System::site()->AddTextBox($forum_lang['forum'], $forum_lang['no_category']);
        return;
    }
    if ($cat) {
        // Выводим категорию или главная страница форума (без топиков)
        // Устанавливаем заголовок страницы
        if (!$main) {
            System::site()->SetTitle(SafeDB($forums_tree->IdCats[$cat_id]['title'], 255, str) . ' - ' . $forum_lang['forum']);
        }
        // Объекты статистини и онлайн
        $statistics = ForumStatistics::Instance();
        $online = ForumOnline::Instance($cat_id, '0', true);
        // Инициализируем статистику
        $statistics->Initialize($forum_lang['statistics']);
        // Загружаем информацию по топикам в $topics_data и считаем статистику (кэшировать статистику)
        $topics_data = ForumCacheGetTopics();
        // Запрашиваем данные тем (агрегированы по форумам)
        $resolve_cats = array_keys($topics_data);
        foreach ($resolve_cats as $resolve_cat) {
            if (!isset($topics_data[$resolve_cat])) {
                continue;
            }
            foreach ($topics_data[$resolve_cat] as $topic) {
                $statistics->hits += $topic['hits'];
                $statistics->AddTopicAuthor($topic['starter_id'], $topic['starter_name']);
            }
        }
        // Подсчитываем количество тем и постов
        $counters = $forums_tree->GetCountersRecursive($cat_id);
        $statistics->topics_count = $counters['files'];
        $statistics->reply_count = $counters['cats'];
        // Выводим хлебные крошки
        $forums_tree->BreadCrumbsF($cat_id);
        System::site()->BreadCrumbsLastUrl = true;
        // Ссылки, Отметить все как прочитанные и показать все не прочитанные темы.
        System::site()->AddBlock('is_forum_member', AccessIsResolved(2), false, 'mark');
        $vars_is_forum_member = array();
        $vars_is_forum_member['url'] = '<a href="' . Ufu('index.php?name=forum&op=markread', 'forum/markread/') . '">' . $forum_lang['mark_all_read'] . '</a>';
        $vars_is_forum_member['viewnoreadurl'] = '<a href="' . Ufu('index.php?name=forum&op=viewnoread', 'forum/viewnoread/') . '">' . $forum_lang['viewnoread'] . '</a>';
        System::site()->Blocks['is_forum_member']['vars'] = $vars_is_forum_member;
        // Последние темы форума
        System::site()->AddBlock('old', true, false, 'mark');
        $vars_old = array();
        $vars_old['lasttopics'] = '<a href="' . Ufu('index.php?name=forum&op=lasttopics', 'forum/lasttopics/') . '">' . $forum_lang['lasttopics'] . '</a>';
        System::site()->Blocks['old']['vars'] = $vars_old;
    }
    // Загружаем данные о прочтении тем
    $read_data = Forum_Marker_GetReadData();
    $auth = System::user()->Auth;
    // Блоки форума
    System::site()->AddBlock('forums', true, true, 'forum');
    System::site()->AddBlock('is_no_sub_forum', $cat, false);
    // Блок со статистикой и онлайн (отключается в категории)
    $visable_cats = false;
    // Выведена хотябы одна категория с форумом - если нет то показываем ошибку
    foreach ($forums_tree->Cats[$parent] as $category) {
        // Категории
        if (!$main && ($category['id'] != $cat_id || !isset($forums_tree->Cats[$category['id']]))) {
            // Если просматриваем только одну категорию
            continue;
        }
        // Рекурсивно определяем настройки
        $forum_config = $forums_tree->GetForumConfigRecursive($category['id']);
        // Нет доступа или форум не виден или отключён
        if (!$forum_config['access']) {
            continue;
        }
        $visable_cats = true;
        $category = IndexForumDataFilter($category, $forum_config);
        // Выводим категорию
        IndexForumCatOpen($category);
        IndexForumRender($category);
        // Выводим форумы
        foreach ($forums_tree->Cats[$category['id']] as $forum) {
            $forum_id = $forum['id'];
            $forum_config = $forums_tree->GetForumConfigRecursive($forum_id);
            // Нет доступа или форум не виден или отключён
            if (!$forum_config['access']) {
                continue;
            }
            $forum = IndexForumDataFilter($forum, $forum_config);
            // Обрабатываем подфорумы
            $subforums = array();
            if (isset($forums_tree->Cats[$forum_id])) {
                foreach ($forums_tree->Cats[$forum_id] as $sforum) {
                    // Подфорумы, нужно добавить только пометку о прочтении и обработать
                    $read = true;
                    // прочитан
                    if ($auth) {
                        $childs_forums = $forums_tree->GetAllChildId($sforum['id']);
                        foreach ($childs_forums as $child_forum_id) {
                            if (!isset($topics_data[$child_forum_id])) {
                                continue;
                            }
                            foreach ($topics_data[$child_forum_id] as $topic) {
                                if (!isset($read_data[$topic['id']]) || $topic['last_post'] > $read_data[$topic['id']]['date']) {
                                    $read = false;
                                    // не прочитан
                                    break;
                                }
                            }
                            if (!$read) {
                                break;
                            }
                        }
                    }
                    $sforum = IndexForumDataFilter($sforum);
                    $sforum['read'] = $read;
                    $subforums[] = $sforum;
                }
            }
            // Определяем статус "прочинано" для форума
            $read = true;
            // прочитан
            if ($auth) {
                $childs_forums = $forums_tree->GetAllChildId($forum_id);
                foreach ($childs_forums as $child_forum_id) {
                    if (!isset($topics_data[$child_forum_id])) {
                        continue;
                    }
                    foreach ($topics_data[$child_forum_id] as $topic) {
                        if (!isset($read_data[$topic['id']]) || $topic['last_post'] > $read_data[$topic['id']]['date']) {
                            $read = false;
                            // не прочитан
                            break;
                        }
                    }
                    if (!$read) {
                        break;
                    }
                }
            }
            // Вывод форума в шаблон
            IndexForumRender($forum, false, $read, $subforums);
        }
        // Закрываем категорию
        IndexForumCatClose($category);
    }
    if ($visable_cats) {
        // Шаблон форума (полезно подключать шаблоны вконце, там может быть PHP код)
        System::site()->AddTemplatedBox('', 'module/forums.html');
    }
    if ($cat) {
        // Не при просмотре форума (субфорумы + топики)
        if (!$visable_cats) {
            System::site()->AddTextBox($forum_lang['forum'], $forum_lang['no_category']);
            return;
        }
        // Выводим блок онлайн
        $online->Render($cat_id, '0', $cat_id == 0 ? $forum_lang['all_online'] : $forum_lang['current_category']);
        // Выводим статистику
        $statistics->Render();
        // Быстрый переход
        if (!$cat) {
            ForumQuickTransitionBox($cat_id, $forum_lang['quick_transition']);
        }
    }
}
 */
/*
 * Плагин вывода карты страниц
 * Автор: Мартин
 */
if (!defined('VALID_RUN')) {
    header("HTTP/1.1 404 Not Found");
    exit;
}
global $pages, $pages_tree;
$pages = array();
$pages_db = System::database()->Select('pages', "`enabled` = '1' and `view` = '4'", null, 'order');
foreach ($pages_db as $p) {
    $link = false;
    if ($p['type'] == 'page') {
        $link = Ufu('index.php?name=pages&file=' . SafeDB($p['link'], 255, str), 'pages:page');
    }
    //	elseif($p['type'] == 'link'){
    //		$link = SafeDB($p['text'], 255, str);
    //		if(substr($link, 0, 6) == 'mod://'){
    //			$link = Ufu('index.php?name='.substr($link, 6), '{name}/');
    //		}
    //	}
    $p['link'] = $link;
    $pages[] = $p;
}
function ___SitemapPagesPlugin($Page, $Level)
{
    global $pages_tree;
    if ($Page['type'] != 'page') {
        $child_ids = $pages_tree->GetAllChildId($Page['id']);
/**
 * Отправка письма с новым паролем
 * @param $user_mail
 * @param $name
 * @param $login
 * @param $pass
 * @return void
 */
function UserSendForgotPassword($user_mail, $name, $login, $pass)
{
    $ip = getip();
    $text = Indent('
		Здравствуйте, [' . $name . ']!

		На сайте ' . GetSiteDomain() . '
		было запрошено напоминание пароля.

		Имя: ' . $name . '

		Ваш логин и новый пароль:
		логин: ' . $login . '
		пароль: ' . $pass . '

		Изменить данные аккаунта вы можете по адресу:
		' . GetSiteUrl() . Ufu('index.php?name=user&op=editprofile', 'user/{op}/') . '

		IP-адрес, с которого был запрошен пароль: ' . $ip . '

		С уважением, администрация сайта ' . GetSiteDomain() . '.
	');
    SendMail($name, $user_mail, '[' . GetSiteDomain() . '] Напоминание пароля', $text);
}
function IndexForumDeletePost()
{
    global $forum_lang;
    if (!System::user()->isAdmin() || !CheckGet('topic', 'post', 'ok')) {
        HackOff();
        return;
    }
    if (isset($_GET['page']) && $_GET['page'] > 1) {
        $page = '&page=' . SafeDB($_GET['page'], 11, int);
        $page_ufu = '-{page}';
    } else {
        $page = '';
        $page_ufu = '';
    }
    // Подтверждение на удаление
    if (!isset($_GET['ok']) || !isset($_POST['text']) && System::config('forum/basket') || $_GET['ok'] == '0') {
        $text = '<br>' . $forum_lang['delete_post'] . '?';
        System::site()->AddTextBox($forum_lang['forum'], '<p align="center">' . $text . '</p>');
        System::site()->AddTemplatedBox('', 'module/forum_delete_post.html');
        System::site()->AddBlock('delete_form', true, false, 'form');
        $vars = array();
        $vars['basket'] = System::config('forum/basket');
        $vars['url'] = 'index.php?name=forum&op=deletepost&topic=' . SafeDB($_GET['topic'], 11, int) . '&post=' . SafeDB($_GET['post'], 11, int) . $page . '&ok=1';
        // Без UFU
        System::site()->Blocks['delete_form']['vars'] = $vars;
        return;
    }
    // Сообщение
    $post_id = SafeEnv($_GET['post'], 11, int);
    System::database()->Select('forum_posts', "`id`='{$post_id}'");
    if (System::database()->NumRows() == 0) {
        System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_post']);
        return;
    }
    $post = System::database()->FetchRow();
    if ($post['delete'] == '1') {
        // На удалении
        System::site()->AddTextBox($forum_lang['error'], $forum_lang['post_basket']);
        return;
    }
    // Тема
    $topic_id = SafeEnv($_GET['topic'], 11, int);
    System::database()->Select('forum_topics', "`id`='{$topic_id}'");
    if (System::database()->NumRows() == 0) {
        System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_topic']);
        return;
    }
    $topic = System::database()->FetchRow();
    if ($topic['delete'] == '1') {
        // Тема на удалении
        System::site()->AddTextBox($forum_lang['error'], $forum_lang['topic_basket']);
        return;
    }
    // Форум
    $forum_id = SafeEnv($topic['forum_id'], 11, int);
    System::database()->Select('forums', "`id`='{$forum_id}'");
    if (System::database()->NumRows() == 0) {
        System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_forum']);
        return;
    }
    $forum = System::database()->FetchRow();
    // Удаление поста
    if (System::config('forum/basket')) {
        // Удаляем сообщение в корзину
        $reason = '';
        if (isset($_POST['text'])) {
            $reason = SafeEnv($_POST['text'], 255, str);
        }
        Moderation_Do_Basket_Post($post_id, $reason);
    } else {
        ForumAdminDeletePost($post_id);
    }
    // Обновляем тему
    $topic_posts = (int) $topic['posts'] - 1;
    if ($topic_posts < 0) {
        $topic_posts = 0;
    }
    $topic_set = "`posts`='{$topic_posts}'";
    $topic_extra_set = false;
    // Удаляется последний пост в теме (нужно ли обновлять последний пост в форуме)
    if ($topic['last_post'] == $post['public'] && $topic['last_poster_id'] == $post['user_id']) {
        $topic_extra_set = true;
        $topic_set = ForumSetLastPost($topic_id, $topic_set, true);
    }
    System::database()->Update('forum_topics', $topic_set, "`id`='{$topic_id}'");
    // Обновляем форум
    $forum_posts = (int) $forum['posts'] - 1;
    if ($forum_posts < 0) {
        $forum_posts = 0;
    }
    $forum_set = "`posts`='{$forum_posts}'";
    if ($topic_extra_set) {
        // Только если удален последний пост в теме
        $forum_set = ForumSetLastTopic($forum_id, $forum_set, true);
    }
    System::database()->Update('forums', $forum_set, "`id`= '{$forum_id}'");
    // Очищаем кэш форума
    ForumCacheClear();
    GO(Ufu('index.php?name=forum&op=showtopic&topic=' . $topic_id . $page, 'forum/topic{topic}' . $page_ufu . '.html'));
}
function ___SitemapPluginGallery($Cat, $Level)
{
    SitemapAddObject($Level, $Cat['title'], Ufu('index.php?name=gallery&cat=' . SafeDB($Cat['id'], 11, int), 'gallery/{cat}'));
}
function IndexForumDeleteTopic()
{
    global $forum_lang;
    if (!System::user()->isAdmin() || !CheckGet('topic', 'ok')) {
        HackOff();
        return;
    }
    $topic_id = SafeEnv($_GET['topic'], 11, int);
    // Подтверждение на удаление
    if (!isset($_GET['ok']) || !isset($_POST['text']) && System::config('forum/basket') || $_GET['ok'] == '0') {
        System::database()->Select('forum_topics', "`id`='" . SafeEnv($_GET['topic'], 11, int) . "'");
        $topic = System::database()->FetchRow();
        $text = $forum_lang['delete_topic'] . ' "' . SafeDB($topic['title'], 255, str) . '"?';
        System::site()->AddTextBox($forum_lang['forum'], '<p align="center">' . $text . '</p>');
        System::site()->AddTemplatedBox('', 'module/forum_delete_post.html');
        System::site()->AddBlock('delete_form', true, false, 'form');
        $vars = array();
        $vars['basket'] = System::config('forum/basket') == true;
        $vars['url'] = 'index.php?name=forum&op=deletetopic&topic=' . SafeEnv($_GET['topic'], 11, int) . '&ok=1';
        // Без UFU
        System::site()->Blocks['delete_form']['vars'] = $vars;
        return;
    }
    // Вытаскиваем тему
    System::database()->Select('forum_topics', "`id`='{$topic_id}'");
    if (System::database()->NumRows() == 0) {
        System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_topic']);
        return;
    }
    $topic = System::database()->FetchRow();
    if ($topic['delete'] == '1') {
        // Удалена в корзину
        System::site()->AddTextBox($forum_lang['error'], $forum_lang['topic_basket']);
        return;
    }
    // Удаление
    if (System::config('forum/basket')) {
        // Удаляем тему в корзину
        $reason = '';
        if (isset($_POST['text'])) {
            $reason = SafeEnv($_POST['text'], 255, str);
        }
        Moderation_Do_Basket_Topic($topic_id, $reason);
    } else {
        ForumAdminDeleteTopic($topic_id);
    }
    // Форум (Изменяем счетчики количества тем и сообщений, устанавливаем информацию о последнем посте)
    $forum_id = SafeEnv($topic['forum_id'], 11, int);
    System::database()->Select('forums', "`id`='{$forum_id}'");
    if (System::database()->NumRows() == 0) {
        System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_forum']);
        return;
    }
    $forum = System::database()->FetchRow();
    // Значения счётчиков форума
    $forum_topics = (int) $forum['topics'] - 1;
    if ($forum_topics < 0) {
        $forum_topics = 0;
    }
    $forum_posts = (int) $forum['posts'] - (int) $topic['posts'];
    if ($forum_posts < 0) {
        $forum_posts = 0;
    }
    $forum_set = "`topics`='{$forum_topics}',`posts`='{$forum_posts}'";
    // Устанавливаем информацию о последнем посте в форуме
    if ($forum['last_id'] == $topic_id) {
        // Только если удалена тема с последним постом
        $forum_set = ForumSetLastTopic($forum_id, $forum_set, true);
    }
    System::database()->Update('forums', $forum_set, "`id`= '{$forum_id}'");
    // Очищаем кэш форума
    ForumCacheClear();
    GO(Ufu('index.php?name=forum&op=showforum&forum=' . $forum_id, 'forum/{forum}/'));
}
function IndexPollsViewPoll($op)
{
    $id = SafeEnv($_GET['poll_id'], 11, int);
    System::database()->Select('polls', GetWhereByAccess('view', "`id`='{$id}' and `active`='1'"));
    if (System::database()->NumRows() == 0) {
        HackOff();
    }
    $poll = System::database()->FetchRow();
    $question = SafeDB($poll['question'], 255, str);
    System::site()->SetTitle($question);
    System::site()->BreadCrumbAdd($question);
    // Отвечал ли пользователь
    $ip = getip();
    if (System::user()->Auth) {
        $uid = System::user()->Get('u_id');
    } else {
        $uid = -1;
    }
    System::database()->Select('polls_voices', "`poll_id`='{$id}' and (`user_ip`='{$ip}' or `user_id`='{$uid}')");
    $viewresult = System::database()->NumRows() != 0;
    $viewresult = $viewresult || $op == 'viewresult' && (System::config('polls/show_results') == '1' || System::user()->isAdmin());
    $answers = unserialize($poll['answers']);
    $c = count($answers);
    $num_voices = 0;
    for ($i = 0; $i < $c; $i++) {
        $num_voices += SafeDB($answers[$i][2], 11, int);
    }
    if ($viewresult) {
        if ($num_voices != 0) {
            $per_c = 100 / $num_voices;
        } else {
            $per_c = 0;
        }
        System::site()->AddTemplatedBox('', 'module/poll_result.html');
        $vars = array('lresults_title' => 'Результаты опроса', 'lrvalue' => 'гол.');
        System::site()->AddBlock('poll_result_rows', true, true, 'pr');
        $c = count($answers);
        for ($i = 0; $i < $c; $i++) {
            if ($answers[$i][0] != '') {
                $title = SafeDB($answers[$i][0], 255, str);
                $color = SafeDB($answers[$i][1], 255, str);
                $value = round($per_c * $answers[$i][2]);
                $num_voices2 = SafeDB($answers[$i][2], 11, int);
                System::site()->AddSubBlock('poll_result_rows', true, array('answertext' => $title, 'value' => $value, 'num_voices' => $num_voices2, 'color' => $color));
            }
        }
    } else {
        System::site()->AddTemplatedBox('', 'module/poll.html');
        $vars = array();
        $vars['form_action'] = Ufu('index.php?name=polls&op=voice&poll_id=' . SafeDB($poll['id'], 11, int), 'polls/{poll_id}/voice/');
        System::site()->AddBlock('poll_variants', true, true, 'variant');
        for ($i = 0; $i < $c; $i++) {
            if ($answers[$i][0] != '') {
                $color = SafeDB($answers[$i][1], 255, str);
                $title = SafeDB($answers[$i][0], 255, str);
                if ($poll['multianswers'] == '1') {
                    $control = System::site()->Check('voice[]', $i);
                } else {
                    $control = System::site()->Radio('voice[]', $i);
                }
                System::site()->AddSubBlock('poll_variants', true, array('title' => $title, 'control' => $control, 'color' => $color));
            }
        }
        $vars['poll_showresults'] = System::config('polls/show_results') == '1' || System::user()->isAdmin();
        $vars['showresults_url'] = Ufu('index.php?name=polls&op=viewresult&poll_id=' . $id, 'polls/{poll_id}/results/');
        $vars['others_url'] = Ufu('index.php?name=polls', '{name}/');
    }
    $vars['title'] = $question;
    $vars['back_url'] = Ufu('index.php?name=polls', '{name}/');
    $vars['back_caption'] = 'Назад к списку';
    $vars['lnum_voices'] = 'Ответов';
    $vars['num_voices'] = $num_voices;
    $vars['lcomments'] = 'Комментариев';
    $vars['comments'] = SafeDB($poll['com_counter'], 11, int);
    System::site()->AddBlock('poll', true, false, '');
    System::site()->Blocks['poll']['vars'] = $vars;
    // Выводим комментарии
    if (isset($_GET['page'])) {
        $nav_page = SafeEnv($_GET['page'], 11, int);
    } else {
        $nav_page = 0;
    }
    $posts = new Posts('polls_comments', $poll['allow_comments'] == '1');
    $posts->PostFormAction = "index.php?name=polls&op=addpost&poll_id={$id}&page={$nav_page}";
    $posts->EditPageUrl = "index.php?name=polls&op=editpost&poll_id={$id}";
    $posts->DeletePageUrl = "index.php?name=polls&op=deletepost&poll_id={$id}";
    $posts->NavigationUrl = Ufu("index.php?name=polls&op=viewpoll&poll_id={$id}", 'polls/{poll_id}/page{page}/', true);
    $posts->RenderPosts($id, 'poll_comments', 'comments_navigation', false, $nav_page);
    $posts->RenderForm(false, 'poll_comments_form');
}
 public function Render($cat, $topic = '0', $title = '', $block = 'forum_online')
 {
     if ($this->MainPage) {
         // Кто на всём форуме
         $online = $this->AllOnline;
     } elseif ($topic != '0') {
         // Кто в топике
         $online = $this->GetTopicOnline($topic);
     } else {
         // Кто в категории
         $online = $this->GetCatOnline($cat);
     }
     $reg_count = count($online['admins']) + count($online['members']);
     // Кол-во не гостей
     // Шаблон
     System::site()->AddBlock($block, true, false, $block, 'module/forum_online.html');
     // Общий блок
     System::site()->AddBlock('gen_online', true, false, 'users');
     $vars = array();
     $vars['count'] = $online['count'];
     $vars['online_img'] = true;
     $vars['title'] = $title;
     $vars['reg'] = $reg_count;
     $vars['guest'] = $online['count'] - $reg_count;
     System::site()->Blocks['gen_online']['vars'] = $vars;
     // Выводим пользователей
     System::site()->AddBlock('onlines', true, true, 'user');
     $i = 0;
     // Выводим админов
     $vars = array();
     foreach ($online['admins'] as $row) {
         $i++;
         $vars['url'] = '<a href="' . Ufu('index.php?name=user&op=userinfo&user='******'user_id'], 11, int), 'user/{user}/info/') . '">' . SafeDB($row['user_name'], 255, str) . '</a>';
         System::site()->AddSubBlock('onlines', true, $vars);
         if ($i > 250) {
             break;
         }
     }
     // Выводим пользователей
     $vars = array();
     foreach ($online['members'] as $row) {
         $i++;
         $vars['url'] = '<a href="' . Ufu('index.php?name=user&op=userinfo&user='******'user_id'], 11, int), 'user/{user}/info/') . '">' . SafeDB($row['user_name'], 255, str) . '</a>';
         System::site()->AddSubBlock('onlines', true, $vars);
         if ($i > 250) {
             break;
         }
     }
     if ($this->MainPage) {
         $vars['url'] = ($reg_count > 0 ? '<br>' : '') . 'всего на форуме: ' . $online['count'];
         System::site()->AddSubBlock('onlines', true, $vars);
     }
 }
if (!defined('VALID_RUN')) {
    header("HTTP/1.1 404 Not Found");
    exit;
}
global $search_results, $searchstr;
$objects = System::database()->Select('articles', GetWhereByAccess('view', "`active`='1'"));
foreach ($objects as $object) {
    $result = array();
    $result['mod'] = $plugin_info['mod_title'];
    // Имя модуля
    $result['coincidence'] = '';
    // Показывает где было совпадение
    $result['title'] = SafeDB($object['title'], 255, str);
    $result['public'] = TimeRender(SafeDB($object['public'], 11, int));
    // Дата публикации
    $result['link'] = Ufu('index.php?name=articles&op=read&art=' . SafeDB($object['id'], 11, int) . '&cat=' . SafeDB($object['cat_id'], 11, int), 'articles/{cat}/{art}/');
    $result['text'] = SafeDB($object['description'], 0, str);
    if (strlen($result['text']) > 255) {
        $result['text'] = substr($result['text'], 0, 255) . '&nbsp; ...';
    }
    if (SSearch($object['seo_keywords'], $searchstr) != false) {
        $result['coincidence'] = 'Ключевые слова статьи';
        $search_results[] = $result;
    } elseif (SSearch($object['seo_description'], $searchstr) != false) {
        $result['coincidence'] = 'Описание статьи';
        $search_results[] = $result;
    } elseif (SSearch($object['title'], $searchstr) != false) {
        $result['coincidence'] = 'Заголовок статьи';
        $search_results[] = $result;
    } elseif (SSearch($object['description'], $searchstr) != false) {
        $result['text'] = SCoincidence($object['description'], $searchstr);
function AdminGalleryMainFunc()
{
    global $edit_images, $GalleryDir, $ThumbsDir;
    UseScript('colorbox?theme=admin');
    $back = SaveRefererUrl();
    if (isset($_GET['cat']) && $_GET['cat'] > -1) {
        $cat = SafeEnv($_GET['cat'], 11, int);
        $where = "`cat_id`='{$cat}'";
    } else {
        $cat = -1;
        $where = "";
    }
    $data = AdminGalleryGetTree()->GetCatsData($cat, true);
    System::site()->DataAdd($data, -1, 'Все изображения', $cat == -1);
    if (isset($_GET['page'])) {
        $page = SafeEnv($_GET['page'], 11, int);
        $page_param = '&page=' . SafeDB($_GET['page'], 11, int);
    } else {
        $page = 1;
        $page_param = '';
    }
    AddCenterBox('Фото');
    System::admin()->AddJS(Indent('
		GallerySelectCat = function(){
			Admin.LoadPage("' . ADMIN_FILE . '?exe=gallery&cat="+$("#gallery-cat").val());
		}
	'));
    $text = '<div style="margin-bottom: 10px;">Категория: ' . System::site()->Select('cat', $data, false, 'id="gallery-cat" onchange="GallerySelectCat();"');
    if ($cat < 0) {
        $text .= ' (Для сортировки изображений, выберите категорию)';
    }
    $text .= '</div>';
    AddText($text);
    $images = System::database()->Select('gallery', $where);
    $count_images = count($images) - 1;
    SortArray($images, 'order');
    if (count($images) > System::config('gallery/images_on_page')) {
        $navigator = new Navigation($page);
        $navigator->GenNavigationMenu($images, System::config('gallery/images_on_page'), ADMIN_FILE . '?exe=gallery' . ($cat > 0 ? '&cat=' . $cat : ''));
        $nav = true;
    } else {
        $nav = false;
    }
    $text = '<table cellspacing="0" cellpadding="0" class="cfgtable">';
    $text .= '<tr>' . ($cat > 0 ? '<th>Сортировка</th>' : '') . '<th>Изображение</th><th>Просмотров</th><th>Видят</th><th>Статус</th><th>Функции</th></tr>';
    foreach ($images as $i => $img) {
        $id = SafeDB($img['id'], 11, int);
        $title = SafeDB($img['title'], 255, str);
        if ($title == '') {
            $title = 'Изображение ' . $id;
        }
        if (System::config('gallery/show_thumbs')) {
            $img_filename = SafeDB($img['file'], 255, str);
            $size = FormatFileSize(filesize($GalleryDir . $img_filename));
            $asize = getimagesize($GalleryDir . $img_filename);
            $asize = $asize[0] . 'x' . $asize[1];
            $thumb = '<div style="margin: 5px 0;"><a href="' . $GalleryDir . $img_filename . '" target="_blank" class="colorbox">' . '<img title="' . $title . '" src="' . $ThumbsDir . $img_filename . (isset($_GET['update']) && $_GET['update'] == $id ? '?' . GenRandomString(5) : '') . '"></a></div>' . "({$asize}, {$size})";
        } else {
            $thumb = '';
        }
        $hits = SafeDB($img['hits'], 11, int);
        $st = $img['show'] == '1' ? 'Вкл.' : 'Выкл.';
        $func = '-';
        $move_menu = '';
        $link_go = Ufu('index.php?name=gallery&op=view&img=' . $id . '&cat=' . SafeDB($img['cat_id'], 11, int), 'gallery/{cat}/{img}/');
        $func = '';
        $func .= System::admin()->SpeedButton('Перейти к странице на сайте', $link_go, 'images/link_go.png', false, false, 'target="_blank"');
        if ($edit_images) {
            $edit_url = ADMIN_FILE . '?exe=gallery&a=editor&id=' . $id . '&back=' . $back;
            $title = '<b>' . System::admin()->Link($title, $edit_url) . '</b>';
            $hits .= '&nbsp;' . System::admin()->SpeedConfirm('Обнулить счётчик просмотров', ADMIN_FILE . '?exe=gallery&a=resethits&id=' . $id . '&back=' . $back, 'images/admin/arrow_in.png', 'Сбросить счётчик просмотров?');
            $st = System::admin()->SpeedStatus('Вкл.', 'Выкл.', ADMIN_FILE . '?exe=gallery&a=changestatus&id=' . $id, $img['show'] == '1');
            $func .= System::admin()->SpeedButton('Редактировать', $edit_url, 'images/admin/edit.png');
            $func .= System::admin()->SpeedConfirm('Удалить', ADMIN_FILE . '?exe=gallery&a=delete&id=' . $id . '&back=' . $back, 'images/admin/delete.png', 'Удалить изображение?');
            $func .= '<div style="margin-top: 4px;">';
            $func .= System::admin()->SpeedButton('Повернуть влево на 90°', ADMIN_FILE . '?exe=gallery&a=rotate&turn=left&id=' . $id . '&back=' . $back, 'images/admin/layer-rotate-left.png');
            $func .= System::admin()->SpeedButton('Повернуть вправо на 90° ', ADMIN_FILE . '?exe=gallery&a=rotate&turn=right&id=' . $id . '&back=' . $back, 'images/admin/layer-rotate-right.png');
            $func .= System::admin()->SpeedButton('Обновить эскиз', ADMIN_FILE . '?exe=gallery&a=refreshthumb&id=' . $id . '&back=' . $back, 'images/admin/refresh.png');
            $func .= '</div>';
            if ($count_images == 0) {
                // Единственный элемент в списке
                $move_menu .= ' - ';
            } else {
                if ($i != $count_images) {
                    // Первый элемент
                    $move_menu .= System::admin()->SpeedButton('Вниз', ADMIN_FILE . '?exe=gallery&a=move&to=down&id=' . $id . '&cat=' . $cat . $page_param, 'images/admin/down.png');
                }
                if ($i != 0) {
                    // Последний элемент
                    $move_menu .= System::admin()->SpeedButton('Вверх', ADMIN_FILE . '?exe=gallery&a=move&to=up&id=' . $id . '&cat=' . $cat . $page_param, 'images/admin/up.png');
                }
            }
        }
        $text .= Indent('
			<tr>
				' . ($cat > 0 ? '<td>' . $move_menu . '</td>' : '') . '
				<td>' . $title . $thumb . '</td>
				<td>' . $hits . '</td>
				<td>' . ViewLevelToStr(SafeDB($img['view'], 1, int)) . '</td>
				<td>' . $st . '</td>
				<td>' . $func . '</td>
			</tr>
		');
    }
    $text .= '</table>';
    AddText($text);
    if ($nav) {
        AddNavigation();
    }
}
        $id = SafeEnv($r['id'], 11, int);
        System::database()->Update('forms', "`link`='{$link}'", "`id`='{$id}'");
    }
    // Обновление таблицы rewrite_rules
    System::database()->Truncate('rewrite_rules');
    System::database()->InsertColl('rewrite_rules', Unserialize('a:4:{s:4:"name";s:4:"name";s:4:"type";s:7:"varchar";s:6:"length";i:255;s:7:"notnull";b:1;}'), 0);
    System::database()->InsertColl('rewrite_rules', Unserialize('a:4:{s:4:"name";s:6:"module";s:4:"type";s:7:"varchar";s:6:"length";i:255;s:7:"notnull";b:1;}'), 1);
    System::database()->InsertColl('rewrite_rules', Unserialize('a:4:{s:4:"name";s:11:"description";s:4:"type";s:7:"varchar";s:6:"length";i:255;s:7:"notnull";b:1;}'), 2);
    System::database()->InsertColl('rewrite_rules', Unserialize('a:4:{s:4:"name";s:5:"order";s:4:"type";s:3:"int";s:6:"length";i:11;s:7:"notnull";b:1;}'), 6);
    // Системные правила
    UfuAddRuleByTemplate('system', 'mod', 'Ссылка на модуль', 'name={str}', '{name}/', 1000);
    // Правила для страниц
    UfuAddRuleByTemplate('pages', 'page', 'Ссылка на страницу', 'name=pages&file={ustr}', '{file}.html');
    // Правила для модуля веб форм
    UfuAddRuleByTemplate('forms', 'form', 'Страница с формой', 'name=forms&formlink={ustr}', 'forms/{formlink}.html');
    Ufu('index.php?name=forms&form={num}', 'forms/{form}/');
    Ufu('index.php?name=news&op=topics', 'news/{op}/', 15000);
    // Обновление шаблона
    $template = System::config('general/site_template');
    if ($template != 'default' && $template != 'IgrimTheme') {
        $file_name = System::config('tpl_dir') . $template . '/module/user_list.html';
        $temp_content = file_get_contents($file_name);
        $temp_content = str_replace('{title.last}', '{title.last_visit}', $temp_content);
        file_put_contents($file_name, $temp_content);
    }
    // Пересборка ядра
    if (is_file('config/system_build.php')) {
        unlink('config/system_build.php');
    }
    System::cache()->ClearAll();
}
if (!defined('VALID_RUN')) {
    header("HTTP/1.1 404 Not Found");
    exit;
}
global $search_results, $searchstr;
$objects = System::database()->Select('downloads', GetWhereByAccess('view', "`active`='1'"));
foreach ($objects as $object) {
    $result = array();
    $result['mod'] = $plugin_info['mod_title'];
    //'Архив файлов';  // Имя модуля
    $result['coincidence'] = '';
    // Показывает где было совпадение
    $result['title'] = SafeDB($object['title'], 255, str);
    $result['public'] = TimeRender(SafeDB($object['public'], 11, int));
    // Дата публикации
    $result['link'] = Ufu('index.php?name=downloads&op=full&cat=' . SafeDB($object['category'], 11, int) . '&file=' . SafeDB($object['id'], 11, int), 'downloads/{cat}/{file}/');
    $result['text'] = SafeDB($object['shortdesc'], 0, str);
    if (strlen($result['text']) > 255) {
        $result['text'] = substr($result['text'], 0, 255) . '&nbsp; ...';
    }
    if (SSearch($object['title'], $searchstr) !== false) {
        $result['coincidence'] = 'Заголовок файла';
        $search_results[] = $result;
    } elseif (SSearch($object['shortdesc'], $searchstr) !== false) {
        $result['text'] = SCoincidence($object['shortdesc'], $searchstr);
        $result['coincidence'] = 'Краткое описание файла';
        $search_results[] = $result;
    } elseif (SSearch($object['description'], $searchstr) !== false) {
        $result['text'] = SCoincidence($object['description'], $searchstr);
        $result['coincidence'] = 'Полное описание файла';
        $search_results[] = $result;
 private function RenderPost($ObjectId, &$Posts, $BlockName, $Level)
 {
     if (count($Posts) == 0) {
         return false;
     }
     foreach ($Posts as $post) {
         $post_id = SafeDB($post['id'], 11, int);
         $user_id = SafeDB($post['user_id'], 11, int);
         $vars = array();
         $vars['level_padding'] = Posts::$LevelMargin * $Level;
         $vars['post_message'] = HtmlChars($post['post_message']);
         SmiliesReplace($vars['post_message']);
         $vars['post_message'] = nl2br($vars['post_message']);
         $vars['post_message'] = BbCodePrepare($vars['post_message']);
         if ($user_id != 0) {
             // Зарегистрированный пользователь
             $userinfo = GetUserInfo($user_id);
             $vars['user_link'] = Ufu("index.php?name=user&op=userinfo&user={$user_id}", 'user/{user}/info/');
             $vars['user_name'] = '<a href="' . $vars['user_link'] . '">' . $userinfo['name'] . '</a>';
             $vars['post_date'] = SafeDB($post['post_date'], 11, int);
             if ($userinfo['hideemail'] == '0') {
                 $vars['user_email'] = AntispamEmail($userinfo['email']);
             } else {
                 $vars['user_email'] = '';
             }
             $vars['user_homepage'] = SafeDB($userinfo['url'], 255, str);
             $vars['user_homepage_url'] = UrlRender(SafeDB($post['user_homepage'], 255, str));
             if ($userinfo['online']) {
                 $vars['user_status'] = 'Сейчас на сайте.';
             } else {
                 $vars['user_status'] = '';
             }
             $vars['user_rank_image'] = $userinfo['rank_image'];
             $vars['user_rank_name'] = $userinfo['rank_name'];
             $vars['user_avatar'] = $userinfo['avatar_file'];
             $vars['user_avatar_small'] = $userinfo['avatar_file_small'];
             $vars['user_avatar_smallest'] = $userinfo['avatar_file_smallest'];
             $vars['user_regdate'] = TimeRender($userinfo['regdate'], false, false);
         } else {
             $vars['user_name'] = SafeDB($post['user_name'], 255, str);
             $vars['post_date'] = SafeDB($post['post_date'], 11, int);
             if ($post['user_email'] != '' && $post['user_hideemail'] != 0) {
                 $vars['user_email'] = AntispamEmail(SafeDB($post['user_email'], 255, str));
             } else {
                 $vars['user_email'] = '';
             }
             if ($post['user_homepage'] != '') {
                 $vars['user_homepage'] = SafeDB($post['user_homepage'], 255, str);
                 $vars['user_homepage_url'] = UrlRender(SafeDB($post['user_homepage'], 255, str));
             } else {
                 $vars['user_homepage'] = '';
                 $vars['user_homepage_url'] = '';
             }
             $vars['user_status'] = '';
             $vars['user_rank_image'] = '';
             $vars['user_rank_name'] = '';
             $vars['user_avatar'] = GetPersonalAvatar(0);
             $vars['user_avatar_small'] = GetSmallUserAvatar(0, $vars['user_avatar']);
             $vars['user_avatar_smallest'] = GetSmallestUserAvatar(0, $vars['user_avatar']);
             $vars['user_regdate'] = '';
         }
         $vars['user_id'] = SafeDB($post['user_id'], 11, int);
         $vars['post_id'] = $post_id;
         $vars['user_ip'] = SafeDB($post['user_ip'], 19, str);
         $vars['object_id'] = $ObjectId;
         $vars['parent_id'] = SafeDB($post['post_parent_id'], 11, int);
         if ($vars['user_homepage'] != '') {
             $vars['user_homepage'] = '<a href="' . $vars['user_homepage_url'] . '" target="_blank">' . $vars['user_homepage'] . '</a>';
         } else {
             $vars['user_homepage'] = '';
         }
         $vars['post_date'] = TimeRender($vars['post_date']);
         if (System::user()->Auth) {
             $vars['editing'] = System::user()->Get('u_id') == $user_id || System::user()->isAdmin();
         } else {
             $vars['editing'] = $user_id == '0' && $vars['user_ip'] == getip();
         }
         $vars['answers'] = $this->Answers != '0' || System::user()->isAdmin();
         if (!System::user()->Auth && !$this->GuestPost) {
             $vars['answers'] = false;
         }
         if (!$this->AlloyComments) {
             $vars['answers'] = false;
         }
         $vars['no_answers'] = !$vars['answers'];
         $back = SaveRefererUrl();
         $vars['edit_url'] = $this->EditPageUrl . '&post_id=' . $post_id . '&back=' . $back;
         $vars['delete_url'] = $this->DeletePageUrl . '&post_id=' . $post_id . '&back=' . $back;
         $vars['parent_post_url'] = $_SERVER['REQUEST_URI'] . '#post_' . SafeDB($post['post_parent_id'], 11, int);
         $vars['post_url'] = $_SERVER['REQUEST_URI'] . '#post_' . $post_id;
         System::site()->AddSubBlock($BlockName, true, $vars, array(), $this->PostTemplate);
         if (isset($this->PostsTree[$post_id])) {
             if ($this->MaxTreeLevel > $Level) {
                 $newLevel = $Level + 1;
             } else {
                 $newLevel = $Level;
             }
             $this->RenderPost($ObjectId, $this->PostsTree[$post_id], $BlockName, $newLevel);
         }
     }
     return true;
 }
function AdminNewsTopics()
{
    global $news_access_edittopics;
    UseScript('jquery_ui', 'colorbox?theme=admin');
    if (!$news_access_edittopics) {
        System::admin()->AccessDenied();
    }
    $cntr = 0;
    AddCenterBox('Текущие новостные разделы');
    $topics = System::database()->Select('news_topics');
    $text = '<table style="width: 100%; border: 1px #ABC5D8 solid; background-color: #fff; padding: 10px;">';
    foreach ($topics as $topic) {
        $topic_id = SafeDB($topic['id'], 11, int);
        $edit_url = ADMIN_FILE . '?exe=news&a=edittopic&id=' . $topic_id;
        $link_go = Ufu('index.php?name=news&topic=' . $topic_id, 'news/{topic}/');
        $title = SafeDB($topic['title'], 255, str);
        $desc = SafeDB($topic['description'], 255, str);
        $counter = SafeDB($topic['counter'], 11, int);
        $image = SafeDB($topic['image'], 255, str);
        if ($image != '') {
            list($width, $height) = SafeDB(explode(':', System::config('news/topics_tmb_size')), 11, int);
            $image = GetThumb($image, $width, $height);
            $image = '<tr><td align="center"><a href="' . $edit_url . '"><img src="' . $image . '" height="80" title="' . $desc . '"></a></td></tr>';
        }
        $func = '';
        $func .= System::admin()->SpeedButton('Перейти к странице на сайте', $link_go, 'images/link_go.png', false, false, 'target="_blank"');
        $func .= System::admin()->SpeedButton('Редактировать', $edit_url, 'images/admin/edit.png');
        $func .= System::admin()->SpeedAjax('Удалить', ADMIN_FILE . '?exe=news&a=deltopic&id=' . $topic_id, 'images/admin/delete.png', 'Удалить раздел? Все новости в этом разделе так-же будут удалены.', '', "\$('#topic_{$topic_id}').children('table').fadeOut('slow');");
        if ($cntr % 4 == 0) {
            $text .= '<tr>';
        }
        $text .= Indent('
			<td id="topic_$topic_id" valign="top" align="center" style="padding: 10px;">
				<table align="center" cellspacing="5" cellpadding="0">
					<tr>
						<td align="center">
							<b><a href="' . $edit_url . '">' . $title . '</a> (' . $counter . ')</b>
						</td>
					</tr>
					' . $image . '
					<tr>
						<td align="center">' . $func . '</td>
					</tr>
				</table>
			</td>
		');
        if (++$cntr % 4 == 0) {
            $text .= '</tr>';
        }
    }
    if ($cntr % 4 != 0) {
        $text .= '</tr>';
    }
    $text .= '</table>';
    AddText($text);
    System::admin()->FormTitleRow('Создать новый раздел новостей');
    System::admin()->FormRow('Название раздела', System::admin()->Edit('topic_name', '', false, 'maxlength="255" style="width:400px;"'));
    System::admin()->FormTextRow('Описание (HTML)', System::admin()->HtmlEditor('topic_description', '', 600, 200));
    FormRow('Изображение', System::admin()->FileManager('topic_image', '') . '<br>
		<a href="images/no_image.png" class="filemanager_topic_image colorbox" data-content="href:path" target="_blank">
			<img src="images/no_image.png" class="filemanager_topic_image" data-content="src:tmb" style="margin-top: 5px; max-width: 250px;">
		</a>');
    System::admin()->AddForm('<form name="topicsform" action="' . ADMIN_FILE . '?exe=news&a=addtopic" method="post" name="topicsform">', System::admin()->Submit('Создать'));
}
function IndexForumUserTopics()
{
    global $forum_lang;
    $forums_tree = ForumTree::Instance();
    // Проверка данных
    if (isset($_GET['user'])) {
        $user_id = SafeEnv($_GET['user'], 11, int);
        $user = GetUserInfo($user_id);
        if ($user === false) {
            // Пользователь не найден
            System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_user']);
            return;
        }
    } else {
        System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_data']);
        // Нет параметра
        return;
    }
    // Параметры постраничной навигации
    if (isset($_GET['page'])) {
        $page = SafeEnv($_GET['page'], 11, int);
    } else {
        $page = 1;
    }
    $topics_on_page = System::config('forum/topics_on_page');
    // Устанавливаем заголовок страницы
    $function_title = $forum_lang['allusertopics'] . ' "' . $user['name'] . '"';
    System::site()->SetTitle(SafeDB($function_title, 255, str) . ' - ' . ($page > 1 ? $forum_lang['page'] . $page . ' - ' : '') . $forum_lang['forum']);
    $forum_nav_url = Ufu('index.php?name=forum&op=usertopics&user='******'forum/usertopics/{user}-{page}/', true);
    //$forum_url = Ufu('index.php?name=forum&op=usertopics&user='******'forum/usertopics/{user}/');
    // Объекты статистики и онлайн
    $statistics = ForumStatistics::Instance();
    $online = ForumOnline::Instance('0', '0', true);
    // Обновляем статус онлайн
    // Инициализируем статистику
    $statistics->Initialize($forum_lang['statistics_cat']);
    // Хлебные крошки
    System::site()->BreadCrumbAdd($function_title);
    $auth = System::user()->Auth;
    $is_admin = System::user()->isAdmin();
    $current_user_id = System::user()->Get('u_id');
    // Загружаем данные корзины для видимых топиков
    $basket = ForumBasketGetData('forum_basket_topics');
    // Загружаем информацию по топикам в $topics_data и считаем статистику (кэшировать статистику)
    $topics_data = ForumCacheGetTopics();
    // Запрашиваем данные тем (агрегированы по форумам)
    $topics = array();
    // Сюда будем добавлять топики для вывода
    $resolve_cats = $forums_tree->GetAllAccessForumId(0);
    // Считаем только в открытых для доступа форумах
    foreach ($resolve_cats as $resolve_cat) {
        if (!isset($topics_data[$resolve_cat])) {
            continue;
        }
        foreach ($topics_data[$resolve_cat] as $topic) {
            // Отсеиваем
            if ($topic['starter_id'] == $user_id) {
                // Добавляем данные из корзины, если топик удалён в корзину
                $topic['status'] = '';
                $topic['show_delete'] = $is_admin;
                if ($topic['delete'] && isset($basket[$topic['id']]) && $auth && ($is_admin || $topic['starter_id'] == $current_user_id)) {
                    // Добавляем сообщение - "Удалено в корзину"
                    $topic['status'] = ForumBasketRender($topic['id'], $topic['title'], $basket, false);
                    $topic['show_delete'] = false;
                } elseif ($topic['delete']) {
                    continue;
                    // Удалён топик и корзина не показывается для этого пользователя
                }
                $statistics->hits += $topic['hits'];
                $statistics->AddTopicAuthor($topic['starter_id'], $topic['starter_name']);
                $statistics->topics_count += 1;
                $statistics->reply_count += $topic['posts'];
                $topics[] = $topic;
            }
        }
    }
    unset($topics_data);
    // Заголовки (Темы, Ответов, Просмотры)
    System::site()->AddBlock('statistik', true, false, 'stat');
    System::site()->SetVars('statistik', array('count_read' => ''));
    // Отключаем некоторые блоки
    System::site()->AddBlock('topic_form', false, false, 'form');
    System::site()->AddBlock('topic_right', false, false, 'topic');
    System::site()->AddBlock('forum', false);
    System::site()->AddBlock('forum_guest_message', false);
    // Блоки шаблона
    // Ссылки, Отметить все как прочитанные и показать все не прочитанные темы.
    $vars_is_forum_member = array();
    $vars_is_forum_member['url'] = '<a href="' . Ufu('index.php?name=forum&op=markread', 'forum/markread/') . '">' . $forum_lang['mark_all_read'] . '</a>';
    $vars_is_forum_member['viewnoreadurl'] = '<a href="' . Ufu('index.php?name=forum&op=viewnoread', 'forum/viewnoread/') . '">' . $forum_lang['viewnoread'] . '</a>';
    $vars_is_forum_member['forum_id'] = '0';
    if (!System::site()->HasBlock('is_forum_member')) {
        System::site()->AddBlock('is_forum_member', AccessIsResolved(2), false, 'mark');
    }
    System::site()->SetVars('is_forum_member', $vars_is_forum_member);
    // Последние темы форума
    System::site()->AddBlock('old', true, false, 'mark');
    $vars_old = array();
    $vars_old['lasttopics'] = '<a href="' . Ufu('index.php?name=forum&op=lasttopics', 'forum/lasttopics/') . '">' . $forum_lang['lasttopics'] . '</a>';
    System::site()->SetVars('old', $vars_old);
    // Блок списка топиков
    System::site()->AddBlock('topics', true, true, 'topic');
    // Инициализируем постраничную навигацию
    $navigation = new Navigation($page);
    $navigation->FrendlyUrl = System::config('general/ufu');
    // Выводим топики в шаблон
    if (count($topics) == 0) {
        // В этом форуме пока нет ни одной темы
        System::site()->AddBlock('no_topics', true);
        $navigation->DisableNavigation();
    } else {
        // Вывод постраничной навигации
        $navigation->GenNavigationMenu($topics, $topics_on_page, $forum_nav_url);
        // Загружаем данные о прочтении тем
        $read_data = Forum_Marker_GetReadData();
        $visable_topics = false;
        // Вывод тем из этой категории с постраничной навигацией
        foreach ($topics as $topic) {
            $forum_config = $forums_tree->GetForumConfigRecursive($topic['forum_id']);
            // Конфигурация просматриваемого форума
            // Статус прочитано
            $read = true;
            // прочитано
            if ($auth && (!isset($read_data[$topic['id']]) || $topic['last_post'] > $read_data[$topic['id']]['date'])) {
                $read = false;
            }
            $topic = ForumTopicFilterData($topic);
            // Фильтрация данных топика
            $topic['on'] = !$read;
            $topic['off'] = $read;
            if (!$topic['close']) {
                $topic['close'] = $forum_config['close'];
                $topic['begin'] = !$forum_config['close'];
            }
            $topic['page'] = $page;
            $visable_topics = true;
            System::site()->AddSubBlock('topics', true, $topic);
        }
        System::site()->AddBlock('no_topics', !$visable_topics);
    }
    // Блоки модерации
    ModerationForumTopicsBlocks();
    // Подключаем шаблон
    System::site()->AddTemplatedBox('', 'module/forum_topics.html');
    // Выводм блок онлайн
    $online->Render('0', '0', $forum_lang['all_online'], 'forum_topics_online');
    // Выводим статистику
    $statistics->Render('forum_topics_statistics');
    // Выбор периода и быстрый переход
    ForumQuickTransitionBox(0, $forum_lang['quick_transition']);
}
function IndexFeedBackSend()
{
    $err = array();
    if (!isset($_POST['name']) || !isset($_POST['email']) || !isset($_POST['subject']) || !isset($_POST['department']) || !isset($_POST['message']) || !isset($_POST['feedback_form'])) {
        GO(Ufu('index.php'));
    } else {
        if ($_POST['name'] != '') {
            $name = SafeDB($_POST['name'], 250, str);
        } else {
            $err[] = 'Пожалуйста, укажите Ваше имя!';
        }
        if ($_POST['email'] != '') {
            $email = SafeDB($_POST['email'], 50, str);
        } else {
            $err[] = 'Пожалуйста, укажите Ваш действительный адрес E-mail!';
        }
        if ($_POST['subject'] != '') {
            $subject = SafeDB($_POST['subject'], 250, str, false, false, false);
        } else {
            $err[] = 'Пожалуйста, введите тему сообщения!';
        }
        // Проверяем капчу
        if (!System::user()->isDef('captcha_keystring') || System::user()->Get('captcha_keystring') != $_POST['keystr']) {
            $err[] = 'Вы ошиблись при вводе кода с картинки.';
        }
        if ($_POST['department'] != '') {
            $department = SafeEnv($_POST['department'], 11, int);
            System::database()->Select('feedback', "`active`='1' and `id`='{$department}'");
            if (System::database()->NumRows() > 0) {
                $dep = System::database()->FetchRow();
                $dep_email = SafeDB($dep['email'], 255, str);
                $department = SafeDB($dep['name'], 255, str);
            } else {
                $err[] = 'Департамент больше не существует или обратная связь с этим департаментом отключена.';
            }
        } else {
            $err[] = 'Пожалуйста, выберите департамент!';
        }
        if ($_POST['message'] != '') {
            $message = SafeDB($_POST['message'], 65535, str, false, false, false);
        } else {
            $err[] = 'Пожалуйста, введите сообщение!';
        }
    }
    $size = $_FILES['attach']['size'];
    // / 1024;
    if ($_FILES['attach']['error'] == UPLOAD_ERR_OK && $size >= System::config('feedback/max_filesize')) {
        $err[] = 'Слишком большой размер файла.';
    }
    if (count($err) == 0) {
        $mail = LmEmailExtended::Instance();
        $mail->SetTo($dep_email, Cp1251ToUtf8($department));
        $mail->SetFrom($email, Cp1251ToUtf8($name));
        $mail->SetSubject(Cp1251ToUtf8($subject));
        $text = Indent("\n\t\t\tЗдравствуйте!\n\n\t\t\tС помощью формы обратной связи на сайте \"" . System::config('general/site_name') . "\"\n\t\t\tвам было отправлено сообщение.\n\n\t\t\tДепартамент: {$department}\n\t\t\tИмя: {$name}\n\t\t\tE-mail: {$email}\n\t\t\tТема сообщения: {$subject}\n\t\t\tДата отправки: " . TimeRender(time(), true, false) . "\n\t\t\tСообщение: {$message}\n\t\t");
        $mail->AddTextPart(Cp1251ToUtf8($text));
        if ($_FILES['attach']['error'] == UPLOAD_ERR_OK) {
            $mail->AddAttachmentPart(file_get_contents($_FILES['attach']['tmp_name']), $_FILES['attach']['name']);
        }
        if ($mail->Send()) {
            System::site()->AddTextBox('Обратная связь', '<div style="text-align: center;">Ваше сообщение успешно отправлено!</div>');
        } else {
            System::site()->AddTextBox('Обратная связь', '<div style="text-align: center;">При отправке вашего сообщения произошла ошибка, повторите попытку или обратитесь к администратору.</div>');
        }
    } else {
        $text = 'Сообщение не отправлено:<br /><ul>';
        foreach ($err as $error) {
            $text .= '<li>' . $error . '</li>';
        }
        $text .= '</ul>';
        System::site()->AddTextBox('Ошибка', $text);
        IndexFeedBackForm();
    }
}
function IndexForumAddPost()
{
    global $forum_lang;
    $forums_tree = ForumTree::Instance();
    // Проверки на доступ
    if (CheckGet('topic')) {
        // Тема
        $topic_id = SafeEnv($_GET['topic'], 11, int);
        System::database()->Select('forum_topics', "`id`='{$topic_id}'");
        if (System::database()->NumRows() > 0) {
            $topic = System::database()->FetchRow();
        } else {
            System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_access_category']);
            return;
        }
        if ($topic['delete'] == '1') {
            // Тема на удалении
            System::site()->AddTextBox($forum_lang['error'], $forum_lang['topic_basket'] . '.' . $forum_lang['no_topic_basket_edit']);
            return;
        }
        if ($topic['close_topics'] == '1') {
            // Тема закрыта
            System::site()->AddTextBox($forum_lang['error'], $forum_lang['topic_close_for_discussion'] . '.' . $forum_lang['no_create_new_message_current_topic_add']);
            return;
        }
        // Форум
        $forum_id = SafeEnv($topic['forum_id'], 11, int);
        if (!isset($forums_tree->IdCats[$forum_id])) {
            System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_data']);
            return;
        }
        $forum = $forums_tree->IdCats[$forum_id];
        $forum_config = $forums_tree->GetForumConfigRecursive($forum_id);
        if (!$forum_config['access']) {
            // Доступ
            System::site()->AddTextBox($forum_lang['error'], $forum_config['access_reason']);
            return;
        } elseif (!$forum_config['add_post']) {
            // Разрешено ли добавлять новые сообщения (+ защита от гостей)
            System::site()->AddTextBox($forum_lang['error'], $forum_config['add_post_reason']);
            return;
        }
    } else {
        System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_data']);
        return;
    }
    // Добавляем сообщение
    if (!CheckPost('text') || strlen($_POST['text']) == 0) {
        System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_data']);
        return;
    }
    $name = System::user()->Get('u_name');
    $email = System::user()->Get('u_email');
    $hideemail = System::user()->Get('u_hideemail');
    $site = System::user()->Get('u_homepage');
    $icq = System::user()->Get('u_icq');
    $uid = System::user()->Get('u_id');
    $text = SafeEnv($_POST['text'], 0, str);
    $vals = Values('', $topic_id, $uid, time(), $name, $site, $email, $hideemail, $icq, $text, getip(), 0);
    System::database()->Insert('forum_posts', $vals);
    // Обновляем время прочтения темы автором сообщения
    $user_id = System::user()->Get('u_id');
    System::database()->Delete('forum_topics_read', "`tid`='{$topic_id}' and `mid`='{$user_id}'");
    $time = time();
    $vals = "'{$user_id}','{$topic_id}','{$time}'";
    System::database()->Insert('forum_topics_read', $vals);
    // Информация о последнем сообщении в теме и форуме
    $forum['posts'] = (int) $forum['posts'] + 1;
    $topic['posts'] = (int) $topic['posts'] + 1;
    IndexForumSetLastPostInfo($forum, $topic);
    // Добавляем очков пользователю
    System::user()->ChargePoints(System::config('points/forum_post'));
    // Увеличиваем счётчик сообщений пользователя
    ForumCalcUserCounters(1);
    // Делаем рассылку подписчикам на эту тему
    Forum_Subscription_Send($topic_id);
    // Очищаем кэш форума
    ForumCacheClear();
    GO(Ufu('index.php?name=forum&op=showtopic&topic=' . $topic_id . '&view=lastpost#last', 'forum/topic{topic}-new.html'));
}
 /**
  * Выводит форму логина
  * @param string         $Message
  * @param StarkytBlock   $ToBlock
  * @return void
  */
 public function Login($Message = '', $ToBlock = null)
 {
     if (!isset($ToBlock)) {
         $ToBlock = $this->AddTemplatedBox('Авторизация', 'login.html');
     }
     $vars = array('message' => $Message, 'form_action' => 'index.php?name=user&op=login&back=main', 'llogin' => 'Логин', 'lpass' => 'Пароль', 'lremember' => 'Запомнить меня', 'registration' => System::config('user/registration') == 'on', 'lregistration' => 'Регистрация', 'registration_url' => Ufu('index.php?name=user&op=registration', 'user/{op}/'), 'lsubmit' => 'Войти', 'lforgot_pass' => 'Напомнить пароль');
     $ToBlock->NewBlock('login', true, false, 'lf')->SetVars($vars);
 }