function AdminFeedBackDepartments() { System::database()->Select('feedback', ''); $text = '<table cellspacing="0" cellpadding="0" class="cfgtable">'; $text .= '<tr><th>Название</th><th>E-mail</th><th>Статус</th><th>Функции</th></tr>'; while ($row = System::database()->FetchRow()) { $fid = SafeDB($row['id'], 11, int); $st = System::admin()->SpeedStatus('Вкл.', 'Выкл.', ADMIN_FILE . '?exe=feedback&a=changestatus&id=' . $fid, $row['active'] == '1'); $func = System::admin()->SpeedButton('Редактировать', ADMIN_FILE . '?exe=feedback&a=edit&id=' . $fid, 'images/admin/edit.png') . System::admin()->SpeedConfirm('Удалить', ADMIN_FILE . '?exe=feedback&a=delete&id=' . $fid, 'images/admin/delete.png', 'Удалить департамент?'); $text .= '<tr> <td><b>' . System::admin()->Link(SafeEnv($row['name'], 255, str), ADMIN_FILE . '?exe=feedback&a=edit&id=' . $fid, 'Редактировать') . '</b></td> <td>' . PrintEmail($row['email']) . '</td> <td>' . $st . '</td> <td>' . $func . '</td> </tr>'; } $text .= '</table>'; AddTextBox('Департаменты', $text); }
function AdminSiteMessagesMain() { System::database()->Select('messages', ''); $text = '<table cellspacing="0" cellpadding="0" class="cfgtable">'; $text .= '<tr><th>Название</th><th>Осталось времени</th><th>Кто видит</th><th>Статус</th><th>Функции</th></tr>'; while ($msg = System::database()->FetchRow()) { $mid = SafeDB($msg['id'], 11, int); $st = System::admin()->SpeedStatus('Вкл.', 'Выкл.', ADMIN_FILE . '?exe=messages&a=changestatus&id=' . $mid, $msg['active'] == '1'); $resettime = ''; if ($msg['expire'] != '0') { $total = TotalTime(time(), SafeDB($msg['date'], 11, int) + Day2Sec * SafeDB($msg['expire'], 11, int)); if ($total['days'] > 0 || $total['hours'] > 0) { if ($total['days'] > 0) { $resettime .= $total['sdays']; if ($total['hours'] > 0) { $resettime .= ' и '; } } if ($total['hours'] > 0) { $resettime .= $total['shours']; } } else { $resettime = 'Время вышло'; } } else { $resettime = 'Неограниченно'; } $func = ''; $func .= SpeedButton('Редактировать', ADMIN_FILE . '?exe=messages&a=msgeditor&id=' . $mid, 'images/admin/edit.png'); $func .= System::admin()->SpeedConfirm('Удалить', ADMIN_FILE . '?exe=messages&a=delete&id=' . $mid . '&ok=0', 'images/admin/delete.png', 'Удалить сообщение?'); $text .= '<tr><td><b>' . System::admin()->Link(SafeDB($msg['title'], 250, str), ADMIN_FILE . '?exe=messages&a=msgeditor&id=' . $mid) . '</b></td> <td>' . $resettime . '</td> <td>' . ViewLevelToStr(SafeDB($msg['view'], 1, int)) . '</td> <td>' . $st . '</td> <td>' . $func . '</td> </tr>'; } $text .= '</table>'; AddTextBox('Все сообщения', $text); }
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> <a href="javascript:history.go(-1)">Нет</a>'; AddTextBox("Предупреждение", $text); } }
/** * Редактор новостей (редактирование / добавление) * @return void */ function AdminNewsEditor() { global $news_access_editnews; if (!$news_access_editnews) { System::admin()->AccessDenied(); } UseScript('jquery_ui', 'colorbox?theme=admin'); System::admin()->AddOnLoadJS(' $("#datepicker").datepicker({ dateFormat: "dd.mm.yy", changeMonth: true, changeYear: true });'); $topic_id = 0; // Номер темы $newstitle = ''; // Заголовок новости $icon = ''; // Иконки $stext = ''; // Короткая новость $ctext = ''; // Полная новость $view = 4; // Кто видит $allow_comments = true; // Разрешить комментарии $auto_br = false; // Авто добавление тега <br /> $enabled = true; // Включить да/нет $alname = 'Разместить'; // Надпись на отправляющей кнопке $img_view = 0; //Модуль SEO $seo_title = ''; $seo_keywords = ''; $seo_description = ''; $public_date = date("d.m.Y", time()); $public_time = date("G:i", time()); if (!isset($_GET['id'])) { // Добавление новости $auto_br = false; $title = 'Добавить новость'; $caption = 'Добавить'; TAddSubTitle($title); $met = ''; } else { // Редактирование новости System::database()->Select('news', "`id`='" . SafeEnv($_GET['id'], 11, int) . "'"); $news = System::database()->FetchRow(); $topic_id = SafeDB($news['topic_id'], 11, int); $newstitle = SafeDB($news['title'], 255, str); $icon = SafeDB($news['icon'], 255, str); $stext = SafeDB($news['start_text'], 0, str, false); $ctext = SafeDB($news['end_text'], 0, str, false); $allow_comments = SafeDB($news['allow_comments'], 1, bool); $auto_br = SafeDB($news['auto_br'], 1, bool); $img_view = SafeDB($news['img_view'], 1, int); $view = SafeDB($news['view'], 1, int); $enabled = SafeDB($news['enabled'], 1, bool); //Модуль SEO $seo_title = SafeDB($news['seo_title'], 255, str); $seo_keywords = SafeDB($news['seo_keywords'], 255, str); $seo_description = SafeDB($news['seo_description'], 255, str); $public_date = date("d.m.Y", $news['date']); $public_time = date("G:i", $news['date']); $title = 'Редактирование новости'; $caption = 'Сохранить изменения'; TAddSubTitle($title); $met = '&id=' . SafeEnv($_GET['id'], 11, int); } System::admin()->AddJS(Indent(' NewsPreviewOpen = function(){ if(tinyMCE){ tinyMCE.triggerSave(); } var form_data = Admin.SerializeFormData(document.forms.news_editor); 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=news&a=preview' . $met . '", data: form_data, dataType: "html", success: function(data){ wp.document.write(data); wp.document.close(); } }); } ')); System::database()->Select('news_topics', ''); $topicdata = array(); while ($topic = System::database()->FetchRow()) { System::admin()->DataAdd($topicdata, $topic['id'], $topic['title'], $topic['id'] == $topic_id); } if (count($topicdata) == 0) { AddTextBox($title, 'Нет раздела для добавления. Создайте хотя бы один раздел.'); return; } $img_view_data = array(); System::admin()->DataAdd($img_view_data, '0', 'Авто', $img_view == 0); System::admin()->DataAdd($img_view_data, '1', 'Исходная картинка', $img_view == 1); System::admin()->DataAdd($img_view_data, '2', 'Эскиз', $img_view == 2); $acts = array(); System::admin()->DataAdd($acts, 'save', $alname); System::admin()->DataAdd($acts, 'preview', 'Предпросмотр'); FormRow('Раздел', System::admin()->Select('topic_id', $topicdata, false, 'class="autofocus"')); FormRow('Заголовок новости', System::admin()->Edit('title', $newstitle, false, 'style="width:400px;"')); // Модуль SEO FormRow('[seo] Заголовок страницы', System::admin()->Edit('seo_title', $seo_title, false, 'style="width:400px;"')); FormRow('[seo] Ключевые слова', System::admin()->Edit('seo_keywords', $seo_keywords, false, 'style="width:400px;"')); FormRow('[seo] Описание', System::admin()->Edit('seo_description', $seo_description, false, 'style="width:400px;"')); list($width, $height) = SafeDB(explode(':', System::config('news/tmb_size')), 11, int); FormRow('Изображение', System::admin()->FileManager('icon', $icon) . '<br> <a href="' . $icon . '" class="filemanager_icon colorbox" data-content="href:path" target="_blank"> <img src="' . GetThumb($icon, $width, $height) . '" class="filemanager_icon" data-content="src:tmb" style="margin-top: 5px; max-width: 250px;"> </a>'); //AdminImageControl('Изображение', 'Загрузить изображение', $icon, System::config('news/icons_dirs'), 'icon', 'up_photo', 'news_editor'); FormRow('Отображение рисунка', System::admin()->Select('img_view', $img_view_data)); FormTextRow('Короткая новость (HTML)', System::admin()->HtmlEditor('shorttext', $stext, 600, 200)); FormTextRow('Полная новость (HTML)', System::admin()->HtmlEditor('continuation', $ctext, 600, 400)); FormRow('', 'Преобразовать текст в HTML: ' . System::admin()->Select('auto_br', GetEnData($auto_br, 'Да', 'Нет'))); FormRow('Дата и время публикации', System::admin()->Edit('public_date', $public_date, false, 'id="datepicker" style="width:120px;"') . ' ' . System::admin()->Edit('public_time', $public_time, false, 'style="width:60px;"')); FormRow('Комментарии', System::admin()->Select('acomments', GetEnData($allow_comments, 'Разрешить', 'Запретить'))); FormRow('Кто видит', System::admin()->Select('view', GetUserTypesFormData($view))); FormRow('Включить', System::admin()->Select('enabled', GetEnData($enabled, 'Да', 'Нет'))); AddCenterBox($title); $back = ''; if (isset($_REQUEST['back'])) { $back = '&back=' . SafeDB($_REQUEST['back'], 255, str); } AddForm('<form name="news_editor" action="' . ADMIN_FILE . '?exe=news&a=save' . $met . $back . '" method="post" enctype="multipart/form-data" name="news_editor">', System::admin()->Button('Отмена', 'onclick="history.go(-1)"') . System::admin()->Button('Предпросмотр', 'onclick="NewsPreviewOpen();"') . System::admin()->Submit($caption)); }
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> <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('Загрузить')); }
$index_disabled = ''; } $unique = isset($col['unique']) ? $col['unique'] : false; $index = isset($col['index']) ? $col['index'] : false; $fulltext = isset($col['fulltext']) ? $col['fulltext'] : false; $text .= '<tr> <td>' . $site->Edit('name' . $i, isset($col['name']) ? $col['name'] : '', false, 'style="width:80px;"') . '</td> <td>' . $site->Select('type' . $i, $types) . '</td> <td>' . $site->Edit('length' . $i, isset($col['length']) ? $col['length'] : '', false, 'style="width:50px"') . '</td> <td>' . $site->Select('attributes' . $i, $atr) . '</td> <td>' . $site->Check('notnull' . $i, 'notnull', isset($col['notnull']) ? false : true) . '</td> <td>' . $site->Edit('default' . $i, isset($col['default']) ? $col['default'] : '', false, 'style="width:80px;"') . '</td> <td>' . $site->Check('auto_increment' . $i, 'val', isset($col['auto_increment']) ? $col['auto_increment'] : false) . '</td> <td>' . $site->Radio('params' . $i, 'primary', $primary, $primary_disabled) . '</td> <td>' . $site->Radio('params' . $i, 'unique', $unique, $index_disabled) . '</td> <td>' . $site->Radio('params' . $i, 'index', $index, $index_disabled) . '</td> <td>' . $site->Radio('params' . $i, 'fulltext', $fulltext, $fulltext_disabled) . '</td> <td>' . $site->Radio('params' . $i, 'noparams', !$primary && !$unique && !$index && !$fulltext, $disabled) . '</td> </tr>'; } $text .= '</table>'; $table_comment = isset($info['comment']) ? SafeDB($info['comment'], 255, str) : ''; $table_counter = isset($info['counter']) ? SafeDB($info['counter'], 11, int) : 0; $disabled_counter = System::database()->Name != 'FilesDB' ? ' disabled' : ''; $text .= 'Комментарий к таблице: ' . $site->Edit('comment', $table_comment, false, 'style="width: 300px;"') . ' ' . 'Тип: ' . $site->Select('tabletype', $tabletypes) . ' ' . 'Индекс автоинкремента: ' . $site->Edit('increment_index', $table_counter, false, 'style="width: 60px; text-align: right;"' . $disabled_counter) . $site->Hidden('tablename', $name) . $site->Hidden('cols', $columns_count) . '<br><br>'; if ($action == 'edittable') { $text .= $site->Hidden('num_rows', $info['num_rows']) . $site->Hidden('counter', $info['counter']) . System::site()->Button('Отмена', 'onclick="history.go(-1)"'); } $text .= $site->Submit($bcaption) . '</form>'; AddTextBox($tcaption, $text);
function AdminArticlesSaveArticle($action) { global $editarticles; if (!$editarticles) { System::admin()->AccessDenied(); } $cat_id = SafeEnv($_POST['category'], 11, int); if (in_array($cat_id, AdminArticlesGetTree()->GetAllChildId(0)) === false || $cat_id == 0) { GO(ADMIN_FILE . '?exe=articles'); } $author = SafeEnv($_POST['author'], 200, str, true); $email = SafeEnv($_POST['email'], 50, str, true); $www = SafeEnv(Url($_POST['www']), 250, str, true); $title = SafeEnv($_POST['title'], 255, str); $description = SafeEnv($_POST['description'], 0, str, false, true, false); $article = SafeEnv($_POST['article'], 0, str, false, true, false); // Загружаем изображение $Error = false; $image = LoadImage('up_image', System::config('articles/images_dir'), System::config('articles/images_dir') . 'thumbs', System::config('articles/thumb_max_width'), System::config('articles/thumb_max_height'), $_POST['image'], $Error); $auto_br_desc = EnToInt($_POST['auto_br_desc']); $auto_br_article = EnToInt($_POST['auto_br_article']); $allow_comments = EnToInt($_POST['allow_comments']); $allow_votes = EnToInt($_POST['allow_votes']); $view = ViewLevelToInt($_POST['view']); $active = EnToInt($_POST['active']); //Модуль SEO $seo_title = SafeEnv($_POST['seo_title'], 255, str); $seo_keywords = SafeEnv($_POST['seo_keywords'], 255, str); $seo_description = SafeEnv($_POST['seo_description'], 255, str); // $form = SafeEnv($_POST['form'], 11, int); $product_id = SafeEnv($_POST['product_id'], 255, str); if ('add' == $action) { $values = Values('', $cat_id, time(), $author, $email, $www, $title, $description, $article, $image, 0, $allow_comments, 0, $allow_votes, 0, 0, $active, $view, $auto_br_desc, $auto_br_article, $seo_title, $seo_keywords, $seo_description, $form, $product_id); System::database()->Insert('articles', $values); if ($active) { AdminArticlesGetTree()->CalcFileCounter($cat_id, true); } Audit('Статьи: Добавление статьи "' . $title . '"'); } elseif ('save' == $action) { $set = "`cat_id`='{$cat_id}',`author`='{$author}',`email`='{$email}',`www`='{$www}',`title`='{$title}',`description`='{$description}',`article`='{$article}',`image`='{$image}',`allow_comments`='{$allow_comments}',`allow_votes`='{$allow_votes}',`view`='{$view}',`active`='{$active}',`auto_br_desc`='{$auto_br_desc}',`auto_br_article`='{$auto_br_article}',`seo_title`='{$seo_title}',`seo_keywords`='{$seo_keywords}',`seo_description`='{$seo_description}',`form`='{$form}',`product_id`='{$product_id}'"; $id = SafeEnv($_GET['id'], 11, int); $r = System::database()->Select('articles', "`id`='{$id}'"); if ($r[0]['cat_id'] != $cat_id && $r[0]['active'] == '1') { // Если переместили в другой раздел AdminArticlesGetTree()->CalcFileCounter($r[0]['cat_id'], false); AdminArticlesGetTree()->CalcFileCounter($cat_id, true); } if ($r[0]['active'] != $active) { // Выключили / Включили if ($active == 0) { AdminArticlesGetTree()->CalcFileCounter($cat_id, false); } else { AdminArticlesGetTree()->CalcFileCounter($cat_id, true); } } System::database()->Update('articles', $set, "`id`='{$id}'"); Audit('Статьи: Изменение статьи "' . $title . '"'); } if ($Error) { AddTextBox('Ошибка', '<p align="center">Неправильный формат файла. Можно загружать только изображения формата GIF, JPEG или PNG. Остальные изменения сохранены.</p><br><a href="' . GetRefererUrl($_REQUEST['back']) . '" class="button">Далее</a>'); return; } GoRefererUrl($_REQUEST['back']); }
function AcAddRetrofitting() { if (RequestMethod() != 'POST') { return; } $back_url = ''; if (!AdminConfigPlugins()) { $access_config = 'System::config('; $back_url = ADMIN_FILE . '?exe=config_admin&a=view_all&saveok'; } else { $access_config = 'System::plug_config('; $back_url = ADMIN_FILE . '?exe=config_admin&a=view_all_plugins&plugins=1&saveok'; } System::database()->Select(AdminConfigGroupTable()); $groups = array(); while ($g = System::database()->FetchRow()) { $groups[$g['id']] = $g['name']; } $group = SafeEnv($_POST['group'], 11, int); $hname = SafeEnv($_POST['hname'], 255, str, true); $name = SafeEnv($_POST['name'], 255, str); $value = SafeEnv($_POST['value'], 0, str); $description = SafeEnv($_POST['description'], 255, str, true); if (isset($_POST['visible'])) { $visible = '1'; } else { $visible = '0'; } if (isset($_POST['autoload'])) { $autoload = '1'; } else { $autoload = '0'; } // генерируем kind $kind = ''; $values = ''; $savefunc = ''; $type = ''; if ($visible == '1') { $kind .= SafeEnv($_POST['control'], 25, str); $width = SafeEnv($_POST['cwidth'], 14, str); $height = SafeEnv($_POST['cheight'], 14, str); $cols = SafeEnv($_POST['ccols'], 11, int); if ($width != '') { $kind .= ':w' . $width; } if ($height != '') { $kind .= ':h' . $height; } if ($cols > 1) { $kind .= ':c' . $cols; } $getfunc = SafeEnv($_POST['valuesfunc'], 255, str); if ($getfunc == '' || !function_exists(CONF_GET_PREFIX . $getfunc)) { $values = SafeEnv($_POST['values'], 0, str); } else { $values = 'function:' . $getfunc; } } if (function_exists(CONF_SAVE_PREFIX . $_POST['savefunc'])) { $savefunc = SafeEnv($_POST['savefunc'], 255, str); } else { $savefunc = ''; } $maxlenght = SafeEnv($_POST['maxlength'], 11, int); $type = SafeEnv($_POST['datatype'], 255, str); if (isset($_POST['striptags'])) { $striptags = 'true'; } else { $striptags = 'false'; } $type = $maxlenght . ',' . $type . ',' . $striptags; // Сохраняем $to_db = Values('', $group, $name, $value, $visible, $hname, $description, $kind, $values, $savefunc, $type, $autoload); if (isset($_GET['id'])) { $id = SafeEnv($_GET['id'], 11, str); System::database()->Update(AdminConfigConfigTable(), $to_db, "`id`='{$id}'", true); Audit('Управление настройками: Изменение настройки "' . $hname . '(' . $name . ')" в "' . AdminConfigConfigTable() . '"'); if (isset($_REQUEST['back'])) { GoRefererUrl($_REQUEST['back']); } else { GO($back_url); } } else { if (isset($_REQUEST['back'])) { $back_url = GetRefererUrl($_REQUEST['back']); } System::database()->Insert(AdminConfigConfigTable(), $to_db); Audit('Управление настройками: Добавление настройки "' . $hname . '(' . $name . ')" в "' . AdminConfigConfigTable() . '"'); AddTextBox('Подтверждение', 'Новая настройка успешно добавлена.<br />Для доступа к значению настройки используйте код:<br /><br />' . $access_config . "<span style=\"color: #008200\">'" . $groups[$group] . '/' . "" . $name . "'</span>)" . '<br><br>' . System::admin()->SpeedButton('Назад', $back_url, '', true, true)); } }
function AdminMailAddEmail() { if (!isset($_GET['topic_id'])) { GO(ADMIN_FILE . '?exe=mail'); } $topic_id = SafeEnv($_GET['topic_id'], 11, int); if (!isset($_POST['email'])) { GO(ADMIN_FILE . '?exe=mail'); } if (CheckEmail($_POST['email'])) { $email = SafeEnv($_POST['email'], 50, str, true); } else { $text = 'Не правильный формат E-mail. Он должен быть вида: <b>domain@host.ru</b>.<br />' . '<a href="javascript:history.go(-1)">Назад</a>'; AddTextBox("Внимание!", $text); return; } System::database()->Select('mail_topics', "`id`='{$topic_id}'"); $topic = System::database()->FetchRow(); $html = SafeEnv($_POST['html'], 1, int); $vals = Values('0', $topic_id, $email, $html); System::database()->Insert('mail_list', $vals); Audit('Рассылки: Добавление адреса ' . $email . ' в список рассылки темы "' . $topic['title'] . '"'); CalcListCounter($topic_id, true); GO(ADMIN_FILE . '?exe=mail&a=list&topic_id=' . $topic_id); }
function AdminAdminMenuMain() { UseScript('jquery_ui_treeview'); $reserved = array('_system_menu', '_site_menu', '_mods_menu', '_help_menu'); if (isset($_GET['parent'])) { $parent = SafeEnv($_GET['parent'], 11, int); } else { $parent = 0; } $itemsdb = System::database()->Select('adminmenu'); SortArray($itemsdb, 'order'); $items = array(); foreach ($itemsdb as $item) { $items[$item['parent']][] = $item; } if (!isset($items[$parent])) { return ''; } foreach ($items[$parent] as $item) { $id = SafeDB($item['id'], 11, int); $icon = SafeDB($item['icon'], 255, str); $type = SafeDB($item['type'], 255, str); $title = SafeDB($item['title'], 255, str); if ($icon == '') { $icon = 'images/page.png'; } if ($type == 'delimiter') { $title = '-- Разделитель --'; } $editlink = ADMIN_FILE . '?exe=adminmenu&a=editor&id=' . $id; $func = ''; $func .= System::admin()->SpeedButton('Добавить дочернюю ссылку', ADMIN_FILE . '?exe=adminmenu&a=editor&parent=' . $id, 'images/admin/link_add.png'); $func .= ' '; $func .= System::admin()->SpeedStatus('Выключить', 'Включить', ADMIN_FILE . '?exe=adminmenu&a=changestatus&id=' . $id, $item['enabled'] == '1', 'images/bullet_green.png', 'images/bullet_red.png'); if (!in_array($item['module'], $reserved)) { $func .= ' '; $func .= System::admin()->SpeedButton('Редактировать', $editlink, 'images/admin/edit.png'); $func .= System::admin()->SpeedConfirmJs('Удалить', '$(\'#tree_container\').treeview(\'deleteNode\', ' . $id . ');', 'images/admin/delete.png', 'Удалить элемент "' . $title . '"?'); $title = '<strong>' . System::admin()->Link($title, $editlink, 'Редактировать') . '</strong>'; } $elements[] = array('id' => $id, 'icon' => $icon, 'title' => $title, 'func' => $func, 'isnode' => isset($items[$id]), 'child_url' => 'admin.php?exe=adminmenu&a=ajaxtree&parent=' . $id); } if ($parent == 0) { System::admin()->AddOnLoadJS('$("#tree_container").treeview({move: \'' . ADMIN_FILE . '?exe=adminmenu&a=ajaxmove\', del: \'' . ADMIN_FILE . '?exe=adminmenu&a=delete\', tree: ' . JsonEncode($elements) . '});'); AddTextBox('Меню администратора', '<div id="tree_container"></div>'); } else { echo JsonEncode($elements); exit; } }
function AdminForumBasket($table = 'forum_basket_post') { global $config, $site; if (isset($_GET['page'])) { $page = SafeEnv($_GET['page'], 10, int); } else { $page = 1; } if ($table == 'forum_basket_post') { $site->Title .= ' > Удаляемые сообщения'; $caption = 'Удаляемые сообщения'; } else { $site->Title .= ' > Удаляемые Темы'; $caption = 'Удаляемые Темы'; } $result = System::database()->Select($table); if (count($result) > 20) { $navigator = new Navigation($page); $navigator->GenNavigationMenu($result, 20, ADMIN_FILE . '?exe=forum&a=' . $table); $nav = true; } else { $nav = false; } $mop = 'showtopic&topic='; if ($table == 'forum_basket_post') { $table_caption = ' (сообщение)'; if (count($result) > 0) { $mposts = array(); $where = ''; foreach ($result as $mpost) { $where .= "`id`='" . $mpost['obj_id'] . "' or "; } $where = substr($where, 0, strlen($where) - 3); $result_posts = System::database()->Select('forum_posts', $where); if (count($result_posts) > 0) { foreach ($result_posts as $mpost) { $mposts[$mpost['id']] = $mpost['object']; $mpostsm[$mpost['id']] = $mpost['message']; } foreach ($result as $mpost) { $mpost['obj_id2'] = $mposts[$mpost['obj_id']]; $mpost['obj_id'] = $mpost['obj_id']; $mpost['date'] = $mpost['date']; $mpost['user'] = $mpost['user']; $mpost['reason'] = $mpost['reason']; $mpost['message'] = $mpostsm[$mpost['obj_id']]; $result2[] = $mpost; } $result = $result2; } } } else { $table_caption = ' (название темы)'; if (count($result) > 0) { $where = ''; foreach ($result as $mpost) { $where .= "`id`='" . $mpost['obj_id'] . "' or "; } $where = substr($where, 0, strlen($where) - 3); $result_topics = System::database()->Select('forum_topics', $where); if (count($result_topics) > 0) { foreach ($result_topics as $mtopic) { $mtopics[$mtopic['id']] = $mtopic['title']; } foreach ($result as $mtopic) { $mpost['obj_id'] = $mtopic['obj_id']; $mpost['date'] = $mtopic['date']; $mpost['user'] = $mtopic['user']; $mpost['reason'] = $mtopic['reason']; $mpost['message'] = $mtopics[$mtopic['obj_id']]; $result2[] = $mpost; } $result = $result2; } } } $text = '<table cellspacing="0" cellpadding="0" class="cfgtable">'; $text .= '<tr><th>Кто удалил</th><th>Дата удаления</th><th>Дата окончательного удаления</th><th>Комментарий</th><th>Содержимое удаляемого <BR>' . $table_caption . '</th><th>Функции</th></tr>'; foreach ($result as $basket) { $mop = 'showtopic&topic=' . ($table == 'forum_basket_post' ? $basket['obj_id2'] : $basket['obj_id']); $restore_link = ADMIN_FILE . '?exe=forum&a=basket_restore&' . $table . '=' . $basket['obj_id']; $ainfo = GetUserInfo($basket['user']); $text .= '<tr> <td>' . $ainfo['name'] . '</td> <td>' . TimeRender($basket['date'], false, false) . '</td> <td>' . TimeRender($basket['date'] + 86400 * $config['forum']['clear_basket_day'], false, false) . '</td> <td>' . $basket['reason'] . '</td> <td>' . (isset($basket['message']) ? $basket['message'] : '') . '</td> <td><a href="' . $restore_link . '">Восстановить</a> <a href="index.php?name=forum&op=' . $mop . '" target="_blank">Просмотр</a></td> </tr>'; } $text .= '</table>'; AddTextBox($caption, $text); if ($nav) { AddNavigation(); } }
function AdminFormsViewPosts($new) { $file_save_dir = 'uploads/forms'; if (!isset($_GET['id'])) { return; } $id = SafeEnv($_GET['id'], 11, int); System::database()->Select('forms', "`id`='{$id}'"); $form = System::database()->FetchRow(); $box_title = $form['hname']; if ($new) { $moderated = " and `moderated`='0'"; } else { $moderated = ''; } $posts = System::database()->Select('forms_data', "`form_id`='{$id}'" . $moderated); if (count($posts) == 0) { System::admin()->AddCenterBox('Новые поcты формы "' . $box_title . '"'); System::admin()->Highlight('Нет новых сообщений'); return; } $text = ''; foreach ($posts as $post) { $time = TimeRender(SafeDB($post['time'], 11, int)); if ($post['user_id'] > 0) { $user_info = GetUserInfo(SafeDB($post['user_id'], 11, int)); $user_name = '<a href="' . 'index.php?name=user&op=userinfo&user='******'id'] . '">' . $user_info['name'] . '</a>'; } else { $user_name = '-'; } $ip = SafeDB($post['user_ip'], 20, str); $data_rows = unserialize($post['data']); $post_text = ''; foreach ($data_rows as $row) { if ($row[2] == 'file') { $post_text .= '<b>' . SafeDB($row[0], 255, str) . ':</b><br><a href="' . SafeDB($file_save_dir . '/' . $row[1], 0, str) . '">' . SafeDB($row[3], 255, str) . '</a><br>'; } else { $post_text .= '<b>' . SafeDB($row[0], 255, str) . ':</b><br>' . SafeDB($row[1], 0, str) . '<br>'; } } $delfunc = System::admin()->SpeedConfirm('Удалить данные формы', ADMIN_FILE . '?exe=forms&a=delpost&id=' . $id . '&pid=' . SafeDB($post['id'], 11, int) . '&ok=0' . ($new ? '&new=1' : ''), 'images/admin/delete.png', 'Удалить?'); //'<a href="'.ADMIN_FILE.'?exe=forms&a=delpost&id='.$id.'&pid='.SafeDB($post['id'], 11, int).'&ok=0&new=1"><img src="images/admin/delete.png" title="Удалить эти данные" /></a>'; $text .= '<table cellspacing="0" cellpadding="0" border="0" class="cfgtable">'; $text .= '<tr><th>Дата: ' . $time . '</td><th>Пользователь: ' . $user_name . '</td><th>IP: ' . $ip . '</td><th width="30">' . $delfunc . '</td></tr>'; $text .= '<tr><td colspan="4" style="text-align:left;padding-left:10px;">' . $post_text . '</td></tr>'; $text .= '</table>'; } if ($new) { $text .= '<div style="text-align: right;">' . System::admin()->SpeedButton('Отметить все как просмотренные', ADMIN_FILE . '?exe=forms&a=checkall&id=' . $id, '', true, true) . '</div>'; } AddTextBox('Новые поcты формы "' . $box_title . '"', $text); }
/** * Генерирует Ajax дерево страниц * @return void */ function AdminPagesAjaxTree() { UseScript('jquery_ui_treeview'); if (CheckGet('parent')) { $parent = SafeEnv($_GET['parent'], 11, int); } else { $parent = 0; } $pages = System::database()->Select('pages'); SortArray($pages, 'order'); $pages_tree = new Tree($pages); $elements = array(); if ($parent == 0) { $func = ''; $func .= SpeedButton('Добавить дочернюю страницу', ADMIN_FILE . '?exe=pages&a=editor', 'images/admin/page_add.png'); $func .= SpeedButton('Добавить дочернюю ссылку', ADMIN_FILE . '?exe=pages&a=link', 'images/admin/link_add.png'); $func .= SpeedButton('Добавить дочернюю категорию', ADMIN_FILE . '?exe=pages&a=cat', 'images/admin/folder_add.png'); $site_node = array('id' => '0', 'title' => System::config('general/site_name'), 'icon' => 'images/globe.png', 'func' => $func, 'isnode' => true, 'opened' => true, 'childs' => array()); } foreach ($pages_tree->Cats[$parent] as $page) { $id = SafeDB($page['id'], 11, int); if ($page['type'] == 'page') { $link = Ufu('index.php?name=pages&file=' . SafeDB($page['link'], 255, str), 'pages:page'); $icon = 'images/page.png'; $type = 'Страница'; $counter = SafeDB($page['hits'], 11, int); $edit_link = ADMIN_FILE . '?exe=pages&a=editor&id=' . $id; } elseif ($page['type'] == 'link') { $link = SafeDB($page['text'], 255, str); if (substr($link, 0, 6) == 'mod://') { $link = Ufu('index.php?name=' . substr($link, 6), '{name}/'); } $icon = 'images/link.png'; $type = 'Ссылка'; $counter = '- '; $edit_link = ADMIN_FILE . '?exe=pages&a=link&id=' . $id; } else { $link = Ufu('index.php?name=pages&file=' . SafeDB($page['link'], 255, str), 'pages:page'); $icon = 'images/folder.png'; $type = 'Категория'; $counter = '- '; $edit_link = ADMIN_FILE . '?exe=pages&a=cat&id=' . $id; } $func = ''; $func .= System::admin()->SpeedButton('Добавить дочернюю страницу', ADMIN_FILE . '?exe=pages&a=editor&parent=' . $id, 'images/admin/page_add.png'); $func .= System::admin()->SpeedButton('Добавить дочернюю ссылку', ADMIN_FILE . '?exe=pages&a=link&parent=' . $id, 'images/admin/link_add.png'); $func .= System::admin()->SpeedButton('Добавить дочернюю категорию', ADMIN_FILE . '?exe=pages&a=cat&parent=' . $id, 'images/admin/folder_add.png'); $func .= ' '; $func .= System::admin()->SpeedStatus('Скрыть из меню', 'Показать в меню', ADMIN_FILE . '?exe=pages&a=changemenu&id=' . $id, $page['showinmenu'] == '1', 'images/menu_enabled.png', 'images/menu_disabled.png'); $func .= System::admin()->SpeedStatus('Выключить', 'Включить', ADMIN_FILE . '?exe=pages&a=changestatus&id=' . $id, $page['enabled'] == '1', 'images/bullet_green.png', 'images/bullet_red.png'); $func .= ' '; $func .= System::admin()->SpeedButton('Редактировать', $edit_link, 'images/admin/edit.png'); $func .= System::admin()->SpeedConfirmJs('Удалить', '$(\'#tree_container\').treeview(\'deleteNode\', ' . $id . ');', 'images/admin/delete.png', 'Уверены что хотите удалить? Все дочерние страницы и ссылки так-же будут удалены.'); $view = ViewLevelToStr(SafeDB($page['view'], 1, int)); $info = Indent("\n\t\t\t<b>Тип</b>: {$type}<br />\n\t\t\t" . ($page['type'] == 'page' ? "<b>Просмотров</b>: {$counter}<br />" : '') . "\n\t\t\t<b>Видят</b>: {$view}<br />\n\t\t\t<b>Адрес</b>: <a href=\"{$link}\" target=\"_blank\">/" . Utf8ToCp1251(rawurldecode($link)) . "</a>\n\t\t"); $elements[] = array('id' => $id, 'icon' => $icon, 'title' => '<b>' . System::admin()->Link(SafeDB($page['title'], 255, str), $edit_link) . '</a></b>', 'info' => $info, 'func' => $func, 'isnode' => isset($pages_tree->Cats[$id]), 'child_url' => 'admin.php?exe=pages&a=ajaxtree&parent=' . $id); } if ($parent == 0) { $site_node['childs'] =& $elements; $tree = array(&$site_node); } else { $tree =& $elements; } if ($parent == 0) { System::admin()->AddOnLoadJS('$("#tree_container").treeview({move: \'' . ADMIN_FILE . '?exe=pages&a=ajaxmove\', del: \'' . ADMIN_FILE . '?exe=pages&a=delete\', tree: ' . JsonEncode($tree) . '});'); AddTextBox('Страницы', '<div id="tree_container"></div>'); } else { echo JsonEncode($tree); exit; } }
function AdminDownloadsSaveFile($action) { if ($_POST == array()) { AddTextBox('Ошибка', '<b>Внимание! Превышен максимальный размер POST данных. Изменения не сохранены.</b>'); return; } $Error = ''; if (!System::user()->CheckAccess2('downloads', 'edit_files')) { System::admin()->AccessDenied(); } $category = SafeEnv($_POST['category'], 11, int); if (in_array($category, AdminDownloadsGetTree()->GetAllChildId(0)) === false || $category == 0) { GO(ADMIN_FILE . '?exe=downloads'); } $title = SafeEnv($_POST['title'], 250, str); // Обрабатываем upload_file если загрузился файл $exts = explode(',', System::config('downloads/file_exts')); $exts2 = array(); foreach ($exts as $ext) { $exts2[trim($ext)] = true; } $UploadErrors = array(0 => '', 1 => 'Размер файла превышен', 2 => 'Размер файла превышен', 3 => 'Файл загружен только частично', 4 => 'Файл не был загружен.', 6 => 'Не найдена папка для временных файлов на сервере', 7 => 'Ошибка во время записи на диск', 8 => 'Загрузка файла была прервана расширением PHP', 9 => 'Ошибка во время записи на диск'); if ($_FILES['upload_file']['error'] == UPLOAD_ERR_OK) { if (isset($exts2[strtolower(GetFileExt($_FILES['upload_file']['name']))])) { // Загружаем файл $Dir = System::config('downloads/files_dir'); $file_name = Translit($_FILES['upload_file']['name'], true); $ext = GetFileExt($file_name); $name = GetFileName($file_name, true); $i = 1; while (is_file($Dir . $file_name)) { $i++; $file_name = $name . '_' . $i . $ext; } $FileName = $Dir . $file_name; copy($_FILES['upload_file']['tmp_name'], $FileName); $url = SafeEnv($FileName, 255, str); } else { $url = SafeEnv($_POST['url'], 255, str); } } else { if ($_FILES['upload_file']['error'] != 4) { $Error = $UploadErrors[$_FILES['upload_file']['error']]; } $url = SafeEnv($_POST['url'], 255, str); } if ($_POST['size'] > 0) { $file_size = SafeEnv($_POST['size'], 11, real); // Дробное число $size_type = SafeEnv($_POST['filesize_type'], 1, str); } elseif (file_exists($url)) { $file_size = filesize($url); $size_type = 'b'; } elseif (file_exists(System::config('general/site_url') . $url)) { $file_size = filesize(System::config('general/site_url') . $url); $size_type = 'b'; } else { $file_size = SafeEnv($_POST['size'], 11, int); $size_type = 'b'; } $shortdesc = SafeEnv($_POST['shortdesc'], 0, str); $description = SafeEnv($_POST['description'], 0, str); // Загружаем изображение $ImageUploadError = false; $image = LoadImage('up_image', System::config('downloads/images_dir'), System::config('downloads/images_dir') . 'thumbs/', System::config('downloads/thumb_max_width'), System::config('downloads/thumb_max_height'), $_POST['image'], $ImageUploadError); $author = SafeEnv($_POST['author'], 50, str); $author_site = SafeEnv(Url($_POST['author_site']), 250, str); $author_email = SafeEnv($_POST['author_email'], 50, str); $file_ver = SafeEnv($_POST['version'], 250, str); $allow_comments = EnToInt($_POST['allow_comments']); $allow_votes = EnToInt($_POST['allow_votes']); $view = ViewLevelToInt($_POST['view']); $active = EnToInt($_POST['active']); if ('editfilesave' == $action) { //Здесь генерируем Set запрос $set = "title='{$title}',category='{$category}',size='{$file_size}',size_type='{$size_type}',url='{$url}',shortdesc='{$shortdesc}',description='{$description}',image='{$image}',author='{$author}',author_site='{$author_site}',author_email='{$author_email}',file_version='{$file_ver}',allow_comments='{$allow_comments}',allow_votes='{$allow_votes}',view='{$view}',active='{$active}'"; $id = SafeEnv($_GET['id'], 11, int); $r = System::database()->Select('downloads', "`id`='{$id}'"); if ($r[0]['category'] != $category && $r[0]['active'] == '1') { AdminDownloadsGetTree()->CalcFileCounter($r[0]['category'], false); AdminDownloadsGetTree()->CalcFileCounter($category, true); } if ($r[0]['active'] != $active) { // Выключили / Включили if ($active == 0) { AdminDownloadsGetTree()->CalcFileCounter($category, false); } else { AdminDownloadsGetTree()->CalcFileCounter($category, true); } } System::database()->Update('downloads', $set, "`id`='{$id}'"); Audit('Архив файлов: Редактирование файла "' . $title . '"'); } elseif ('addfilesave' == $action) { $values = Values('', $category, time(), $file_size, $size_type, $title, $url, $shortdesc, $description, $image, $author, $author_site, $author_email, $file_ver, $allow_comments, 0, $allow_votes, 0, 0, 0, $view, $active); System::database()->Insert('downloads', $values); Audit('Архив файлов: Добавление файла "' . $title . '"'); if ($active) { AdminDownloadsGetTree()->CalcFileCounter($category, true); } } if ($ImageUploadError) { AddTextBox('Ошибка', '<p align="center">Неправильный формат файла. Можно загружать только изображения формата GIF, JPEG или PNG. Остальные изменения сохранены.</p><br><a href="' . GetRefererUrl($_REQUEST['back']) . '" class="button">Далее</a>'); return; } if ($Error != '') { AddTextBox('Ошибка', '<p align="center">Не удалось загрузить файл, изменения сохранены. Ошибка: ' . $Error . '.</p><br><a href="' . GetRefererUrl($_REQUEST['back']) . '" class="button">Далее</a>'); return; } GoRefererUrl($_REQUEST['back']); }
<?php /* * LinkorCMS 1.4 * © 2012 LinkorCMS Development Group */ if (!defined('VALID_RUN')) { header("HTTP/1.1 404 Not Found"); exit; } TAddSubTitle('√лавна¤'); global $adminpanel_content; $adminpanel_content = ''; IncludePluginsGroup('adminpanel'); AddTextBox('јдмин-панель', $adminpanel_content);
<?php /* * LinkorCMS 1.4 * © 2012 LinkorCMS Development Group */ if (!defined('VALID_RUN')) { header("HTTP/1.1 404 Not Found"); exit; } $name = SafeEnv($_GET['name'], 255, str); $onid = SafeEnv($_POST['toindex'], 11, int); $text = ''; $text .= '<form action="' . ADMIN_FILE . '?exe=dbadmin&a=addcoll&to=' . $name . '&onid=' . $onid . '" method="post"><table cellspacing="0" cellspacing="0" class="cfgtable">' . '<tr><th>Поле</th><th>Тип</th><th>Длина/значения</th><th>Атрибуты</th><th>Ноль</th><th>По умолчанию</th><th>Авто приращение</th><th>Первичный</th><th>Индекс</th><th>Уникальное</th><th> - </th><th>Полный текст</th></tr>'; $type = array('varchar', 'tinyint', 'text', 'date', 'smallint', 'mediumint', 'int', 'bigint', 'float', 'double', 'decimal', 'datetime', 'time', 'year', 'char', 'tinyblob', 'tinytext', 'blob', 'mediumblob', 'mediumtext', 'longblob', 'longtext', 'enum', 'set'); for ($i = 0; $i < count($type); $i++) { System::admin()->DataAdd($types, $type[$i], $type[$i]); } $Attributes = array(array('none', ''), array('binary', 'binary'), array('unsigned', 'unsigned'), array('unsigned_zerofill', 'unsigned zerofill')); $AtrData = array(); for ($i = 0; $i < count($Attributes); $i++) { System::admin()->DataAdd($AtrData, $Attributes[$i][0], $Attributes[$i][1]); } $i = '0'; $text .= '<tr><td>' . System::admin()->Edit('name' . $i, '', false, 'style="width:80px;" class="autofocus"') . '</td><td>' . System::admin()->Select('type' . $i, $types) . '</td><td>' . System::admin()->Edit('length' . $i, '', false, 'style="width:50px"') . '</td><td>' . System::admin()->Select('atributes' . $i, $AtrData) . '</td><td>' . System::admin()->Check('null' . $i, 'null') . '</td><td>' . System::admin()->Edit('default' . $i, '', false, 'style="width:80px;"') . '</td><td>' . System::admin()->Check('auto_increment' . $i, 'val') . '</td><td>' . System::admin()->Radio('params' . $i, 'primary') . '</td><td>' . System::admin()->Radio('params' . $i, 'index') . '</td><td>' . System::admin()->Radio('params' . $i, 'unique') . '</td><td>' . System::admin()->Radio('params' . $i, 'noparams', true) . '</td><td>' . System::admin()->Check('fulltext' . $i, '1') . '</td></tr>'; $text .= '</table>'; $text .= System::admin()->Hidden('cols', '1') . "<br><br>" . System::site()->Button('Отмена', 'onclick="history.go(-1)"') . System::admin()->Submit('Добавить') . '</form>'; AddTextBox('Форма добавления колонки в таблицу "' . $name . '"', $text);
/** * Сохраняет данные формы сгенерированной фукцией AdminUserEditor * * @param $back_link * @param string $a * @param int $id * @param bool $IsAdmin * @return void */ function AdminUserEditSave($back_link, $a = 'insert', $id = 0, $IsAdmin = false) { $SystemAdmin = System::user()->isSuperUser(); $edit = $a == 'update'; $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 (!$edit) { $editStatus = true; } elseif (!(groupIsSystem(SafeEnv($user['access'], 11, int)) && GetSystemAdminsCount() <= 1)) { // Если он не системный или системных больше 1 $editStatus = true; } $editType = $editStatus; } } else { // Если пользователь $editStatus = true; // Все администраторы с доступом могут редактировать статус пользователя $editType = $SystemAdmin; // Только системные администраторы могут создавать администраторов } // Обрабатываем данные $errors = array(); // Логин if (isset($_POST['login']) && CheckLogin($_POST['login'], $errors, !$edit)) { $login = SafeEnv($_POST['login'], 30, str); } else { $login = ''; } // Пароль $pass = ''; if (!$edit || $_POST['pass'] != '') { $pass_generate_message = ''; if (isset($_POST['pass']) && CheckPass($_POST['pass'], $errors)) { $pass = SafeEnv($_POST['pass'], 30, str); if (!isset($_POST['rpass']) || SafeEnv($_POST['rpass'], 30, str) != $pass) { $errors[] = 'Пароли не совпадают.'; } } else { $pass = ''; } if (isset($_POST['pass']) && $_POST['pass'] == '') { srand(time()); $pass = GenBPass(rand(System::config('user/pass_min_length'), 15)); $pass_generate_message = '<br />Так как вы не указали пароль, он был сгенерирован автоматически и выслан на указанный E-mail пользователя.'; } $pass2 = md5($pass); } // e-mail if (isset($_POST['email']) && $_POST['email'] != '') { if (!CheckEmail($_POST['email'])) { $errors[] = 'Не правильный формат E-mail. Он должен быть вида: <b>domain@host.ru</b> .'; } $email = SafeEnv($_POST['email'], 50, str, true); } else { $email = ''; $errors[] = 'Вы не ввели E-mail.'; } // Скрыть e-mail if (isset($_POST['hideemail'])) { $hide_email = '1'; } else { $hide_email = '0'; } // Имя пользователя на сайте if (isset($_POST['nikname']) && CheckNikname($_POST['nikname'], $errors, !$edit)) { $nik_name = SafeEnv($_POST['nikname'], 50, str, true); } else { $nik_name = ''; } // Полное имя if (isset($_POST['realname'])) { $real_name = SafeEnv($_POST['realname'], 250, str, true); } else { $real_name = ''; } // Возраст if (isset($_POST['age'])) { if ($_POST['age'] == '' || is_numeric($_POST['age'])) { $age = SafeEnv($_POST['age'], 3, int); } else { $errors[] = 'Ваш возраст должен быть числом!'; } } else { $age = ''; } // Домашняя страница if (isset($_POST['homepage'])) { if ($_POST['homepage'] != '' && substr($_POST['homepage'], 0, 7) == 'http://') { $_POST['homepage'] = substr($_POST['homepage'], 7); } $homepage = SafeEnv($_POST['homepage'], 250, str, true); } else { $homepage = ''; } // Номер ICQ if (isset($_POST['icq'])) { if ($_POST['icq'] == '' || is_numeric($_POST['icq'])) { $icq = SafeEnv($_POST['icq'], 15, str, true); } else { $errors[] = 'Номер ICQ должен содержать только числа!'; } } else { $icq = ''; } // Город if (isset($_POST['city'])) { $city = SafeEnv($_POST['city'], 100, str, true); } else { $city = ''; } // Часовой пояс if (isset($_POST['gmt'])) { $gmt = SafeEnv($_POST['gmt'], 255, str); } else { $gmt = System::config('general/default_timezone'); } // О себе if (isset($_POST['about'])) { $about = SafeEnv($_POST['about'], System::config('user/about_max_length'), str, true); } else { $about = ''; } // Подписка на новости if (isset($_POST['snews'])) { $server_news = '1'; } else { $server_news = '0'; } //Обрабатываем аватар $updateAvatar = true; if (isset($_POST['avatar'])) { if (System::config('user/avatar_transfer') == '1' && isset($_FILES['upavatar']) && file_exists($_FILES['upavatar']['tmp_name'])) { if ($edit) { $avatar = $user['avatar']; $a_personal = $user['a_personal']; } else { $avatar = ''; $a_personal = '0'; } UserLoadAvatar($errors, $avatar, $a_personal, $avatar, $a_personal, $edit); } elseif ($_POST['avatar'] == '') { $updateAvatar = false; } elseif (file_exists(RealPath2(System::config('general/avatars_dir') . $_POST['avatar']))) { if ($edit) { if ($user['a_personal'] == '1') { UnlinkUserAvatarFiles($user['avatar']); } } $a_personal = '0'; $avatar = $_POST['avatar']; } else { $avatar = ''; $a_personal = '0'; } } else { $avatar = ''; $a_personal = '0'; } $SendActivation = false; if ($edit) { $active = SafeEnv($user['active'], 11, int); $code = SafeEnv($user['activate'], 11, int); } else { $active = '1'; $code = ''; } if ($editStatus) { $activate = $_POST['activate']; $lastactivate = 'manual'; if ($active == '0' && $code != '') { $lastactivate = 'mail'; } elseif ($active == '1' && $code == '') { $lastactivate = 'auto'; } if ($activate != $lastactivate) { switch ($activate) { case 'manual': $active = '0'; $code = ''; $SendActivation = false; break; case 'auto': $active = '1'; $code = ''; $SendActivation = false; break; case 'mail': $active = '0'; $code = GenRandomString(8, 'qwertyuiopasdfghjklzxcvbnm'); $SendActivation = true; break; } } } if ($edit) { $access = SafeEnv($user['type'], 11, int); $user_type = SafeEnv($user['access'], 11, int); } else { $access = '2'; $user_type = '-1'; } if ($editType && $_POST['status'] != 'member') { $access = '1'; $user_type = SafeEnv($_POST['status'], 11, int); } $reg_date = time(); $last_visit = time(); $ip = getip(); $points = 0; $visits = 0; if ($SendActivation) { UserSendActivationMail($nik_name, $email, $login, $pass, $code, $reg_date); } elseif (!$edit) { UserSendEndRegMail($email, $nik_name, $login, $pass, $reg_date); } if (!$edit) { $values = Values('', $login, $pass2, $nik_name, $real_name, $age, $email, $hide_email, $city, $icq, $homepage, $gmt, $avatar, $about, $server_news, $reg_date, $last_visit, $ip, $points, $visits, $active, $code, $access, $user_type, $a_personal, serialize(array())); System::database()->Insert('users', $values); } else { $set = "`login`='{$login}',`email`='{$email}',`hideemail`='{$hide_email}',`name`='{$nik_name}'," . "`truename`='{$real_name}',`age`='{$age}',`url`='{$homepage}',`icq`='{$icq}',`city`='{$city}'," . "`timezone`='{$gmt}'" . ($updateAvatar == true ? ",`avatar`='{$avatar}',`a_personal`='{$a_personal}'" : '') . "," . "`about`='{$about}',`servernews`='{$server_news}'" . ($pass != '' ? ",`pass`='{$pass2}'" : '') . ",`type`='{$access}'," . "`access`='{$user_type}',`active`='{$active}',`activate`='{$code}'"; System::database()->Update('users', $set, "`id`='" . $id . "'"); System::user()->UpdateMemberSession(); UpdateUserComments($id, $id, $nik_name, $email, $hide_email, $homepage); } if (count($errors) > 0) { $text = 'Аккаунт сохранен, но имели место следующие ошибки:<br /><ul>'; foreach ($errors as $error) { $text .= '<li>' . $error; } $text .= '</ul>'; AddTextBox('Внимание', $text); } else { // Очищаем кэш пользователей System::cache()->Delete(system_cache, 'users'); if (!$editProfile) { GO(ADMIN_FILE . '?exe=' . $back_link); } else { System::admin()->AddCenterBox('Редактирование профиля'); System::admin()->Highlight('Ваш профиль сохранён, обновите страницу.'); } } }
/** * Создает страницу конфигурации в админ панели * @param $Exe Значение параметра URL exe * @param string $Group Либо 0, либо имя группы * @param bool $ShowHiddenGroups Отображать скрытые группы * @param bool $ShowTitles Отображать заголовки у групп * @param string $ModuleName Заголовок текстового блока * @param string $SavePageParam Параметр ссылки на функию сохранения настроек * @return void */ function AdminConfigurationEdit($Exe, $Group = '', $ShowHiddenGroups = false, $ShowTitles = true, $ModuleName = '', $SavePageParam = 'a=configsave') { global $config, $conf_config_table, $conf_config_groups_table; // Вытаскиваем настройки и отсортировываем по группам $temp = System::database()->Select($conf_config_table, ''); $configs = array(); for ($i = 0, $cnt = count($temp); $i < $cnt; $i++) { $configs[$temp[$i]['group_id']][] = $temp[$i]; } unset($temp); // Вытаскиваем группы настроек if ($Group == '') { $q = ''; } else { $q = "`name`='{$Group}'"; } $cfg_grps = System::database()->Select($conf_config_groups_table, $q); // Добавляем форму и начинаем генерировать текст $text = '<form action="' . ADMIN_FILE . '?exe=' . $Exe . '&' . $SavePageParam . '" method="post">'; for ($i = 0, $cnt = count($cfg_grps); $i < $cnt; $i++) { // Если эта группа невидима то пропускаем её if ($Group === 0) { if ($cfg_grps[$i]['visible'] == 0) { continue; } } // Или если в ней нет настроек if (!isset($configs[$cfg_grps[$i]['id']])) { $jcnt = 0; } else { $jcnt = count($configs[$cfg_grps[$i]['id']]); } // Добавляем таблицу и заголовок группы настроек $text .= '<table cellspacing="1" cellpadding="0" class="configtable">'; if ($ShowTitles) { $text .= '<tr><th colspan="2" class="configtable-th">' . SafeDB($cfg_grps[$i]['hname'], 255, str) . '</th></tr>'; } // Добавляем настройки группы if ($jcnt > 0) { for ($j = 0; $j < $jcnt; $j++) { // Если настройка невидима то пропускаем её if ($configs[$cfg_grps[$i]['id']][$j]['visible'] == '0' && !$ShowHiddenGroups) { continue; } $name = SafeDB($configs[$cfg_grps[$i]['id']][$j]['name'], 255, str, false, false); $desc = SafeDB($configs[$cfg_grps[$i]['id']][$j]['description'], 255, str, false, false); $type = $configs[$cfg_grps[$i]['id']][$j]['type']; $value = $configs[$cfg_grps[$i]['id']][$j]['value']; $kind = $configs[$cfg_grps[$i]['id']][$j]['kind']; $hname = SafeDB($configs[$cfg_grps[$i]['id']][$j]['hname'], 255, str, false, false); $values = $configs[$cfg_grps[$i]['id']][$j]['values']; $text .= '<tr>' . '<td class="configtable-left">' . $hname . ($desc != '' ? '<br /><span class="configtable-desc">' . $desc . '</span>' : '') . '</td>' . '<td class="configtable-right">' . FormsGetControl($name, $value, $kind, $type, $values) . '</td>' . '</tr>'; } } else { $text .= '<tr><td class="configtable-left" align="center"> В этой группе пока нет настроек. </td></tr>'; } //Закрываем таблицу группы $text .= '</table>'; } $text .= '<table class="configtable-submit"><tr><td>' . System::site()->Submit('Сохранить') . '</td></tr></table>'; $text .= '</form>'; if ($ModuleName == '') { $ModuleName = 'Конфигурация'; } AddTextBox($ModuleName, $text); }
function AdminExtensionsUninstall() { global $db, $config, $user; // Для старых модулей $ext_type = $_GET['type']; $folder = $_GET['name']; if (isset($_GET['group'])) { $group = $_GET['group']; } switch ($ext_type) { case EXT_MODULE: $mod_path = RealPath2(System::config('mod_dir') . $folder); $info = ExtLoadInfo($mod_path); if (isset($_POST['ok']) || isset($info['1.3'])) { $uninstall = $mod_path . '/uninstall.php'; if (file_exists($uninstall)) { $delete_tables = isset($_POST['delete_tables']); // Могут быть использованы в uninstall.php $delete_files = isset($_POST['delete_files']); include $uninstall; System::cache()->Clear('config'); if (isset($info['1.3'])) { // Удаляем пункт меню $folder = SafeEnv($folder, 255, str); AdminMenuDeleteModule($folder); } } Audit('Расширения: Удаление модуля "' . $folder . '"'); GO(ADMIN_FILE . '?exe=extensions#tabs-1'); } else { $folder = SafeEnv($folder, 255, str); System::database()->Select('modules', "`folder`='{$folder}'"); if (System::database()->NumRows() == 0) { AddTextBox('Ошибка', 'Модуль не установлен.'); return; } $mod = System::database()->FetchRow(); $name = SafeDB($mod['name'], 255, str); $text = ''; $text .= '<form method="post">'; $text .= '<div style="padding: 10px 0 10px 25px;">'; $text .= '<div style="padding-bottom: 10px">'; $text .= '<label><input type="checkbox" name="delete_tables"> Удалить таблицы БД</label><br>'; $text .= '<label><input type="checkbox" name="delete_files"> Удалить файлы модуля</label>'; $text .= '</div>'; $text .= System::admin()->Hidden('ok', '1'); $text .= '<div>' . System::admin()->Button('Отмена', 'onclick="history.go(-1)"') . System::admin()->Submit('Удалить') . '</div>'; $text .= '</div></form>'; AddTextBox('Удаление модуля "' . $name . '"', $text); } break; case EXT_BLOCK: $mod_path = RealPath2(System::config('blocks_dir') . $folder); if (isset($_POST['ok'])) { $uninstall = $mod_path . '/uninstall.php'; if (file_exists($uninstall)) { $delete_tables = isset($_POST['delete_tables']); $delete_files = isset($_POST['delete_files']); include $uninstall; System::cache()->Clear('config'); } Audit('Удаление блока "' . $folder . '"'); GO(ADMIN_FILE . '?exe=extensions#tabs-2'); } else { $folder = SafeEnv($folder, 255, str); System::database()->Select('block_types', "`folder`='{$folder}'"); if (System::database()->NumRows() == 0) { AddTextBox('Ошибка', 'Блок не установлен.'); return; } $mod = System::database()->FetchRow(); $name = SafeDB($mod['name'], 255, str); $text = ''; $text .= '<form method="post">'; $text .= '<div style="padding: 10px 0 10px 25px;">'; $text .= '<div style="padding-bottom: 10px">'; $text .= '<label><input type="checkbox" name="delete_tables"> Удалить таблицы БД</label><br>'; $text .= '<label><input type="checkbox" name="delete_files"> Удалить файлы</label>'; $text .= '</div>'; $text .= System::admin()->Hidden('ok', '1'); $text .= '<div>' . System::admin()->Button('Отмена', 'onclick="history.go(-1)"') . System::admin()->Submit('Удалить') . '</div>'; $text .= '</div></form>'; AddTextBox('Удаление блока "' . $name . '"', $text); } break; case EXT_PLUGIN: if (isset($_GET['group'])) { $group = $_GET['group'] . '/'; $groupenv = SafeEnv($_GET['group'], 255, str); } else { $group = ''; $groupenv = ''; } $mod_path = RealPath2(System::config('plug_dir') . $group . $folder); $info = ExtLoadInfo($mod_path); if (isset($_POST['ok']) || isset($info['1.3'])) { $uninstall = $mod_path . '/uninstall.php'; if (file_exists($uninstall)) { $delete_tables = isset($_POST['delete_tables']); $delete_files = isset($_POST['delete_files']); include $uninstall; System::cache()->Clear('config'); // FIXME: plugin config } if (isset($info['1.3'])) { $folder = SafeEnv($folder, 255, str); System::database()->Delete('plugins', "`name`='{$folder}' and `group`='{$groupenv}'"); } PluginsClearCache(); Audit('Расширения: Удаление плагина "' . $folder . '"'); GO(ADMIN_FILE . '?exe=extensions#tabs-3'); } else { $folder = SafeEnv($folder, 255, str); System::database()->Select('plugins', "`name`='{$folder}' and `group`='{$groupenv}'"); if (System::database()->NumRows() == 0) { AddTextBox('Ошибка', 'Плагин не установлен.'); return; } $mod = System::database()->FetchRow(); $name = SafeDB($info['name'], 255, str); $text = ''; $text .= '<form method="post">'; $text .= '<div style="padding: 10px 0 10px 25px;">'; $text .= '<div style="padding-bottom: 10px">'; $text .= '<label><input type="checkbox" name="delete_tables"> Удалить таблицы БД</label><br>'; $text .= '<label><input type="checkbox" name="delete_files"> Удалить файлы</label>'; $text .= '</div>'; $text .= System::admin()->Hidden('ok', '1'); $text .= '<div>' . System::admin()->Button('Отмена', 'onclick="history.go(-1)"') . System::admin()->Submit('Удалить') . '</div>'; $text .= '</div></form>'; AddTextBox('Удаление плагина "' . $name . '"', $text); } break; case EXT_TEMPLATE: $mod_path = RealPath2(System::config('tpl_dir') . $folder); if (isset($_POST['ok'])) { ExtRemoveTemplate($folder, isset($_POST['delete_files'])); Audit('Расширения: Удаление шаблона "' . $folder . '"'); GO(ADMIN_FILE . '?exe=extensions#tabs-4'); } else { $info = ExtLoadInfo($mod_path); if ($info === false) { $info = array('name' => $folder, 'description' => '', 'author' => '', 'site' => '', 'version' => '1.0', 'admin' => false); } $name = SafeDB($info['name'], 255, str); $text = ''; $text .= '<form method="post">'; $text .= '<div style="padding: 10px 0 10px 25px;">'; $text .= '<div style="padding-bottom: 10px">'; $text .= '<label><input type="checkbox" name="delete_files"> Удалить файлы</label>'; $text .= '</div>'; $text .= System::admin()->Hidden('ok', '1'); $text .= '<div>' . System::admin()->Button('Отмена', 'onclick="history.go(-1)"') . System::admin()->Submit('Удалить') . '</div>'; $text .= '</div></form>'; AddTextBox('Удаление шаблона "' . $name . '"', $text); } break; } }
function AdminPollsMainFunc() { global $editpolls; $polls = System::database()->Select('polls'); $text = '<table cellspacing="0" cellpadding="0" class="cfgtable"><tr>'; $text .= '<th>Опрос</th><th>Всего проголосовало</th><th>Комментарии</th><th>Доступ</th><th>Статус</th><th>Функции</th></tr>'; foreach ($polls as $poll) { $pid = SafeDB($poll['id'], 11, int); if ($poll['active'] == '1') { $active = '<font color="#008000">Вкл.</font></a>'; } else { $active = '<font color="#FF0000">Выкл.</font>'; } if ($editpolls) { $active = System::admin()->SpeedStatus('Вкл.', 'Выкл.', ADMIN_FILE . '?exe=polls&a=changestatus&id=' . $pid, $poll['active'] == '1'); } $answers = unserialize($poll['answers']); $c = count($answers); $num_voices = 0; for ($i = 0; $i < $c; $i++) { $num_voices += SafeDB($answers[$i][2], 11, int); } $link_go = Ufu('index.php?name=polls&op=viewpoll&poll_id=' . $pid, 'polls/{poll_id}/'); $func = ''; $func .= System::admin()->SpeedButton('Перейти к странице на сайте', $link_go, 'images/link_go.png', false, false, 'target="_blank"'); if ($editpolls) { $func .= System::admin()->SpeedButton('Редактировать', ADMIN_FILE . '?exe=polls&a=editor&id=' . $pid, 'images/admin/edit.png'); $func .= System::admin()->SpeedConfirm('Удалить', ADMIN_FILE . '?exe=polls&a=delete&id=' . $pid, 'images/admin/delete.png', 'Удалить опрос?'); } $text .= Indent(' <tr> <td> <b>' . System::admin()->Link(SafeDB($poll['question'], 255, str), ADMIN_FILE . '?exe=polls&a=editor&id=' . $pid) . '</b></td> <td>' . $num_voices . '</td> <td>' . SafeDB($poll['com_counter'], 11, int) . '</td> <td>' . ViewLevelToStr($poll['view']) . '</td> <td>' . $active . '</td> <td>' . $func . '</td> </tr> '); } $text .= '</table>'; AddTextBox('Опросы', $text); }