/**
  * Выводит форму добавления или редактирования комментария.
  * @param bool        $Edit              Метод редактирования
  * @param string      $PostFormBlockName Имя блока для вывода формы
  */
 public function RenderForm($Edit = false, $PostFormBlockName = 'postsform')
 {
     if ($this->DisableComments) {
         System::site()->AddBlock($PostFormBlockName, false, false, 'form', $this->PostFormTemplate);
         return;
     } else {
         System::site()->AddBlock($PostFormBlockName, true, false, 'form', $this->PostFormTemplate);
     }
     if ($Edit && isset($_GET['post_id'])) {
         $post_id = SafeEnv($_GET['post_id'], 11, int);
     } elseif ($Edit && !isset($_GET['post_id'])) {
         ErrorHandler(USER_ERROR, 'Posts::PostForm(): post_id не инициализирована.', __FILE__);
         return;
     }
     if (!$Edit && !$this->AlloyComments) {
         $this->Alert($PostFormBlockName, 'Обсуждение закрыто');
         return;
     }
     if (!$Edit && !System::user()->Auth && !$this->GuestPost) {
         // Гость
         $this->Alert($PostFormBlockName, 'Гости не могут добавлять комментарии, войдите или зарегистрируйтесь.');
         return;
     }
     System::site()->AddVars('template', array('lang_posts_username' => 'Имя', 'lang_posts_useremail' => 'E-mail', 'lang_posts_hideemail' => 'Скрыть E-mail', 'lang_posts_userhomepage' => 'Сайт', 'lang_posts_posttitle' => 'Заголовок', 'lang_posts_postmessage' => 'Сообщение', 'lang_posts_cancel' => 'Отмена', 'lang_posts_canceltitle' => 'Вернуться к теме без сохранения изменений'));
     $back = '';
     if (!$Edit) {
         $back = '&back=' . SaveRefererUrl();
     }
     $vars = array();
     if ($Edit) {
         System::database()->Select($this->PostsTable, "`id`='{$post_id}'");
         $post = System::database()->FetchRow();
         if (System::user()->Auth) {
             $access = System::user()->Get('u_id') == $post['user_id'] || System::user()->isAdmin();
         } else {
             $access = $post['user_id'] == '0' && $post['user_ip'] == getip();
         }
         if (!$access) {
             $this->Alert($PostFormBlockName, 'У вас не достаточно прав!');
             return;
         }
         $vars['form_title'] = 'Редактирование сообщения';
         $vars['form_action'] = $this->PostFormAction . "&post_id={$post_id}" . $back;
         $vars['post_message'] = HtmlChars($post['post_message']);
         $vars['edit'] = true;
         System::site()->SetVar('template', 'lang_posts_submit', 'Сохранить');
         System::site()->SetVar('template', 'lang_posts_submittitle', 'Сохранить изменения и вернуться');
         $vars['visibility'] = 'visible';
     } else {
         $vars['form_title'] = 'Добавить комментарий';
         $vars['form_action'] = $this->PostFormAction . $back;
         $vars['post_title'] = '';
         $vars['post_message'] = '';
         $vars['edit'] = false;
         System::site()->SetVar('template', 'lang_posts_submit', 'Добавить');
         System::site()->SetVar('template', 'lang_posts_submittitle', 'Добавить новое сообщение');
         $vars['visibility'] = 'hidden';
     }
     $vars['add'] = !$vars['edit'];
     $vars['add_guest'] = (System::user()->AccessLevel() == 3 || System::user()->AccessLevel() == 4) && $vars['add'];
     $vars['show_kaptcha'] = $vars['add_guest'] || !System::user()->isAdmin() && $this->ShowKaptchaForMembers;
     $vars['kaptcha_url'] = 'index.php?name=plugins&p=antibot';
     $vars['kaptcha_width'] = '120';
     $vars['kaptcha_height'] = '40';
     // Подключаем BBCode редактор
     IncludePluginsGroup('bbcode_editors');
     // Смайлики для формы
     $smilies = System::database()->Select('smilies', "`enabled`='1'");
     $vars['is_smilies'] = System::database()->NumRows() != 0;
     if ($vars['is_smilies']) {
         System::site()->AddBlock('smilies', true, true, 'smile');
         foreach ($smilies as $smile) {
             $smile['file'] = RealPath2(System::config('general/smilies_dir') . $smile['file']);
             $sub_codes = explode(',', SafeDB($smile['code'], 255, str));
             $smile['code'] = $sub_codes[0];
             System::site()->AddSubBlock('smilies', true, $smile);
         }
     } else {
         System::site()->AddBlock('smilies', true, false, 'smile', '', 'Смайликов пока нет.');
     }
     System::site()->Blocks[$PostFormBlockName]['vars'] = $vars;
 }
 /**
  * Добавляет поле ввода с возможностью выбрать файл с помощью файлового менеджера
  * @param string $Name
  * @param string $Value
  * @param int $Width
  * @return string
  */
 public function FileManager($Name, $Value, $Width = 400, $data = "path")
 {
     $this->editfilemanager_name = $Name;
     $this->editfilemanager_html = $this->Edit($Name, $Value, false, 'class="filemanager_' . $Name . '" data-content="' . $data . '" style="width: ' . $Width . 'px;"');
     $this->editfilemanager_width = $Width;
     if (defined('PLUGINS')) {
         IncludePluginsGroup('filemanagers');
     }
     return $this->editfilemanager_html;
 }
<?php

/*
 * LinkorCMS 1.4
 * © 2012 LinkorCMS Development Group
 */
if (!defined('VALID_RUN')) {
    header("HTTP/1.1 404 Not Found");
    exit;
}
TAddSubTitle('√лавна¤');
global $adminpanel_content;
$adminpanel_content = '';
IncludePluginsGroup('adminpanel');
AddTextBox('јдмин-панель', $adminpanel_content);
/**
 * Добавляет форму добавления сообщений.
 * @param bool          $edit
 * @param int           $forum
 * @param int           $topic
 * @param int           $id
 * @param string        $value
 * @param string        $text_title
 * @param bool          $loadform
 * @global array        $forum_lang
 */
function ForumRenderPostForm($edit = false, $forum = 0, $topic = 0, $id = 0, $value = '', $text_title = '', $loadform = true)
{
    global $forum_lang;
    System::site()->AddBlock('forum_editpost_form', $loadform, false, 'form');
    $vars = array();
    $page = 1;
    if (isset($_GET['page'])) {
        $page = SafeEnv($_GET['page'], 11, int);
    }
    if ($edit) {
        $vars['pag'] = $page;
        $vars['post'] = $id;
        $vars['text_value'] = $value;
        $vars['text_title'] = $text_title;
        $vars['edit_title'] = $text_title != '';
        $vars['topic'] = $topic;
        $vars['title'] = $forum_lang['edit_post'];
        $vars['url'] = "index.php?name=forum&op=savepost&topic={$topic}&post={$id}&page={$page}";
        $vars['edit'] = true;
        $vars['lsubmit'] = $forum_lang['save'];
        $vars['lsubmit_title'] = $forum_lang['save_edit'];
        $vars['visibility'] = 'visible';
    } else {
        $vars['post'] = 0;
        $vars['topic'] = $topic;
        $vars['forum'] = $forum;
        $vars['edit_title'] = $text_title != '';
        $vars['text_value'] = '';
        $vars['title'] = $forum_lang['add_post'];
        $vars['url'] = "index.php?name=forum&op=addpost&topic={$topic}&forum={$forum}";
        $vars['edit'] = false;
        $vars['lsubmit'] = $forum_lang['add'];
        $vars['lsubmit_title'] = $forum_lang['add_post'];
        $vars['visibility'] = 'hidden';
    }
    $vars['add'] = !$vars['edit'];
    System::site()->Blocks['forum_editpost_form']['vars'] = $vars;
    ForumSmiliesRender();
    // Подключаем BBCode редактор
    IncludePluginsGroup('bbcode_editors');
    System::site()->AddBlock('files', false, true, 'u_files');
    if ($edit) {
        System::site()->AddTemplatedBox('', 'module/forum_edit_post.html');
    } else {
        System::site()->AddBlock('post_form', true, false, 'post_form', 'module/forum_edit_post.html');
    }
}
        } elseif ($Icon == 'folder') {
            $Icon = 'images/folder.png';
        } elseif ($Icon == 'page') {
            $Icon = 'images/page.png';
        }
    }
    $sitemap_objects[$sitemap_category][] = array('is_raw' => false, 'margin' => 20 * $Level, 'title' => SafeDB($Title, 255, str), 'url' => $Url, 'icon' => $Icon);
}
/**
 * Добавляет текст на карту сайта без обработки.
 * @param $Data
 */
function SitemapAddRawData($Data)
{
    global $sitemap_objects, $sitemap_category;
    $sitemap_objects[$sitemap_category][] = array('is_raw' => true, 'raw_output' => SafeDB($Data, 0, str, false, false), 'margin' => 0);
}
if (System::cache()->HasCache(system_cache, 'sitemap')) {
    $sitemap_objects = System::cache()->Get(system_cache, 'sitemap');
} else {
    // Подключаем плагины генерирующие карту сайта
    IncludePluginsGroup('sitemap');
    System::cache()->Write(system_cache, 'sitemap', $sitemap_objects, Day2Sec);
}
foreach ($sitemap_objects as $title => $objects) {
    $sitemap_category = $Sitemap->NewSubBlock(true, array('title' => SafeDB($title, 255, str)));
    $sitemap_objects_block = $sitemap_category->NewBlock('sitemap_objects', true, true, 'object');
    foreach ($objects as $vars) {
        $sitemap_objects_block->NewSubBlock(true, $vars);
    }
}
function IndexForumShowForum()
{
    global $forum_lang;
    $forums_tree = ForumTree::Instance();
    // Параметры просмотра из GET
    // $forum_id
    // $forum
    // $forum_config
    if (isset($_GET['forum'])) {
        $forum_id = SafeEnv($_GET['forum'], 11, int);
        if (isset($forums_tree->IdCats[$forum_id])) {
            // Проверяем идентификатор форума и загружаем его данные
            $forum = $forums_tree->IdCats[$forum_id];
            // Форум
            $forum_config = $forums_tree->GetForumConfigRecursive($forum_id);
            // Конфигурация просматриваемого форума
        } else {
            System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_forum']);
            // Форум не найден
            return;
        }
    } else {
        System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_forum']);
        // Нет параметра
        return;
    }
    // Проверяем доступ
    if (!$forum_config['access']) {
        System::site()->AddTextBox($forum_lang['error'], $forum_config['access_reason']);
        // Нет доступа в этот форум
        return;
    }
    // Параметры постраничной навигации
    if (isset($_GET['page'])) {
        $page = SafeEnv($_GET['page'], 11, int);
    } else {
        $page = 1;
    }
    $topics_on_page = System::config('forum/topics_on_page');
    // Устанавливаем заголовок страницы
    System::site()->SetTitle(SafeDB($forum['title'], 255, str) . ' - ' . ($page > 1 ? $forum_lang['page'] . $page . ' - ' : '') . $forum_lang['forum']);
    // Объекты статистики и онлайн
    $statistics = ForumStatistics::Instance();
    $online = ForumOnline::Instance($forum_id);
    // Инициализируем статистику
    $statistics->Initialize($forum_lang['statistics_cat']);
    // Загружаем информацию по топикам в $topics_data и считаем статистику (кэшировать статистику)
    $topics_data = ForumCacheGetTopics();
    // Запрашиваем данные тем (агрегированы по форумам)
    $resolve_cats = $forums_tree->GetAllChildId($forum_id);
    // Считаем только в текущем форуме и всех подфорумах
    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($forum_id);
    $statistics->topics_count = $counters['files'];
    $statistics->reply_count = $counters['cats'];
    // Выводим подфорумы с помощью функции main (если есть)
    if (isset($forums_tree->Cats[$forum_id]) && count($forums_tree->Cats[$forum_id]) > 0) {
        ForumLoadFunction('main');
        IndexForumMain($forum_id, $topics_data);
        // <-- IndexForumMain
        // Если просматриваем категорию, то топики не выводим
        if ($forum['parent_id'] == 0) {
            return;
        }
    }
    // Выводим хлебные крошки (нужно после IndexForumMain чтобы не выводились два раза при просмотре категории)
    $forums_tree->BreadCrumbsF($forum_id);
    // Блоки шаблона
    // Ссылки, Отметить все как прочитанные и показать все не прочитанные темы.
    $vars_is_forum_member = array();
    $vars_is_forum_member['url'] = '<a href="' . Ufu('index.php?name=forum&op=markread' . ($forum_id > 0 ? '&forum=' . $forum_id : ''), 'forum/markread/' . ($forum_id > 0 ? '{forum}/' : '')) . '">' . $forum_lang['mark_all_read'] . '</a>';
    $vars_is_forum_member['viewnoreadurl'] = '<a href="' . Ufu('index.php?name=forum&op=viewnoread' . ($forum_id > 0 ? '&forum=' . $forum_id : ''), 'forum/viewnoread/' . ($forum_id > 0 ? '{forum}/' : '')) . '">' . $forum_lang['viewnoread'] . '</a>';
    $vars_is_forum_member['forum_id'] = $forum_id;
    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=' . $forum_id, 'forum/lasttopics/{forum}/') . '">' . $forum_lang['lasttopics'] . '</a>';
    System::site()->SetVars('old', $vars_old);
    // Заголовки (Темы, Ответов, Просмотры)
    System::site()->AddBlock('statistik', true, false, 'stat');
    $vars_stat = array();
    $vars_stat['count_read'] = '';
    $cat_users_count = $online->GetCatOnlineCount($forum_id);
    if ($cat_users_count > 0) {
        $vars_stat['count_read'] = $cat_users_count > 0 ? '<small> (' . $forum_lang['online'] . ': ' . $cat_users_count . ')</small>' : '';
    }
    System::site()->SetVars('statistik', $vars_stat);
    // Блок с информацией о форуме
    System::site()->AddBlock('forum', true, false);
    System::site()->SetVars('forum', IndexForumDataFilter($forum, $forum_config));
    System::site()->AddBlock('forum_guest_message', true);
    // Блок списка топиков
    System::site()->AddBlock('topics', true, true, 'topic');
    // Инициализируем постраничную навигацию
    $navigation = new Navigation($page);
    $navigation->FrendlyUrl = System::config('general/ufu');
    // Есть ли видимые для пользователя топики
    $visable_topics = false;
    $auth = System::user()->Auth;
    $user_id = System::user()->Get('u_id');
    $is_admin = System::user()->isAdmin();
    if (!isset($topics_data[$forum_id]) || count($topics_data[$forum_id]) == 0) {
        // В этом форуме пока нет ни одной темы
        System::site()->AddBlock('no_topics', true);
        $navigation->DisableNavigation();
    } else {
        // Загружаем данные корзины для видимых топиков
        $basket = ForumBasketGetData('forum_basket_topics');
        // Загружаем данные о прочтении тем
        $read_data = Forum_Marker_GetReadData();
        // Фильтруем топики
        $topics_data = $topics_data[$forum_id];
        // Топики в этом форуме
        $topics = array();
        foreach ($topics_data as $topic) {
            // Добавляем данные из корзины, если топик удалён в корзину (корзину тем видят только админы и пользователи-стартеры удалённых тем)
            $topic['status'] = '';
            $topic['show_delete'] = $is_admin;
            if ($topic['delete'] && isset($basket[$topic['id']]) && $auth && ($is_admin || $topic['starter_id'] == $user_id)) {
                // Добавляем сообщение - "Удалено в корзину"
                $topic['status'] = ForumBasketRender($topic['id'], $topic['title'], $basket, false);
                $topic['show_delete'] = false;
            } elseif ($topic['delete']) {
                continue;
                // Удалён топик и корзина не показывается для этого пользователя
            }
            $topics[] = $topic;
        }
        unset($topics_data);
        // Вывод постраничной навигации
        $navigation->GenNavigationMenu($topics, $topics_on_page, Ufu('index.php?name=forum&op=showforum&forum=' . $forum_id, 'forum/{forum}-{page}/', true));
        // Вывод тем из этой категории с постраничной навигацией
        foreach ($topics as $topic) {
            $close = false;
            if ($forum_config['close']) {
                $close = true;
            }
            // Статус прочитано
            $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);
    }
    // Форма добавления топиков
    $show_form = $forum_config['add_topic'] && $auth;
    System::site()->AddBlock('topic_form', $show_form, false, 'form');
    if ($show_form) {
        System::site()->SetVar('topic_form', 'url', Ufu('index.php?name=forum&op=addtopic&forum=' . $forum_id, 'forum/addtopic/{forum}/'));
        ForumSmiliesRender();
        // Подключаем BBCode редактор
        IncludePluginsGroup('bbcode_editors');
    }
    // Блок "Права на форуме"
    System::site()->AddBlock('topic_right', true, false, 'topic', 'module/forum_right.html');
    $right_text = '';
    if ($forum_config['add_topic']) {
        $right_text .= $forum_lang['create_new_topics'] . '<br />';
    } else {
        $right_text .= $forum_lang['no_create_new_topics'] . '<br />';
        $right_text .= '(' . $forum_config['add_topic_reason'] . ')<br />';
    }
    if ($forum_config['add_post']) {
        $right_text .= $forum_lang['create_new_message_in_topics'] . '<br />';
    } else {
        $right_text .= $forum_lang['no_create_new_message_in_topics'] . '<br />';
        $right_text .= '(' . $forum_config['add_post_reason'] . ')<br />';
    }
    System::site()->SetVars('topic_right', array('right' => $right_text));
    // Блоки модерации
    ModerationForumTopicsBlocks();
    // Подключаем шаблон
    System::site()->AddTemplatedBox('', 'module/forum_topics.html');
    // Выводм блок онлайн
    $online->Render($forum_id, '0', $forum_lang['current_category'], 'forum_topics_online');
    // Выводим статистику
    $statistics->Render('forum_topics_statistics');
    // Быстрый переход по форумам
    ForumQuickTransitionBox($forum_id, $forum_lang['quick_transition']);
}
        {
            global $userblock_mods;
            $vars = array('mod' => true, 'delimiter' => false, 'link' => false, 'content' => $Content);
            $userblock_mods->NewSubBlock(true, $vars);
        }
        function UserBlockAddDelimiter()
        {
            global $userblock_mods;
            $vars = array('mod' => false, 'delimiter' => true, 'link' => false);
            $userblock_mods->NewSubBlock(true, $vars);
        }
        function UserBlockAddLink($Title, $Url)
        {
            global $userblock_mods;
            $vars = array('mod' => false, 'delimiter' => false, 'link' => true, 'url' => $Url, 'title' => $Title);
            $userblock_mods->NewSubBlock(true, $vars);
        }
    }
    UserBlockAddContent($vars['user_name']);
    UserBlockAddContent('<img src="' . $vars['user_avatar_url'] . '" class="avatar">');
    UserBlockAddDelimiter();
    UserBlockAddLink($vars['luser_info'], $vars['user_info_url']);
    UserBlockAddLink($vars['ledit_user_data'], $vars['edit_user_data_url']);
    // Подключаем плагины
    IncludePluginsGroup('userblock');
    if (System::user()->isAdmin()) {
        UserBlockAddLink($vars['ladminpanel'], $vars['adminfile_url']);
    }
    UserBlockAddDelimiter();
    UserBlockAddLink($vars['lexit'], $vars['exit_url']);
}
function IndexSearchSearch($mods)
{
    global $search_results;
    $search_results = array();
    foreach ($mods as $mod) {
        // mod подставляется в function чтобы задействовать только выбранные плагины
        $plugins = IncludePluginsGroup('search', $mod, true);
        foreach ($plugins as $plugin) {
            // Вприципе тут всегда только один плагин на один модуль
            $plugin_info = ExtLoadInfo($plugin);
            include $plugin . 'index.php';
        }
    }
    return $search_results;
}