function IndexForumSubscription() { global $forum_lang; $forums_tree = ForumTree::Instance(); // Проверки на доступ if (CheckGet('topic')) { // Тема $topic_id = SafeEnv($_GET['topic'], 11, int); System::database()->Select('forum_topics', "`id`='{$topic_id}'"); if (System::database()->NumRows() > 0) { $topic = System::database()->FetchRow(); } else { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_access_category']); return; } if ($topic['delete'] == '1') { // Тема на удалении System::site()->AddTextBox($forum_lang['error'], $forum_lang['topic_basket'] . '.' . $forum_lang['no_topic_basket_edit']); return; } if ($topic['close_topics'] == '1') { // Тема закрыта System::site()->AddTextBox($forum_lang['error'], $forum_lang['topic_close_for_discussion'] . '.' . $forum_lang['no_create_new_message_current_topic_add']); return; } // Форум $forum_id = SafeEnv($topic['forum_id'], 11, int); if (!isset($forums_tree->IdCats[$forum_id])) { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_data']); return; } $forum_config = $forums_tree->GetForumConfigRecursive($forum_id); if (!$forum_config['access']) { // Доступ System::site()->AddTextBox($forum_lang['error'], $forum_config['access_reason']); return; } elseif (!$forum_config['new_message_email']) { // Разрешено ли подписываться на новые сообщения (+ защита от гостей) System::site()->AddTextBox($forum_lang['error'], $forum_config['add_post_reason']); return; } } else { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_data']); return; } Forum_Subscription($topic_id); // Подписка (обратное действие, если пользователь уже подписан) GO(Ufu('index.php?name=forum&op=showtopic&topic=' . $topic_id . '&view=lastpost', 'forum/topic{topic}-new.html')); }
function IndexForumCloseTopic() { if (!System::user()->isAdmin()) { HackOff(); return; } if (CheckGet('topic')) { $topic_id = SafeEnv($_GET['topic'], 11, int); } else { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_data']); return; } System::database()->Select('forum_topics', "`id`='{$topic_id}'"); $topic = System::database()->FetchRow(); $forum_id = SafeDB($topic['forum_id'], 11, int); System::database()->Update('forum_topics', "`close_topics`='1'", "`id`='{$topic_id}'"); GO(Ufu('index.php?name=forum&op=showforum&forum=' . $forum_id, 'forum/{forum}/')); }
function IndexForumAddPost() { global $forum_lang; $forums_tree = ForumTree::Instance(); // Проверки на доступ if (CheckGet('topic')) { // Тема $topic_id = SafeEnv($_GET['topic'], 11, int); System::database()->Select('forum_topics', "`id`='{$topic_id}'"); if (System::database()->NumRows() > 0) { $topic = System::database()->FetchRow(); } else { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_access_category']); return; } if ($topic['delete'] == '1') { // Тема на удалении System::site()->AddTextBox($forum_lang['error'], $forum_lang['topic_basket'] . '.' . $forum_lang['no_topic_basket_edit']); return; } if ($topic['close_topics'] == '1') { // Тема закрыта System::site()->AddTextBox($forum_lang['error'], $forum_lang['topic_close_for_discussion'] . '.' . $forum_lang['no_create_new_message_current_topic_add']); return; } // Форум $forum_id = SafeEnv($topic['forum_id'], 11, int); if (!isset($forums_tree->IdCats[$forum_id])) { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_data']); return; } $forum = $forums_tree->IdCats[$forum_id]; $forum_config = $forums_tree->GetForumConfigRecursive($forum_id); if (!$forum_config['access']) { // Доступ System::site()->AddTextBox($forum_lang['error'], $forum_config['access_reason']); return; } elseif (!$forum_config['add_post']) { // Разрешено ли добавлять новые сообщения (+ защита от гостей) System::site()->AddTextBox($forum_lang['error'], $forum_config['add_post_reason']); return; } } else { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_data']); return; } // Добавляем сообщение if (!CheckPost('text') || strlen($_POST['text']) == 0) { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_data']); return; } $name = System::user()->Get('u_name'); $email = System::user()->Get('u_email'); $hideemail = System::user()->Get('u_hideemail'); $site = System::user()->Get('u_homepage'); $icq = System::user()->Get('u_icq'); $uid = System::user()->Get('u_id'); $text = SafeEnv($_POST['text'], 0, str); $vals = Values('', $topic_id, $uid, time(), $name, $site, $email, $hideemail, $icq, $text, getip(), 0); System::database()->Insert('forum_posts', $vals); // Обновляем время прочтения темы автором сообщения $user_id = System::user()->Get('u_id'); System::database()->Delete('forum_topics_read', "`tid`='{$topic_id}' and `mid`='{$user_id}'"); $time = time(); $vals = "'{$user_id}','{$topic_id}','{$time}'"; System::database()->Insert('forum_topics_read', $vals); // Информация о последнем сообщении в теме и форуме $forum['posts'] = (int) $forum['posts'] + 1; $topic['posts'] = (int) $topic['posts'] + 1; IndexForumSetLastPostInfo($forum, $topic); // Добавляем очков пользователю System::user()->ChargePoints(System::config('points/forum_post')); // Увеличиваем счётчик сообщений пользователя ForumCalcUserCounters(1); // Делаем рассылку подписчикам на эту тему Forum_Subscription_Send($topic_id); // Очищаем кэш форума ForumCacheClear(); GO(Ufu('index.php?name=forum&op=showtopic&topic=' . $topic_id . '&view=lastpost#last', 'forum/topic{topic}-new.html')); }
case 'delcat': if (!$edit_cats) { System::admin()->AccessDenied(); } if (AdminGalleryGetTree()->DeleteCat(SafeEnv($_GET['id'], 11, int))) { GO(ADMIN_FILE . '?exe=gallery&a=cats'); } break; ////////////////// Настройки ////////////////// Настройки case 'config': if (!$edit_conf) { System::admin()->AccessDenied(); } System::admin()->AddCenterBox('Настройки модуля "Фотогалерея"'); if (CheckGet('saveok')) { System::admin()->Highlight('Настройки сохранены.'); } System::admin()->ConfigGroups('gallery'); System::admin()->AddConfigsForm(ADMIN_FILE . '?exe=gallery&a=configsave'); break; case 'configsave': if (!$edit_conf) { System::admin()->AccessDenied(); } System::admin()->SaveConfigs('gallery'); Audit('Фотогалерея: Изменение настроек модуля'); GO(ADMIN_FILE . '?exe=gallery&a=config&saveok'); break; //////// ////////
function IndexForumDeletePost() { global $forum_lang; if (!System::user()->isAdmin() || !CheckGet('topic', 'post', 'ok')) { HackOff(); return; } if (isset($_GET['page']) && $_GET['page'] > 1) { $page = '&page=' . SafeDB($_GET['page'], 11, int); $page_ufu = '-{page}'; } else { $page = ''; $page_ufu = ''; } // Подтверждение на удаление if (!isset($_GET['ok']) || !isset($_POST['text']) && System::config('forum/basket') || $_GET['ok'] == '0') { $text = '<br>' . $forum_lang['delete_post'] . '?'; System::site()->AddTextBox($forum_lang['forum'], '<p align="center">' . $text . '</p>'); System::site()->AddTemplatedBox('', 'module/forum_delete_post.html'); System::site()->AddBlock('delete_form', true, false, 'form'); $vars = array(); $vars['basket'] = System::config('forum/basket'); $vars['url'] = 'index.php?name=forum&op=deletepost&topic=' . SafeDB($_GET['topic'], 11, int) . '&post=' . SafeDB($_GET['post'], 11, int) . $page . '&ok=1'; // Без UFU System::site()->Blocks['delete_form']['vars'] = $vars; return; } // Сообщение $post_id = SafeEnv($_GET['post'], 11, int); System::database()->Select('forum_posts', "`id`='{$post_id}'"); if (System::database()->NumRows() == 0) { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_post']); return; } $post = System::database()->FetchRow(); if ($post['delete'] == '1') { // На удалении System::site()->AddTextBox($forum_lang['error'], $forum_lang['post_basket']); return; } // Тема $topic_id = SafeEnv($_GET['topic'], 11, int); System::database()->Select('forum_topics', "`id`='{$topic_id}'"); if (System::database()->NumRows() == 0) { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_topic']); return; } $topic = System::database()->FetchRow(); if ($topic['delete'] == '1') { // Тема на удалении System::site()->AddTextBox($forum_lang['error'], $forum_lang['topic_basket']); return; } // Форум $forum_id = SafeEnv($topic['forum_id'], 11, int); System::database()->Select('forums', "`id`='{$forum_id}'"); if (System::database()->NumRows() == 0) { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_forum']); return; } $forum = System::database()->FetchRow(); // Удаление поста if (System::config('forum/basket')) { // Удаляем сообщение в корзину $reason = ''; if (isset($_POST['text'])) { $reason = SafeEnv($_POST['text'], 255, str); } Moderation_Do_Basket_Post($post_id, $reason); } else { ForumAdminDeletePost($post_id); } // Обновляем тему $topic_posts = (int) $topic['posts'] - 1; if ($topic_posts < 0) { $topic_posts = 0; } $topic_set = "`posts`='{$topic_posts}'"; $topic_extra_set = false; // Удаляется последний пост в теме (нужно ли обновлять последний пост в форуме) if ($topic['last_post'] == $post['public'] && $topic['last_poster_id'] == $post['user_id']) { $topic_extra_set = true; $topic_set = ForumSetLastPost($topic_id, $topic_set, true); } System::database()->Update('forum_topics', $topic_set, "`id`='{$topic_id}'"); // Обновляем форум $forum_posts = (int) $forum['posts'] - 1; if ($forum_posts < 0) { $forum_posts = 0; } $forum_set = "`posts`='{$forum_posts}'"; if ($topic_extra_set) { // Только если удален последний пост в теме $forum_set = ForumSetLastTopic($forum_id, $forum_set, true); } System::database()->Update('forums', $forum_set, "`id`= '{$forum_id}'"); // Очищаем кэш форума ForumCacheClear(); GO(Ufu('index.php?name=forum&op=showtopic&topic=' . $topic_id . $page, 'forum/topic{topic}' . $page_ufu . '.html')); }
function IndexForumDeleteTopic() { global $forum_lang; if (!System::user()->isAdmin() || !CheckGet('topic', 'ok')) { HackOff(); return; } $topic_id = SafeEnv($_GET['topic'], 11, int); // Подтверждение на удаление if (!isset($_GET['ok']) || !isset($_POST['text']) && System::config('forum/basket') || $_GET['ok'] == '0') { System::database()->Select('forum_topics', "`id`='" . SafeEnv($_GET['topic'], 11, int) . "'"); $topic = System::database()->FetchRow(); $text = $forum_lang['delete_topic'] . ' "' . SafeDB($topic['title'], 255, str) . '"?'; System::site()->AddTextBox($forum_lang['forum'], '<p align="center">' . $text . '</p>'); System::site()->AddTemplatedBox('', 'module/forum_delete_post.html'); System::site()->AddBlock('delete_form', true, false, 'form'); $vars = array(); $vars['basket'] = System::config('forum/basket') == true; $vars['url'] = 'index.php?name=forum&op=deletetopic&topic=' . SafeEnv($_GET['topic'], 11, int) . '&ok=1'; // Без UFU System::site()->Blocks['delete_form']['vars'] = $vars; return; } // Вытаскиваем тему System::database()->Select('forum_topics', "`id`='{$topic_id}'"); if (System::database()->NumRows() == 0) { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_topic']); return; } $topic = System::database()->FetchRow(); if ($topic['delete'] == '1') { // Удалена в корзину System::site()->AddTextBox($forum_lang['error'], $forum_lang['topic_basket']); return; } // Удаление if (System::config('forum/basket')) { // Удаляем тему в корзину $reason = ''; if (isset($_POST['text'])) { $reason = SafeEnv($_POST['text'], 255, str); } Moderation_Do_Basket_Topic($topic_id, $reason); } else { ForumAdminDeleteTopic($topic_id); } // Форум (Изменяем счетчики количества тем и сообщений, устанавливаем информацию о последнем посте) $forum_id = SafeEnv($topic['forum_id'], 11, int); System::database()->Select('forums', "`id`='{$forum_id}'"); if (System::database()->NumRows() == 0) { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_forum']); return; } $forum = System::database()->FetchRow(); // Значения счётчиков форума $forum_topics = (int) $forum['topics'] - 1; if ($forum_topics < 0) { $forum_topics = 0; } $forum_posts = (int) $forum['posts'] - (int) $topic['posts']; if ($forum_posts < 0) { $forum_posts = 0; } $forum_set = "`topics`='{$forum_topics}',`posts`='{$forum_posts}'"; // Устанавливаем информацию о последнем посте в форуме if ($forum['last_id'] == $topic_id) { // Только если удалена тема с последним постом $forum_set = ForumSetLastTopic($forum_id, $forum_set, true); } System::database()->Update('forums', $forum_set, "`id`= '{$forum_id}'"); // Очищаем кэш форума ForumCacheClear(); GO(Ufu('index.php?name=forum&op=showforum&forum=' . $forum_id, 'forum/{forum}/')); }
function IndexForumAddTopic() { global $forum_lang; $forums_tree = ForumTree::Instance(); // Проверки на доступ if (CheckGet('forum') && CheckPost('topic_title', 'text') && isset($forums_tree->IdCats[$_GET['forum']])) { $forum_id = SafeEnv($_GET['forum'], 11, int); $forum = $forums_tree->IdCats[$forum_id]; $forum_config = $forums_tree->GetForumConfigRecursive($forum_id); if (!$forum_config['access']) { // Доступ System::site()->AddTextBox($forum_lang['error'], $forum_config['access_reason']); return; } elseif (!$forum_config['add_topic']) { // Разрешено ли добавлять новые темы System::site()->AddTextBox($forum_lang['error'], $forum_config['add_topic_reason']); return; } } else { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_data']); return; } if (!CheckPost('text') || strlen($_POST['text']) == 0) { System::site()->AddTextBox($forum_lang['error'], $forum_lang['no_data']); return; } $user_id = System::user()->Get('u_id'); $user_name = System::user()->Get('u_name'); $time = time(); // Добавляем топик // TODO: Зачем здесь пустое поле? $uniq_code = ''; //GenRandomString(12, '1234567890'); $topic_title = SafeEnv($_POST['topic_title'], 255, str); if (strlen($topic_title) == 0) { System::site()->AddTextBox($forum_lang['error'], $forum_lang['no_title_topic']); return; } $topic_values = Values('', $forum_id, $topic_title, '1', '0', '0', $time, $user_id, $user_name, $time, '0', '', $uniq_code, 0, 0, 0); System::database()->Insert('forum_topics', $topic_values); $topic_id = System::database()->GetLastId(); $topic = System::database()->Select('forum_topics', "`id`='{$topic_id}'"); $topic = $topic[0]; // Добавляем сообщение $email = System::user()->Get('u_email'); $hideemail = System::user()->Get('u_hideemail'); $site = System::user()->Get('u_homepage'); $icq = System::user()->Get('u_icq'); $text = SafeEnv($_POST['text'], 0, str); System::database()->Insert('forum_posts', Values('', $topic_id, $user_id, time(), $user_name, $site, $email, $hideemail, $icq, $text, getip(), 0)); // Добавляем очков пользователю System::user()->ChargePoints(System::config('points/forum_post')); // Увеличиваем счётчик сообщений и тем пользователя ForumCalcUserCounters(1, 1); $forum['topics'] = SafeDB($forum['topics'], 11, int) + 1; IndexForumSetLastPostInfo($forum, $topic); // Добавляем метку о прочтении темы автором топика System::database()->Insert('forum_topics_read', Values($user_id, $topic_id, $time)); // Очищаем кэш ForumCacheClear(); GO(Ufu('index.php?name=forum&op=showforum&forum=' . $forum_id, GetSiteUrl() . 'forum/{forum}/')); }
function IndexForumSavePost() { global $forum_lang; if (!System::user()->Auth) { System::site()->AddTextBox($forum_lang['forum'], '<p align="center">' . $forum_lang['error_auth'] . '</p>'); return; } if (!CheckGet('post') || !CheckPost('text')) { HackOff(); return; } if (isset($_GET['page'])) { $page = '&page=' . SafeEnv($_GET['page'], 11, int); $page_ufu = '-{page}'; } else { $page = ''; $page_ufu = ''; } // Берём пост, проверяем на существование и удаление в корзину $post_id = SafeEnv($_GET['post'], 11, int); System::database()->Select('forum_posts', "`id`='{$post_id}'"); if (System::database()->NumRows() == 0) { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_post']); return; } $post = System::database()->FetchRow(); if ($post['delete'] == '1') { // Удалён в корзину System::site()->AddTextBox($forum_lang['post_basket'], '<p align="center">' . $forum_lang['post_basket_no_edit'] . '.<br><input type="button" value="' . $forum_lang['back'] . '"onclick="history.back();"></p>'); return; } // Берём тему $topic_id = SafeEnv($post['object'], 11, int); System::database()->Select('forum_topics', "`id`='" . $topic_id . "'"); if (System::database()->NumRows() == 0) { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_topic']); return; } $topic = System::database()->FetchRow(); if ($topic['delete'] == '1') { // Тема удалена в корзину System::site()->AddTextBox($forum_lang['topic_basket_current_post'], '<p align="center">' . $forum_lang['topic_basket_post'] . '.<br><input type="button" value="' . $forum_lang['back'] . '"onclick="history.back();"></p>'); return; } // Пользователи могут редактировать только свои сообщения. // Админы могут редактировать все сообщения. if (System::user()->Get('u_id') == $post['user_id'] || System::user()->isAdmin()) { // Меняем текст сообщения $post_text = SafeEnv($_POST['text'], 100000, str); // Добавляем метку об изменении сообщения $post_text .= "\n\n" . '[i]-- Изменено "' . System::user()->Name() . '": ' . TimeRender(time(), true, false) . ' --[/i]'; System::database()->Update('forum_posts', "`message`='{$post_text}'", "`id`='{$post_id}'"); // Меняем заголовок темы if (isset($_POST['title'])) { $topic_title = SafeEnv($_POST['title'], 255, str); System::database()->Update('forum_topics', "`title`='{$topic_title}'", "`id`='{$topic_id}'"); } // Очищаем кэш форума ForumCacheClear(); GO(Ufu('index.php?name=forum&op=showtopic&topic=' . $topic_id . $page . '#' . $post_id, 'forum/topic{topic}' . $page_ufu . '.html')); } else { System::site()->AddTextBox($forum_lang['forum'], '<p align="center">' . $forum_lang['no_right_comment_edit'] . '</p>'); return; } }
function AdminForumEditor() { $site = System::site(); $f_title = ''; $f_desc = ''; if (CheckGet('parent')) { $f_parent = SafeDB($_GET['parent'], 11, int); } else { $f_parent = 0; } $f_view = 4; $f_status = 1; $f_admin_theme_add = array(false, false); $f_new_message_email = array(false, true); $f_no_link_guest = array(false, false); $rang_access = 0; $rang_add_theme = 0; $rang_message = 0; $close_topic = array(false, false); if (isset($_GET['id'])) { // Редактирование $id = SafeDB($_GET['id'], 11, int); System::database()->Select('forums', "`id`='{$id}'"); $forum = System::database()->FetchRow(); $f_title = SafeDB($forum['title'], 255, str); $f_desc = SafeDB($forum['description'], 0, str); $f_parent = SafeDB($forum['parent_id'], 11, int); $f_admin_theme_add[(int) $forum['admin_theme_add']] = true; $f_new_message_email[(int) $forum['new_message_email']] = true; $f_no_link_guest[(int) $forum['no_link_guest']] = true; $rang_access = SafeDB($forum['rang_access'], 11, int); $rang_add_theme = SafeDB($forum['rang_add_theme'], 11, int); $rang_message = SafeDB($forum['rang_message'], 11, int); $close_topic[(int) $forum['close_topic']] = true; $f_view = SafeDB($forum['view'], 1, int); $f_status = SafeDB($forum['status'], 1, int); $id_param = '&id=' . $id; $b_cap = 'Сохранить изменения'; if ($f_parent == 0) { $c_cap = 'Редактирование категории'; } else { $c_cap = 'Редактирование форума'; } } else { // Добавление $f_title = ''; $f_admin_theme_add[0] = true; $f_new_message_email[1] = true; $f_no_link_guest[0] = true; $close_topic[0] = true; $id_param = ''; $b_cap = 'Добавить'; if ($f_parent == 0) { $c_cap = 'Добавить категорию'; } else { $c_cap = 'Добавить форум'; } } FormRow('Название', $site->Edit('title', $f_title, false, 'style="width:400px;" maxlength="255" class="autofocus"')); if ($f_parent != 0) { $where = ''; if (isset($_GET['id'])) { $where = " `id`<>'" . SafeEnv($_GET['id'], 11, int) . "'"; } $forums = System::database()->Select('forums', $where); $cat = false; if (count($forums) == 0) { $cat = false; } else { foreach ($forums as $forum) { if ($forum['parent_id'] == 0) { $cat = true; } } } SortArray($forums, 'order'); $tree = ForumTree::Instance($forums); $tree->NumItemsCaption = ''; $tree->TopCatName = 'Нет родительского раздела'; $data = array(); if ($cat) { $data = $tree->GetCatsDataF($f_parent, true, true); } else { $site->DataAdd($data, 0, $tree->TopCatName, true); } FormRow('Родительский раздел', $site->Select('sub_id', $data)); FormTextRow('Описание', $site->HtmlEditor('desc', $f_desc, 600, 200)); } System::admin()->FormTitleRow('Настройки форума'); $endata = array(); $site->DataAdd($endata, '1', 'Да', $f_admin_theme_add[1]); $site->DataAdd($endata, '0', 'Нет', $f_admin_theme_add[0]); FormRow('', 'Только администраторы могут создавать новые темы: ' . $site->Select('admin_theme_add', $endata)); $endata = array(); $site->DataAdd($endata, '1', 'Да', $f_no_link_guest[1]); $site->DataAdd($endata, '0', 'Нет', $f_no_link_guest[0]); FormRow('', 'Скрывать ссылки от гостей: ' . $site->Select('no_link_guest', $endata)); $endata = array(); $site->DataAdd($endata, '1', 'Да', $f_new_message_email[1]); $site->DataAdd($endata, '0', 'Нет', $f_new_message_email[0]); FormRow('', 'Разрешить подписку на уведомление о новых сообщениях в теме: ' . $site->Select('new_message_email', $endata)); $endata = array(); $site->DataAdd($endata, '1', 'Да', $close_topic[1]); $site->DataAdd($endata, '0', 'Нет', $close_topic[0]); FormRow('', 'Закрыть для обсуждения (будет доступен только просмотр): ' . $site->Select('close_topic', $endata)); System::admin()->FormTitleRow('Настройка прав доступа по рангам пользователей'); FormRow('Доступ (с меньшим рангом доступ будет закрыт)', ForumAdminGetUsersTypesComboBox('rang_access', $rang_access)); FormRow('Создание тем (с меньшим рангом темы создавать будет запрещено)', ForumAdminGetUsersTypesComboBox('rang_add_theme', $rang_add_theme)); FormRow('Создание сообщений в теме (с меньшим рангом сообщения создавать будет запрещено)', ForumAdminGetUsersTypesComboBox('rang_message', $rang_message)); System::admin()->FormTitleRow('Параметры видимости'); FormRow('Видят', $site->Select('view', GetUserTypesFormData($f_view))); FormRow('Включить', $site->Select('status', GetEnData($f_status, 'Да', 'Нет'))); FormRow('Внимание', 'Ограничения прав и видимости действует на все дочерние форумы.'); AddCenterBox($c_cap); AddForm($site->FormOpen(ADMIN_FILE . '?exe=forum&a=forum_save' . $id_param), $site->Submit($b_cap)); }
/** * Генерирует 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; } }