/**
  * Выводит форму добавления или редактирования комментария.
  * @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;
 }
/**
 * Главная страница, список новостей
 * @return void
 */
function AdminNewsMain()
{
    global $news_access_editnews;
    System::admin()->AddSubTitle('Главная');
    $back = SaveRefererUrl();
    // Количество новостей на странице
    if (isset($_REQUEST['onpage'])) {
        $num = intval($_REQUEST['onpage']);
    } else {
        $num = System::config('news/newsonpage');
    }
    if (isset($_REQUEST['page'])) {
        $page = intval($_REQUEST['page']);
    } else {
        $page = 1;
    }
    $newsdb = System::database()->Select('news');
    $columns = array('title', 'date', 'hit_counter', 'comments_counter', 'view', 'enabled');
    $sortby = 'date';
    $sortbyid = 1;
    $desc = true;
    if (isset($_REQUEST['sortby'])) {
        $sortby = $columns[$_REQUEST['sortby']];
        $sortbyid = intval($_REQUEST['sortby']);
        $desc = $_REQUEST['desc'] == '1';
    }
    SortArray($newsdb, $sortby, $desc);
    // Выводим новости
    UseScript('jquery_ui_table');
    $table = new jQueryUiTable();
    $table->listing = ADMIN_FILE . '?exe=news&ajax';
    $table->del = ADMIN_FILE . '?exe=news&a=delete';
    $table->total = count($newsdb);
    $table->onpage = $num;
    $table->page = $page;
    $table->sortby = $sortbyid;
    $table->sortdesc = $desc;
    $table->AddColumn('Заголовок');
    $table->AddColumn('Дата', 'left', true, true);
    $table->AddColumn('Просмотров', 'right');
    $table->AddColumn('Комментарий', 'right');
    $table->AddColumn('Кто видит', 'center');
    $table->AddColumn('Статус', 'center');
    $table->AddColumn('Функции', 'center', false, true);
    $newsdb = ArrayPage($newsdb, $num, $page);
    // Берем только новости с текущей страницы
    foreach ($newsdb as $news) {
        $id = SafeDB($news['id'], 11, int);
        $status = System::admin()->SpeedStatus('Выключить', 'Включить', ADMIN_FILE . '?exe=news&a=changestatus&id=' . $id, $news['enabled'], 'images/bullet_green.png', 'images/bullet_red.png');
        $view = ViewLevelToStr(SafeDB($news['view'], 1, int));
        $allowComments = SafeDB($news['allow_comments'], 1, bool);
        $comments = SafeDB($news['comments_counter'], 11, int);
        // Количество комментарий
        $title = SafeDB($news['title'], 255, str);
        $func = '';
        $link_go = Ufu('index.php?name=news&op=readfull&news=' . $id . '&topic=' . SafeDB($news['topic_id'], 11, int), 'news/{topic}/{news}/');
        $func .= System::admin()->SpeedButton('Перейти к странице на сайте', $link_go, 'images/link_go.png', false, false, 'target="_blank"');
        if ($news_access_editnews) {
            $func .= System::admin()->SpeedButton('Редактировать', ADMIN_FILE . '?exe=news&a=edit&id=' . $id . '&back=' . $back, 'images/admin/edit.png');
            $func .= System::admin()->SpeedConfirmJs('Удалить', '$(\'#jqueryuitable\').table(\'deleteRow\', ' . $id . ');', 'images/admin/delete.png', 'Уверены, что хотите удалить эту новость?');
            $title = '<b>' . System::admin()->Link($title, ADMIN_FILE . '?exe=news&a=edit&id=' . $id . '&back=' . $back) . '</b>';
        }
        $table->AddRow($id, $title, TimeRender(SafeDB($news['date'], 11, int)), SafeDB($news['hit_counter'], 11, int), $allowComments ? $comments : 'Обсуждение закрыто', $view, $status, $func);
    }
    if (isset($_GET['ajax'])) {
        echo $table->GetOptions();
        exit;
    } else {
        $table->AddTable('Новости');
    }
}
function AdminViewRetrofittingList()
{
    if (!AdminConfigPlugins()) {
        $access_config = 'System::config(';
    } else {
        $access_config = 'System::plug_config(';
    }
    $back = SaveRefererUrl();
    $groupid = 1;
    if (isset($_GET['group'])) {
        $groupid = SafeEnv($_GET['group'], 11, int);
    }
    $groups_data = array();
    $groups = array();
    System::admin()->DataAdd($groups_data, 0, 'Все группы', $groupid == 0);
    System::database()->Select(AdminConfigGroupTable());
    SortArray(System::database()->QueryResult, 'hname');
    while ($group = System::database()->FetchRow()) {
        $sel = false;
        if ($groupid != 0) {
            $sel = $group['id'] == $groupid;
        }
        System::admin()->DataAdd($groups_data, SafeDB($group['id'], 11, int), SafeDB($group['hname'], 255, str), $sel);
        $groups[$group['id']] = $group;
    }
    System::admin()->AddCenterBox('Все настройки');
    System::admin()->AddJS(Indent('
		RetrofittingSelectGroup = function(){
			Admin.LoadPage("' . ADMIN_FILE . '?exe=config_admin' . (AdminConfigPlugins() ? '&a=view_all_plugins&plugins=1' : '') . '&group="+$("#retrofitting-group").val());
		}
	'));
    $text = '<div style="text-align: left; margin-bottom: 10px;">Группа: ' . System::site()->Select('group', $groups_data, false, 'id="retrofitting-group" onchange="RetrofittingSelectGroup();"') . '</div>';
    System::admin()->AddText($text);
    System::database()->Select(AdminConfigConfigTable(), $groupid > 0 ? "`group_id`='{$groupid}'" : '');
    SortArray(System::database()->QueryResult, 'name');
    $text = '<table cellspacing="0" cellpadding="0" class="cfgtable">';
    $text .= Indent('
		<tr>
			<th>№</th>
			<th>Настройка</th>
			<th>PHP код</th>
			<th>Видимая</th>
			<th>Функции</th>
		</tr>
	');
    $id = 0;
    while ($conf = System::database()->FetchRow()) {
        $id++;
        $confid = SafeDB($conf['id'], 11, int);
        $func = '';
        $func .= System::admin()->SpeedButton('Редактировать', ADMIN_FILE . '?exe=config_admin&a=edit&id=' . $confid . (AdminConfigPlugins() ? '&plugins=1' : '') . '&back=' . $back, 'images/admin/edit.png');
        $func .= System::admin()->SpeedConfirm('Удалить', ADMIN_FILE . '?exe=config_admin&a=delete&id=' . $confid . '&ok=0' . (AdminConfigPlugins() ? '&plugins=1' : '') . '&back=' . $back, 'images/admin/delete.png', 'Это может повлиять на работу системы. Нажмите отмена, если не уверены. Удалить настройку?');
        $access = $access_config . "<span style=\"color: #008200\">'" . SafeDB($groups[$conf['group_id']]['name'], 255, str) . '/' . "" . SafeDB($conf['name'], 255, str) . "'</span>)";
        //		$install_vals = Values('', $conf['group_id'], $conf['name'], $conf['value'],
        //			$conf['visible'], $conf['hname'], $conf['description'], $conf['kind'],
        //			$conf['values'], $conf['savefunc'], $conf['type'], $conf['autoload']);
        //		$install = 'System::database()->Insert("'.AdminConfigConfigTable().'","'.$install_vals.'");';
        if ($conf['visible'] == '1') {
            $visible = '<font color="#008000">Да</font>';
        } else {
            $visible = '<font color="#FF0000">Нет</font>';
        }
        $text .= Indent('
			<tr>
				<td>' . $id . '</td>
				<td style="text-align: left; padding-left: 10px; ' . ($conf['visible'] == '0' ? 'color: #888;' : '') . '">' . SafeDB($conf['hname'], 255, str) . '</td>
				<td style="text-align: left; padding-left: 10px;">' . $access . '</td>
				<td>' . $visible . '</td>
				<td>' . $func . '</td>
			</tr>
		');
    }
    $text .= '</table>';
    if (isset($_GET['saveok'])) {
        System::admin()->Highlight('Изменения сохранены.');
    } elseif (isset($_GET['addok'])) {
        System::admin()->Highlight('Настройка добавлена.');
    } elseif (isset($_GET['delok'])) {
        System::admin()->Highlight('Настройка удалена.');
    }
    System::admin()->AddText($text);
}
function AdminArticlesEditor()
{
    global $editarticles;
    if (!$editarticles) {
        System::admin()->AccessDenied();
    }
    $cat_id = isset($_GET['to']) ? SafeDB($_GET['to'], 11, int) : 0;
    $author = '';
    $email = '';
    $www = '';
    $title = '';
    $description = '';
    $article = '';
    $image = '';
    $auto_br_desc = false;
    $auto_br_article = false;
    $allow_comments = true;
    $allow_votes = true;
    $view = 4;
    $active = true;
    //Модуль SEO
    $seo_title = '';
    $seo_keywords = '';
    $seo_description = '';
    //
    $form = 0;
    $product_id = '';
    if (!isset($_GET['id'])) {
        $action = 'add';
        $top = 'Добавить статью';
        $cap = 'Добавить';
    } else {
        $id = SafeEnv($_GET['id'], 11, str);
        System::database()->Select('articles', "`id`='{$id}'");
        $art = System::database()->FetchRow();
        $cat_id = SafeDB($art['cat_id'], 11, int);
        $author = SafeDB($art['author'], 200, str);
        $email = SafeDB($art['email'], 50, str);
        $www = SafeDB($art['www'], 250, str);
        $title = SafeDB($art['title'], 255, str);
        $description = SafeDB($art['description'], 0, str, false);
        $article = SafeDB($art['article'], 0, str, false);
        $image = SafeDB($art['image'], 250, str);
        $auto_br_article = SafeDB($art['auto_br_article'], 1, bool);
        $auto_br_desc = SafeDB($art['auto_br_desc'], 1, bool);
        $active = SafeDB($art['active'], 1, bool);
        $allow_comments = SafeDB($art['allow_comments'], 1, int);
        $allow_votes = SafeDB($art['allow_votes'], 1, int);
        $view = SafeDB($art['view'], 1, int);
        //Модуль SEO
        $seo_title = SafeDB($art['seo_title'], 255, str);
        $seo_keywords = SafeDB($art['seo_keywords'], 255, str);
        $seo_description = SafeDB($art['seo_description'], 255, str);
        //
        $form = SafeDB($art['form'], 11, int);
        $product_id = SafeDB($art['product_id'], 255, str);
        $action = 'save&id=' . $id;
        $top = 'Редактирование статьи';
        $cap = 'Сохранить изменения';
    }
    System::admin()->AddJS(Indent('
		ArticlesPreviewOpen = function(){
			if(tinyMCE){
				tinyMCE.triggerSave();
			}
			var form_data = Admin.SerializeFormData(document.forms.edit_form);
			var left = parseInt(screen.width / 2) - 400;
			var top = parseInt(screen.height / 10);
			var wp = window.open("", "Preview", "resizable=yes,scrollbars=yes,menubar=no,status=no,location=no,width=800,height=600,left="+left+",top="+top+"");
			wp.document.open();
			$.ajax({
				type: "POST",
				url: "' . ADMIN_FILE . '?exe=articles&a=preview",
				data: form_data,
				dataType: "html",
				success: function(data){
					wp.document.write(data);
					wp.document.close();
				}
			});
		}
	'));
    $cats_data = AdminArticlesGetTree()->GetCatsData($cat_id);
    if (count($cats_data) == 0) {
        $back_to_form = SaveRefererUrl();
        AddTextBox($top, 'Нет категорий для добавления! ' . System::admin()->SpeedButton('Добавить категорию', ADMIN_FILE . '?exe=articles&a=cateditor&back=' . $back_to_form, '', true, true));
        return;
    }
    FormRow('В категорию', System::site()->Select('category', $cats_data, false, $cat_id == 0 ? 'class="autofocus"' : ''));
    FormRow('Заголовок', System::site()->Edit('title', $title, false, 'maxlength="250" style="width:400px;"' . ($cat_id != 0 ? 'class="autofocus"' : '')));
    //Модуль SEO
    FormRow('[seo] Заголовок страницы', System::site()->Edit('seo_title', $seo_title, false, 'style="width:400px;"'));
    FormRow('[seo] Ключевые слова', System::site()->Edit('seo_keywords', $seo_keywords, false, 'style="width:400px;"'));
    FormRow('[seo] Описание', System::site()->Edit('seo_description', $seo_description, false, 'style="width:400px;"'));
    //
    // Веб форма
    $forms = System::database()->Select('forms', "`active`='1'");
    $forms_data = array();
    System::site()->DataAdd($forms_data, '0', 'Нет', $form == 0);
    foreach ($forms as $f) {
        System::site()->DataAdd($forms_data, SafeDB($f['id'], 11, int), SafeDB($f['hname'], 255, str), $f['id'] == $form);
    }
    FormRow('Форма', System::site()->Select('form', $forms_data));
    FormRow('Код товара', System::site()->Edit('product_id', $product_id, false, 'maxlength="250" style="width:400px;"'));
    AdminImageControl('Изображение', 'Загрузить изображение', $image, System::config('articles/images_dir'));
    FormTextRow('Короткая статья (HTML)', System::site()->HtmlEditor('description', $description, 600, 200));
    FormRow('', 'Преобразовать текст в HTML: ' . System::site()->Select('auto_br_desc', GetEnData($auto_br_desc, 'Да', 'Нет')));
    FormTextRow('Полная статья (HTML)', System::site()->HtmlEditor('article', $article, 600, 400));
    FormRow('', 'Преобразовать текст в HTML: ' . System::site()->Select('auto_br_article', GetEnData($auto_br_article, 'Да', 'Нет')));
    FormRow('Автор', System::site()->Edit('author', $author, false, 'style="width:400px;" maxlength="50"'));
    FormRow('E-mail автора', System::site()->Edit('email', $email, false, 'style="width:400px;" maxlength="50"'));
    FormRow('Сайт автора', System::site()->Edit('www', $www, false, 'style="width:400px;" maxlength="250"'));
    FormRow('Комментарии', System::site()->Select('allow_comments', GetEnData($allow_comments, 'Разрешить', 'Запретить')));
    FormRow('Оценки', System::site()->Select('allow_votes', GetEnData($allow_votes, 'Разрешить', 'Запретить')));
    FormRow('Кто видит', System::site()->Select('view', GetUserTypesFormData($view)));
    FormRow('Активна', System::site()->Select('active', GetEnData($active, 'Да', 'Нет')));
    AddCenterBox($top);
    if (!isset($_REQUEST['back'])) {
        $_REQUEST['back'] = SaveRefererUrl(ADMIN_FILE . '?exe=articles');
    }
    AddForm('<form name="edit_form" action="' . ADMIN_FILE . '?exe=articles&a=' . $action . '&back=' . SafeDB($_REQUEST['back'], 255, str) . '" method="post" enctype="multipart/form-data">', System::site()->Button('Отмена', 'onclick="history.go(-1)"') . System::site()->Button('Предпросмотр', 'onclick="ArticlesPreviewOpen();"') . System::site()->Submit($cap));
}
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('Загрузить'));
}
</div>';
AddText($searchtool);
$text = '';
$text .= '
<table cellspacing="0" cellpadding="0" class="cfgtable" valign="top">
	<tr>
		<th>Действие</th>
		<th width="2">
	</th>';
$nc = count($info);
foreach ($info as $col) {
    $text .= '<th>' . $col['name'] . '</th>';
}
$text .= '</tr>';
$i = $rows_on_page * $page - $rows_on_page;
$back = SaveRefererUrl();
foreach ($rows as $col) {
    $func = '';
    $func .= SpeedButton('Редактировать', ADMIN_FILE . '?exe=dbadmin&a=editfield&name=' . $namedb . '&index=' . $i . $where_url . '&back=' . $back, 'images/admin/edit.png');
    $func .= System::admin()->SpeedConfirm('Удалить', ADMIN_FILE . '?exe=dbadmin&a=deleterow&name=' . $namedb . '&index=' . $i . $where_url . '&back=' . $back, 'images/admin/delete.png', 'Удалить запись?');
    $func .= SpeedButton('PHP код вставки', ADMIN_FILE . '?exe=dbadmin&a=viewcode&name=' . $namedb . '&index=' . $i . $where_url, 'images/admin/php.png');
    $text .= '<tr><td nowrap="nowrap">' . $func . '</td><td></td>';
    for ($j = 0; $j < $nc; $j++) {
        $col_name = $info[$j]['name'];
        strlen($col[$col_name]) > 255 ? $p = '... ...' : ($p = '');
        $text .= '<td>' . substr(HtmlChars($col[$col_name]), 0, 255) . $p . '</td>';
    }
    $text .= '</tr>';
    $i++;
}
$text .= '</table>';
/**
 * Добавляет блоки модерации в шаблон просмотра тем.
 */
function ModerationForumTopicsBlocks()
{
    if (!System::user()->isAdmin()) {
        System::site()->AddBlock('topics_moderation', false);
        System::site()->AddBlock('topics_moderation_options', false);
        return;
    }
    System::site()->AddBlock('topics_moderation', true, false, 'moderation');
    System::site()->SetVars('topics_moderation', array('form_url' => 'index.php?name=forum&op=edit_topics&back=' . SaveRefererUrl()));
    System::site()->AddBlock('topics_moderation_options', true, true, 'option');
    $options = array('deletetopic' => 'Удалить темы', 'open' => 'Открыть темы', 'close' => 'Закрыть темы', 'stick' => 'Установить для темы статус "Важная"', 'unstick' => 'Снять с темы статус "Важная"', 'movetopic' => 'Переместить темы', 'mergetopic' => 'Объединить темы');
    foreach ($options as $name => $title) {
        System::site()->AddSubBlock('topics_moderation_options', true, array('name' => $name, 'title' => $title));
    }
}
function AdminGuestBookPremoderationMain()
{
    System::admin()->AddCenterBox('Премодерация');
    $premoderation = System::user()->CheckAccess2('guestbook', 'premoderation');
    $premoderate = System::database()->Select('guestbook', "`premoderate`='0'");
    if (System::database()->NumRows() == 0) {
        System::admin()->Highlight('В премодерации нет сообщений.');
        return;
    }
    if (isset($_GET['page'])) {
        $page = SafeEnv($_GET['page'], 10, int);
    } else {
        $page = 1;
    }
    SortArray($premoderate, 'date', true);
    $num = System::config('gb/msgonpage');
    if (count($premoderate) > $num) {
        $navigator = new Navigation($page);
        $navigator->GenNavigationMenu($premoderate, $num, ADMIN_FILE . '?exe=guestbook&a=premoderation');
        $nav = true;
    } else {
        $nav = false;
    }
    $text = '';
    $back = SaveRefererUrl();
    foreach ($premoderate as $pre) {
        if ($pre['url'] == '') {
            $url = 'Нет';
        } else {
            $url = '<a href="http://' . SafeDB($pre['url'], 250, str) . '" target="_blank">' . SafeDB($pre['url'], 250, str) . '</a>';
        }
        if ($pre['email'] == '') {
            $name = SafeDB($pre['name'], 50, str);
        } else {
            $name = PrintEmail($pre['email'], $pre['name']);
        }
        $mid = SafeDB($pre['id'], 11, int);
        $del = System::admin()->SpeedConfirm('Удалить сообщение', ADMIN_FILE . '?exe=guestbook&a=delete&id=' . $mid . '&back=' . $back, 'images/admin/delete.png', 'Удалить сообщение?');
        $func2 = '';
        $func2 = System::admin()->Link('Разрешить', ADMIN_FILE . '?exe=guestbook&a=prem_yes&id=' . $mid . '&back=' . $back);
        $text .= '<table cellspacing="0" cellpadding="0" class="commtable" style="width:75%;">';
        $text .= '<tr>
			<th style="text-align: left; width: 180px;">' . $name . '</th>
			<th style="width: 160px;">Сайт: ' . $url . '</th>
			<th style="width: 120px;">ICQ: ' . SafeDB($pre['icq'], 15, str) . '</th>
			<th style="width: 120px;">IP: ' . SafeDB($pre['user_ip'], 20, str) . '</th>
			<th> ' . $del . ' </th>
		</tr>';
        $text .= '<tr><td colspan="5" style="text-align:left;padding:10px;" class="commtable_text">' . SafeDB($pre['message'], 0, str) . '</td></tr>';
        $text .= '<tr><th>Дата: ' . TimeRender($pre['date']) . '</th><th colspan="4" style="text-align:right;">' . $func2 . '</th></tr>';
        $text .= '</table>';
    }
    AddText($text);
    if ($nav) {
        AddNavigation();
    }
    AddText('<div style="text-align: center;">' . System::admin()->SpeedConfirm('Разрешить все', ADMIN_FILE . '?exe=guestbook&a=prem_yes_all&back=' . $back, 'images/admin/accept.png', 'Разрешить все сообщения?', true, true) . '&nbsp;' . System::admin()->SpeedConfirm('Удалить все', ADMIN_FILE . '?exe=guestbook&a=prem_del_all&back=' . $back, 'images/admin/delete.png', 'Удалить все сообщения?', true, true) . '</div>');
}
function IndexGBAddMessage(&$msg)
{
    // Имя и электронная почта
    if ($msg['email'] != '' && $msg['hide_email'] != '1') {
        $vars['name'] = '<a href="mailto:' . SafeDB($msg['email'], 50, str) . '">' . SafeDB($msg['name'], 50, str) . '</a>';
        $vars['name2'] = SafeDB($msg['name'], 50, str);
        $vars['email'] = '<a href="mailto:' . SafeDB($msg['email'], 50, str) . '"><img src="images/buttons/email.gif" /></a>';
        $vars['email2'] = SafeDB($msg['email'], 50, str);
    } else {
        $vars['name'] = SafeDB($msg['name'], 50, str);
        $vars['email'] = '';
        $vars['email2'] = '';
    }
    // Сайт
    if ($msg['url'] != '') {
        $url = UrlRender(SafeDB($msg['url'], 255, str));
        $vars['url'] = '<a href="' . $url . '" target="_blank"><img src="images/buttons/www.gif" /></a>';
        $vars['url2'] = $url;
    } else {
        $vars['url'] = '';
        $vars['url2'] = '';
    }
    // Аська
    if ($msg['icq'] != '') {
        $vars['icq'] = '<a href="http://web.icq.com/' . SafeDB($msg['icq'], 255, str) . '" target="_blank"><img src="images/buttons/icq.gif" /></a>';
        $vars['icq2'] = SafeDB($msg['icq'], 255, str);
    } else {
        $vars['icq'] = '';
        $vars['icq2'] = '';
    }
    // Ответы
    if (trim($msg['answers']) == '') {
        $answers = array();
    } else {
        $answers = unserialize($msg['answers']);
    }
    // Функции для администратора
    $id = SafeDB($msg['id'], 11, int);
    $vars['access_answer'] = System::user()->CheckAccess2('guestbook', 'answer');
    $vars['edit_answer_url'] = ADMIN_FILE . '?exe=guestbook&a=editanswer&id=' . $id . '&back=' . SaveRefererUrl();
    // Редактировать ответ
    $vars['delete_answer_url'] = ADMIN_FILE . '?exe=guestbook&a=delanswer&id=' . $id . '&back=' . SaveRefererUrl();
    // Удалить ответ
    $vars['add_answer_url'] = ADMIN_FILE . '?exe=guestbook&a=addanswer&id=' . $id . '&back=' . SaveRefererUrl();
    // Ответить
    $vars['edit_message_url'] = ADMIN_FILE . '?exe=guestbook&a=edit&id=' . $id . '&back=' . SaveRefererUrl();
    // Редактировать сообщение
    $vars['delete_message_url'] = ADMIN_FILE . '?exe=guestbook&a=delete&id=' . $id . '&ok=0' . '&back=' . SaveRefererUrl();
    // Удалить сообщение
    if (System::user()->isAdmin()) {
        $func = '';
        $msg_func = '';
        if (array_key_exists(System::user()->Name(), $answers)) {
            if ($vars['access_answer']) {
                $func = '<a href="' . $vars['edit_answer_url'] . '">Редактировать ответ</a> :: ' . '<a href="' . $vars['delete_answer_url'] . '">Удалить ответ</a>';
            } else {
                $func = '';
            }
        } elseif ($vars['access_answer']) {
            $func = '<a href="' . $vars['add_answer_url'] . '">Ответить</a>';
        }
        $msg_func = ($func != '' ? ' :: ' : '') . '<a href="' . $vars['edit_message_url'] . '">Редактировать сообщение</a> :: ' . '<a href="' . $vars['delete_message_url'] . '">Удалить сообщение</a>';
        $vars['admin'] = $func . $msg_func;
    } else {
        $vars['admin'] = '';
    }
    $keys = array_keys($answers);
    $answerstext = '';
    if (count($answers) > 0) {
        $answerstext = 'Ответы: <ul style="margin:3px;margin-left:16px;">' . EOL;
        foreach ($keys as $key) {
            $answerstext .= '<li>' . $key . ' - ' . $answers[$key] . EOL;
        }
        $answerstext .= '</ul>' . EOL;
    }
    $vars['date'] = TimeRender(SafeDB($msg['date'], 11, int));
    $vars['text'] = SafeDB($msg['message'], 0, str);
    $vars['answers'] = $answerstext;
    System::site()->AddSubBlock('guestbook', true, $vars);
}
function IndexNewsFunc($id)
{
    return '&nbsp' . '<a href="' . ADMIN_FILE . '?exe=news&a=edit&id=' . $id . '&back=' . SaveRefererUrl() . '" class="admin_edit_link"><img src="images/admin/edit.png" title="Редактировать"></a>' . '<a href="' . ADMIN_FILE . '?exe=news&a=delete&id=' . $id . '&back=' . SaveRefererUrl() . '&ok=0" class="admin_edit_link"><img src="images/admin/delete.png" title="Удалить"></a>';
}
function IndexArticlesFunc($id)
{
    $back = SaveRefererUrl();
    return '&nbsp' . '<a href="' . ADMIN_FILE . '?exe=articles&a=editor&id=' . $id . '&back=' . $back . '" class="admin_edit_link"><img src="images/admin/edit.png" title="Редактировать"></a>' . '<a href="' . ADMIN_FILE . '?exe=articles&a=delete&id=' . $id . '&ok=0&back=' . $back . '" class="admin_edit_link"><img src="images/admin/delete.png" title="Удалить"></a>';
}
function AdminDownloadsFileEditor($action)
{
    if (!System::user()->CheckAccess2('downloads', 'edit_files')) {
        System::admin()->AccessDenied();
    }
    $category = isset($_GET['to']) ? SafeDB($_GET['to'], 11, int) : 0;
    $title = '';
    $url = '';
    $file_size = '0';
    $size_type = 'b';
    $shortdesc = '';
    $description = '';
    $image = '';
    $author = '';
    $author_site = '';
    $author_email = '';
    $file_ver = '';
    $allow_comments = true;
    $allow_votes = true;
    $view = 4;
    $active = true;
    if (!isset($_GET['id'])) {
        $action = 'addfilesave';
        $top = 'Добавить файл';
        $cap = 'Добавить';
    } else {
        $id = SafeEnv($_GET['id'], 11, int);
        System::database()->Select('downloads', "`id`='{$id}'");
        $file = System::database()->FetchRow();
        $category = SafeDB($file['category'], 11, int);
        $title = SafeDB($file['title'], 250, str);
        $url = SafeDB($file['url'], 250, str);
        $file_size = SafeDB($file['size'], 11, real);
        $size_type = SafeDB($file['size_type'], 1, str);
        $shortdesc = SafeDB($file['shortdesc'], 0, str, false);
        $description = SafeDB($file['description'], 0, str, false);
        $image = SafeDB($file['image'], 250, str);
        $author = SafeDB($file['author'], 200, str);
        $author_site = SafeDB($file['author_site'], 250, str);
        $author_email = SafeDB($file['author_email'], 50, str);
        $file_ver = SafeDB($file['file_version'], 250, str);
        $allow_comments = SafeDB($file['allow_comments'], 1, int);
        $allow_votes = SafeDB($file['allow_votes'], 1, int);
        $view = SafeDB($file['view'], 1, int);
        $active = SafeDB($file['active'], 1, int);
        $action = 'editfilesave&id=' . $id;
        $top = 'Редактирование файла';
        $cap = 'Сохранить изменения';
    }
    $cats_data = AdminDownloadsGetTree()->GetCatsData($category);
    if (count($cats_data) == 0) {
        $back_to_form = SaveRefererUrl();
        AddTextBox($top, 'Нет категорий для добавления! ' . System::admin()->SpeedButton('Добавить категорию', ADMIN_FILE . '?exe=downloads&a=cateditor&back=' . $back_to_form, '', true, true));
        return;
    }
    $filesize_data = array();
    System::site()->DataAdd($filesize_data, 'b', 'Байт', $size_type == 'b');
    System::site()->DataAdd($filesize_data, 'k', 'Килобайт', $size_type == 'k');
    System::site()->DataAdd($filesize_data, 'm', 'Мегабайт', $size_type == 'm');
    System::site()->DataAdd($filesize_data, 'g', 'Гигабайт', $size_type == 'g');
    $max_file_size = ini_get('upload_max_filesize');
    AddCenterBox($top);
    FormRow('В категорию', System::site()->Select('category', $cats_data, false, $category == 0 ? 'class="autofocus"' : ''));
    FormRow('Название', System::site()->Edit('title', $title, false, 'style="width:400px;"' . ($category != 0 ? ' class="autofocus"' : '')));
    FormRow('Путь к файлу', System::site()->Edit('url', $url, false, 'style="width:400px;"'));
    //FormRow('Путь к файлу', System::site()->FileManager( 'url', $url, 400));
    FormRow('Загрузить файл<br />(<small>Максимальный размер файла: ' . $max_file_size . '</small>)', System::site()->FFile('upload_file') . '<br /><div style="width: 400px; word-wrap:break-word;">Разрешенные форматы:<br />' . System::config('downloads/file_exts') . '</div>');
    FormRow('Размер файла', System::site()->Edit('size', $file_size, false, 'style="width:200px;"') . ' ' . System::site()->Select('filesize_type', $filesize_data));
    AdminImageControl('Изображение', 'Загрузить изображение', $image, System::config('downloads/images_dir'));
    FormTextRow('Краткое описание', System::site()->HtmlEditor('shortdesc', $shortdesc, 600, 200));
    FormTextRow('Полное описание', System::site()->HtmlEditor('description', $description, 600, 400));
    FormRow('Версия файла', System::site()->Edit('version', $file_ver, false, 'style="width:400px;"'));
    FormRow('Автор', System::site()->Edit('author', $author, false, 'style="width:400px;"'));
    FormRow('E-mail автора', System::site()->Edit('author_email', $author_email, false, 'style="width:400px;"'));
    FormRow('Сайт автора', System::site()->Edit('author_site', $author_site, false, 'style="width:400px;"'));
    FormRow('Комментарии', System::site()->Select('allow_comments', GetEnData($allow_comments, 'Разрешить', 'Запретить')));
    FormRow('Оценки', System::site()->Select('allow_votes', GetEnData($allow_votes, 'Разрешить', 'Запретить')));
    FormRow('Кто видит', System::site()->Select('view', GetUserTypesFormData($view)));
    FormRow('Активен', System::site()->Select('active', GetEnData($active, 'Да', 'Нет')));
    if (!isset($_REQUEST['back'])) {
        $_REQUEST['back'] = SaveRefererUrl(ADMIN_FILE . '?exe=downloads');
    }
    AddForm('<form action="' . ADMIN_FILE . '?exe=downloads&a=' . $action . '&back=' . SafeDB($_REQUEST['back'], 255, str) . '" method="post" enctype="multipart/form-data" name="edit_form">', System::site()->Button('Отмена', 'onclick="history.go(-1)"') . System::site()->Submit($cap));
}