function VisitFeature($feature, $depth) { Indent($depth); PrFeatureType($feature->Type()); printf("id = %d\n", $feature->id()); $container = kmldom::AsContainer($feature); if ($container) { WalkContainer($container, $depth + 1); } }
function AdminUpdateCheck() { global $updates_folder; $selected_file = ''; // Выбранное имя файла обновления // Выбираем файл обновления и читаем метаданные if (!isset($_FILES['upload_file'])) { System::admin()->AddCenterBox('Ошибка'); System::admin()->HighlightError('Неизвестная ошибка.'); return; } $uploaded_file = $_FILES['upload_file']; // Загруженный файл // Сохраняем загруженный файл if ($uploaded_file['error'] != 4) { if ($uploaded_file['error'] != 0) { System::admin()->AddTextBox('Ошибка', 'Ошибка при загрузке файла. Код ошибки: ' . $_FILES['upload_file'] . '.'); return; } if (!is_writable($updates_folder)) { System::admin()->AddCenterBox('Ошибка'); System::admin()->HighlightError('Папка "' . SafeDB($updates_folder, 255, str) . '" не доступна для записи. Не удалось загрузить обновление.'); } else { if (is_file($uploaded_file['tmp_name'])) { // Был загружен файл // Проверяем тип файла и сохраняем в папку updates if (strtolower(GetFileExt($_FILES['upload_file']['name'])) == '.zip') { $selected_file = $updates_folder . $_FILES['upload_file']['name']; copy($_FILES['upload_file']['tmp_name'], $selected_file); Audit('Обновление системы: Загружен архив обновления "' . $selected_file . '"'); } else { System::admin()->AddCenterBox('Ошибка'); System::admin()->HighlightError('Разрешено загружать только ZIP файлы.'); } } } } else { // Берем выбранный ранее загруженный файл if (isset($_POST['select_file'])) { $selected_file = $updates_folder . $_POST['select_file']; } else { System::admin()->AddCenterBox('Ошибка'); System::admin()->HighlightError('Файл обновления не выбран.'); return; } } // Проверяем select_file, пытаемся открыть и прочитать метаданные $zip = new ZipArchive(); if ($zip->open($selected_file) !== true) { System::admin()->AddCenterBox('Ошибка'); System::admin()->HighlightError('Не удалось открыть файл обновления, возможно архив повреждён.'); return; } // Читаем метаданные $metadata = $zip->getFromName('metadata'); $metadata = JsonDecode($metadata); if (!isset($metadata) || !isset($metadata['product']) || $metadata['product'] != CMS_UPDATE_PRODUCT || !isset($metadata['type']) || $metadata['type'] != 'update' || !isset($metadata['from_version']) || $metadata['from_version'] != CMS_VERSION || !isset($metadata['to_version']) || !isset($metadata['changelog'])) { System::admin()->AddCenterBox('Ошибка'); System::admin()->HighlightError('Файл не является файлом обновления или не подходит к вашей версии системы.'); return; } System::admin()->AddCenterBox('Обновление системы ' . SafeDB($metadata['from_version'], 20, str) . ' › ' . SafeDB($metadata['to_version'], 20, str)); UseLib('markdown'); $md = new Markdown(); $metadata['changelog'] = $md->transform(SafeDB($metadata['changelog'], 0, str, false)); // Проверяем разрешения на запись в файлы $update_files = '<h2>Обновляемые файлы:</h2><ul>'; $numFiles = $zip->numFiles; $create = false; $reason = ''; $create_dirs = array(); $errors = false; for ($i = 0; $i < $numFiles; $i++) { $reason = ''; $fn = $zip->getNameIndex($i); if ($fn == 'metadata') { continue; } if (substr($fn, -1) != '/') { // Файл if (is_file($fn)) { // Существует $create = is_writable($fn); $reason = 'Нет прав на запись'; } else { $fn_path = GetPathName($fn, false); if (isset($create_dirs[$fn_path . '/'])) { $create = $create_dirs[$fn_path . '/']; $reason = 'Невозможно создать папку ' . $fn_path . ''; } else { $create = is_writable($fn_path); $reason = 'Нет прав на запись в папку ' . $fn_path . ''; } } } else { // Папка $create = IsPossiblyCreated($fn); $create_dirs[$fn] = $create; $reason = 'Невозможно создать, нет прав на запись'; } if ($create) { $update_files .= '<li>' . SafeDB($fn, 255, str) . '</li>'; } else { $update_files .= '<li style="color: red;">' . SafeDB($fn, 255, str) . ' (' . $reason . ')</li>'; $errors = true; } } $update_files .= '</ul>'; $zip->close(); // Вывод информации System::site()->AddOnLoadJS(Indent(' AdminUpdateShowChangelog = function(){ $("#update_changelog").show(); $("#update_files").hide(); } AdminUpdateShowFiles = function(){ $("#update_files").show(); $("#update_changelog").hide(); } ')); if ($errors) { System::admin()->HighlightError('Невозможно обновить некоторые файлы и папки. Смотрите список файлов для более детальной информации.<br>'); } else { System::admin()->Highlight('Ошибок не обнаружено, нажмите кнопку "Обновить" для обновления системы.'); } $html = ' <div style="margin: 10px 0 10px;"> <a href="#" onclick="AdminUpdateShowChangelog(); return false;" class="button">Показать изменения</a> <a href="#" onclick="AdminUpdateShowFiles(); return false;" class="button">Показать файлы</a> ' . ($errors ? '' : System::admin()->SpeedButton('Обновить', ADMIN_FILE . '?exe=update&a=apply&file=' . GetFileName($selected_file), '', true, true)) . ' </div> <div id="update_changelog" style="' . ($errors ? 'display: none;' : '') . '">' . $metadata['changelog'] . '</div> <div id="update_files" style="' . ($errors ? '' : 'display: none;') . '">' . $update_files . '</div> '; System::admin()->AddText($html); }
/** * Отправка письма с новым паролем * @param $user_mail * @param $name * @param $login * @param $pass * @return void */ function UserSendForgotPassword($user_mail, $name, $login, $pass) { $ip = getip(); $text = Indent(' Здравствуйте, [' . $name . ']! На сайте ' . GetSiteDomain() . ' было запрошено напоминание пароля. Имя: ' . $name . ' Ваш логин и новый пароль: логин: ' . $login . ' пароль: ' . $pass . ' Изменить данные аккаунта вы можете по адресу: ' . GetSiteUrl() . Ufu('index.php?name=user&op=editprofile', 'user/{op}/') . ' IP-адрес, с которого был запрошен пароль: ' . $ip . ' С уважением, администрация сайта ' . GetSiteDomain() . '. '); SendMail($name, $user_mail, '[' . GetSiteDomain() . '] Напоминание пароля', $text); }
if (isset($_GET['a'])) { $action = $_GET['a']; } else { $action = 'main'; } switch ($action) { case 'main': // SideBar System::database()->Select('block_types', ''); $block_types_data = array(); while ($row = System::database()->FetchRow()) { System::site()->DataAdd($block_types_data, SafeDB($row['folder'], 255, str), SafeDB($row['name'], 255, str)); } $form = Indent(' <form action="' . ADMIN_FILE . '?exe=blocks&a=add" method="post"> ' . System::site()->Select('type', $block_types_data, false, 'style="width: 200px;"') . ' <div align="right" style="text-align: right; margin-top: 5px;">' . System::site()->Submit('Добавить') . '</div> </form> '); // FIXME: Похоже Indent не работает... //System::log($form); System::admin()->SideBarAddTextBlock('Добавить блок', $form); AdminBlocksMain(); break; case 'add': AdminBlocksEdit($action); break; case 'newsave': AdminBlocksSave($action); break; case 'del': AdminBlockDelete();
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 AdminNewsTopics() { global $news_access_edittopics; UseScript('jquery_ui', 'colorbox?theme=admin'); if (!$news_access_edittopics) { System::admin()->AccessDenied(); } $cntr = 0; AddCenterBox('Текущие новостные разделы'); $topics = System::database()->Select('news_topics'); $text = '<table style="width: 100%; border: 1px #ABC5D8 solid; background-color: #fff; padding: 10px;">'; foreach ($topics as $topic) { $topic_id = SafeDB($topic['id'], 11, int); $edit_url = ADMIN_FILE . '?exe=news&a=edittopic&id=' . $topic_id; $link_go = Ufu('index.php?name=news&topic=' . $topic_id, 'news/{topic}/'); $title = SafeDB($topic['title'], 255, str); $desc = SafeDB($topic['description'], 255, str); $counter = SafeDB($topic['counter'], 11, int); $image = SafeDB($topic['image'], 255, str); if ($image != '') { list($width, $height) = SafeDB(explode(':', System::config('news/topics_tmb_size')), 11, int); $image = GetThumb($image, $width, $height); $image = '<tr><td align="center"><a href="' . $edit_url . '"><img src="' . $image . '" height="80" title="' . $desc . '"></a></td></tr>'; } $func = ''; $func .= System::admin()->SpeedButton('Перейти к странице на сайте', $link_go, 'images/link_go.png', false, false, 'target="_blank"'); $func .= System::admin()->SpeedButton('Редактировать', $edit_url, 'images/admin/edit.png'); $func .= System::admin()->SpeedAjax('Удалить', ADMIN_FILE . '?exe=news&a=deltopic&id=' . $topic_id, 'images/admin/delete.png', 'Удалить раздел? Все новости в этом разделе так-же будут удалены.', '', "\$('#topic_{$topic_id}').children('table').fadeOut('slow');"); if ($cntr % 4 == 0) { $text .= '<tr>'; } $text .= Indent(' <td id="topic_$topic_id" valign="top" align="center" style="padding: 10px;"> <table align="center" cellspacing="5" cellpadding="0"> <tr> <td align="center"> <b><a href="' . $edit_url . '">' . $title . '</a> (' . $counter . ')</b> </td> </tr> ' . $image . ' <tr> <td align="center">' . $func . '</td> </tr> </table> </td> '); if (++$cntr % 4 == 0) { $text .= '</tr>'; } } if ($cntr % 4 != 0) { $text .= '</tr>'; } $text .= '</table>'; AddText($text); System::admin()->FormTitleRow('Создать новый раздел новостей'); System::admin()->FormRow('Название раздела', System::admin()->Edit('topic_name', '', false, 'maxlength="255" style="width:400px;"')); System::admin()->FormTextRow('Описание (HTML)', System::admin()->HtmlEditor('topic_description', '', 600, 200)); FormRow('Изображение', System::admin()->FileManager('topic_image', '') . '<br> <a href="images/no_image.png" class="filemanager_topic_image colorbox" data-content="href:path" target="_blank"> <img src="images/no_image.png" class="filemanager_topic_image" data-content="src:tmb" style="margin-top: 5px; max-width: 250px;"> </a>'); System::admin()->AddForm('<form name="topicsform" action="' . ADMIN_FILE . '?exe=news&a=addtopic" method="post" name="topicsform">', System::admin()->Submit('Создать')); }
} } } if ($ConvertDB) { if (!$have_errors) { $this->SetContent(Indent(' <p align="center">База данных успешно сконвертирована!</p> ')); $this->AddButton('Админ-панель', 'finish&p=3'); $this->AddButton('На сайт', 'finish&p=2'); } else { $this->SetContent(Indent(' <p align="center">Произошли ошибки при конвертировании БД.</p> ')); } } else { if (!$have_errors) { $this->SetContent(Indent(' <h2 class="title" align="center">База данных создана успешно!</h2> <p align="center">Нажмите "Далее" для создания учетной записи главного администратора.</p> ')); $this->AddButton('Далее', 'admin'); } else { $this->SetContent(Indent(' <p align="center">Произошли ошибки при создании БД.</p> ')); } } } break; }
/** * Добавляет блок быстрого перехода. * @param type $sel_id * @param type $title * @param type $app_content */ function ForumQuickTransitionBox($sel_id, $title = '', $app_content = '') { $data = ForumTree::Instance()->GetCatsDataF($sel_id, true, true); $nav_url = 'index.php?name=forum&op=showforum'; System::site()->AddTextBox('', $app_content . Indent(' <div style="float:right; white-space:nowrap;" class="forum_quick_transition"> <table cellspacing="0" cellpadding="0" border="0"> <tr> <th>' . $title . ': </th> <td> <form action="' . $nav_url . '" method="get"> <input type="hidden" name="name" value="forum"> <input type="hidden" name="op" value="showforum"> ' . System::site()->Select('forum', $data, false, 'onchange="this.form.submit();"') . ' </form> </td> </tr> </table> </div> ')); }
/** * Редактор ссылок * @return void */ function AdminPagesLinkEditor() { UseScript('jquery'); System::admin()->AddJS(Indent(<<<JS \t\tSelectLinkType = function(first){ \t\t\tif(first){ \t\t\t\tvar url = \$('#link_url').val(); \t\t\t\t\$('#link_mods > option').prop('selected', false); \t\t\t\tif(url.substr(0, 6) == 'mod://'){ \t\t\t\t\tvar mod = url.substr(6); \t\t\t\t\t\$('#link_mod_'+mod).prop('selected', true); \t\t\t\t\t\$('.link_form_row').hide(); \t\t\t\t}else{ \t\t\t\t\t\$('#link_mod').prop('selected', true); \t\t\t\t\t\$('.link_form_row').show(); \t\t\t\t} \t\t\t}else{ \t\t\t\tvar v = \$('#link_mods').val(); \t\t\t\tif(v == ''){ \t\t\t\t\t\$('.link_form_row').fadeIn(1000); \t\t\t\t}else{ \t\t\t\t\t\$('.link_form_row').hide(); \t\t\t\t} \t\t\t} \t\t}; JS )); System::admin()->AddOnLoadJS("SelectLinkType(true);"); $link = ''; $id = -1; $title = ''; $parent_id = -1; if (isset($_GET['parent'])) { $parent_id = SafeEnv($_GET['parent'], 11, int); } $view = array(1 => false, 2 => false, 3 => false, 4 => false); $enabled = true; $showinmenu = true; if (!isset($_GET['id'])) { $view[4] = true; $form_title = 'Добавить ссылку'; $submit = 'Добавить'; } else { $id = SafeEnv($_GET['id'], 11, int); System::database()->Select('pages', "`id`='{$id}'"); $pg = System::database()->FetchRow(); $parent_id = SafeEnv($pg['parent'], 11, int); $title = SafeEnv($pg['title'], 255, str); $link = SafeEnv($pg['text'], 255, str); $view[SafeDB($pg['view'], 1, int)] = true; $enabled = SafeDB($pg['enabled'], 1, bool); $showinmenu = SafeDB($pg['showinmenu'], 1, bool); $form_title = 'Редактирование ссылки'; $submit = 'Сохранить изменения'; } // Возможные родительские страницы $pages = System::database()->Select('pages'); SortArray($pages, 'order'); $tree = new Tree($pages); $cats_data = $tree->GetCatsData($parent_id, false, true, $id, true); // Кто видит $visdata = array(); System::site()->DataAdd($visdata, 'all', 'Все', $view['4']); System::site()->DataAdd($visdata, 'members', 'Только пользователи', $view['2']); System::site()->DataAdd($visdata, 'guests', 'Только гости', $view['3']); System::site()->DataAdd($visdata, 'admins', 'Только администраторы', $view['1']); // Модули $modules_data = array(); $mods = System::database()->Select('modules', "`enabled`='1' and `isindex`='1'"); System::site()->DataAdd($modules_data, '', '--- URL ---', false, 'id="link_mod"'); foreach ($mods as $mod) { $folder = SafeDB($mod['folder'], 255, str); System::site()->DataAdd($modules_data, $folder, SafeDB($mod['name'], 255, str), false, 'id="link_mod_' . $folder . '"'); } // Выводим форму System::admin()->FormRow('Родительская страница', System::site()->Select('parent_id', $cats_data, false, $parent_id == -1 ? 'class="autofocus"' : '')); System::admin()->FormRow('Заголовок', System::site()->Edit('title', $title, false, 'style="width:400px;" maxlength="255"' . ($parent_id != -1 ? ' class="autofocus"' : ''))); System::admin()->FormRow('Ссылка на модуль', System::site()->Select('module', $modules_data, false, 'id="link_mods" onchange="SelectLinkType();"')); System::admin()->FormRow('Ссылка (URL)', System::site()->Edit('link', $link, false, 'style="width:400px;" id="link_url"'), 'class="link_form_row"'); System::admin()->FormRow('Кто видит', System::site()->Select('view', $visdata)); System::admin()->FormRow('Показать в меню', System::admin()->Select('showinmenu', GetEnData($showinmenu, 'Да', 'Нет'))); System::admin()->FormRow('Включить', System::admin()->Select('enabled', GetEnData($enabled, 'Да', 'Нет'))); System::admin()->AddCenterBox($form_title); System::admin()->AddForm(System::admin()->FormOpen(ADMIN_FILE . '?exe=pages&a=savelink' . ($id != -1 ? '&id=' . $id : '')), System::admin()->Button('Отмена', 'onclick="history.go(-1)"') . System::admin()->Submit($submit)); }
function IndexForumLastTopics_Periods($day, $forum_id = -1) { global $forum_lang; $periods = array('1', '2', '3', '4', '5', '6', '7', '14', '21', '30', '60', '90', '120', '150', '180', '365'); $select = ''; foreach ($periods as $p) { $select .= '<option value="' . $p . '" ' . ($day == $p ? 'selected="selected"' : '') . '>' . $forum_lang['viewlasttopics' . $p] . '</option>'; } $text = Indent(' <div style="float:left;" class="forum_period"> <table cellspacing="0" cellpadding="0" border="0"> <tr> <th>Период: </th> <td> <form name="day" action="index.php?name=forum&op=lasttopics' . ($forum_id > 0 ? '&forum=' . $forum_id . '' : '') . '" method="get"> <input type="hidden" name="name" value="forum"> ' . ($forum_id > 0 ? '<input type="hidden" name="forum" value="' . $forum_id . '">' : '') . ' <input type="hidden" name="op" value="lasttopics"> <select name="day" onchange="this.form.submit();"> ' . $select . ' </select> </form> </td> </tr> </table> </div> '); return $text; }
function AdminDownloadsMain() { $editfiles = System::user()->CheckAccess2('downloads', 'edit_files'); $back = SaveRefererUrl(); if (isset($_GET['cat']) && $_GET['cat'] > -1) { $cat = SafeEnv($_GET['cat'], 11, int); $where = "`category`='{$cat}'"; } else { $cat = -1; $where = ""; } $data = array(); $data = AdminDownloadsGetTree()->GetCatsData($cat, true); System::site()->DataAdd($data, -1, 'Все файлы', $cat == -1); if (isset($_GET['page'])) { $page = SafeEnv($_GET['page'], 10, int); } else { $page = 1; } AddCenterBox('Файлы'); System::admin()->AddJS(Indent(' DownloadsSelectCat = function(){ Admin.LoadPage("' . ADMIN_FILE . '?exe=downloads&cat="+$("#download-cat").val()); } ')); $text = '<div style="text-align: center; margin-bottom: 10px;">Категория: ' . System::site()->Select('cat', $data, false, 'id="download-cat" onchange="DownloadsSelectCat();"') . '</div>'; AddText($text); System::database()->Select('downloads', $where); SortArray(System::database()->QueryResult, 'public', true); if (count(System::database()->QueryResult) > System::config('downloads/filesonpage')) { $navigator = new Navigation($page); $navigator->GenNavigationMenu(System::database()->QueryResult, System::config('downloads/filesonpage'), ADMIN_FILE . '?exe=downloads' . ($cat > 0 ? '&cat=' . $cat : '')); $nav = true; } else { $nav = false; } $text = '<table cellspacing="0" cellpadding="0" class="cfgtable">'; $text .= '<tr><th>Заголовок</th><th>Скачиваний</th><th>Оценки</th><th>Видят</th><th>Статус</th><th>Функции</th></tr>'; while ($row = System::database()->FetchRow()) { $id = SafeDB($row['id'], 11, int); $title = SafeDB($row['title'], 255, str); $hits = SafeDB($row['hits'], 11, int); $rating = '<img src="' . GetRatingImage(SafeDB($row['votes_amount'], 11, int), SafeDB($row['votes'], 11, int)) . '" border="0" />'; $st = $row['active'] == '1' ? 'Вкл.' : 'Выкл.'; $func = '-'; if ($editfiles) { $title = '<b>' . System::admin()->Link($title, ADMIN_FILE . '?exe=downloads&a=editor&id=' . $id . '&back=' . $back) . '</b>'; $hits .= ' ' . System::admin()->SpeedConfirm('Обнулить счётчик скачиваний', ADMIN_FILE . '?exe=downloads&a=resetcounter&id=' . $id . '&back=' . $back, 'images/admin/arrow_in.png', 'Сбросить счётчик скачиваний?'); $rating .= ' ' . System::admin()->SpeedConfirm('Обнулить счётчик оценок (' . SafeDB($row['votes_amount'], 11, int) . ' голосов)', ADMIN_FILE . '?exe=downloads&a=resetrating&id=' . $id . '&back=' . $back, 'images/admin/arrow_in.png', 'Сбросить оценки?'); $st = System::admin()->SpeedStatus('Вкл.', 'Выкл.', ADMIN_FILE . '?exe=downloads&a=changestatus&id=' . $id, $row['active'] == '1'); $func = System::admin()->SpeedButton('Редактировать', ADMIN_FILE . '?exe=downloads&a=editor&id=' . $id . '&back=' . $back, 'images/admin/edit.png'); $func .= System::admin()->SpeedConfirm('Удалить', ADMIN_FILE . '?exe=downloads&a=deletefile&id=' . $id . '&ok=0&back=' . $back, 'images/admin/delete.png', 'Удалить файл?'); } $text .= '<tr><td>' . $title . '</td> <td>' . $hits . '</td> <td>' . ($row['allow_votes'] == '1' ? $rating : 'Запрещены') . '</td> <td>' . ViewLevelToStr(SafeDB($row['view'], 1, int)) . '</td> <td>' . $st . '</td> <td>' . $func . '</td> </tr>'; } $text .= '</table>'; AddText($text); if ($nav) { AddNavigation(); } }
$this->SetTitle(_FDB_CREATE); if (!System::database()->Connected) { $this->SetContent("<html>\n<head>\n\t<title>!!!Ошибка!!!</title>\n</head>\n<body>\n<p align=\"center\">Проблема с базой данных. Пожалуйста, проверьте настройки базы данных.</p>\n</body>\n</html>"); } else { System::database()->CreateDbIfNotExists($config['db_name'], false); System::database()->SelectDb($config['db_name']); $tables = ShowTables(); $prefix = System::database()->Prefix(); foreach ($tables as $table) { $info = $bases_path . $default_prefix . '_' . $table . $info_ext; $info2 = $config['db_host'] . $config['db_name'] . '/' . $prefix . $table . $info_ext; $data = $bases_path . $default_prefix . '_' . $table . $data_ext; $data2 = $config['db_host'] . $config['db_name'] . '/' . $prefix . $table . $data_ext; if ($delete_ex && is_file($info2)) { unlink($info2); unlink($data2); } if (!is_file($info2)) { copy($info, $info2); copy($data, $data2); } } $this->SetContent(Indent(' <h2 class="title" align="center">База данных создана успешно!</h2> <p align="center">Нажмите "Далее" для создания учетной записи главного администратора.</p> ')); $this->AddButton('Далее', 'admin'); // На страницу создания главного администратора } break; }
/** * Выводит поля формы в админке, для настройки видимости объекта на определенных страницах сайта. * @param array|string $Conditions * @param array|string $Uri */ function VisibilityConditionsAdmin($Conditions = array(), $Uri = array()) { if (is_string($Conditions)) { $Conditions = unserialize($Conditions); } if (is_string($Uri)) { $Uri = unserialize($Uri); } $extrauri = SafeDB(implode(WIN_EOL, $Uri), 0, str); // Загружаем все модули из базы данных которые работают с пользователем $mods = System::database()->Select('modules', "`isindex`='1'"); array_unshift($mods, array('name' => 'Главная страница', 'folder' => 'INDEX')); $num = 0; $ac = ''; $ac .= Indent(' <table width="100%" cellspacing="0" cellpadding="0" style="margin-bottom: 5px;"> <tr> <td style="border: none;"><label>' . System::site()->Radio('showin[]', 'SELECT_ONLY', in_array('SELECT_ONLY', $Conditions) || !in_array('ALL_EXCEPT', $Conditions)) . '<span style="display: inline-block; vertical-align: top; padding-top: 3px;">Показывать только:</span></label></td> <td style="border: none;"><label>' . System::site()->Radio('showin[]', 'ALL_EXCEPT', in_array('ALL_EXCEPT', $Conditions)) . '<span style="display: inline-block; vertical-align: top; padding-top: 3px;">Показывать везде, кроме:<span></label></td> </tr> </table> <table width="100%" cellspacing="0" cellpadding="0" style="margin-bottom: 5px;"> '); foreach ($mods as $a) { if ($num == 0) { $ac .= '<tr>'; } $num++; $ac .= '<td style="border: none;"><label>' . System::site()->Check('showin[]', SafeDB($a['folder'], 255, str), in_array(SafeDB($a['folder'], 255, str), $Conditions)) . '<span style="display: inline-block; vertical-align: top; padding-top: 3px;">' . SafeDB($a['name'], 255, str) . '</span></label></td>'; if ($num == 3) { $ac .= '</tr>'; $num = 0; } } if ($num != 0) { $ac .= '</tr>'; } $ac .= Indent(' </table> <table width="100%" cellspacing="0" cellpadding="0" style="margin-bottom: 5px;"> <tr> <td style="border: none; padding-bottom: 4px;">Страницы (URL):<br>Например: /index.php?name=pages&file=page или /pages/page.html. По одному на строку.</td> </tr> <tr> <td style="border: none;">' . System::site()->TextArea('extra_uri', $extrauri, 'style="width: 95%; min-width: 400px; height: 100px;"') . '</td> </tr> </table> '); System::admin()->FormTitleRow('Параметры видимости'); FormRow('', $ac); }
function IndexUserRegistrationOk() { System::site()->SetTitle('Регистрация на сайте'); if (isset($_POST['usersave']) && $_POST['usersave'] == 'update') { $edit = true; $user_id = System::user()->Get('u_id'); System::database()->Select('users', "`id`='" . $user_id . "'"); $user = System::database()->FetchRow(); } else { $edit = false; } if (!$edit) { System::user()->UnLogin(false); } else { if (!System::user()->Auth) { GO(Ufu('index.php')); } } if (System::config('user/registration') == 'off' && !$edit) { System::site()->AddTextBox('Ошибка', '<p align="center">Извините, регистрация временно приостановлена.</p>'); return; } //Обрабатываем данные $errors = array(); // Логин $login = ''; $sendlogin = ''; if (isset($_POST['login']) && CheckLogin(SafeEnv($_POST['login'], 30, str), $errors, true, $edit ? $user_id : 0)) { $login = SafeEnv($_POST['login'], 30, str); $sendlogin = $_POST['login']; } // Пароль $pass = ''; $sendpass = ''; $pass_generate_message = ''; if (!System::user()->isAdmin() && $_POST['pass'] != '') { $pass = SafeEnv($_POST['pass'], 255, str); $rpass = SafeEnv($_POST['rpass'], 255, str); $sendpass = $_POST['pass']; if ($edit) { if ($rpass != '') { if (!CheckPass(SafeEnv($_POST['pass'], 255, str), $errors)) { $pass = ''; } elseif ($rpass != $pass) { $errors[] = 'Пароли не совпадают.'; $pass = ''; } } else { $pass = ''; } } else { if ($_POST['pass'] == '') { srand(time()); $pass = GenBPass(rand(System::config('user/pass_min_length'), 15)); $sendpass = $pass; $pass_generate_message = '<br>Так как Вы не указали пароль, он был сгенерирован автоматически и выслан Вам на E-mail.'; } else { if (CheckPass(SafeEnv($_POST['pass'], 255, str), $errors)) { if ($rpass != $pass) { $errors[] = 'Пароли не совпадают.'; } } } } $pass2 = md5($pass); } // E-mail if (!System::user()->isAdmin() && isset($_POST['email']) && CheckUserEmail(SafeEnv($_POST['email'], 50, str, true), $errors, true, $edit ? $user_id : 0)) { $email = SafeEnv($_POST['email'], 50, str, true); } else { $email = ''; } // Скрыть E-mail if (isset($_POST['hideemail'])) { $hide_email = '1'; } else { $hide_email = '0'; } // Имя пользователя if (isset($_POST['nikname']) && CheckNikname(SafeEnv($_POST['nikname'], 50, str, true), $errors, true, $edit ? $user_id : 0)) { $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'])) { $homepage = SafeEnv(Url($_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'; } if (!$edit && (!System::user()->Auth && !System::user()->isDef('captcha_keystring') || System::user()->Get('captcha_keystring') != $_POST['keystr'])) { $errors[] = 'Вы ошиблись при вводе кода с картинки.'; } // Аватар $updateAvatar = true; if (isset($_POST['avatar'])) { if (System::config('user/avatar_transfer') == '1' && isset($_FILES['upavatar']) && file_exists($_FILES['upavatar']['tmp_name'])) { UserLoadAvatar($errors, $avatar, $a_personal, $user['avatar'], $user['a_personal'] == '1', $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 = 'noavatar.gif'; $a_personal = '0'; } } else { $avatar = 'noavatar.gif'; $a_personal = '0'; } // Активация аккаунта $active = '1'; $code = ''; $SendActivation = false; $activate = ''; if (!$edit) { $activate = System::config('user/activate_type'); switch ($activate) { case 'manual': $active = '0'; $code = ''; $SendActivation = false; break; case 'auto': $active = '1'; $code = ''; $SendActivation = false; break; case 'mail': $active = '0'; $code = GenRandomString(32); $SendActivation = true; break; } } $status = 2; $access = -1; $reg_date = time(); $last_visit = time(); $ip = getip(); $points = 0; $visits = 0; // Сохранение if (count($errors) == 0) { if ($SendActivation) { UserSendActivationMail($nik_name, $email, $sendlogin, $sendpass, $code, $reg_date); $finish_message = Indent(' <br> На указанный Вами E-Mail отправлено письмо, содержащее ссылку для подтверждения регистрации. Для активации Вашего аккаунта перейдите по данной ссылке и подтвердите регистрацию! '); } elseif (!$edit) { UserSendEndRegMail($email, $nik_name, $sendlogin, $sendpass, $reg_date); $finish_message = '<br>На ваш E-mail отправлено письмо с данными о регистрации.'; } 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, $status, $access, $a_personal, serialize(array())); System::database()->Insert('users', $values); // Очищаем кэш пользователей System::cache()->Delete(system_cache, 'users'); // Автоматический вход if ($activate == 'auto') { System::user()->Login($login, $pass, true, false); System::site()->InitVars(); } elseif ($activate == 'mail') { System::user()->Def('activate_ps', base64_encode($pass)); } System::site()->AddTextBox('Регистрация', '<p align="center">Поздравляем! Вы успешно зарегистрированы на сайте.' . $pass_generate_message . $finish_message . '<br>С уважением, администрация сайта <strong>' . System::config('general/site_name') . '.</strong></p>'); } else { // Сохранение изменений $set = "`login`='{$login}',`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}'" : '') . ($email != '' ? ",`email`='{$email}'" : ''); System::database()->Update('users', $set, "`id`='" . System::user()->Get('u_id') . "'"); System::user()->UpdateMemberSession(); UpdateUserComments(System::user()->Get('u_id'), System::user()->Get('u_id'), $nik_name, $email, $hide_email, $homepage, getip()); // Очищаем кэш пользователей System::cache()->Delete(system_cache, 'users'); GO(GetSiteUrl() . Ufu('index.php?name=user&op=userinfo', 'user/{op}/')); } } else { // Ошибка $text = 'Ваш аккаунт не ' . ($edit ? 'сохранен' : 'добавлен') . ', произошли следующие ошибки:<br><ul>'; foreach ($errors as $error) { $text .= '<li>' . $error; } $text .= '</ul>'; // Удаляем аватар if ($a_personal == '1' && !$edit) { unlink(System::config('general/personal_avatars_dir') . $avatar); } System::site()->AddTextBox('Ошибка', $text); IndexUserRegistration(true, $edit); } }
<?php /* * Файл инициализации шаблона. * Здесь устанавливается doctype, Подключаются JS, CSS файлы и скрипты. * Можно изменить другие параметры шаблона, или сделать вывод в шаблон произвольного контента. */ System::site()->Doctype = '<!doctype html>'; System::site()->AddCSSFile('style.css', false, false, 'media="screen"'); System::site()->AddJSFile('functions.js', false, true); UseScript('jquery'); UseScript('syntaxhighlighter?theme=Default'); // Подсветка кода на страницах UseScript('colorbox'); // Скрипт просмотра изображений (LightBox) System::site()->AddOnLoadJS(Indent(' if($("#errors").html() != "") $("#errors").show(); ')); System::site()->SetTempVar('template', 'header', 'header.html'); System::site()->SetTempVar('template', 'footer', 'footer.html');
function AdminCommentsMain() { System::admin()->AddCenterBox('Глобальная модерация комментариев'); if (isset($_GET['page'])) { $page = SafeEnv($_GET['page'], 10, int); } else { $page = 1; } System::admin()->AddJS(' UpdateSelectComment = function(){ $(".comment_check").each(function(){ $("#comment"+$(this).val()).removeClass("commtable_selected"); }); $(".comment_check:checked").each(function(){ $("#comment"+$(this).val()).addClass("commtable_selected"); }); }; SelectAllComments = function(){ $(".comment_check").each(function(){ $(this).attr("checked", true); }); UpdateSelectComment(); }; DeleteComments = function(){ var del = ""; $(".comment_check:checked").each(function(){ del += "#"+$(this).val(); }); Admin.LoadPagePost("' . ADMIN_FILE . '?exe=comments&a=delete&page=' . $page . '", {delcomments: del}, "Удаление..."); }; '); $commentsOnPage = 50; // Выбираем комментарии из всех таблиц $where = ''; $posts = array(); $comments_tables = System::database()->Select('comments'); foreach ($comments_tables as $table) { $temp_posts = System::database()->Select($table['table'], $where); AdminConfigMarkPosts($temp_posts, $table); $posts = array_merge($posts, $temp_posts); } // Сортируем комментарии по дате(Новые сверху) SortArray($posts, 'post_date', true); // Добавляем постраничную навигацию if (count($posts) > $commentsOnPage) { $navigator = new Navigation($page); $navigator->GenNavigationMenu($posts, $commentsOnPage, ADMIN_FILE . '?exe=comments'); $nav = true; } else { $nav = false; AddText('<br />'); } // Шапка if (count($posts) == 0) { System::admin()->Highlight('На сайте нет комментариев.'); return; } else { $text = ''; } $text .= '<table cellspacing="0" cellpadding="0" width="90%" align="center" class="commtable_header"> <tr> <th style="width: 160px;">Пользователь</th> <th style="width: 260px;">E-mail</th> <th style="width: 260px;">Сайт</th> <th style="width: 260px;">Дата и время</th> <th style="width: 70px;">IP</th> <th>Функции</th> </tr></table>'; // Выводим комментарии foreach ($posts as $post) { $post_id = SafeDB($post['id'], 11, int); $object_id = SafeDB($post['object_id'], 11, int); $user_id = SafeDB($post['user_id'], 11, int); $user_name = SafeDB($post['user_name'], 255, str); $user_homepage = SafeDB($post['user_homepage'], 255, str); $user_email = SafeDB($post['user_email'], 255, str); $user_ip = SafeDB($post['user_ip'], 19, str); $post_date = TimeRender($post['post_date']); $post_message = SafeDB($post['post_message'], 0, str, false); $post_message = nl2br($post_message); $edit = ADMIN_FILE . '?exe=comments&a=edit&id=' . $post_id . '&table=' . $post['_table'] . '&page=' . $page; if ($user_id != 0) { $userinfo = GetUserInfo($user_id); $user_name = $userinfo['name']; $user_homepage = $userinfo['url']; $user_email = PrintEmail($userinfo['email']); if ($userinfo['online']) { $online = '<b>Сейчас на сайте.</b>'; } else { $online = ''; } $avatar = '<img src="' . $userinfo['avatar_file'] . '" />'; $rank_image = '<img src="' . $userinfo['rank_image'] . '" />'; $rank_name = $userinfo['rank_name']; $regdate = 'Зарегистрирован: ' . TimeRender($userinfo['regdate'], false); $ruser = true; } else { $user_email = PrintEmail($user_email); $online = ''; $avatar = '<img src="' . GetPersonalAvatar(0) . '" />'; $rank_image = ''; $rank_name = ''; $regdate = ''; $ruser = false; } if ($user_homepage != '') { $user_homepage = '<a href="http://' . $user_homepage . '" target="_blank">' . $user_homepage . '</a>'; } else { $user_homepage = ' '; } if ($ruser) { $user_name = '<a href="' . Ufu("index.php?name=user&op=userinfo&user={$user_id}", 'user/{user}/info/') . '" target="_blank">' . $user_name . '</a>'; } $link_go = ADMIN_FILE . '?exe=comments&a=find&table=' . SafeDB($post['_id'], 11, int) . '&post_id=' . $post_id; $func = ''; if ($post['_url'] != '') { $func .= System::admin()->SpeedButton('Найти комментарий', $link_go, 'images/search.png', false, false, 'target="_blank"'); } $func .= SpeedButton('Редактировать', $edit, 'images/admin/edit.png'); $text .= Indent(' <table cellspacing="0" cellpadding="0" width="90%" align="center" class="commtable" id="comment' . $post_id . '--' . $post['_table'] . '--' . $object_id . '"> <tr> <th style="width: 160px;"><b>' . $user_name . '</b></th> <th style="width: 260px;">' . $user_email . '</th> <th style="width: 260px;">' . $user_homepage . '</th> <th style="width: 260px;">' . $post_date . '</th> <th style="width: 70px;">' . $user_ip . '</th> <th>' . $func . '</th> <th>' . System::admin()->Check('delcomments[]', $post_id . '--' . $post['_table'] . '--' . $object_id, false, 'class="comment_check" onchange="UpdateSelectComment();"') . '</th> </tr> <tr> <td valign="top" width="140">' . $avatar . '<br>' . $rank_image . '<br>' . $rank_name . '</td> <td colspan="6" class="commtable_text">' . $post_message . '</td> </tr> </table> '); } // Подвал AddText($text); if ($nav) { AddNavigation(); } $text = ''; if (count($posts) > 0) { $text .= '<div style="text-align: right;">' . System::admin()->SpeedConfirmJs('Выделить все', 'SelectAllComments();', '', '', true) . ' ' . System::admin()->SpeedConfirmJs('Удалить выделенные', 'DeleteComments();', 'images/admin/delete.png', 'Удалить выделенные комментарии?', true) . '</div>'; } AddText($text); }
function IndexFormSendMail($email, $form_name, $time, $user, $ip, $data_rows) { if ($user != 0) { $user_info = GetUserInfo($user); $user = SafeDB($user_info['name'], 255, str) . ' ( id:' . SafeDB($user_info['id'], 11, int) . ' )'; $from = $user_info['name']; $from_email = $user_info['email']; } else { $user = '******'; $from = System::config('general/site_name'); $from_email = System::config('general/site_email'); } $subject = 'Веб форма "' . SafeDB($form_name, 255, str) . '"'; $mail = LmEmailExtended::Instance(); $mail->SetSubject(Cp1251ToUtf8($subject)); $mail->SetFrom($from_email, Cp1251ToUtf8($from)); $mail->AddTo($email, Cp1251ToUtf8('Администратор')); $post_text = ''; foreach ($data_rows as $row) { if ($row[2] == 'file') { $mail->AddAttachmentPart(file_get_contents($row[1]), $row[3]); } else { $post_text .= '<b>' . SafeDB($row[0], 255, str) . ':</b><br />' . SafeDB($row[1], 0, str) . '<br />'; } } $text = Indent(' <html> <head> <title>Форма</title> </head> <body> <table cellspacing="2" cellpadding="10" border="1"> <tr> <th>Дата: ' . TimeRender($time, true, false) . '</th> <th>Пользователь: ' . $user . '</th> <th>IP: ' . $ip . '</th> </tr> <tr> <td colspan="3" style="text-align: left;">' . $post_text . '</td> </tr> </table> </body> </html> '); $mail->AddHtmlPart(Cp1251ToUtf8($text)); if (!$mail->Send()) { ErrorHandler(USER_ERROR, 'Проблема при отправке E-mail "' . $subject . '".', __FILE__); } }
$admin_login = '******'; $admin_pass = ''; $admin_email = 'support@' . $host; } $this->SetTitle("Создание учетной записи Главного администратора"); $this->OpenForm('admin&p=2'); $text = Indent(' <table width="40%" align="center"> <tr> <td>Логин:</td> <td><input type="text" name="login" value="' . $admin_login . '" style="width: 200px;"></td> </tr> <tr> <td>Пароль:</td> <td> <div style="white-space: nowrap;"><input type="text" name="pass" id="admin_password" value="' . $admin_pass . '" style="width: 200px;"> <a href="#" onclick="GenPass(); return false;"><img src="images/admin/refresh.png" title="Сгенерировать новый пароль" style="vertical-align: middle;"></a></div> </td> </tr> <tr> <td>E-mail:</td> <td><input type="text" name="email" value="' . $admin_email . '" style="width: 200px;"></td> </tr> </table> <p>Запишите или запомните введённые данные!</p> '); $this->SetContent($text); $this->AddSubmitButton('Сохранить'); break; case 2: $errors = array(); $admin_login = $_POST['login'];
if (!defined('VALID_RUN')) { header("HTTP/1.1 404 Not Found"); exit; } if (isset($_GET['p'])) { $p = SafeEnv($_GET['p'], 1, int); } else { $p = 1; } switch ($p) { case 1: $this->SetTitle("Установка завершена!"); $text = Indent(' <h2 class="title" align="center">Спасибо за установку!</h2><br> <p align="center">Система LinkorCMS была успешно установлена на Ваш сервер.<br> Теперь Вы можете перейти в панель администратора и настроить систему по своему вкусу <br> или перейти на только что установленный сайт.<br><br></p> <p style="color: #FF0000;font-weight: bold;" align="center">Внимание! В целях безопасности удалите файл setup.php c сервера!</p> '); $this->SetContent($text); $this->AddButton('Админ-панель', 'finish&p=3'); $this->AddButton('На сайт', 'finish&p=2'); break; case 2: GO('index.php'); break; case 3: global $config; GO($config['admin_file']); break; }
function AdminGalleryUpload() { // TODO: неправильный порядок изображений при мультизагрузке if (!isset($_POST['action']) || !isset($_GET['formid']) || !isset($_SESSION['uploadforms'][$_GET['formid']])) { AdminGalleryUploadForm(); return; } global $GalleryDir, $ThumbsDir; $formid = $_GET['formid']; // Загрузка фотографий if ($_POST['action'] == 'upload') { // SwfUpload кодирует имена файлов в UTF-8 $_FILES['up_image']['name'] = Utf8ToCp1251($_FILES['up_image']['name']); $Error = false; $_SESSION['uploadforms'][$formid]['photos'][] = LoadImage('up_image', $GalleryDir, $ThumbsDir, System::config('gallery/thumb_max_width'), System::config('gallery/thumb_max_height'), '', $Error, true, System::config('gallery/optimize_originals'), System::config('gallery/original_width'), System::config('gallery/original_height')); if ($Error) { exit('ERROR 2'); } exit('OK'); } // Предпросмотр добавляемых фотографий $_SESSION['uploadforms'][$formid]['category'] = $_POST['category']; $_SESSION['uploadforms'][$formid]['allow_comments'] = EnToInt($_POST['allow_comments']); $_SESSION['uploadforms'][$formid]['allow_votes'] = EnToInt($_POST['allow_votes']); $_SESSION['uploadforms'][$formid]['show'] = EnToInt($_POST['show']); $_SESSION['uploadforms'][$formid]['view'] = ViewLevelToInt($_POST['view']); AddCenterBox('Мультизагрузка - предпросмотр'); $count_photos = count($_SESSION['uploadforms'][$formid]['photos']); $text = '<form action="' . ADMIN_FILE . '?exe=gallery&a=saveuploaded&formid=' . $formid . '" method="post">'; $submits = System::admin()->Submit('Отмена', 'name="submit_cancel" value="cancel"') . System::admin()->Submit('Сохранить', 'name="submit_save" value="save"'); $text .= '<div class="cfgboxsubmit"><div style="float: left;">Загружено ' . $count_photos . ' изображений.</div>' . $submits . '</div>'; foreach ($_SESSION['uploadforms'][$formid]['photos'] as $id => $photo) { $func = System::admin()->SpeedAjax('Удалить', ADMIN_FILE . '?exe=gallery&a=deleteuploaded&id=' . $id . '&formid=' . $formid, 'images/admin/delete.png', '', '', "jQuery('#photo_box_{$id}').fadeOut();"); $text .= Indent(' <div class="cfgbox" id="photo_box_' . $id . '"> <table cellspacing="0" cellpadding="0" border="0" style="width: 100%;"> <tr> <td style="vertical-align: top; width: 160px;"> <a href="' . $GalleryDir . $photo . '" target="_blank"><img src="' . $ThumbsDir . $photo . '" /></a> ' . $photo . ' </td> <td style="vertical-align: top;"> <table cellspacing="2" cellpadding="4" style="width: 100%;" class="cfgtable"> <tr> <td>Заголовок</td> <td colspan="3" style="text-align: left;">' . System::admin()->Edit('title_' . $id, '', false, 'maxlength="250" style="width:400px;"') . '</td> </tr> <tr> <td>Описание (HTML)</td> <td colspan="3" style="text-align: left;">' . System::admin()->TextArea('description_' . $id, '', 'style="width: 400px; height: 120px;"') . '</td> </tr> <tr> <td>Автор</td> <td style="text-align: left;">' . System::admin()->Edit('author_' . $id, '', false, 'maxlength="250" style="width:200px;"') . '</td> <td>Email автора</td> <td style="text-align: left;">' . System::admin()->Edit('email_' . $id, '', false, 'maxlength="250" style="width:200px;"') . '</td> </tr> <tr> <td>Сайт автора</td> <td colspan="3" style="text-align: left;">' . System::admin()->Edit('www_' . $id, '', false, 'maxlength="250" style="width:200px;"') . '</td> </tr> </table> </td> <td style="vertical-align: top; text-align: right; width: 50px;">' . $func . '</td> </tr> </table> </div> '); } $text .= '<div class="cfgboxsubmit">' . $submits . '</div>'; $text .= '</form>'; AddText($text); }
function AdminAuditReferers() { System::admin()->AddCenterBox('Переходы с сайтов (Рефералы)'); $query = System::database()->Select('referers', ''); SortArray($query, 'count', true); $allcount = 0; $count = count($query); if (isset($_GET['page'])) { $page = SafeEnv($_GET['page'], 10, int); } else { $page = 1; } $num = 50; if ($count > $num) { $navigator = new Navigation($page); $navigator->GenNavigationMenu($query, $num, ADMIN_FILE . '?exe=audit&a=referers'); $nav = true; } else { $nav = false; } if ($count == 0) { System::admin()->Highlight('Рефералов не было обнаружено.'); } elseif ($count >= 1) { $text = '<table cellspacing="0" cellpadding="0" class="cfgtable">'; $text .= Indent('<tr> <th>Реферал</th> <th>Переходов</th> </tr>'); foreach ($query as $q) { $referer = 'http://' . $q['referer']; $title = AdminAuditDecodeUrl($referer); $count = SafeDB($q['count'], 11, int); $allcount += $count; $text .= '<tr> <td><a href="' . $referer . '" target="_blank">' . $title . '</a></td> <td>' . $count . '</td> </tr>'; } $text .= '</table>'; $text .= 'Всего переходов на этой странице: <b>' . $allcount . '</b>. ' . System::admin()->SpeedConfirm('Очистить лог', ADMIN_FILE . '?exe=audit&a=clear_referers', '', 'Очистить лог рефералов?', true, true); AddText($text); if ($nav) { AddNavigation(); } } }
function IndexFeedBackSend() { $err = array(); if (!isset($_POST['name']) || !isset($_POST['email']) || !isset($_POST['subject']) || !isset($_POST['department']) || !isset($_POST['message']) || !isset($_POST['feedback_form'])) { GO(Ufu('index.php')); } else { if ($_POST['name'] != '') { $name = SafeDB($_POST['name'], 250, str); } else { $err[] = 'Пожалуйста, укажите Ваше имя!'; } if ($_POST['email'] != '') { $email = SafeDB($_POST['email'], 50, str); } else { $err[] = 'Пожалуйста, укажите Ваш действительный адрес E-mail!'; } if ($_POST['subject'] != '') { $subject = SafeDB($_POST['subject'], 250, str, false, false, false); } else { $err[] = 'Пожалуйста, введите тему сообщения!'; } // Проверяем капчу if (!System::user()->isDef('captcha_keystring') || System::user()->Get('captcha_keystring') != $_POST['keystr']) { $err[] = 'Вы ошиблись при вводе кода с картинки.'; } if ($_POST['department'] != '') { $department = SafeEnv($_POST['department'], 11, int); System::database()->Select('feedback', "`active`='1' and `id`='{$department}'"); if (System::database()->NumRows() > 0) { $dep = System::database()->FetchRow(); $dep_email = SafeDB($dep['email'], 255, str); $department = SafeDB($dep['name'], 255, str); } else { $err[] = 'Департамент больше не существует или обратная связь с этим департаментом отключена.'; } } else { $err[] = 'Пожалуйста, выберите департамент!'; } if ($_POST['message'] != '') { $message = SafeDB($_POST['message'], 65535, str, false, false, false); } else { $err[] = 'Пожалуйста, введите сообщение!'; } } $size = $_FILES['attach']['size']; // / 1024; if ($_FILES['attach']['error'] == UPLOAD_ERR_OK && $size >= System::config('feedback/max_filesize')) { $err[] = 'Слишком большой размер файла.'; } if (count($err) == 0) { $mail = LmEmailExtended::Instance(); $mail->SetTo($dep_email, Cp1251ToUtf8($department)); $mail->SetFrom($email, Cp1251ToUtf8($name)); $mail->SetSubject(Cp1251ToUtf8($subject)); $text = Indent("\n\t\t\tЗдравствуйте!\n\n\t\t\tС помощью формы обратной связи на сайте \"" . System::config('general/site_name') . "\"\n\t\t\tвам было отправлено сообщение.\n\n\t\t\tДепартамент: {$department}\n\t\t\tИмя: {$name}\n\t\t\tE-mail: {$email}\n\t\t\tТема сообщения: {$subject}\n\t\t\tДата отправки: " . TimeRender(time(), true, false) . "\n\t\t\tСообщение: {$message}\n\t\t"); $mail->AddTextPart(Cp1251ToUtf8($text)); if ($_FILES['attach']['error'] == UPLOAD_ERR_OK) { $mail->AddAttachmentPart(file_get_contents($_FILES['attach']['tmp_name']), $_FILES['attach']['name']); } if ($mail->Send()) { System::site()->AddTextBox('Обратная связь', '<div style="text-align: center;">Ваше сообщение успешно отправлено!</div>'); } else { System::site()->AddTextBox('Обратная связь', '<div style="text-align: center;">При отправке вашего сообщения произошла ошибка, повторите попытку или обратитесь к администратору.</div>'); } } else { $text = 'Сообщение не отправлено:<br /><ul>'; foreach ($err as $error) { $text .= '<li>' . $error . '</li>'; } $text .= '</ul>'; System::site()->AddTextBox('Ошибка', $text); IndexFeedBackForm(); } }
function AdminSmilesEditSmile() { global $smilies_dir, $mod; System::admin()->AddJS(Indent(' SelectSmile = function(){ var selected = $("#smile_file option:selected"); $("#smile_image").prop("src", "' . $smilies_dir . '"+selected.val()); $("#smile_code").val(selected.attr("code")); $("#smile_desc").val(selected.attr("description")); }; ')); $id = 0; $file = ''; $code = ''; $desc = ''; $enabled = true; $box_title = 'Добавить смайлик'; $submit = 'Добавить'; if (isset($_GET['id'])) { $id = SafeEnv($_GET['id'], 11, int); System::database()->Select('smilies', "`id`='{$id}'"); $smile = System::database()->FetchRow(); $file = $smile['file']; $code = SafeDB($smile['code'], 255, str); $desc = SafeDB($smile['desc'], 255, str); $enabled = SafeDB($smile['enabled'], 1, bool); $submit = 'Сохранить'; $box_title = 'Редактирование смайлика'; System::admin()->AddOnLoadJS('$("#smile_image").prop("src", "' . $smilies_dir . '"+$("#smile_file option:selected").val());'); } else { System::admin()->AddOnLoadJS('SelectSmile();'); } AddCenterBox($box_title); $smilies = System::database()->Select('smilies'); $xor = array(); if ($id == 0) { $xor =& $smilies; } else { foreach ($smilies as $smile) { if ($smile['id'] != $id) { $xor[] = $smile; } } } $smilies_data = AdminSmiliesGetData($file, $xor); if ($id == 0 && count($smilies_data) == 0) { System::admin()->Highlight('Загрузите изображения смайликов в папку <b>' . $smilies_dir . '</b> для добавления.'); return; } FormRow('Изображение', System::site()->Select('file', $smilies_data, false, 'onchange="SelectSmile()" id="smile_file" class="autofocus"')); FormRow('Предпросмотр', '<img id="smile_image">'); FormRow('Код', System::site()->Edit('code', $code, false, 'style="width: 200px;" id="smile_code"')); FormRow('Описание', System::site()->Edit('desc', $desc, false, 'style="width: 200px;" id="smile_desc"')); FormRow('Показывать', System::admin()->Select('indexview', GetEnData($enabled, 'Да', 'Нет'))); AddForm('<form name="newsmile" action="' . $mod . '&a=save' . ($id != 0 ? '&id=' . $id : '') . '" method="post">', System::site()->Button('Отмена', 'onclick="history.go(-1)"') . System::site()->Submit($submit)); }
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 AdminAdminMenuEditor() { UseScript('jquery'); System::admin()->AddJS(Indent(<<<JS \t\tSelectLinkType = function(type, first){ \t\t\t\$('.aaml').hide(); \t\t\tif(first){ \t\t\t\t\$('.aaml_'+type).show(); \t\t\t}else{ \t\t\t\t\$('.aaml_'+type).fadeIn(1000); \t\t\t} \t\t}; \t\tSelectModule = function(mod){ \t\t\t\tvar mod = \$(mod).find('option:selected').attr('title'); \t\t\t\t\$('#item_title').val(mod).focus(); \t\t}; JS )); $id = -1; $parent = 0; if (isset($_GET['parent'])) { $parent = SafeEnv($_GET['parent'], 11, int); } $module = ''; $title = ''; $icon = ''; $admin_link = ''; $external_link = ''; $blank = false; $js = ''; $type = 'admin'; //(admin|external|js|node|delimiter) $enabled = true; if (isset($_GET['id'])) { $id = SafeEnv($_GET['id'], 11, int); System::database()->Select('adminmenu', "`id`='{$id}'"); $item = System::database()->FetchRow(); $parent = SafeDB($item['parent'], 11, int); $module = SafeDB($item['module'], 255, str); $title = SafeDB($item['title'], 255, str); $icon = SafeDB($item['icon'], 255, str); $admin_link = SafeDB($item['admin_link'], 255, str); $external_link = SafeDB($item['external_link'], 255, str); $blank = SafeDB($item['blank'], 1, bool); $js = SafeDB($item['js'], 0, str); $type = SafeDB($item['type'], 255, str); $enabled = SafeDB($item['enabled'], 1, bool); $form_title = 'Редактирование элемента'; $button = 'Сохранить'; } else { $form_title = 'Добавить элемент'; $button = 'Добавить'; } System::admin()->AddOnLoadJS("SelectLinkType('{$type}', true);"); $items_db = System::database()->Select('adminmenu', "`type`<>'delimiter'"); $items_tree = new Tree($items_db); $parent_data = $items_tree->GetCatsData($parent, false, true, $id, true); $modules_db = System::database()->Select('modules'); $modules_data = array(); System::admin()->DataAdd($modules_data, '', '', '' == $module); foreach ($modules_db as $mod) { System::admin()->DataAdd($modules_data, $mod['folder'], $mod['name'], $mod['folder'] == $module); } $types_data = array(); $types_av = array('admin' => 'Внутренняя ссылка', 'external' => 'Внешняя ссылка', 'js' => 'JavaScript', 'node' => 'Категория', 'delimiter' => 'Разделитель'); foreach ($types_av as $t => $c) { System::admin()->DataAdd($types_data, $t, $c, $t == $type); } System::admin()->FormRow('Родительский элемент', System::admin()->Select('parent', $parent_data, false, $parent == 0 ? 'class="autofocus"' : '')); System::admin()->FormRow('Модуль', System::admin()->Select('module', $modules_data, false, 'onchange="SelectModule(this);"' . ($parent != 0 ? ' class="autofocus"' : ''))); System::admin()->FormRow('Заголовок', System::site()->Edit('title', $title, false, 'id="item_title" style="width:400px;" maxlength="255"')); System::admin()->FormRow('Иконка (16x16)', System::site()->Edit('icon', $icon, false, 'style="width:400px;" maxlength="255"')); System::admin()->FormRow('Тип', System::admin()->Select('type', $types_data, false, 'onchange="SelectLinkType(this.value);"')); System::admin()->FormRow('Внутренняя ссылка', System::site()->Edit('admin_link', $admin_link, false, 'style="width:400px;" maxlength="255"'), 'class="aaml aaml_admin"'); System::admin()->FormRow('Внешняя ссылка', System::site()->Edit('external_link', $external_link, false, 'style="width:400px;" maxlength="255"'), 'class="aaml aaml_external"'); System::admin()->FormRow('Открыть ссылку в новом окне/вкладке', System::admin()->Select('blank', GetEnData($blank, 'Да', 'Нет')), 'class="aaml aaml_external"'); System::admin()->FormTextRow('JavaScript', System::site()->TextArea('js', $js, 'style="width:400px;height:100px;"'), 'class="aaml aaml_js"'); System::admin()->FormRow('Включить', System::admin()->Select('enabled', GetEnData($enabled, 'Да', 'Нет'))); System::admin()->AddCenterBox($form_title); System::admin()->AddForm('<form action="' . ADMIN_FILE . '?exe=adminmenu&a=save' . ($id != -1 ? '&id=' . $id : '') . '" method="post">', System::site()->Button('Отмена', 'onclick="history.go(-1)"') . System::site()->Submit($button)); }
function AdminExtensionsInstall() { global $db, $config, $site; // Для обратной совместимости $count = SafeEnv($_POST['count'], 11, int); $new_installed = array(); for ($i = 0; $i < $count; $i++) { if (isset($_POST['install_' . $i])) { $type = $_POST['type_' . $i]; $folder = RealPath2($_POST['folder_' . $i], 255, str); switch ($type) { case EXT_PLUGIN: $group = ''; $group_info = null; if (isset($_POST['group_' . $i])) { $group = $_POST['group_' . $i]; $group_info = ExtLoadInfo(System::config('plug_dir') . $group); } $path = RealPath2(System::config('plug_dir') . $group . '/' . $folder); $info = ExtLoadInfo($path, $group_info); if ($info === false) { continue; } if (isset($info['1.3'])) { // Установка старой версии плагина $function = ''; if (isset($info['function'])) { $function = $info['function']; } $type = ''; if (isset($info['function'])) { $type = $info['function']; } ExtAddPlugin($group, $folder, $info['function'], $info['type']); if (is_file($path . '/install.php')) { require $path . '/install.php'; } $new_installed[] = $info; } else { if (is_file($path . '/install.php')) { // Наличие install.php обязательно require $path . '/install.php'; $new_installed[] = $info; } } Audit('Расширения: Установка плагина: ' . $group . '/' . $folder); break; case EXT_BLOCK: $path = RealPath2(System::config('blocks_dir') . $folder); $info = ExtLoadInfo($path); if ($info === false) { continue; } require $path . '/install.php'; $new_installed[] = $info; Audit('Расширения: Установка блока: ' . $folder); break; case EXT_MODULE: $path = RealPath2(System::config('mod_dir') . $folder); $info = ExtLoadInfo($path); if ($info === false) { continue; } require $path . '/install.php'; if (isset($info['1.3'])) { // Добавляем пункт меню $folder = SafeEnv($folder, 255, str); $mod_name = SafeEnv($info['name'], 255, str); AdminMenuAddModule($mod_name, $folder); } $new_installed[] = $info; Audit('Расширения: Установка модуля: ' . $folder); break; case EXT_TEMPLATE: // Установка тем оформления происходит автоматически $path = RealPath2(System::config('tpl_dir') . $folder); $info = ExtLoadInfo($path); if ($info === false) { $info = array('name' => $folder, 'description' => '', 'author' => '', 'site' => '', 'version' => '1.0', 'admin' => false); } $admin = isset($info['admin']) && $info['admin'] ? '1' : '0'; ExtAddTemplate($info['name'], $folder, $admin); $new_installed[] = $info; Audit('Расширения: Установка шаблона: ' . $folder); break; } } } $html = ''; $html .= '<div style="border: 1px #cfcfcf solid; width: 50%; background-color: #fff; margin-bottom: 5px;">'; if (count($new_installed) > 0) { foreach ($new_installed as $info) { $html .= Indent(' <table style="width: 100%;"> <tr> <td style="padding: 5px;">' . SafeDB($info['name'], 255, str) . '</td> <td style="width: 120px; padding: 5px;"><img src="images/admin/accept.png" style="vertical-align: middle;" /> Установлено</td> </tr> </table> '); } $html .= '</div>' . System::admin()->Button('Назад', 'onclick="history.go(-1);"') . System::admin()->Button('Далее', "onclick=\"Admin.LoadPage('" . ADMIN_FILE . "?exe=extensions');\""); System::cache()->Clear('config'); } else { $html .= '<div style="padding: 5px;">Вы не выбрали расширения для установки. Нажмите "назад" и отметьте галочками расширения которые нужно установить.</div>'; $html .= '</div>' . System::admin()->Button('Назад', 'onclick="history.go(-1);"'); } System::admin()->AddTextBox('Установка расширений', $html); }
function AdminPollsEditor() { global $editpolls; if (!$editpolls) { System::admin()->AccessDenied(); } $view = 4; $answers = array(); if (isset($_GET['id'])) { //Редактирование $title = 'Редактирование опроса'; $btitle = 'Сохранить изменения'; $id = SafeEnv($_GET['id'], 11, int); System::database()->Select('polls', "`id`='{$id}'"); $p = System::database()->FetchRow(); $poll = SafeDB($p['question'], 255, str); $desc = SafeDB($p['description'], 255, str); $showinblock = SafeDB($p['showinblock'], 1, int); $multianswers = SafeDB($p['multianswers'], 1, int); //Ответы $answers = unserialize($p['answers']); $allow_comments = SafeDB($p['allow_comments'], 1, int); $active = $p['active']; $view = SafeDB($p['view'], 1, int); $uid = '&id=' . $id; } else { //Добавление $title = 'Добавить опрос'; $btitle = 'Добавить'; $poll = ''; $desc = ''; $showinblock = true; $multianswers = false; $answers[] = array('Вариант ответа 1', '', '0'); $answers[] = array('Вариант ответа 2', '', '0'); $allow_comments = true; $active = true; $uid = ''; } FormRow('Вопрос', System::site()->Edit('poll', $poll, false, 'maxlength="250" style="width:400px;" class="autofocus"')); FormRow('Описание', System::site()->Edit('desc', $desc, false, 'maxlength="250" style="width:400px;"')); FormRow('Показывать в блоке', System::site()->Select('showinblock', GetEnData($showinblock, 'Да', 'Нет'))); FormRow('Мультиответы', System::site()->Select('multianswers', GetEnData($multianswers, 'Да', 'Нет'))); $answers_js = ''; foreach ($answers as $answer) { $answers_js .= ",['" . HtmlChars($answer[0], ENT_QUOTES) . "', '" . HtmlChars($answer[1], ENT_QUOTES) . "', " . SafeDB($answer[2], 11, int) . "]"; } $answers_js = '[' . substr($answers_js, 1) . ']'; // Выводим поле для редактирования ответов System::admin()->AddOnLoadJS(Indent(' if(!("map" in Array.prototype)) Array.prototype.map = function(mapper, that){ var other = new Array(this.length); for(var i=0, n=this.length; i<n; i++){ if(i in this){ other[i] = mapper.call(that, this[i], i, this); } } return other; }; answersdata = ' . $answers_js . '; tableAddRow = function(answer, color, voices){ var tr = $("<tr>"); var answerinput = $("<input>", {type: "text", name: "answer[]", "class": "fd_answer"}).val(answer).css("width", "400px"); $("<td>").append(answerinput).appendTo(tr); $("<td>").append($("<input>", {type: "text", name: "color[]", "class": "fd_color"}).val(color).css("width", "80px")).appendTo(tr); $("<td>").append($("<input>", {type: "text", name: "voices[]", "class": "fd_voices"}).val(voices).css("width", "50px").css("text-align", "right")).appendTo(tr); var td_delete = $("<td>").appendTo(tr); $("<a>", {"class": "button", html: "<img src=\\"images/admin/delete.png\\">", href: "#", title: "Удалить"}).click(function(){ tr.remove(); return false; }).appendTo(td_delete); tr.appendTo($("#answers_table tbody")); answerinput.focus(); }; AddPollAnswer = function(){ tableAddRow("", "", "0"); }; answersdata.map(function(item){ tableAddRow(item[0], item[1], item[2]); }); $("#answers_table tbody").sortable(); ')); FormRow('Ответы', Indent(' <table cellspacing="0" cellpadding="0" class="cfgtable" id="answers_table"> <thead> <tr> <th style="width: 400px;">Ответ</th> <th style="width: 80px;">Цвет</th> <th style="width: 50px;">Ответы</th> <th style="width: 40px;"> </th> </tr> </thead> <tbody></tbody> </table> <div style="float: right;">' . System::admin()->SpeedConfirmJs('Добавить ответ', 'AddPollAnswer();', 'images/admin/plus.png', '', true) . '</div> ')); FormRow('Разрешить комментарии', System::site()->Select('allow_comments', GetEnData($allow_comments, 'Да', 'Нет'))); FormRow('Включить', System::site()->Select('active', GetEnData($active, 'Да', 'Нет'))); FormRow('Кто может отвечать', System::site()->Select('view', GetUserTypesFormData($view))); AddCenterBox($title); AddForm('<form action="' . ADMIN_FILE . '?exe=polls&a=save' . $uid . '" method="post">', System::site()->Button('Отмена', 'onclick="history.go(-1)"') . System::site()->Submit($btitle)); }