function IndexForumEditTopic()
{
    global $forum_lang;
    if (!System::user()->Auth) {
        System::site()->AddTextBox($forum_lang['forum'], '<p align="center">' . $forum_lang['error_auth'] . '</p>');
        return;
    }
    $topic = SafeEnv($_GET['topic'], 11, int);
    $post = System::database()->Select('forum_posts', "`object`='{$topic}' and `delete`='0'");
    SortArray($post, 'id', false);
    System::database()->Select('forum_topics', "`id`='{$topic}'");
    $topic = System::database()->FetchRow();
    if ($topic['delete'] == 0 || System::config('forum/basket') == false) {
        $title = '';
        if (SafeDB($topic['starter_id'], 11, str) == System::user()->Get('u_id') or System::user()->IsAdmin()) {
            $title = SafeDB($topic['title'], 0, str);
        }
        if (System::user()->Get('u_id') == $post[0]['user_id'] || System::user()->isAdmin()) {
            ForumRenderPostForm(true, 0, SafeEnv($_GET['topic'], 11, int), SafeDB($post[0]['id'], 11, int), SafeDB($post[0]['message'], 0, str, false, true), $title);
        } else {
            System::site()->AddTextBox($forum_lang['forum'], '<p align="center">' . $forum_lang['no_right_comment_edit'] . '</p>');
            return;
        }
    } else {
        System::site()->AddTextBox($forum_lang['topic_basket_current_post'], '<p align="center">' . $forum_lang['topic_basket_post'] . '<br><input type="button" value="' . $forum_lang['back'] . '"onclick="history.back();"></p>');
    }
}
function MessagesRender($msg)
{
    global $userAccess;
    $disableMsg = '';
    $total = TotalTime(time(), $msg['date'] + Day2Sec * $msg['expire']);
    if ($total === false) {
        if ($msg['expire'] != 0) {
            $disableMsg .= "and `id`='" . $msg['id'] . "'";
            return;
        }
    }
    if (VisibilityConditionsCheck($msg['showin'], $msg['showin_uri'])) {
        $adin = '';
        if ($userAccess == '1') {
            if ($msg['expire'] != '0') {
                $vt = 'Срок истекает через ' . $total['sdays'] . ($total['hours'] != 0 ? ' и ' . $total['shours'] : '');
            } else {
                $vt = 'Неограниченно';
            }
            $adin = '(Просматривают: ' . ViewLevelToStr($msg['view'], 'Только администраторы', 'Только пользователи', 'Только анонимные пользователи', 'Все посетители') . ' - ' . $vt . ' - <a href="' . ADMIN_FILE . '?exe=messages&a=msgeditor&id=' . $msg['id'] . '">Редактировать</a>)';
        }
        if ($msg['view_title'] == 1) {
            // Показывать заголовок
            $title = $msg['title'];
        } else {
            $title = '';
        }
        System::site()->AddMessage($title, $msg['text'], $adin);
    }
}
function ScriptsAddCss($FileNameInScripts, $OtherParams = '')
{
    if (USE_GZIP_STATIC) {
        $FileNameInScripts .= '.gz';
    }
    $FileNameInScripts .= '.css';
    System::site()->AddCSSFile('scripts/' . $FileNameInScripts, true, false, $OtherParams);
}
function IndexForumLogin()
{
    if (!System::user()->Auth) {
        System::site()->Login('');
        System::user()->Def('forum_referrer', $_SERVER['HTTP_REFERER']);
    } else {
        GO(System::user()->Get('forum_referrer'), 202);
    }
}
 /**
  * Конструктор
  * @param <type> $ParamName
  * @param string|StarkytBlock $Block
  * @param string $ParamName
  */
 public function __construct($Page, $Block = 'navigation', $ParamName = 'page')
 {
     $this->page = $Page;
     $this->param_name = $ParamName;
     if (self::$StarkytDefault == null) {
         $this->Starkyt = System::site();
     } else {
         $this->Starkyt = self::$StarkytDefault;
     }
     $this->template_block = $Block;
 }
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}/'));
}
 /**
  * Генерирует данные для элемента формы Select в виде дерева.
  *
  * @param int|array       $sel_id    Выделенный элемент.
  * @param bool            $viewitems Показать количество объектов в скобках.
  * @param bool            $root      Добавить корневой элемент.
  * @param int             $id_exclude_childs
  * @param bool            $DisableCategories
  * @global array          $FCatsData
  * @internal param \type $id Идентификатор форума у которого будут отсеиваться дочерние форумы (для редактирования форума).
  * @return array
  */
 public function GetCatsDataF($sel_id, $viewitems = true, $root = false, $id_exclude_childs = 0, $DisableCategories = false)
 {
     global $FCatsData;
     $FCatsData = array();
     $this->childs = array();
     if (!is_array($sel_id)) {
         $sel_id = array($sel_id);
     }
     $this->sel_id = $sel_id;
     $this->viewitems = $viewitems;
     $this->DisableCats = $DisableCategories;
     if ($id_exclude_childs != 0) {
         $this->childs = $this->GetAllAccessForumId($id_exclude_childs);
     }
     if ($root) {
         System::site()->DataAdd($FCatsData, '0', $this->TopCatName, in_array(0, $sel_id));
     }
     $this->ListingTree(0, array($this, 'ForumCatsData'));
     return $FCatsData;
 }
function AntispamEmail($Email, $AddJava = true)
{
    static $javaAdd = false;
    if (!$javaAdd && $AddJava) {
        System::site()->AddJS('
		function email(login, domain){
			mail = login+"@"+domain;
			mail = \'<a href="mailto:\'+mail+\'" target="_blank">\'+mail+\'</a>\';
			document.write(mail);
		}
		');
        $javaAdd = true;
    }
    $Email = explode('@', $Email);
    if (count($Email) == 2) {
        return '<script>email(\'' . $Email[0] . '\',\'' . $Email[1] . '\');</script>';
    } else {
        return '';
    }
}
\t\t\t\t}
\t\t\t\taceel.hide();
\t\t\t\tecediv.css(dest);
\t\t\t\tvar {$var} = ace.edit("{$id}_replace");
\t\t\t\t{$var}.getSession().setValue(aceeldom.defaultValue);
\t\t\t\t{$var}.getSession().on('change', function(){
\t\t\t\t\taceel.val({$var}.getSession().getValue());
\t\t\t\t});
\t\t\t}else{
\t\t\t\tvar {$var} = ace.edit("{$id}");
\t\t\t}
\t\t\t{$var}.getSession().setUseSoftTabs({$softwraps});
\t\t\t{$var}.getSession().setUseWrapMode({$wordwrap});
\t\t\t{$var}.setHighlightActiveLine({$highlightline});
\t\t\t{$var}.setShowPrintMargin({$printmargin});
\t\t\t{$var}.getSession().setTabSize({$tabsize});
\t\t\taceel.val({$var}.getSession().getValue());
JS
);
}
ScriptsAddCss('ace/theme');
if (isset($params['theme']) && $params['theme'] != 'textmate') {
    ScriptsAddJs('ace/src/theme-' . $params['theme']);
    System::site()->AddOnLoadJS($var . '.setTheme("ace/theme/' . $params['theme'] . '");');
}
if (isset($params['mode'])) {
    ScriptsAddJs('ace/src/mode-' . $params['mode']);
    System::site()->AddOnLoadJS('var Mode = require("ace/mode/' . $params['mode'] . '").Mode;');
    System::site()->AddOnLoadJS($var . '.getSession().setMode(new Mode());');
}
return $var;
function AdminBlocksEdit($a)
{
    global $config, $site, $user;
    // Для обратной совместимости со старыми блоками
    $showin = array('ALL_EXCEPT');
    $showin_uri = array();
    $template = '';
    $b_vi = 4;
    $b_en = 1;
    if (isset($_POST['type']) || $a == 'edit') {
        $b_pos = array('L' => false, 'R' => false, 'T' => false, 'B' => false);
        $b_pos = array('L' => false, 'R' => false, 'T' => false, 'B' => false, 'A' => false);
        $b_title = '';
        $b_vi = 4;
        $b_en = 1;
        $block_config = '';
        // Используется в подключаемых файлах
        if ($a == 'edit') {
            System::database()->Select('blocks', "`id`='" . SafeEnv($_GET['id'], 11, int) . "'");
            $r = System::database()->FetchRow();
            $b_title = SafeDB($r['title'], 255, str);
            $b_pos[SafeDB($r['position'], 1, str)] = true;
            $b_vi = SafeDB($r['view'], 1, int);
            $b_en = SafeDB($r['enabled'], 1, bool);
            $b_type = SafeDB($r['type'], 255, str);
            $template = SafeDB($r['template'], 255, str);
            $block_config = $r['config'];
            // Используется в подключаемых файлах
            $title = 'Редактирование блока';
            $a_form = ADMIN_FILE . '?exe=blocks&a=update&id=' . SafeEnv($_GET['id'], 11, int);
            $button = 'Сохранить изменения';
            if ($r['showin'] != '') {
                $showin = unserialize($r['showin']);
            }
            if ($r['showin_uri'] != '') {
                $showin_uri = unserialize($r['showin_uri']);
            }
        } else {
            $a_form = ADMIN_FILE . '?exe=blocks&a=newsave';
            $b_type = SafeEnv($_POST['type'], 255, str);
            $title = 'Настройка блока';
            $button = 'Создать';
            $showin[] = array('ALL_EXCEPT');
        }
        FormRow('Заголовок', System::site()->Edit('title', $b_title, false, 'style="width:400px;" class="autofocus"'));
        $constructor = System::config('blocks_dir') . $b_type . '/constructor.php';
        if (is_file($constructor)) {
            include_once $constructor;
        }
        $btems = GetBlockTemplates();
        $temdata = array();
        foreach ($btems as $tem) {
            System::site()->DataAdd($temdata, $tem, $tem, $tem == $template);
        }
        FormRow('Шаблон блока', System::site()->Select('template', $temdata));
        System::site()->DataAdd($posdata, 'Left', 'Колонка слева', $b_pos['L']);
        System::site()->DataAdd($posdata, 'Right', 'Колонка справа', $b_pos['R']);
        System::site()->DataAdd($posdata, 'Top', 'В центре сверху', $b_pos['T']);
        System::site()->DataAdd($posdata, 'Bottom', 'В центре снизу', $b_pos['B']);
        //System::site()->DataAdd($posdata, 'ABottom', 'A В центре снизу', $b_pos['A']);
        FormRow('Позиционирование', System::site()->Select('position', $posdata));
        VisibilityConditionsAdmin($showin, $showin_uri);
        FormRow('Кто видит', System::site()->Select('view', GetUserTypesFormData($b_vi)));
        FormRow('Включить', System::site()->Select('enabled', GetEnData($b_en, 'Да', 'Нет')));
        AddCenterBox($title);
        AddForm('<form action="' . $a_form . '" method="post">' . System::site()->Hidden('type', $b_type), System::site()->Button('Отмена', 'onclick="history.go(-1);"') . System::site()->Submit($button));
    } else {
        GO(ADMIN_FILE);
    }
}
/**
 * Главная страница форума, список форумов в категории или подфорумов в форуме.
 * @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']);
        }
    }
}
<?php

/*
 * LinkorCMS 1.4
 * © 2012 LinkorCMS Development Group
 */
if (!defined('VALID_RUN')) {
    header("HTTP/1.1 404 Not Found");
    exit;
}
global $db_types;
$db_type = System::user()->Session('db_type');
$selected = $db_type === false || $db_type == 'flatfilesdb_setup';
System::site()->DataAdd($db_types, 'flatfilesdb_setup', 'FlatFiles (текстовые файлы)', $selected);
if ($action == 'editfield') {
    if (isset($_GET['where'])) {
        $where = $_GET['where'];
        $where_url = '&where=' . SafeDB($_GET['where'], 255, str);
    }
    $edit = true;
    $index = SafeEnv($_GET['index'], 255, int);
    $rows = System::database()->Select($table, $where);
    $row = $rows[$index];
}
$i = 0;
foreach ($columns as $col) {
    if ($edit) {
        $val = HtmlChars($row[$columns[$i]['name']]);
        $cap = 'Сохранить';
        $title = 'Редактирование записи';
    } else {
        $val = '';
        $cap = 'Добавить';
        $title = 'Добавление записи';
    }
    if (strtolower($col['type']) != 'text') {
        FormRow('<font color="#0000FF">' . (isset($col['auto_increment']) && $col['auto_increment'] == true ? '<u>' . $col['name'] . '</u>' : $col['name']) . '</font>' . '<br /><font color="#666666">' . $col['type'] . (isset($col['length']) ? '(' . $col['length'] . ')</font>' : '</font>'), System::admin()->Edit($col['name'], $val, false, 'style="width: 400px;"' . ($i == 0 ? ' class="autofocus"' : '')));
    } else {
        FormRow('<font color="#0000FF">' . $col['name'] . '</font>', System::admin()->TextArea($col['name'], $val, 'style="width: 400px; height: 200px;"' . ($i == 0 ? ' class="autofocus"' : '')));
    }
    $i++;
}
AddCenterBox($title);
AddForm('<form action="' . ADMIN_FILE . '?exe=dbadmin&a=' . ($edit ? 'editsave' : 'insertsave') . '&name=' . $table . ($edit ? '&index=' . $index : '') . $where_url . $back . '" method="post">', ($edit ? System::site()->Button('Отмена', 'onclick="history.go(-1)"') : '') . System::admin()->Submit($cap));
AdminFdbAdminGenTableMenu($table);
function AdminGalleryUploadForm()
{
    global $edit_images;
    if (!$edit_images) {
        System::admin()->AccessDenied();
    }
    $top = 'Мультизагрузка';
    $cat_id = isset($_GET['to']) ? SafeDB($_GET['to'], 11, int) : 0;
    $cats_data = AdminGalleryGetTree()->GetCatsData($cat_id);
    if (count($cats_data) == 0) {
        $back_to_form = SaveRefererUrl();
        AddTextBox($top, 'Нет категорий для добавления! ' . System::admin()->SpeedButton('Добавить категорию', ADMIN_FILE . '?exe=gallery&a=cateditor&back=' . $back_to_form, '', true, true));
        return;
    }
    System::admin()->AddCenterBox($top);
    UseScript('swfupload');
    $formid = uniqid();
    // Уникальный ID формы
    $_SESSION['uploadforms'][$formid] = array('photos' => array(), 'category' => '0', 'allow_comments' => '1', 'allow_votes' => '1', 'view' => '4', 'show' => '1');
    System::admin()->AddOnLoadJS(Indent('
		window.photo_id = 1;
		window.allUploadComplete = false;
		window.photosCountFiles = 0;
		window.photosUploaded = 0;

		// SWFUpload
		if(window.gallery_swfu){
			window.gallery_swfu.destroy();
		}else{
			window.GallerySubmitFormGuard = function(){
				if(window.photosCountFiles == 0){
					alert("Выберите фотографии для загрузки");
					return false;
				}
				if(!window.allUploadComplete){
					window.gallery_swfu.startUpload();
					Admin.ShowSplashScreen("Загрузка фотографий на хостинг");
					return false;
				}
				return true;
			}
		}

		window.gallery_swfu = new SWFUpload({
			upload_url: "' . ADMIN_FILE . '?exe=gallery&a=upload&formid=' . $formid . '",
			file_post_name : "up_image",
			post_params: {
				"action": "upload"
			},
			file_size_limit: "100 MB",
			file_types: "*.jpg; *.png; *.jpeg; *.gif",
			file_types_description: "Все файлы",
			file_upload_limit: 0,
			file_queue_limit: 0,
			debug: false,

			button_placeholder_id: "uploadbutton",
			button_width: "54",
			button_height: "18",
			button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
			button_text: "<span class=\\"btnCap\\">Обзор<span>",
			button_text_style: ".btnCap{ align: center; color: #4F4F4F; font-family: Verdana, Tahoma, sans-serif; font-weight: bold; }",
			button_text_left_padding: 4,
			button_text_top_padding: 1,

			file_dialog_complete_handler: function(numFilesSelected, numFilesQueued, total){
				$("#uploadFilesCount").html("Выбрано " + total + " файл(ов)");
				window.photosCountFiles = total;
			},
			upload_progress_handler: function(file, bytesLoaded, bytesTotal){
				var current = window.photosUploaded + 1;
				Admin.SetSplashScreenMessage("Загрузка фотографий на хостинг: " + current + "/" + window.photosCountFiles + " (" + Math.round(bytesLoaded/bytesTotal*100) + "%)");
			},
			upload_complete_handler: function(file){
				window.photosUploaded++;
				if(window.photosUploaded == window.photosCountFiles){
					window.allUploadComplete = true;
					$("#galleryForm").submit();
				}
			}
		});
	'));
    FormRow('В категорию', System::site()->Select('category', $cats_data));
    FormRow('Выберите файлы', RemoveIndent('
		<div style="float: left;" id="uploadFilesCount">Выбрано 0 файл(ов)</div>
		&nbsp;&nbsp;&nbsp;&nbsp;
		<div class="button" style="float: right; border: 1px #ccc solid;">
			<span id="uploadbutton">
				<a href="http://www.adobe.com/go/getflashplayer">Get Adobe Flash player</a>
			</span>
		</div>
	'));
    FormRow('Комментарии', System::site()->Select('allow_comments', GetEnData(true, 'Разрешить', 'Запретить')));
    FormRow('Оценки', System::site()->Select('allow_votes', GetEnData(true, 'Разрешить', 'Запретить')));
    FormRow('Кто видит', System::site()->Select('view', GetUserTypesFormData(4)));
    FormRow('Показать', System::site()->Select('show', GetEnData(true, 'Да', 'Нет')));
    AddForm('<form action="' . ADMIN_FILE . '?exe=gallery&a=upload&formid=' . $formid . '" method="post" onsubmit="return GallerySubmitFormGuard();" id="galleryForm">', System::admin()->Hidden('action', 'preview') . System::admin()->Submit('Загрузить'));
}
 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 (!isset($col['default'])) {
        $col['default'] = '';
    }
    if (!isset($col['attributes'])) {
        $col['attributes'] = '';
    }
    if (!isset($col['auto_increment'])) {
        $col['auto_increment'] = false;
    }
    $func = '';
    $func .= SpeedButton('Просмотреть информацию для установки', ADMIN_FILE . '?exe=dbadmin&a=viewcollinfo&name=' . $name . '&collid=' . $i, 'images/admin/info.png');
    $func .= System::admin()->SpeedConfirm('Удалить колонку', ADMIN_FILE . '?exe=dbadmin&a=deletecoll&name=' . $name . '&collid=' . $i, 'images/admin/delete.png', 'Удалить колонку?');
    $text .= '<tr>
	<td>' . $i . '</td>
	<td>' . SafeDB($col['name'], 255, str) . '</td>
	<td>' . SafeDB($col['type'], 255, str) . (isset($col['length']) ? '(' . SafeDB($col['length'], 11, int) . ')' : '') . '</td>
	<td>' . SafeDB($col['attributes'], 255, str) . '</td>
	<td>' . ($col['notnull'] ? '<font color="#0000FF">Нет</font>' : '<font color="#FF0000">Да</font>') . '</td>
	<td>' . SafeDB($col['default'], 255, str) . '</td>
	<td>' . ($col['auto_increment'] ? '<font color="#FF0000">Да</font>' : '<font color="0000FF">Нет</a>') . '</td>
	<td>' . $func . '</td>';
    System::site()->DataAdd($selcoldata, $i, SafeDB($col['name'], 255, str), $i == $colcount);
    $i++;
}
$text .= '</table><br />';
AddCenterBox('Структура таблицы "' . $name . '"');
AddText($text);
System::admin()->FormTitleRow('Вставить колонку');
FormRow('После', System::site()->Select('toindex', $selcoldata));
AddForm('<form action="' . ADMIN_FILE . '?exe=dbadmin&a=newcoll&name=' . $name . '" method="post">', $site->Submit('Далее', 'title="Перейти к след. шагу добавления колонки."'));
AdminFdbAdminGenTableMenu($name);
            $license = 'Текст лицензии вы можете прочитать на сайте <a href="http://linkorcms.ru">http://linkorcms.ru</a>.<br>
			Внимание, это ознакомительная тестовая версия, использование в других целях запрещено.';
        }
        $text = "<div class=\"license_frame\"><div>" . $license . "</div></div>";
        $this->SetContent($text);
        $this->AddButton('Назад', 'main&p=2');
        $this->AddButton('Принимаю', 'install&p=2');
        break;
    case 2:
        // Выбор типа базы данных
        global $db_types;
        $db_types = array();
        SetupPlugins('db_types');
        $this->SetTitle("Выбор типа Базы данных.");
        $this->OpenForm('install&p=3');
        $text = '<p>Выберите тип Базы данных:&nbsp;</p>' . System::site()->Select('db_type', $db_types, true);
        $this->SetContent($text);
        $this->AddButton('Назад', 'install&p=1');
        $this->AddSubmitButton('Далее');
        break;
    case 3:
        // Перенаправление соответственно выбранному типу БД
        if (!isset($_POST['db_type'])) {
            $this->SetTitle('Ошибка');
            $this->SetContent('Вы не выбрали тип Базы данных.');
            $this->AddButton('Назад', 'install&p=2');
            break;
        }
        $smod = SafeEnv($_POST['db_type'], 255, str);
        System::user()->Session('db_type', $smod);
        GO('setup.php?mod=' . $smod);
 /**
  * Подключает модуль.
  * @param      $ClassName
  * @param bool $Admin
  * @return mixed
  */
 public static function run($ClassName, $Admin = false)
 {
     $anns = GetAnnotations($ClassName);
     $action_param = isset($anns['class']['ActionParam']) ? $anns['class']['ActionParam'] : 'a';
     $action = isset($_GET[$action_param]) ? $_GET[$action_param] : 'main';
     $title = isset($anns['class']['Title']) ? $anns['class']['Title'] : '';
     if ($Admin && $title != '') {
         self::admin()->AddSubTitle($title);
     }
     foreach ($anns['methods'] as $method => $params) {
         if (!isset($params['Action'])) {
             continue;
         }
         $actions = array();
         $titles = array();
         if (is_string($params['Action'])) {
             $actions[] = $params['Action'];
         } else {
             $actions = $params['Action'];
         }
         /*
          * Параметр ActionParam класса модуля совпадает с параметром Action метода.
          */
         if (($s = array_search($action, $actions)) !== false) {
             $params['Action'] = $action;
             $anns['Action'] = $action;
             /*
              * Проверка доступа.
              * Если есть заголовок аннотации Access проверяем доступ для администратора.
              */
             if (isset($params['Access']) && !System::user()->CheckAccess2($params['Access'][0], $params['Access'][1])) {
                 if ($Admin) {
                     System::admin()->AccessDenied();
                 } else {
                     Header('HTTP/1.1 403 Forbidden');
                     System::site()->InitPage();
                     System::site()->AddTextBox('Ошибка', '<p align="center">Доступ запрещен.</p>');
                     System::site()->TEcho();
                     exit;
                 }
             }
             /*
              * Генерируем массив заголовков.
              */
             if (isset($params['Title'])) {
                 if (is_string($params['Title'])) {
                     $titles[] = $params['Title'];
                 } else {
                     $titles = $params['Title'];
                 }
             } else {
                 $titles[] = $title;
             }
             /*
              * Берём заголовок для этого действия (Action)
              */
             $title = $titles[$s];
             $params['Title'] = $title;
             $anns['Title'] = $title;
             if ($title != '') {
                 if ($Admin) {
                     self::admin()->AddSubTitle($title);
                 } else {
                     self::site()->SetTitle($title);
                 }
             }
             /*
              * Создаём объект и вызываем метод.
              */
             $mod_obj = new $ClassName($anns);
             call_user_func(array($mod_obj, $method), $params);
         }
     }
 }
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();
    }
}
 public function SEcho()
 {
     System::site()->TEcho();
 }
function AdminsDeleteGroup()
{
    if (!isset($_GET['id'])) {
        GO(ADMIN_FILE . '?exe=admins&a=groups');
        exit;
    }
    $id = SafeEnv($_GET['id'], 11, int);
    if (isset($_GET['ok']) && SafeEnv($_GET['ok'], 1, int) == '1') {
        // Очищаем кэш
        if (System::cache()->HasCache(system_cache, 'usertypes')) {
            System::cache()->Delete(system_cache, 'usertypes');
        }
        System::database()->Select('users', "`access`='" . $id . "'");
        $num_users = System::database()->NumRows();
        System::database()->Select('usertypes', "`id`='{$id}'");
        $group = System::database()->FetchRow();
        if ($num_users > 0) {
            if (!isset($_GET['users'])) {
                $text = 'К этой группе принадлежат ' . $num_users . ' пользователей. Вы можете:<br />' . '<a href="' . ADMIN_FILE . '?exe=admins&a=delgroup&id=' . $id . '&ok=1&users=del">Удалить их...</a> <br />' . '<a href="' . ADMIN_FILE . '?exe=admins&a=delgroup&id=' . SafeEnv($_GET['id'], 11, int) . '&ok=1&users=move">Переместить их в другую группу.</a>';
                AddTextBox('Внимание!', $text);
            } else {
                if ($_GET['users'] == 'del') {
                    System::database()->Delete('users', "`access`='" . $id . "'");
                } elseif ($_GET['users'] == 'move' && !isset($_POST['to'])) {
                    $text = 'Выберите группу, в которую Вы желаете переместить пользователей:<br />' . '<form action="' . ADMIN_FILE . '?exe=admins&a=delgroup&id=' . $id . '&ok=1&users=move" method="post">';
                    System::database()->Select('usertypes', "`id`<>'" . $id . "'");
                    System::site()->DataAdd($group_data, '-1', 'Пользователи');
                    while ($tp = System::database()->FetchRow()) {
                        System::site()->DataAdd($group_data, $tp['id'], $tp['name']);
                    }
                    $text .= System::site()->Select('to', $group_data) . '<br />';
                    $text .= System::site()->Submit('Продолжить') . '<br />';
                    $text .= '</form>';
                    AddTextBox('Внимание!', $text);
                    return;
                } elseif ($_GET['users'] == 'move' && isset($_POST['to'])) {
                    $to = SafeEnv($_POST['to'], 11, int);
                    if ($to == '-1') {
                        $set = "type='2',access='" . $to . "'";
                    } else {
                        $set = "access='" . $to . "'";
                    }
                    System::database()->Update('users', $set, "`access`='" . $id . "'");
                }
            }
        }
        System::database()->Delete('usertypes', "`id`='" . $id . "'");
        Audit('Администраторы: Удаление группы администраторов "' . $group['name'] . '"');
        GO(ADMIN_FILE . '?exe=admins&a=groups');
    } else {
        System::database()->Select('usertypes', "`id`='" . $id . "'");
        $group = System::database()->FetchRow();
        $text = 'Вы действительно хотите удалить группу "' . SafeDB($group['name'], 255, str) . '"?<br />' . '<a href="' . ADMIN_FILE . '?exe=admins&a=delgroup&id=' . $id . '&ok=1">Да</a> &nbsp;&nbsp;&nbsp; <a href="javascript:history.go(-1)">Нет</a>';
        AddTextBox("Предупреждение", $text);
    }
}
    public function DeletePost($post_id = null, $first = true)
    {
        if ($post_id == null) {
            if (isset($_GET['post_id'])) {
                $post_id = $_GET['post_id'];
            }
        }
        if ($post_id != null) {
            System::database()->Select($this->PostsTable, "`id`='{$post_id}'");
            $post = System::database()->FetchRow();
        } else {
            $text = 'post_id нигде не инициализирована.';
            System::site()->AddTextBox('Ошибка.', '<p align="center">' . $text . '</p>');
            return 0;
        }
        if ($first) {
            if (System::user()->Auth) {
                $editing = System::user()->Get('u_id') == $post['user_id'] || System::user()->isAdmin();
            } else {
                $editing = $post['user_id'] == '0' && $post['user_ip'] == getip();
            }
            if (!$editing) {
                $text = 'У вас недостаточно прав для удаления этого сообщения.';
                System::site()->AddTextBox('Ошибка.', '<p align="center">' . $text . '</p>');
                return 0;
            }
        }
        if (!$first || isset($_GET['ok'])) {
            $del_count = 1;
            $parent_posts = System::database()->Select($this->PostsTable, "`post_parent_id`='{$post_id}'");
            foreach ($parent_posts as $post) {
                $del_count += $this->DeletePost(SafeDB($post['id'], 11, int), false);
            }
            System::database()->Delete($this->PostsTable, "`id`='{$post_id}'");
            if (System::user()->isAdmin()) {
                Audit('Posts: Удаление комментария "' . $this->PostsTable . '"/"' . "(user: {$post['user_name']}, object_id: {$post['object_id']})" . '"');
            }
            return $del_count;
        } else {
            $text = '<br />Удалить сообщение?<br /><br />' . '<a href="' . $this->DeletePageUrl . '&amp;post_id=' . $post_id . '&amp;ok=1">Да</a> &nbsp;
			&nbsp;&nbsp;&nbsp;&nbsp; <a href="javascript:history.go(-1)">Нет</a><br /><br />';
            System::site()->AddTextBox('', '<p align="center">' . $text . '</p>');
            return 0;
        }
    }
function AdminConfigGroupEdit()
{
    $id = SafeEnv($_GET['id'], 11, int);
    System::database()->Select(AdminConfigGroupTable(), "`id`='{$id}'");
    $group = System::database()->FetchRow();
    FormRow('Имя', System::site()->Edit('name', SafeDB($group['name'], 255, str), false, 'style="width:400px;" class="autofocus"'));
    FormRow('Заголовок', System::site()->Edit('hname', SafeDB($group['hname'], 255, str), false, 'style="width:400px;"'));
    FormRow('Описание', System::site()->TextArea('description', SafeDB($group['description'], 255, str), 'style="width:400px;height:100px;"'));
    FormRow('Видимая', System::site()->Check('visible', '1', $group['visible'] == '1'));
    AddCenterBox('Редактирование группы');
    AddForm('<form action="' . ADMIN_FILE . '?exe=config_admin&a=savegroup&id=' . $id . (AdminConfigPlugins() ? '&plugins=1' : '') . '" method="post">', System::site()->Button('Отмена', 'onclick="history.go(-1)"') . System::site()->Submit('Сохранить'));
}
function AdminExtensionsInstallList()
{
    global $config;
    $mod_dir = $config['mod_dir'];
    $plug_dir = $config['plug_dir'];
    $block_dir = $config['blocks_dir'];
    $temp_dir = $config['tpl_dir'];
    $list = array();
    $title = 'Установка расширений';
    System::admin()->AddSubTitle($title);
    // Загружаем информацию об установленных модулях
    $installed_mods = array();
    $installed_plugins = array();
    $installed_blocks = array();
    $installed_templates = array();
    System::database()->Select('modules');
    while ($mod = System::database()->FetchRow()) {
        $installed_mods[] = $mod['folder'];
    }
    System::database()->Select('plugins');
    while ($mod = System::database()->FetchRow()) {
        $installed_plugins[] = ($mod['group'] != '' ? $mod['group'] . '/' : '') . $mod['name'];
    }
    System::database()->Select('block_types');
    while ($mod = System::database()->FetchRow()) {
        $installed_blocks[] = $mod['folder'];
    }
    System::database()->Select('templates');
    while ($mod = System::database()->FetchRow()) {
        $installed_templates[] = $mod['folder'];
    }
    // Поиск модулей
    $mod_folders = GetFolders($mod_dir);
    foreach ($mod_folders as $folder) {
        if (!in_array($folder, $installed_mods)) {
            $info = ExtLoadInfo($mod_dir . $folder);
            if ($info !== false) {
                $info['type'] = EXT_MODULE;
                $info['path'] = $mod_dir . $folder . '/';
                $info['folder'] = $folder;
                if (is_file($info['path'] . 'install.php') && is_file($info['path'] . 'uninstall.php')) {
                    $list[] = $info;
                }
            }
        }
    }
    // Поиск плагинов
    $plug_folders = GetFolders($plug_dir);
    foreach ($plug_folders as $folder) {
        $info = false;
        if (is_file($plug_dir . $folder . '/info.php')) {
            // Возможно группа
            $info = ExtLoadInfo($plug_dir . $folder);
        }
        if (isset($info['1.3_old_plugins_group']) || $info === false) {
            // Группа
            $plug_folders2 = GetFolders($plug_dir . $folder . '/');
            foreach ($plug_folders2 as $folder2) {
                if (!in_array($folder . '/' . $folder2, $installed_plugins)) {
                    $info = ExtLoadInfo($plug_dir . $folder . '/' . $folder2);
                    if ($info !== false) {
                        $info['type'] = EXT_PLUGIN;
                        $info['path'] = $plug_dir . $folder . '/' . $folder2 . '/';
                        $info['group'] = $folder;
                        $info['folder'] = $folder2;
                        if (isset($info['1.3']) || is_file($info['path'] . 'install.php') && is_file($info['path'] . 'uninstall.php')) {
                            $list[] = $info;
                        }
                    }
                }
            }
        } else {
            // Отдельный плагин
            if (!in_array($folder, $installed_plugins)) {
                if ($info !== false) {
                    $info['type'] = EXT_PLUGIN;
                    $info['path'] = $plug_dir . $folder . '/';
                    $info['folder'] = $folder;
                    if (isset($info['1.3']) || is_file($info['path'] . 'install.php') && is_file($info['path'] . 'uninstall.php')) {
                        $list[] = $info;
                    }
                }
            }
        }
    }
    // Поиск блоков
    $block_folders = GetFolders($block_dir);
    foreach ($block_folders as $folder) {
        if (!in_array($folder, $installed_blocks)) {
            $info = ExtLoadInfo($block_dir . $folder);
            if ($info !== false) {
                $info['type'] = EXT_BLOCK;
                $info['path'] = $block_dir . $folder . '/';
                $info['folder'] = $folder;
                if (is_file($info['path'] . 'install.php') && is_file($info['path'] . 'uninstall.php')) {
                    $list[] = $info;
                }
            }
        }
    }
    // Поиск шаблонов
    $temp_folders = GetFolders($temp_dir);
    foreach ($temp_folders as $folder) {
        if (!in_array($folder, $installed_templates)) {
            $info = ExtLoadInfo($temp_dir . $folder);
            if ($info === false) {
                $info = array('name' => $folder, 'description' => '', 'author' => '', 'site' => '', 'version' => '1.0', 'admin' => false);
            }
            $info['type'] = EXT_TEMPLATE;
            $info['path'] = $temp_dir . $folder . '/';
            $info['folder'] = $folder;
            $list[] = $info;
        }
    }
    $count = count($list);
    $text = '<form action="' . ADMIN_FILE . '?exe=extensions&a=install" method="post">';
    $text .= '<table cellspacing="0" cellpadding="0" class="cfgtable">';
    $text .= '<tr><th>Установка</th><th>Тип</th><th>Имя</th><th>Описание</th><th>Автор</th><th>Сайт</th></tr>';
    if (count($list) > 0) {
        foreach ($list as $i => $ext) {
            switch ($ext['type']) {
                case 1:
                    if (is_file($ext['path'] . 'icon.png')) {
                        $type = '<img src="' . $ext['path'] . 'icon.png" title="Модуль">';
                    } else {
                        $type = '<img src="' . MOD_DIR . 'icon.png" title="Модуль">';
                    }
                    break;
                case 2:
                    $type = '<img src="images/plugins.png" title="Плагин">';
                    break;
                case 3:
                    $type = '<img src="images/blocks.png" title="Блок">';
                    break;
                case 4:
                    $type = '<img src="images/skins.png" title="Шаблон">';
                    break;
            }
            $text .= Indent('
				<tr>
					<td>' . System::site()->Check('install_' . $i, '1') . System::site()->Hidden('folder_' . $i, $ext['folder']) . System::site()->Hidden('type_' . $i, $ext['type']) . ($ext['type'] == EXT_PLUGIN && isset($ext['group']) ? System::site()->Hidden('group_' . $i, $ext['group']) : '') . '</td>
					<td>' . $type . '</td>
					<td>' . SafeDB($ext['name'], 255, str) . '</td>
					<td>' . (isset($ext['description']) && $ext['description'] != '' && $ext['description'] != ' - ' ? SafeDB($ext['description'], 255, str) : 'Нет описания') . '</td>
					<td>' . (isset($ext['author']) && $ext['author'] != '' ? SafeDB($ext['author'], 255, str) : '&nbsp;') . '</td>
					<td>' . (isset($ext['site']) && $ext['site'] != '' ? '<a href="' . HtmlChars($ext['site']) . '" title="' . HtmlChars($ext['site']) . '" target="_blank">Перейти</a>' : 'Нет') . '</td>
				</tr>
			');
        }
        $text .= '</table>';
        $text .= '<div style="margin-bottom: 25px;">' . System::site()->Hidden('count', $count) . System::site()->Submit('Установить выделенные') . '</div>';
        $text .= '</form>';
    } else {
        $text .= '<tr><td colspan="6" style="text-align: left;">Нет не установленных модулей.</td></tr>';
        $text .= '</table>';
        $text .= '</form>';
    }
    System::admin()->AddCenterBox($title . ' (' . $count . ' готово к установке)');
    System::admin()->AddText($text);
}
function IndexPollsVoice()
{
    if (!isset($_GET['poll_id'])) {
        GoBack();
    }
    if (!isset($_POST['voice'])) {
        System::site()->AddTextBox('', '<p align="center">Вы не выбрали ни одного варианта ответа.</p>');
    } else {
        $pid = SafeEnv($_GET['poll_id'], 11, int);
        System::database()->Select('polls', GetWhereByAccess('view', "`id`='{$pid}' and `active`='1'"));
        if (System::database()->NumRows() == 0) {
            GoBack();
        }
        $poll = System::database()->FetchRow();
        $answers = unserialize($poll['answers']);
        $multianswers = SafeDB($poll['multianswers'], 1, int);
        $voice = SafeEnv($_POST['voice'], 11, int);
        if (!$multianswers) {
            $voice = $voice[0];
        }
        //Проверяем, учавствовал ли данный пользователь в этом опросе
        $ip = getip();
        if (System::user()->Auth) {
            $uid = System::user()->Get('u_id');
        } else {
            $uid = -1;
        }
        System::database()->Select('polls_voices', "`poll_id`='{$pid}' and (`user_ip`='{$ip}' or `user_id`='{$uid}')");
        if (System::database()->NumRows() == 0) {
            if (!$multianswers) {
                if (isset($answers[$voice])) {
                    $answers[$voice][2] = $answers[$voice][2] + 1;
                    $answers = serialize($answers);
                    System::database()->Update('polls', "answers='{$answers}'", "`id`='{$pid}'");
                } else {
                    GoBack();
                }
            } else {
                $c = count($voice);
                for ($i = 0; $i < $c; $i++) {
                    if (isset($answers[$voice[$i]])) {
                        $answers[$voice[$i]][2] = $answers[$voice[$i]][2] + 1;
                    } else {
                        GoBack();
                    }
                }
                $answers = serialize($answers);
                System::database()->Update('polls', "answers='{$answers}'", "`id`='{$pid}'");
            }
            $voice = serialize($voice);
            if (System::user()->Auth) {
                $user_id = System::user()->Get('u_id');
            } else {
                $user_id = 0;
            }
            System::database()->Insert('polls_voices', "'','{$pid}','" . getip() . "','{$voice}','{$user_id}'");
            System::user()->ChargePoints(System::config('points/polls_answer'));
            GoBack();
        } else {
            System::site()->AddTextBox('', '<p align="center">Извините, Вы уже принимали участие в этом опросе.</p>');
        }
    }
}
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']);
}
<?php

/*
 * LinkorCMS 1.4
 * © 2012 LinkorCMS Development Group
 */
if (!defined('VALID_RUN')) {
    header("HTTP/1.1 404 Not Found");
    exit;
}
include MOD_DIR . 'lib/functions.php';
include MOD_DIR . 'lib/forum_lang.php';
System::site()->SetTitle($forum_lang['forum']);
if (isset($_GET['op'])) {
    $op = $_GET['op'];
} else {
    $op = 'main';
}
switch ($op) {
    case 'main':
        ForumLoadFunction('main');
        IndexForumMain();
        break;
    case 'showforum':
        ForumLoadFunction('showforum');
        IndexForumShowForum();
        break;
    case 'showtopic':
        ForumLoadFunction('showtopic');
        IndexForumShowTopic();
        break;
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  $save_link Ссылка на обработчик формы (имя модуля и параметр action)
 * @param string $a Добавление или редавтирование пользователя (edit or add)
 * @param int $id Идентификатор пользователя
 * @param bool $isadmin Редактирование администратора (влияет на выборку и отключает активацию по email)
 * @param bool $EditProfile Редактирование своего профиля администратором (не может изменить свой статус если не системный администратор)
 * @return
 */
function AdminUserEditor($save_link, $a = 'add', $id = '0', $isadmin = false)
{
    $active = array(false, false, false);
    $SystemAdmin = System::user()->isSuperUser();
    $edit = $a == 'edit';
    $editProfile = $edit && !$SystemAdmin && $id == System::user()->Get('u_id');
    // Администратор редактирует свой профиль
    $editStatus = false;
    // Разрешено редактирование статуса
    $editType = false;
    // Разрешено редавтировать тип пользователя
    // Загружаем данные пользователя из БД
    if ($edit) {
        $user = System::database()->SelectOne('users', "`id`='{$id}'" . ($isadmin ? " and `type`='1'" : " and `type`='2'"));
        if (!$user) {
            AddTextBox('Ошибка', '<p align="center">Пользователь не найден, либо у вас не достаточно прав для редактирования администраторов.</p>');
            return;
        }
    }
    // Устатанавливаем ограничения доступа
    if ($isadmin) {
        // Редатируем администратора
        if ($SystemAdmin) {
            // Только системные администаторы могут редактировать статус и тип администраторов
            if (!(groupIsSystem(SafeEnv($user['access'], 11, int)) && GetSystemAdminsCount() <= 1)) {
                // Если он не системный или системных больше 1
                $editStatus = true;
            }
            $editType = $editStatus;
        }
    } else {
        // Если пользователь
        $editStatus = true;
        // Все администраторы с доступом могут редактировать статус пользователя
        $editType = $SystemAdmin;
        // Только системные администраторы могут создавать администраторов
    }
    if ($editType) {
        $user_types_db = System::database()->Select('usertypes');
        $types = array('member' => array('member', 'Пользователь', false));
        foreach ($user_types_db as $type) {
            $types[$type['id']] = array(SafeDB($type['id'], 11, int), SafeDB($type['name'], 255, str), false);
        }
    }
    if ($edit) {
        $login = SafeDB($user['login'], 30, str);
        $mail = SafeDB($user['email'], 50, str);
        $hideemail = $user['hideemail'] == 1 ? true : false;
        $snews = $user['servernews'] == 1 ? true : false;
        $name = SafeDB($user['name'], 50, str);
        $tname = SafeDB($user['truename'], 250, str);
        $age = SafeDB($user['age'], 11, str);
        $city = SafeDB($user['city'], 100, str);
        $url = SafeDB($user['url'], 250, str);
        $icq = SafeDB($user['icq'], 15, str);
        $gmt = SafeDB($user['timezone'], 255, str);
        $about = SafeDB($user['about'], 0, str);
        $avatar = SafeDB($user['avatar'], 250, str);
        $apersonal = SafeDB($user['a_personal'], 1, int);
        if ($editStatus) {
            if ($user['active'] == '1') {
                $active[0] = true;
            } elseif ($user['active'] == '0' && $user['activate'] == '') {
                $active[1] = true;
            } elseif ($user['active'] == '0' && $user['activate'] != '') {
                $active[2] = true;
            }
        }
        if ($editType) {
            if ($user['type'] == '1') {
                $types[$user['access']][2] = true;
            } else {
                $types['member'][2] = true;
                //пользователь
            }
        }
        $caption = 'Сохранить';
        if ($isadmin) {
            if ($editProfile) {
                $title = 'Редактирование профиля';
            } else {
                $title = 'Редактирование администратора';
            }
        } else {
            $title = 'Редактирование пользователя';
        }
    } else {
        $login = '';
        $mail = '';
        $snews = false;
        $hideemail = false;
        $name = '';
        $tname = '';
        $age = '';
        $city = '';
        $url = '';
        $icq = '';
        $gmt = System::config('general/default_timezone');
        $about = '';
        $avatar = '';
        $apersonal = '0';
        if ($editStatus) {
            $active[0] = true;
        }
        if ($editType) {
            $types['member'][2] = true;
        }
        $caption = 'Добавить';
        $title = 'Добавить пользователя';
    }
    FormRow('Логин', System::site()->Edit('login', $login, false, 'style="width:400px;" class="autofocus"'));
    FormRow('Пароль', System::site()->Edit('pass', '', true, 'style="width:400px;"'));
    FormRow('Повторите пароль<br /><small>(для проверки)</small>', System::site()->Edit('rpass', '', true, 'style="width:400px;"'));
    FormRow('E-mail', System::site()->Edit('email', $mail, false, 'style="width:300px;"') . ' <label for="hideemail">Скрыть</label>&nbsp;' . System::site()->Check('hideemail', '1', $hideemail, 'id="hideemail"'));
    FormRow('<label for="snews">Рассылка</label>', System::site()->Check('snews', '1', $snews, 'id="snews"'));
    FormRow('Ник', System::site()->Edit('nikname', $name, false, 'style="width:400px;"'));
    FormRow('Настоящее имя', System::site()->Edit('realname', $tname, false, 'style="width:400px;"'));
    FormRow('Возраст', System::site()->Edit('age', $age, false, 'style="width:400px;"'));
    FormRow('Город', System::site()->Edit('city', $city, false, 'style="width:400px;"'));
    FormRow('Сайт', System::site()->Edit('homepage', $url, false, 'style="width:400px;"'));
    FormRow('ICQ', System::site()->Edit('icq', $icq, false, 'style="width:400px;"'));
    $gmt = GetGmtData($gmt);
    FormRow('Часовой пояс', System::site()->Select('gmt', $gmt, false, 'style="width:400px;"'));
    FormRow('О себе', System::site()->TextArea('about', $about, 'style="width:400px; height:200px;"'));
    $avatars = GetGalleryAvatarsData($avatar, $apersonal);
    if ($apersonal == '1') {
        $selected = GetPersonalAvatar($id);
    } else {
        $selected = GetGalleryAvatar($avatars[1]);
    }
    System::site()->AddJS('
	ShowAvatar = function(){
		if(document.userform.avatar.value==\'\'){
			document.userform.avatarview.src = \'' . (System::config('user/secure_avatar_upload') ? 'index.php?name=plugins&p=avatars_render&user='******'general/personal_avatars_dir') . $avatar) . '\';
		}else{
			document.userform.avatarview.src = \'' . (System::config('user/secure_avatar_upload') ? 'index.php?name=plugins&p=avatars_render&aname=' : System::config('general/avatars_dir')) . '\'+document.userform.avatar.value;
		}
	}');
    FormRow('Аватар', System::site()->Select('avatar', $avatars[0], false, 'onchange="ShowAvatar();"'));
    FormRow('', '<img id="avatarview" src="' . $selected . '" border="0">');
    FormRow('Загрузить аватар', System::site()->FFile('upavatar'));
    if ($editStatus) {
        FormRow('Активация', System::site()->Radio('activate', 'auto', $active[0]) . 'Активировать' . System::site()->Radio('activate', 'manual', $active[1]) . 'Не активировать' . (!$isadmin ? System::site()->Radio('activate', 'mail', $active[2]) . 'По E-mail' : ''));
    }
    if ($editType) {
        $user_types = array();
        foreach ($types as $type) {
            System::site()->DataAdd($user_types, $type[0], $type[1], $type[2]);
        }
        FormRow('Статус', System::site()->Select('status', $user_types));
    }
    TAddSubTitle($title);
    AddCenterBox($title);
    AddForm('<form name="userform" action="' . ADMIN_FILE . '?exe=' . $save_link . '&id=' . $id . '" method="post"  enctype="multipart/form-data">', System::site()->Button('Отмена', 'onclick="history.go(-1);"') . System::site()->Submit($caption));
}