function AdminUserMain() { global $user, $editing; $searchm = false; if (isset($_GET['page'])) { $page = SafeEnv($_GET['page'], 10, int); } else { $page = 1; } if (isset($_GET['show'])) { $show = $_GET['show']; } else { $show = ''; } //Пользователи online $sonline = false; $onlwhere = ''; $where = '`type`=\'2\''; if ($show == 'online') { $donline = $user->Online(); $donline = $donline['members']; $onlwhere = ''; foreach ($donline as $memb) { $onlwhere .= "or `id`='" . SafeDB($memb['u_id'], 11, int) . "'"; } $onlwhere = substr($onlwhere, 3); $sonline = true; if (count($donline) > 0) { $where = "`type`='2' and ({$onlwhere})"; $users = AdminUserGetUsers($where); } else { $users = array(); } $searchm = true; } else { $users = AdminUserGetUsers(); } //Поиск $criterion = ''; $sstr = ''; if (isset($_GET['criterion']) && isset($_GET['stext']) && $_GET['stext'] != '') { $searchm = true; $criterion = $_GET['criterion']; $sstr = SafeEnv($_GET['stext'], 255, str); switch ($criterion) { case 'nikname': AdminUserQueryStristrFilter($users, $sstr, 'name'); break; case 'email': AdminUserQueryStristrFilter($users, $sstr, 'email'); break; case 'rname': AdminUserQueryStristrFilter($users, $sstr, 'truename'); break; case 'age': AdminUserQueryStristrFilter($users, $sstr, 'age'); break; case 'city': AdminUserQueryStristrFilter($users, $sstr, 'city'); break; case 'site': AdminUserQueryStristrFilter($users, $sstr, 'url'); break; case 'icq': AdminUserQueryStristrFilter($users, $sstr, 'icq'); break; case 'gmt': AdminUserQueryStristrFilter($users, $sstr, 'timezone'); break; case 'active': AdminUserQueryStristrFilter($users, $sstr, 'active'); break; case 'points': AdminUserQueryStristrFilter2($users, $sstr, 'points'); break; case 'ip': AdminUserQueryStristrFilter($users, $sstr, 'lastip'); break; } Audit('Пользователи: Поиск пользователей, критерий: "' . $criterion . '", запрос: "' . $sstr . '"'); } $sstr = strval($sstr); $showd = array(); System::site()->DataAdd($showd, 'all', 'Все пользователи', $show == ''); System::site()->DataAdd($showd, 'online', 'Пользователи OnLine', $show == 'online'); $searchd = array(); System::site()->DataAdd($searchd, 'nikname', 'Ник', $criterion == 'nikname'); System::site()->DataAdd($searchd, 'email', 'E-mail', $criterion == 'email'); System::site()->DataAdd($searchd, 'rname', 'Настоящее имя', $criterion == 'rname'); System::site()->DataAdd($searchd, 'age', 'Возраст', $criterion == 'age'); System::site()->DataAdd($searchd, 'city', 'Город', $criterion == 'city'); System::site()->DataAdd($searchd, 'site', 'Сайт', $criterion == 'site'); System::site()->DataAdd($searchd, 'icq', 'ICQ', $criterion == 'icq'); System::site()->DataAdd($searchd, 'gmt', 'Часовой пояс', $criterion == 'gmt'); System::site()->DataAdd($searchd, 'active', 'Активен', $criterion == 'active'); System::site()->DataAdd($searchd, 'points', 'Пунктов более', $criterion == 'points'); System::site()->DataAdd($searchd, 'ip', 'IP', $criterion == 'ip'); System::admin()->AddJS(' SearchUsers = function(){ var cri = "&criterion="+$("#criterion").val(); var stext = "&stext="+$("#stext").val(); var online = "&show="+$("#online").val(); Admin.LoadPage("' . ADMIN_FILE . '?exe=user"+cri+stext+online, undefined, "Идёт поиск"); } '); TAddSubTitle('Главная'); AddCenterBox('Зарегистрированные пользователи (' . count($users) . ')'); $searchtool = '<style>.ustd td{ border: none; padding: 0; }</style>'; $searchtool .= '<table cellspacing="0" cellpadding="0" border="0" class="cfgtable"><tr><td>' . "\n"; $searchtool .= '<table cellspacing="0" cellpadding="0" border="0" width="100%" class="ustd"> <tr> <td>Поиск: </td> <td>' . System::site()->Select('criterion', $searchd, false, 'id="criterion"') . ' ' . System::site()->Edit('stext', $sstr, false, 'id="stext"') . ' ' . System::site()->Select('show', $showd, false, 'id="online"') . '</td> <td>' . System::admin()->SpeedConfirmJs('Поиск', 'SearchUsers();', 'images/search.png', '', true) . '</td> </tr> </table>' . "\n"; $searchtool .= '</td></tr></table>' . "\n"; AddText($searchtool); SortArray($users, 'regdate', true); // Сортируем по дате регистрации if (count($users) > System::config('user/users_on_page')) { $navigator = new Navigation($page); $navigator->GenNavigationMenu($users, System::config('user/users_on_page'), ADMIN_FILE . '?exe=user' . ($searchm ? '&criterion=' . $criterion . '&stext=' . $sstr . '&show=' . $show : '')); $nav = true; } else { $nav = false; AddText('<br />'); } $text = ''; $text .= '<table cellspacing="0" cellpadding="0" class="cfgtable">'; $text .= '<tr><th>Ник</th><th>E-mail</th><th>Дата региcтрации</th><th>Посл. посещение</th><th>Посещений</th><th>Пунктов</th><th>Активация</th><th>IP</th><th>Функции</th></tr>'; foreach ($users as $row) { $uid = SafeDB($row['id'], 11, int); if ($row['active'] == '1') { $active = 'Да'; } elseif ($row['active'] == '0' && $row['activate'] == '') { $active = 'Нет'; } elseif ($row['active'] == '0' && $row['activate'] != '') { $active = 'Ожидается'; } $funcs = ''; if ($editing) { $funcs .= System::admin()->SpeedButton('Редактировать', ADMIN_FILE . '?exe=user&a=edituser&id=' . $uid, 'images/admin/edit.png'); $funcs .= System::admin()->SpeedButton('Удалить', ADMIN_FILE . '?exe=user&a=deluser&id=' . $uid, 'images/admin/delete.png'); // Всё верно } $text .= '<tr> <td>' . ($editing ? '<b>' . System::admin()->Link(SafeDB($row['name'], 50, str), ADMIN_FILE . '?exe=user&a=edituser&id=' . $uid) . '</b>' : SafeDB($row['name'], 50, str)) . '</td> <td>' . PrintEmail($row['email']) . '</td> <td>' . TimeRender($row['regdate']) . '</td> <td>' . TimeRender($row['lastvisit']) . '</td> <td>' . SafeDB($row['visits'], 11, int) . '</td> <td>' . SafeDB($row['points'], 11, int) . '</td> <td>' . $active . '</td> <td>' . SafeDB($row['lastip'], 20, str) . '</td> <td>' . $funcs . '</td> </tr>'; } $text .= '</table>'; AddText($text); if ($nav) { AddNavigation(); } }
function IndexForumShowForum() { global $forum_lang; $forums_tree = ForumTree::Instance(); // Параметры просмотра из GET // $forum_id // $forum // $forum_config if (isset($_GET['forum'])) { $forum_id = SafeEnv($_GET['forum'], 11, int); if (isset($forums_tree->IdCats[$forum_id])) { // Проверяем идентификатор форума и загружаем его данные $forum = $forums_tree->IdCats[$forum_id]; // Форум $forum_config = $forums_tree->GetForumConfigRecursive($forum_id); // Конфигурация просматриваемого форума } else { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_forum']); // Форум не найден return; } } else { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_forum']); // Нет параметра return; } // Проверяем доступ if (!$forum_config['access']) { System::site()->AddTextBox($forum_lang['error'], $forum_config['access_reason']); // Нет доступа в этот форум return; } // Параметры постраничной навигации if (isset($_GET['page'])) { $page = SafeEnv($_GET['page'], 11, int); } else { $page = 1; } $topics_on_page = System::config('forum/topics_on_page'); // Устанавливаем заголовок страницы System::site()->SetTitle(SafeDB($forum['title'], 255, str) . ' - ' . ($page > 1 ? $forum_lang['page'] . $page . ' - ' : '') . $forum_lang['forum']); // Объекты статистики и онлайн $statistics = ForumStatistics::Instance(); $online = ForumOnline::Instance($forum_id); // Инициализируем статистику $statistics->Initialize($forum_lang['statistics_cat']); // Загружаем информацию по топикам в $topics_data и считаем статистику (кэшировать статистику) $topics_data = ForumCacheGetTopics(); // Запрашиваем данные тем (агрегированы по форумам) $resolve_cats = $forums_tree->GetAllChildId($forum_id); // Считаем только в текущем форуме и всех подфорумах foreach ($resolve_cats as $resolve_cat) { if (!isset($topics_data[$resolve_cat])) { continue; } foreach ($topics_data[$resolve_cat] as $topic) { $statistics->hits += $topic['hits']; $statistics->AddTopicAuthor($topic['starter_id'], $topic['starter_name']); } } // Подсчитываем количество тем и постов $counters = $forums_tree->GetCountersRecursive($forum_id); $statistics->topics_count = $counters['files']; $statistics->reply_count = $counters['cats']; // Выводим подфорумы с помощью функции main (если есть) if (isset($forums_tree->Cats[$forum_id]) && count($forums_tree->Cats[$forum_id]) > 0) { ForumLoadFunction('main'); IndexForumMain($forum_id, $topics_data); // <-- IndexForumMain // Если просматриваем категорию, то топики не выводим if ($forum['parent_id'] == 0) { return; } } // Выводим хлебные крошки (нужно после IndexForumMain чтобы не выводились два раза при просмотре категории) $forums_tree->BreadCrumbsF($forum_id); // Блоки шаблона // Ссылки, Отметить все как прочитанные и показать все не прочитанные темы. $vars_is_forum_member = array(); $vars_is_forum_member['url'] = '<a href="' . Ufu('index.php?name=forum&op=markread' . ($forum_id > 0 ? '&forum=' . $forum_id : ''), 'forum/markread/' . ($forum_id > 0 ? '{forum}/' : '')) . '">' . $forum_lang['mark_all_read'] . '</a>'; $vars_is_forum_member['viewnoreadurl'] = '<a href="' . Ufu('index.php?name=forum&op=viewnoread' . ($forum_id > 0 ? '&forum=' . $forum_id : ''), 'forum/viewnoread/' . ($forum_id > 0 ? '{forum}/' : '')) . '">' . $forum_lang['viewnoread'] . '</a>'; $vars_is_forum_member['forum_id'] = $forum_id; if (!System::site()->HasBlock('is_forum_member')) { System::site()->AddBlock('is_forum_member', AccessIsResolved(2), false, 'mark'); } System::site()->SetVars('is_forum_member', $vars_is_forum_member); // Последние темы форума System::site()->AddBlock('old', true, false, 'mark'); $vars_old = array(); $vars_old['lasttopics'] = '<a href="' . Ufu('index.php?name=forum&op=lasttopics&forum=' . $forum_id, 'forum/lasttopics/{forum}/') . '">' . $forum_lang['lasttopics'] . '</a>'; System::site()->SetVars('old', $vars_old); // Заголовки (Темы, Ответов, Просмотры) System::site()->AddBlock('statistik', true, false, 'stat'); $vars_stat = array(); $vars_stat['count_read'] = ''; $cat_users_count = $online->GetCatOnlineCount($forum_id); if ($cat_users_count > 0) { $vars_stat['count_read'] = $cat_users_count > 0 ? '<small> (' . $forum_lang['online'] . ': ' . $cat_users_count . ')</small>' : ''; } System::site()->SetVars('statistik', $vars_stat); // Блок с информацией о форуме System::site()->AddBlock('forum', true, false); System::site()->SetVars('forum', IndexForumDataFilter($forum, $forum_config)); System::site()->AddBlock('forum_guest_message', true); // Блок списка топиков System::site()->AddBlock('topics', true, true, 'topic'); // Инициализируем постраничную навигацию $navigation = new Navigation($page); $navigation->FrendlyUrl = System::config('general/ufu'); // Есть ли видимые для пользователя топики $visable_topics = false; $auth = System::user()->Auth; $user_id = System::user()->Get('u_id'); $is_admin = System::user()->isAdmin(); if (!isset($topics_data[$forum_id]) || count($topics_data[$forum_id]) == 0) { // В этом форуме пока нет ни одной темы System::site()->AddBlock('no_topics', true); $navigation->DisableNavigation(); } else { // Загружаем данные корзины для видимых топиков $basket = ForumBasketGetData('forum_basket_topics'); // Загружаем данные о прочтении тем $read_data = Forum_Marker_GetReadData(); // Фильтруем топики $topics_data = $topics_data[$forum_id]; // Топики в этом форуме $topics = array(); foreach ($topics_data as $topic) { // Добавляем данные из корзины, если топик удалён в корзину (корзину тем видят только админы и пользователи-стартеры удалённых тем) $topic['status'] = ''; $topic['show_delete'] = $is_admin; if ($topic['delete'] && isset($basket[$topic['id']]) && $auth && ($is_admin || $topic['starter_id'] == $user_id)) { // Добавляем сообщение - "Удалено в корзину" $topic['status'] = ForumBasketRender($topic['id'], $topic['title'], $basket, false); $topic['show_delete'] = false; } elseif ($topic['delete']) { continue; // Удалён топик и корзина не показывается для этого пользователя } $topics[] = $topic; } unset($topics_data); // Вывод постраничной навигации $navigation->GenNavigationMenu($topics, $topics_on_page, Ufu('index.php?name=forum&op=showforum&forum=' . $forum_id, 'forum/{forum}-{page}/', true)); // Вывод тем из этой категории с постраничной навигацией foreach ($topics as $topic) { $close = false; if ($forum_config['close']) { $close = true; } // Статус прочитано $read = true; // прочитано if ($auth && (!isset($read_data[$topic['id']]) || $topic['last_post'] > $read_data[$topic['id']]['date'])) { $read = false; } $topic = ForumTopicFilterData($topic); // Фильтрация данных топика $topic['on'] = !$read; $topic['off'] = $read; // Закрытие топиков в форуме if (!$topic['close']) { $topic['close'] = $forum_config['close']; $topic['begin'] = !$forum_config['close']; } $topic['page'] = $page; $visable_topics = true; System::site()->AddSubBlock('topics', true, $topic); } System::site()->AddBlock('no_topics', !$visable_topics); } // Форма добавления топиков $show_form = $forum_config['add_topic'] && $auth; System::site()->AddBlock('topic_form', $show_form, false, 'form'); if ($show_form) { System::site()->SetVar('topic_form', 'url', Ufu('index.php?name=forum&op=addtopic&forum=' . $forum_id, 'forum/addtopic/{forum}/')); ForumSmiliesRender(); // Подключаем BBCode редактор IncludePluginsGroup('bbcode_editors'); } // Блок "Права на форуме" System::site()->AddBlock('topic_right', true, false, 'topic', 'module/forum_right.html'); $right_text = ''; if ($forum_config['add_topic']) { $right_text .= $forum_lang['create_new_topics'] . '<br />'; } else { $right_text .= $forum_lang['no_create_new_topics'] . '<br />'; $right_text .= '(' . $forum_config['add_topic_reason'] . ')<br />'; } if ($forum_config['add_post']) { $right_text .= $forum_lang['create_new_message_in_topics'] . '<br />'; } else { $right_text .= $forum_lang['no_create_new_message_in_topics'] . '<br />'; $right_text .= '(' . $forum_config['add_post_reason'] . ')<br />'; } System::site()->SetVars('topic_right', array('right' => $right_text)); // Блоки модерации ModerationForumTopicsBlocks(); // Подключаем шаблон System::site()->AddTemplatedBox('', 'module/forum_topics.html'); // Выводм блок онлайн $online->Render($forum_id, '0', $forum_lang['current_category'], 'forum_topics_online'); // Выводим статистику $statistics->Render('forum_topics_statistics'); // Быстрый переход по форумам ForumQuickTransitionBox($forum_id, $forum_lang['quick_transition']); }
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 IndexDownloadsMain() { if (isset($_GET['cat'])) { $cat = SafeEnv($_GET['cat'], 11, int); } else { $cat = 0; } if ($cat != 0) { System::site()->SetTitle('Файлы в категории ' . SafeDB(IndexDownloadsGetTree()->IdCats[$cat]['title'], 255, str)); } if (isset($_GET['page'])) { $page = SafeEnv($_GET['page'], 10, int); } else { $page = 1; } if (System::config('downloads/show_last') == '1') { IndexDownloadsGetTree()->ShowCats($cat); IndexDownloadsGetTree()->BreadCrumbs($cat); } if ($cat != 0 || System::config('downloads/show_last') == '1') { $downs = System::database()->Select('downloads', GetWhereByAccess('view', ($cat != 0 ? "`category`='{$cat}' and " : '') . "`active`='1'")); SortArray($downs, 'public', true); // Постраничная навигация $num = System::config('downloads/filesonpage'); $navigation = new Navigation($page); $nav_link = Ufu('index.php?name=downloads' . ($cat != 0 ? '&cat=' . $cat : ''), 'downloads/' . ($cat != 0 ? '{cat}/' : '') . 'page{page}/', true); $navigation->FrendlyUrl = System::config('general/ufu'); $navigation->GenNavigationMenu($downs, $num, $nav_link); if (System::database()->NumRows() > 0) { System::site()->AddTemplatedBox('', 'module/download.html'); System::site()->AddBlock('download', true, true, 'dl'); foreach ($downs as $down) { AddDownload($down); } } elseif (!isset(IndexDownloadsGetTree()->Cats[$cat]) && count(IndexDownloadsGetTree()->Cats) > 0) { System::site()->AddTextBox('', '<p align="center">В этой категории пока нет файлов.</p>'); } } }
function IndexUserlist() { System::site()->SetTitle('Список пользователей'); System::site()->BreadCrumbAdd('Список пользователей'); $page = 0; if (isset($_GET['page'])) { $page = SafeEnv($_GET['page'], 11, int); } else { $page = 1; } $users = System::database()->Select('users', "`active`='1'"); SortArray($users, 'points', true); // regdate SortArray($users, 'type', false); // type $num = System::config('user/users_on_page'); $navigation = new Navigation($page); $navigation->FrendlyUrl = System::site()->Ufu; $navigation->GenNavigationMenu($users, $num, Ufu('index.php?name=user&op=userslist', 'user/users/page{page}/', true)); System::site()->AddTemplatedBox('Список пользователей', 'module/user_list.html'); System::site()->AddBlock('userlist_th', true, false, 'title'); System::site()->Blocks['userlist_th']['vars'] = array('name' => 'Имя', 'email' => 'E-mail', 'date' => 'Дата регистрации', 'last_visit' => 'Посл. посещение', 'last' => 'Посл. посещение', 'rank' => 'Ранг/статус'); System::site()->AddBlock('userlist', true, true, 'user'); foreach ($users as $usr) { $vars = array(); $rank_stat = GetUserRank($usr['points'], $usr['type'], $usr['access']); $rank_stat = $rank_stat[0]; $vars['avatar'] = GetUserAvatar($usr['id']); $vars['avatar_small'] = GetSmallUserAvatar($usr['id'], $vars['avatar']); $vars['avatar_smallest'] = GetSmallestUserAvatar($usr['id'], $vars['avatar']); $vars['user_id'] = SafeDB($usr['id'], 11, int); $vars['url'] = Ufu('index.php?name=user&op=userinfo&user='******'id'], 11, int), 'user/{user}/info/'); $vars['name'] = SafeDB($usr['name'], 50, str); if ($usr['hideemail'] == '1') { $vars['email'] = 'Скрывается'; } else { $vars['email'] = SafeDB($usr['email'], 50, str); } $vars['date'] = TimeRender($usr['regdate'], true); $vars['lastdate'] = TimeRender($usr['lastvisit'], true); $vars['rank'] = $rank_stat; System::site()->AddSubBlock('userlist', true, $vars); } }
function IndexForumShowTopic($one_post = false) { global $forum_lang; $forums_tree = ForumTree::Instance(); // Вспомогательные переменные $user_auth = System::user()->Auth; $user_id = System::user()->Get('u_id'); $user_admin = System::user()->isAdmin(); $time = time(); $max_word_length = System::config('forum/max_word_length'); if (isset($_GET['topic'])) { $topic_id = SafeEnv($_GET['topic'], 11, int); } else { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_topic']); 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 (!$user_admin && $topic['starter_id'] == $user_id && $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; } // Проверяем доступ к форуму $forum_id = SafeEnv($topic['forum_id'], 11, int); $forum_config = $forums_tree->GetForumConfigRecursive($forum_id); // Параметры доступа на форум if (!$forum_config['access']) { System::site()->AddTextBox($forum_lang['error'], $forum_config['access_reason']); // Нет доступа в этот форум return; } // $forum_config['add_post'] - право добавлять сообщения // $forum_config['add_post_reason'] - причина запрета добавления сообщений // $forum_config['no_link_guest'] - скрывать ссылки от гостей // $forum_config['new_message_email'] - разрешить подписку на новые сообщения // Определяем следующую и предыдущую темы $topics_data = ForumCacheGetTopics(); $topics_data = $topics_data[$forum_id]; $prev_topic = null; $next_topic = null; $find = false; foreach ($topics_data as $topic_row) { if ($topic_row['id'] == $topic_id) { $find = true; continue; } if ($find) { $next_topic = $topic_row; break; } $prev_topic = $topic_row; } // Параметры постраничной навигации if (isset($_GET['page'])) { $page = SafeEnv($_GET['page'], 11, int); } else { $page = 1; } if (isset($_GET['view']) && $_GET['view'] == 'lastpost') { $lastpost = true; } else { $lastpost = false; } $posts_on_page = System::config('forum/posts_on_page'); // Обновляем метку о прочтении темы, если пользователь авторизован if ($user_auth) { System::database()->Delete('forum_topics_read', "`tid`='{$topic_id}' and `mid`='{$user_id}'"); System::database()->Insert('forum_topics_read', "'{$user_id}','{$topic_id}','{$time}'"); } // Объект онлайн $online = ForumOnline::Instance($forum_id, $topic_id); // Устанавливаем заголовок страницы $topic_title = SafeDB($topic['title'], 255, str); System::site()->SetTitle($topic_title . ($page > 1 ? ' - Страница ' . $page : '')); // Хлебные крошки $forums_tree->BreadCrumbsF($forum_id); System::site()->BreadCrumbAdd(SafeDB($topic['title'], 255, str)); // Добавляем корзину (если тема удалена в корзину) if ($topic['delete'] == '1') { $basket_topics = ForumBasketGetData('forum_basket_topics'); if (isset($basket_topics[$topic['id']])) { System::site()->AddTextBox($forum_lang['topic_basket_red'], ForumBasketRender($topic['id'], $topic['title'], $basket_topics, true)); } } // Увеличиваем счётчик просмотров System::database()->Update('forum_topics', "`hits`='" . (SafeDB($topic['hits'], 11, int) + 1) . "'", "`id`='" . $topic_id . "'"); // Инициализируем постраничную навигацию $navigation = new Navigation($page); $navigation->FrendlyUrl = System::config('general/ufu'); // Загружаем сообщения из базы данных $basket_where = ''; // Администратор (подготавливаем запрос выборки т.к. нужно знать сколько всего сообщений для постр. навигации) if ($user_auth) { if (!$user_admin) { $basket_where = " and (`delete`='0' or `user_id`='{$user_id}')"; // Пользователь } } else { $basket_where = " and `delete`='0'"; // Гость } $posts = System::database()->Select('forum_posts', ($one_post !== false ? "`id`='{$one_post}'" : "`object`='{$topic_id}'") . $basket_where); SortArray($posts, 'public', false); //Сортируем по дате // Вывод постраничной навигации if (count($posts) > $posts_on_page) { if ($lastpost) { $page = ceil(count($posts) / $posts_on_page); } $navigation->GenNavigationMenu($posts, $posts_on_page, Ufu('index.php?name=forum&op=showtopic&topic=' . $topic_id, 'forum/topic' . $topic_id . '-{page}.html', true), $page); } else { $navigation->DisableNavigation(); } // Загружаем корзину для сообщений $basket = ForumBasketGetData('forum_basket_post'); // Блок с информацией о теме System::site()->AddBlock('topic', true, false); System::site()->SetVars('topic', ForumTopicFilterData($topic)); // Блок шаблонизатора для вывода сообщений System::site()->AddBlock('forum_posts', true, true, 'post'); $is_forum_member = AccessIsResolved(2); // Для определения первого и последнего сообщения $i = 1; // Выводим сообщения в шаблонизатор foreach ($posts as $post) { $post_user_id = SafeDB($post['user_id'], 11, int); if ($post_user_id == 0) { continue; } $vars = array(); // Обрабатываем текст сообщения if ($post['delete'] == '1') { // Сообщение удалено в корзину $vars['text'] = ForumBasketRender($post['id'], $post['message'], $basket); } else { $vars['text'] = HtmlChars($post['message']); if ($forum_config['no_link_guest']) { // Скрываем ссылки от гостей $replace = '<p class="notice">' . $forum_lang['hide_links_for_guests'] . '</p>'; $vars['text'] = preg_replace('/\\<a[^\\>]*?(http|https|ftp|www)(.*?)\\<\\/a\\>/is', $replace, $vars['text']); $vars['text'] = preg_replace('/(http:\\/\\/|https:\\/\\/|ftp:\\/\\/|www\\.)?([a-zA-Z0-9]+)\\.(ru|su|com|org|net|info|name|ws|cc|tv|tel|kz|biz|mobi|asia|me|tw|ua)+([а-яА-Яa-zA-Z0-9\'~;,@#%&_\\!\\$\\^\\*\\(\\)\\-\\=\\+\\?\\.\\:\\/\\\\]*)?/is', $replace, $vars['text']); } SmiliesReplace($vars['text']); $vars['text'] = nl2br($vars['text']); $vars['text'] = BbCodePrepare($vars['text']); if ($max_word_length > 0) { $vars['text'] = word_wrapped_string($vars['text'], $max_word_length); } } // Обрабатываем данные сообщения // Пользователь $user_info = GetUserInfo($post_user_id); $vars['usertopics'] = '<a href="' . Ufu('index.php?name=forum&op=usertopics&user='******'forum/usertopics/{user}/') . '">' . $forum_lang['allusertopics'] . '</a>'; if ($user_info['rank_name'] != '') { $vars['author'] = '<a href="' . Ufu('index.php?name=user&op=userinfo&user='******'user/{user}/info/') . '">' . $user_info['name'] . '</a>'; $vars['author_name'] = $user_info['name']; } else { $vars['author'] = $post['name']; $vars['author_name'] = $post['name']; } if ($user_info['hideemail'] == '0') { $vars['email'] = AntispamEmail($user_info['email']); } else { $vars['email'] = ' '; } if ($user_info['url'] != '') { $vars['homepage'] = '<a href="http://' . $user_info['url'] . '" target="_blank">' . $user_info['url'] . '</a>'; } else { $vars['homepage'] = ' '; } $vars['icq'] = $user_info['icq']; if ($user_info['online']) { $vars['status'] = $forum_lang['user_online']; } else { $vars['status'] = ''; } $vars['rank_image'] = $user_info['rank_image'] != '' ? $user_info['rank_image'] : ''; $vars['rank_name'] = $user_info['rank_name'] != '' ? $user_info['rank_name'] : ''; $vars['avatar'] = $user_info['avatar_file'] != '' ? $user_info['avatar_file'] : GetPersonalAvatar(0); $vars['regdate'] = TimeRender($user_info['regdate'], false, true); if (isset($user_info['data']['forum_counters'])) { $vars['user_posts_count'] = $user_info['data']['forum_counters']['posts']; $vars['user_topics_count'] = $user_info['data']['forum_counters']['topics']; } else { $vars['user_posts_count'] = '0'; $vars['user_topics_count'] = '0'; } // Сообщение $vars['public'] = $forum_lang['added'] . TimeRender($post['public']); $vars['public_date'] = TimeRender($post['public']); $vars['ip'] = SafeDB($post['user_ip'], 19, str); $vars['topic_id'] = $topic_id; $vars['id'] = SafeDB($post['id'], 11, int); $vars['nodelete'] = SafeDB($post['delete'], 1, int) == 1 ? false : true; $vars['is_admin_and_nodelete'] = $vars['nodelete'] && $user_admin; $vars['page'] = $page; // is_current_user Пользователь является владельцем сообщения (кнопки редактировать и удалить) if ($post['delete'] == '0') { $vars['is_current_user'] = $user_id == $post['user_id'] && $topic['close_topics'] == '0' || $user_admin; } else { $vars['is_current_user'] = false; } if ($one_post === false) { $vars['num'] = $page > 1 ? $page * $posts_on_page - $posts_on_page + $i : $i; $vars['url'] = "javascript:link_post('" . GetSiteUrl() . Ufu("index.php?name=forum&op=post&topic=" . $topic_id . "&post=" . $post['id'], 'forum/t{topic}/post{post}.html') . "')"; } else { $vars['num'] = ''; $vars['url'] = 'javascript:history.go(-1)'; } $vars['is_forum_member'] = $is_forum_member; System::site()->AddSubBlock('forum_posts', true, $vars, array(), 'module/forum_post.html'); $i++; } // Форма добавления сообщений System::site()->AddBlock('post_form', $forum_config['add_post'], false); ForumRenderPostForm(false, $forum_id, $topic_id, 0, '', '', $is_forum_member); // Подписка на тему System::site()->AddBlock('subscription', $forum_config['new_message_email'], false, 'subs'); $vars_subs = array(); $vars_subs['topic'] = $topic_id; $vars_subs['sub_status'] = Forum_Subscription_Status($topic_id); $vars_subs['status'] = $vars_subs['sub_status'] ? 'Отписаться от этой темы' : 'Подписаться на эту тему'; System::site()->SetVars('subscription', $vars_subs); System::site()->AddBlock('is_forum_member', $is_forum_member, false, 'marker'); System::site()->SetVars('is_forum_member', array('id' => $topic_id)); // Подключаем шаблон System::site()->AddTemplatedBox('', 'module/forum_showtopic.html'); // Выводим блок онлайн $online->Render($forum_id, $topic_id, $forum_lang['current_online'], 'forum_online'); // Предыдущая и следующая тема System::site()->AddBlock('forum_prev_topic', isset($prev_topic), false, 'topic'); if (isset($prev_topic)) { System::site()->SetVars('forum_prev_topic', array('url' => Ufu('index.php?name=forum&op=showtopic&topic=' . SafeDB($prev_topic['id'], 11, int), 'forum/topic{topic}.html'), 'title' => SafeDB($prev_topic['title'], 255, str), 'lang_prev_topic' => $forum_lang['prev_topic'])); } System::site()->AddBlock('forum_next_topic', isset($next_topic), false, 'topic'); if (isset($next_topic)) { System::site()->SetVars('forum_next_topic', array('url' => Ufu('index.php?name=forum&op=showtopic&topic=' . SafeDB($next_topic['id'], 11, int), 'forum/topic{topic}.html'), 'title' => SafeDB($next_topic['title'], 255, str), 'lang_next_topic' => $forum_lang['next_topic'])); } // Быстрый переход по форумам ForumQuickTransitionBox($forum_id, $forum_lang['quick_transition']); }
/** * Вывод комментариев с постраничной навигацией. * @param int $ObjectId "object_id" комментария * @param string|string $PostsBlockName имя блока в шаблоне, куда выводить комментарии * @param string $NavigationBlockName * @param bool $LastPage Если истина, то функция покажет последнюю страницу комментариев * @param int $Page Номер страницы комментариев * @param string|string $ExWhere Свой Where запрос. Используйте, если вам необходим особый способ выбора комментариев. */ public function RenderPosts($ObjectId, $PostsBlockName = 'posts', $NavigationBlockName = 'navigation', $LastPage = false, &$Page = 0, $ExWhere = '') { if ($this->DisableComments) { System::site()->AddBlock($PostsBlockName, false, false, 'post'); System::site()->AddBlock($NavigationBlockName, true, false); return; } else { System::site()->AddBlock($PostsBlockName, true, true, 'post'); } if ($this->EditPageUrl == '') { ErrorHandler(USER_NOTICE, 'Posts::Posts(): Не инициализирован адрес страницы редактирования комментариев Posts::$EditPageUrl.', __FILE__); } if ($this->DeletePageUrl == '') { ErrorHandler(USER_NOTICE, 'Posts::Posts(): Не инициализирован адрес страницы удаления комментариев Posts::$DeletePageUrl.', __FILE__); } if ($this->NavigationUrl == '') { ErrorHandler(USER_NOTICE, 'Posts::Posts(): Не инициализирован адрес текущей страницы для постраничной навигации Posts::$NavigationUrl.', __FILE__); } // Выбираем сообщения из базы данных if ($ObjectId != 0) { $where = "`object_id`='" . $ObjectId . "'"; } elseif ($ExWhere != '') { $where = $ExWhere; } else { $where = ''; // Вся таблица } $posts = System::database()->Select($this->PostsTable, $where, null, 'post_date', !$this->DecreaseSort); $this->PostsTree = array(); foreach ($posts as $post) { $this->PostsTree[$post['post_parent_id']][] = $post; } if ($Page == 0) { // Страница по умолчанию if ($this->DecreaseSort) { $LastPage = true; } else { $Page = 1; } } // Инициализируем навигацию $nav = new Navigation($Page, $NavigationBlockName, $this->NavigationParam); $nav->FrendlyUrl = System::config('general/ufu'); $nav->Anchor = $this->NavigationAnchor; $nav->DefaultPageLink = $this->NavigationDefaultPageLink; if (!isset($this->PostsTree[0])) { $nav->DisableNavigation(); } else { if (!$this->EnNavigation) { $nav->DisableNavigation(); } else { $last_pn = ceil(count($this->PostsTree[0]) / $this->MessagesOnPage); if ($LastPage) { $Page = $last_pn; } if ($this->DecreaseSort) { $nav->DefaultPage = $last_pn; } $nav->GenNavigationMenu($this->PostsTree[0], $this->MessagesOnPage, $this->NavigationUrl, $Page); } $this->RenderPost($ObjectId, $this->PostsTree[0], $PostsBlockName, 0); } }
function IndexGBMain() { if (isset($_GET['page'])) { $page = SafeEnv($_GET['page'], 10, int); } else { $page = 1; } $msgs = System::database()->Select('guestbook', "`premoderate`='1'"); SortArray($msgs, 'date', true); $num = System::config('gb/msgonpage'); $navigation = new Navigation($page); $navigation->FrendlyUrl = System::config('general/ufu'); $navigation->GenNavigationMenu($msgs, $num, Ufu('index.php?name=guestbook', 'guestbook/page{page}/', true)); System::site()->AddBlock('guestbook', true, true, 'gb'); if (count($msgs) > 0) { foreach ($msgs as $message) { IndexGBAddMessage($message); } } else { System::site()->AddTextBox('', '<p align="center">Сообщений пока нет.</p>'); } System::site()->AddTemplatedBox('', 'module/guestbook.html'); IndexGBAddForm(System::config('gb/formposition') == 'top'); }
function AdminGuestBookPremoderationMain() { System::admin()->AddCenterBox('Премодерация'); $premoderation = System::user()->CheckAccess2('guestbook', 'premoderation'); $premoderate = System::database()->Select('guestbook', "`premoderate`='0'"); if (System::database()->NumRows() == 0) { System::admin()->Highlight('В премодерации нет сообщений.'); return; } if (isset($_GET['page'])) { $page = SafeEnv($_GET['page'], 10, int); } else { $page = 1; } SortArray($premoderate, 'date', true); $num = System::config('gb/msgonpage'); if (count($premoderate) > $num) { $navigator = new Navigation($page); $navigator->GenNavigationMenu($premoderate, $num, ADMIN_FILE . '?exe=guestbook&a=premoderation'); $nav = true; } else { $nav = false; } $text = ''; $back = SaveRefererUrl(); foreach ($premoderate as $pre) { if ($pre['url'] == '') { $url = 'Нет'; } else { $url = '<a href="http://' . SafeDB($pre['url'], 250, str) . '" target="_blank">' . SafeDB($pre['url'], 250, str) . '</a>'; } if ($pre['email'] == '') { $name = SafeDB($pre['name'], 50, str); } else { $name = PrintEmail($pre['email'], $pre['name']); } $mid = SafeDB($pre['id'], 11, int); $del = System::admin()->SpeedConfirm('Удалить сообщение', ADMIN_FILE . '?exe=guestbook&a=delete&id=' . $mid . '&back=' . $back, 'images/admin/delete.png', 'Удалить сообщение?'); $func2 = ''; $func2 = System::admin()->Link('Разрешить', ADMIN_FILE . '?exe=guestbook&a=prem_yes&id=' . $mid . '&back=' . $back); $text .= '<table cellspacing="0" cellpadding="0" class="commtable" style="width:75%;">'; $text .= '<tr> <th style="text-align: left; width: 180px;">' . $name . '</th> <th style="width: 160px;">Сайт: ' . $url . '</th> <th style="width: 120px;">ICQ: ' . SafeDB($pre['icq'], 15, str) . '</th> <th style="width: 120px;">IP: ' . SafeDB($pre['user_ip'], 20, str) . '</th> <th> ' . $del . ' </th> </tr>'; $text .= '<tr><td colspan="5" style="text-align:left;padding:10px;" class="commtable_text">' . SafeDB($pre['message'], 0, str) . '</td></tr>'; $text .= '<tr><th>Дата: ' . TimeRender($pre['date']) . '</th><th colspan="4" style="text-align:right;">' . $func2 . '</th></tr>'; $text .= '</table>'; } AddText($text); if ($nav) { AddNavigation(); } AddText('<div style="text-align: center;">' . System::admin()->SpeedConfirm('Разрешить все', ADMIN_FILE . '?exe=guestbook&a=prem_yes_all&back=' . $back, 'images/admin/accept.png', 'Разрешить все сообщения?', true, true) . ' ' . System::admin()->SpeedConfirm('Удалить все', ADMIN_FILE . '?exe=guestbook&a=prem_del_all&back=' . $back, 'images/admin/delete.png', 'Удалить все сообщения?', true, true) . '</div>'); }
function AdminForumBasket($table = 'forum_basket_post') { global $config, $site; if (isset($_GET['page'])) { $page = SafeEnv($_GET['page'], 10, int); } else { $page = 1; } if ($table == 'forum_basket_post') { $site->Title .= ' > Удаляемые сообщения'; $caption = 'Удаляемые сообщения'; } else { $site->Title .= ' > Удаляемые Темы'; $caption = 'Удаляемые Темы'; } $result = System::database()->Select($table); if (count($result) > 20) { $navigator = new Navigation($page); $navigator->GenNavigationMenu($result, 20, ADMIN_FILE . '?exe=forum&a=' . $table); $nav = true; } else { $nav = false; } $mop = 'showtopic&topic='; if ($table == 'forum_basket_post') { $table_caption = ' (сообщение)'; if (count($result) > 0) { $mposts = array(); $where = ''; foreach ($result as $mpost) { $where .= "`id`='" . $mpost['obj_id'] . "' or "; } $where = substr($where, 0, strlen($where) - 3); $result_posts = System::database()->Select('forum_posts', $where); if (count($result_posts) > 0) { foreach ($result_posts as $mpost) { $mposts[$mpost['id']] = $mpost['object']; $mpostsm[$mpost['id']] = $mpost['message']; } foreach ($result as $mpost) { $mpost['obj_id2'] = $mposts[$mpost['obj_id']]; $mpost['obj_id'] = $mpost['obj_id']; $mpost['date'] = $mpost['date']; $mpost['user'] = $mpost['user']; $mpost['reason'] = $mpost['reason']; $mpost['message'] = $mpostsm[$mpost['obj_id']]; $result2[] = $mpost; } $result = $result2; } } } else { $table_caption = ' (название темы)'; if (count($result) > 0) { $where = ''; foreach ($result as $mpost) { $where .= "`id`='" . $mpost['obj_id'] . "' or "; } $where = substr($where, 0, strlen($where) - 3); $result_topics = System::database()->Select('forum_topics', $where); if (count($result_topics) > 0) { foreach ($result_topics as $mtopic) { $mtopics[$mtopic['id']] = $mtopic['title']; } foreach ($result as $mtopic) { $mpost['obj_id'] = $mtopic['obj_id']; $mpost['date'] = $mtopic['date']; $mpost['user'] = $mtopic['user']; $mpost['reason'] = $mtopic['reason']; $mpost['message'] = $mtopics[$mtopic['obj_id']]; $result2[] = $mpost; } $result = $result2; } } } $text = '<table cellspacing="0" cellpadding="0" class="cfgtable">'; $text .= '<tr><th>Кто удалил</th><th>Дата удаления</th><th>Дата окончательного удаления</th><th>Комментарий</th><th>Содержимое удаляемого <BR>' . $table_caption . '</th><th>Функции</th></tr>'; foreach ($result as $basket) { $mop = 'showtopic&topic=' . ($table == 'forum_basket_post' ? $basket['obj_id2'] : $basket['obj_id']); $restore_link = ADMIN_FILE . '?exe=forum&a=basket_restore&' . $table . '=' . $basket['obj_id']; $ainfo = GetUserInfo($basket['user']); $text .= '<tr> <td>' . $ainfo['name'] . '</td> <td>' . TimeRender($basket['date'], false, false) . '</td> <td>' . TimeRender($basket['date'] + 86400 * $config['forum']['clear_basket_day'], false, false) . '</td> <td>' . $basket['reason'] . '</td> <td>' . (isset($basket['message']) ? $basket['message'] : '') . '</td> <td><a href="' . $restore_link . '">Восстановить</a> <a href="index.php?name=forum&op=' . $mop . '" target="_blank">Просмотр</a></td> </tr>'; } $text .= '</table>'; AddTextBox($caption, $text); if ($nav) { AddNavigation(); } }
function 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 IndexNewsMain() { System::site()->AddBlock('news', true, true); if (isset($_GET['page'])) { $page = SafeEnv($_GET['page'], 10, int); } else { $page = 1; } $topics = IndexNewsGetTopics(); if (isset($_GET['topic'])) { $topic = SafeEnv($_GET['topic'], 11, int); $title = SafeDB($topics[$topic]['title'], 255, str); System::site()->SetTitle($title); System::site()->BreadCrumbAdd($title); } else { $topic = false; } $num = SafeDB(System::config('news/newsonpage'), 11, int); //Количество новостей на страницу $news = System::database()->Select('news', GetWhereByAccess('view', "`enabled`='1'" . ($topic !== false ? " and `topic_id`='{$topic}'" : "")), null, 'date', true); // Постраничная навигация $navigation = new Navigation($page); $nav_link = Ufu('index.php?name=news' . ($topic != 0 ? '&topic=' . $topic : ''), 'news/' . ($topic != 0 ? '{topic}/' : '') . 'page-{page}/', true); $navigation->FrendlyUrl = System::config('general/ufu'); $navigation->GenNavigationMenu($news, $num, $nav_link); if (count($news) > 0) { System::site()->AddTemplatedBox('', 'module/news.html'); foreach ($news as $s) { IndexNewsAdd($s, SafeDB($topics[$s['topic_id']]['title'], 255, str), false); } } else { if ($topic === false) { $NewsContent = '<p align="center">Новостей пока нет</p>'; } else { $NewsContent = '<p align="center">В этой категории пока нет новостей</p>'; } System::site()->AddTextBox('', $NewsContent); } }
function IndexSearchResults() { global $searchstr; // Блок поискового запроса, возвращает инф-ю о включенных поисковых плагинах (где искать) $mods = IndexSearchMain(); // Формируем URL страницы для постраничной навигации $mods_str = ''; foreach ($mods as $i => $mod) { // Модули поиска $mods[$i] = $mod; $mods_str .= '&mod[]=' . SafeDB($mods[$i], 255, str); } if (isset($_GET['searchstr'])) { // Поисковый запрос $searchstr = $_GET['searchstr']; } else { System::site()->AddTextBox('', '<div style="text-align: center;">По вашему запросу ничего не найдено.</div>'); return; } $SearchUrl = 'index.php?name=search&op=search&searchstr=' . urlencode(SafeDB($searchstr, 255, str)) . $mods_str; // Страница if (isset($_GET['page'])) { $page = SafeEnv($_GET['page'], 10, int); } else { $page = 1; } // Добавляем хлебные крошки System::site()->BreadCrumbAdd('Результаты поиска для "' . SafeDB($searchstr, 255, str) . '"'); // Поиск $results = IndexSearchSearch($mods); // Сортируем результаты поиска usort($results, 'IndexSearchSortResults'); // Выводим результаты if (count($results) > 0) { $num = 20; //Количество результатов на страницу $si = $num * ($page - 1); $navigation = new Navigation($page); $navigation->GenNavigationMenu($results, $num, $SearchUrl); System::site()->AddTemplatedBox('Результаты поиска', 'module/search_results.html'); System::site()->AddBlock('search_results', true, true, 'result'); foreach ($results as $i => $result) { $result['no'] = $si + $i + 1; System::site()->AddSubBlock('search_results', true, $result); } } else { System::site()->AddTextBox('', '<div style="text-align: center;">По вашему запросу ничего не найдено.</div>'); } }
function IndexArticlesShow($cat) { if ($cat != 0) { System::site()->SetTitle('Статьи в категории ' . SafeDB(IndexArticlesGetTree()->IdCats[$cat]['title'], 255, str)); } if (isset($_GET['page'])) { $page = SafeEnv($_GET['page'], 11, int); } else { $page = 1; } $arts = System::database()->Select('articles', GetWhereByAccess('view', ($cat != 0 ? "`cat_id`='{$cat}' and " : '') . "`active`='1'")); SortArray($arts, 'public', true); // Постраничная навигация $num = System::config('articles/articles_on_page'); $navigation = new Navigation($page); $nav_link = Ufu('index.php?name=articles' . ($cat != 0 ? '&cat=' . $cat : ''), 'articles/' . ($cat != 0 ? '{cat}/' : '') . 'page{page}/', true); $navigation->FrendlyUrl = System::config('general/ufu'); $navigation->GenNavigationMenu($arts, $num, $nav_link); if (System::database()->NumRows() > 0) { System::site()->AddTemplatedBox('', 'module/article.html'); System::site()->AddBlock('articles', true, true, 'art'); foreach ($arts as $art) { RenderArticle($art); } } elseif (!isset(IndexArticlesGetTree()->Cats[$cat]) && count(IndexArticlesGetTree()->Cats) > 0) { System::site()->AddTextBox('', '<p align="center">В этой категории статей пока нет.</p>'); } }
function AdminArticlesMain() { global $editarticles; // Фильтр, дает возможность показывать статьи определенной категории. if (isset($_GET['cat']) && $_GET['cat'] > -1) { $cat = SafeEnv($_GET['cat'], 11, int); $where = "`cat_id`='{$cat}'"; } else { $cat = -1; $where = ""; } $data = array(); $data = AdminArticlesGetTree()->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(' ArticlesSelectCat = function(){ Admin.LoadPage("' . ADMIN_FILE . '?exe=articles&cat="+$("#article-cat").val()); } '); $text = '<div style="text-align: center; margin-bottom: 10px;">Категория: ' . System::site()->Select('cat', $data, false, 'id="article-cat" onchange="ArticlesSelectCat();"') . '</div>'; AddText($text); // Берем статьи из БД и включаем постраничную навигацию если нужно. $r = System::database()->Select('articles', $where); SortArray($r, 'public', true); // Сортируем по дате добавления if (count($r) > System::config('articles/articles_on_page')) { $navigator = new Navigation($page); $navigator->GenNavigationMenu($r, System::config('articles/articles_on_page'), ADMIN_FILE . '?exe=articles' . ($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>'; $back = SaveRefererUrl(); foreach ($r as $art) { $id = SafeDB($art['id'], 11, int); $cat_id = SafeDB($art['cat_id'], 11, int); $title = SafeDB($art['title'], 255, str); $hits = SafeDB($art['hits'], 11, int); $rating = '<img src="' . GetRatingImage(SafeDB($art['num_votes'], 11, int), SafeDB($art['all_votes'], 11, int)) . '" border="0" />'; $st = $art['active'] == '1' ? 'Вкл.' : 'Выкл.'; $link_go = Ufu("index.php?name=articles&op=read&art={$id}&cat={$cat_id}", 'articles/{cat}/{art}/'); $func = ''; $func .= System::admin()->SpeedButton('Перейти к странице на сайте', $link_go, 'images/link_go.png', false, false, 'target="_blank"'); if ($editarticles) { $title = '<b>' . System::admin()->Link($title, ADMIN_FILE . '?exe=articles&a=editor&id=' . $id . '&back=' . $back) . '</b>'; $hits .= ' ' . System::admin()->SpeedConfirm('Обнулить счётчик просмотров', ADMIN_FILE . '?exe=articles&a=resethits&id=' . $id . '&back=' . $back, 'images/admin/arrow_in.png', 'Сбросить счётчик просмотров?'); $rating .= ' ' . System::admin()->SpeedConfirm('Обнулить счётчик оценок (' . SafeDB($art['num_votes'], 11, int) . ' голосов)', ADMIN_FILE . '?exe=articles&a=resetrating&id=' . $id . '&back=' . $back, 'images/admin/arrow_in.png', 'Сбросить оценки?'); $st = System::admin()->SpeedStatus('Включена', 'Отключена', ADMIN_FILE . '?exe=articles&a=changestatus&id=' . $id, $art['active'] == '1'); $func .= System::admin()->SpeedButton('Редактировать', ADMIN_FILE . '?exe=articles&a=editor&id=' . $id . '&back=' . $back, 'images/admin/edit.png'); $func .= System::admin()->SpeedConfirm('Удалить', ADMIN_FILE . '?exe=articles&a=delete&id=' . $id . '&ok=1&back=' . $back, 'images/admin/delete.png', 'Удалить статью?'); } $text .= '<tr> <td>' . $title . '</td> <td>' . $hits . '</td> <td>' . ($art['allow_votes'] == '1' ? $rating : 'Запрещены') . '</td> <td>' . ViewLevelToStr(SafeDB($art['view'], 1, int)) . '</td> <td>' . $st . '</td> <td>' . $func . '</td> </tr>'; } $text .= '</table>'; AddText($text); if ($nav) { AddNavigation(); } }
function IndexGalleryShow($Cat, $Images = null, $OnlyBlock = false, $Parent = null, $Active = -1) { if (!$OnlyBlock) { if ($Cat != 0) { System::site()->SetTitle('Изображения в категории ' . SafeDB(IndexGalleryGetTree()->IdCats[$Cat]['title'], 255, str)); } $images_on_page = System::config('gallery/images_on_page'); $thumbs_on_row = System::config('gallery/thumbs_onrow'); if (isset($_GET['page'])) { $page = SafeEnv($_GET['page'], 11, int); } else { $page = 1; } } if (!isset($Images)) { $Images = System::database()->Select('gallery', GetWhereByAccess('view', "`cat_id`='{$Cat}' and `show`='1'"), null, 'order'); } $count = count($Images); /* * Постраничная навигация. */ if (!$OnlyBlock) { $navigation = new Navigation($page); if (System::config('gallery/page_navigation')) { $nav_link = Ufu('index.php?name=gallery' . ($Cat != 0 ? '&cat=' . $Cat : ''), 'gallery/' . ($Cat != 0 ? '{cat}/' : '') . 'page{page}/', true); $navigation->FrendlyUrl = System::config('general/ufu'); $navigation->GenNavigationMenu($Images, $images_on_page, $nav_link); } else { $navigation->DisableNavigation(); } } if ($count > 0 || $OnlyBlock) { /* * Выводим изображения в шаблонизатор. */ if (isset($Parent)) { $block_images = $Parent->NewBlock('gallery_images', true, true, 'img'); } else { $block_images = System::site()->NewBlock('gallery_images_block', true, true, 'img'); } if (!$OnlyBlock) { System::site()->AddTable('gallery_images', true, 'img', $thumbs_on_row); } foreach ($Images as $index => $img) { if (!$OnlyBlock) { $index = strval($index + 1 + ($page - 1) * $images_on_page); } $vars = IndexGalleryFilterImageData($img, $index, $count); if ($vars['title'] == '') { $vars['title'] = 'Изображение ' . $index; } $vars['active'] = $index == $Active; $block_images->NewSubBlock(true, $vars); if (!$OnlyBlock) { System::site()->AddTableCell('gallery_images', true, $vars); } } if (!$OnlyBlock) { System::site()->AddTemplatedBox('', 'module/gallery_image.html'); } } else { System::site()->AddTextBox('', '<p align="center">В этой категории пока нет изображений.</p>'); } }
function IndexMailHistory() { if (isset($_GET['topic_id'])) { $topic_id = SafeEnv($_GET['topic_id'], 11, int); } else { GO(GetSiteUrl() . Ufu('index.php?name=mail&op=topics', 'mail/{op}/')); } System::database()->Select('mail_topics', "`id`='{$topic_id}'"); if (System::database()->NumRows() > 0) { $topic = System::database()->FetchRow(); } else { GO(GetSiteUrl() . Ufu('index.php?name=mail&op=topics', 'mail/{op}/')); } if (isset($_GET['page'])) { $page = SafeEnv($_GET['page'], 10, int); } else { $page = 1; } $mails = System::database()->Select('mail_history', "`topic_id`='{$topic_id}'"); if (System::database()->NumRows() == 0) { System::site()->AddTextBox('Рассылки', '<p align="center"><br>Рассылок на тему "' . SafeDB($topic['title'], 250, str) . '" не проводилось.<br><br><a href="javascript:history.go(-1)">Назад</a><br><br></p>'); return; } SortArray($mails, 'date', false); $num = 20; // FIXME: System::config('mail/mail_on_page'); $navigation = new Navigation($page); $navigation->FrendlyUrl = System::config('general/ufu'); $navigation->GenNavigationMenu($mails, $num, Ufu("index.php?name=mail&op=history&topic_id={$topic_id}", 'mail/history/topic{topic_id}/page{page}/')); System::site()->AddTemplatedBox('', 'module/mail_showid_nav.html'); System::site()->AddBlock('mail_nav'); $vars['lprev'] = 'Список рассылок'; $vars['prev_id'] = true; $vars['next_id'] = false; $vars['back'] = false; $vars['prev_url'] = 'index.php?name=mail&op=topics'; System::site()->Blocks['mail_nav']['vars'] = $vars; System::site()->AddTemplatedBox('Архив рассылки', 'module/mail_mail.html'); System::site()->AddBlock('mail_history'); $vars['topic'] = SafeDB($topic['title'], 255, str); $vars['ldate'] = 'Дата выпуска'; $vars['lsubject'] = 'Тема выпуска'; System::site()->Blocks['mail_history']['vars'] = $vars; System::site()->AddBlock('mail', true, true); foreach ($mails as $mail) { $vars = array(); $vars['subject'] = SafeDB($mail['subject'], 250, str); $vars['date'] = TimeRender(SafeDB($mail['date'], 11, int)); $vars['url'] = Ufu("index.php?name=mail&op=showid&topic_id={$topic_id}&id=" . SafeDB($mail['id'], 11, int), 'mail/show/topic{topic_id}/id{id}/'); System::site()->AddSubBlock('mail', true, $vars); } }
function AdminMailHistory() { System::admin()->AddCenterBox('История рассылки'); if (isset($_GET['topic_id'])) { $topic = SafeEnv($_GET['topic_id'], 11, int); } elseif (isset($_POST['topic'])) { $topic = SafeEnv($_POST['topic_id'], 11, int); } else { System::admin()->Highlight('Тема не указана.'); return; } $msgs = System::database()->Select('mail_history', ''); if (System::database()->NumRows() == 0) { System::admin()->Highlight('Рассылок по данной теме не проводилось.'); return; } if (isset($_GET['page'])) { $page = SafeEnv($_GET['page'], 10, int); } else { $page = 1; } SortArray($msgs, 'date', true); $num = 10; if (count($msgs) > $num) { $nav = new Navigation($page); $nav->GenNavigationMenu($msgs, $num, ADMIN_FILE . '?exe=mail&a=history&topic_id=' . $topic); $nav = true; } else { $nav = false; } $text = '<table cellspacing="0" cellpadding="0" align="center" class="commtable_header" style="width:80%;"> <tr> <th style="width: 120px;">Дата</th> <th style="width: 510px;">Тема</th> <th>Функции</th> </tr></table>'; foreach ($msgs as $msg) { $mid = SafeDB($msg['id'], 11, int); $subject = SafeDB($msg['subject'], 255, str); $date = SafeDB($msg['date'], 11, int); $from = SafeDB($msg['from'], 255, str); $from_email = SafeDB($msg['from_email'], 255, str); $mailtext = nl2br(SafeDB($msg['plain_text'], 0, str)); $func = ''; $func .= System::admin()->SpeedButton('Редактировать письмо', ADMIN_FILE . '?exe=mail&a=edit&id=' . $mid . '&topic_id=' . $topic, 'images/admin/edit.png'); $func .= System::admin()->SpeedConfirm('Удалить письмо', ADMIN_FILE . '?exe=mail&a=delete&id=' . $mid . '&topic_id=' . $topic . '&ok=0', 'images/admin/delete.png', 'Удалить письмо из истории?'); $text .= '<table cellspacing="0" cellpadding="0" class="commtable" style="width:80%;">'; $text .= '<tr> <th style="text-align: left; width: 120px;">' . TimeRender($date) . '</td> <th style="text-align: left; width: 510px;">' . $subject . '</td> <th>' . $func . '</td> </tr>'; $text .= '<tr><td colspan="3" class="commtable_text">' . $mailtext . '</td></tr>'; $text .= '</table>'; } AddText($text); if ($nav) { AddNavigation(); } }
function AdminGalleryMainFunc() { global $edit_images, $GalleryDir, $ThumbsDir; UseScript('colorbox?theme=admin'); $back = SaveRefererUrl(); if (isset($_GET['cat']) && $_GET['cat'] > -1) { $cat = SafeEnv($_GET['cat'], 11, int); $where = "`cat_id`='{$cat}'"; } else { $cat = -1; $where = ""; } $data = AdminGalleryGetTree()->GetCatsData($cat, true); System::site()->DataAdd($data, -1, 'Все изображения', $cat == -1); if (isset($_GET['page'])) { $page = SafeEnv($_GET['page'], 11, int); $page_param = '&page=' . SafeDB($_GET['page'], 11, int); } else { $page = 1; $page_param = ''; } AddCenterBox('Фото'); System::admin()->AddJS(Indent(' GallerySelectCat = function(){ Admin.LoadPage("' . ADMIN_FILE . '?exe=gallery&cat="+$("#gallery-cat").val()); } ')); $text = '<div style="margin-bottom: 10px;">Категория: ' . System::site()->Select('cat', $data, false, 'id="gallery-cat" onchange="GallerySelectCat();"'); if ($cat < 0) { $text .= ' (Для сортировки изображений, выберите категорию)'; } $text .= '</div>'; AddText($text); $images = System::database()->Select('gallery', $where); $count_images = count($images) - 1; SortArray($images, 'order'); if (count($images) > System::config('gallery/images_on_page')) { $navigator = new Navigation($page); $navigator->GenNavigationMenu($images, System::config('gallery/images_on_page'), ADMIN_FILE . '?exe=gallery' . ($cat > 0 ? '&cat=' . $cat : '')); $nav = true; } else { $nav = false; } $text = '<table cellspacing="0" cellpadding="0" class="cfgtable">'; $text .= '<tr>' . ($cat > 0 ? '<th>Сортировка</th>' : '') . '<th>Изображение</th><th>Просмотров</th><th>Видят</th><th>Статус</th><th>Функции</th></tr>'; foreach ($images as $i => $img) { $id = SafeDB($img['id'], 11, int); $title = SafeDB($img['title'], 255, str); if ($title == '') { $title = 'Изображение ' . $id; } if (System::config('gallery/show_thumbs')) { $img_filename = SafeDB($img['file'], 255, str); $size = FormatFileSize(filesize($GalleryDir . $img_filename)); $asize = getimagesize($GalleryDir . $img_filename); $asize = $asize[0] . 'x' . $asize[1]; $thumb = '<div style="margin: 5px 0;"><a href="' . $GalleryDir . $img_filename . '" target="_blank" class="colorbox">' . '<img title="' . $title . '" src="' . $ThumbsDir . $img_filename . (isset($_GET['update']) && $_GET['update'] == $id ? '?' . GenRandomString(5) : '') . '"></a></div>' . "({$asize}, {$size})"; } else { $thumb = ''; } $hits = SafeDB($img['hits'], 11, int); $st = $img['show'] == '1' ? 'Вкл.' : 'Выкл.'; $func = '-'; $move_menu = ''; $link_go = Ufu('index.php?name=gallery&op=view&img=' . $id . '&cat=' . SafeDB($img['cat_id'], 11, int), 'gallery/{cat}/{img}/'); $func = ''; $func .= System::admin()->SpeedButton('Перейти к странице на сайте', $link_go, 'images/link_go.png', false, false, 'target="_blank"'); if ($edit_images) { $edit_url = ADMIN_FILE . '?exe=gallery&a=editor&id=' . $id . '&back=' . $back; $title = '<b>' . System::admin()->Link($title, $edit_url) . '</b>'; $hits .= ' ' . System::admin()->SpeedConfirm('Обнулить счётчик просмотров', ADMIN_FILE . '?exe=gallery&a=resethits&id=' . $id . '&back=' . $back, 'images/admin/arrow_in.png', 'Сбросить счётчик просмотров?'); $st = System::admin()->SpeedStatus('Вкл.', 'Выкл.', ADMIN_FILE . '?exe=gallery&a=changestatus&id=' . $id, $img['show'] == '1'); $func .= System::admin()->SpeedButton('Редактировать', $edit_url, 'images/admin/edit.png'); $func .= System::admin()->SpeedConfirm('Удалить', ADMIN_FILE . '?exe=gallery&a=delete&id=' . $id . '&back=' . $back, 'images/admin/delete.png', 'Удалить изображение?'); $func .= '<div style="margin-top: 4px;">'; $func .= System::admin()->SpeedButton('Повернуть влево на 90°', ADMIN_FILE . '?exe=gallery&a=rotate&turn=left&id=' . $id . '&back=' . $back, 'images/admin/layer-rotate-left.png'); $func .= System::admin()->SpeedButton('Повернуть вправо на 90° ', ADMIN_FILE . '?exe=gallery&a=rotate&turn=right&id=' . $id . '&back=' . $back, 'images/admin/layer-rotate-right.png'); $func .= System::admin()->SpeedButton('Обновить эскиз', ADMIN_FILE . '?exe=gallery&a=refreshthumb&id=' . $id . '&back=' . $back, 'images/admin/refresh.png'); $func .= '</div>'; if ($count_images == 0) { // Единственный элемент в списке $move_menu .= ' - '; } else { if ($i != $count_images) { // Первый элемент $move_menu .= System::admin()->SpeedButton('Вниз', ADMIN_FILE . '?exe=gallery&a=move&to=down&id=' . $id . '&cat=' . $cat . $page_param, 'images/admin/down.png'); } if ($i != 0) { // Последний элемент $move_menu .= System::admin()->SpeedButton('Вверх', ADMIN_FILE . '?exe=gallery&a=move&to=up&id=' . $id . '&cat=' . $cat . $page_param, 'images/admin/up.png'); } } } $text .= Indent(' <tr> ' . ($cat > 0 ? '<td>' . $move_menu . '</td>' : '') . ' <td>' . $title . $thumb . '</td> <td>' . $hits . '</td> <td>' . ViewLevelToStr(SafeDB($img['view'], 1, int)) . '</td> <td>' . $st . '</td> <td>' . $func . '</td> </tr> '); } $text .= '</table>'; AddText($text); if ($nav) { AddNavigation(); } }
$where_url = ''; if (isset($_GET['where'])) { $where = $_GET['where']; $where_url = '&where=' . $_GET['where']; } $info = System::database()->GetTableColumns($name); $rows = System::database()->Select($name, $where); if (isset($_GET['page'])) { $page = SafeEnv($_GET['page'], 11, int); } else { $page = 1; } $rows_on_page = 40; if (count($rows) > $rows_on_page) { $navigator = new Navigation($page); $navigator->GenNavigationMenu($rows, $rows_on_page, ADMIN_FILE . '?exe=dbadmin&a=review&name=' . $name); $nav = true; } else { $nav = false; AddText('<br>'); } System::admin()->AddJS(' DbAdminWhereApply = function(){ var where = $("#dbadmin_where").val(); Admin.LoadPage("' . ADMIN_FILE . '?exe=dbadmin&a=review&name=' . $namedb . '&where="+where, undefined, "Идёт поиск"); } '); $searchtool = '<div> Запрос (WHERE): ' . System::site()->Edit('where', SafeDB($where, 255, str), false, 'id="dbadmin_where" style="width: 400px;" onkeyup="if(event.keyCode == 13) DbAdminWhereApply();"') . ' ' . System::admin()->SpeedConfirmJs('Применить', 'DbAdminWhereApply();', '', '', true) . ' </div>';
function IndexForumUserTopics() { global $forum_lang; $forums_tree = ForumTree::Instance(); // Проверка данных if (isset($_GET['user'])) { $user_id = SafeEnv($_GET['user'], 11, int); $user = GetUserInfo($user_id); if ($user === false) { // Пользователь не найден System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_user']); return; } } else { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_data']); // Нет параметра return; } // Параметры постраничной навигации if (isset($_GET['page'])) { $page = SafeEnv($_GET['page'], 11, int); } else { $page = 1; } $topics_on_page = System::config('forum/topics_on_page'); // Устанавливаем заголовок страницы $function_title = $forum_lang['allusertopics'] . ' "' . $user['name'] . '"'; System::site()->SetTitle(SafeDB($function_title, 255, str) . ' - ' . ($page > 1 ? $forum_lang['page'] . $page . ' - ' : '') . $forum_lang['forum']); $forum_nav_url = Ufu('index.php?name=forum&op=usertopics&user='******'forum/usertopics/{user}-{page}/', true); //$forum_url = Ufu('index.php?name=forum&op=usertopics&user='******'forum/usertopics/{user}/'); // Объекты статистики и онлайн $statistics = ForumStatistics::Instance(); $online = ForumOnline::Instance('0', '0', true); // Обновляем статус онлайн // Инициализируем статистику $statistics->Initialize($forum_lang['statistics_cat']); // Хлебные крошки System::site()->BreadCrumbAdd($function_title); $auth = System::user()->Auth; $is_admin = System::user()->isAdmin(); $current_user_id = System::user()->Get('u_id'); // Загружаем данные корзины для видимых топиков $basket = ForumBasketGetData('forum_basket_topics'); // Загружаем информацию по топикам в $topics_data и считаем статистику (кэшировать статистику) $topics_data = ForumCacheGetTopics(); // Запрашиваем данные тем (агрегированы по форумам) $topics = array(); // Сюда будем добавлять топики для вывода $resolve_cats = $forums_tree->GetAllAccessForumId(0); // Считаем только в открытых для доступа форумах foreach ($resolve_cats as $resolve_cat) { if (!isset($topics_data[$resolve_cat])) { continue; } foreach ($topics_data[$resolve_cat] as $topic) { // Отсеиваем if ($topic['starter_id'] == $user_id) { // Добавляем данные из корзины, если топик удалён в корзину $topic['status'] = ''; $topic['show_delete'] = $is_admin; if ($topic['delete'] && isset($basket[$topic['id']]) && $auth && ($is_admin || $topic['starter_id'] == $current_user_id)) { // Добавляем сообщение - "Удалено в корзину" $topic['status'] = ForumBasketRender($topic['id'], $topic['title'], $basket, false); $topic['show_delete'] = false; } elseif ($topic['delete']) { continue; // Удалён топик и корзина не показывается для этого пользователя } $statistics->hits += $topic['hits']; $statistics->AddTopicAuthor($topic['starter_id'], $topic['starter_name']); $statistics->topics_count += 1; $statistics->reply_count += $topic['posts']; $topics[] = $topic; } } } unset($topics_data); // Заголовки (Темы, Ответов, Просмотры) System::site()->AddBlock('statistik', true, false, 'stat'); System::site()->SetVars('statistik', array('count_read' => '')); // Отключаем некоторые блоки System::site()->AddBlock('topic_form', false, false, 'form'); System::site()->AddBlock('topic_right', false, false, 'topic'); System::site()->AddBlock('forum', false); System::site()->AddBlock('forum_guest_message', false); // Блоки шаблона // Ссылки, Отметить все как прочитанные и показать все не прочитанные темы. $vars_is_forum_member = array(); $vars_is_forum_member['url'] = '<a href="' . Ufu('index.php?name=forum&op=markread', 'forum/markread/') . '">' . $forum_lang['mark_all_read'] . '</a>'; $vars_is_forum_member['viewnoreadurl'] = '<a href="' . Ufu('index.php?name=forum&op=viewnoread', 'forum/viewnoread/') . '">' . $forum_lang['viewnoread'] . '</a>'; $vars_is_forum_member['forum_id'] = '0'; if (!System::site()->HasBlock('is_forum_member')) { System::site()->AddBlock('is_forum_member', AccessIsResolved(2), false, 'mark'); } System::site()->SetVars('is_forum_member', $vars_is_forum_member); // Последние темы форума System::site()->AddBlock('old', true, false, 'mark'); $vars_old = array(); $vars_old['lasttopics'] = '<a href="' . Ufu('index.php?name=forum&op=lasttopics', 'forum/lasttopics/') . '">' . $forum_lang['lasttopics'] . '</a>'; System::site()->SetVars('old', $vars_old); // Блок списка топиков System::site()->AddBlock('topics', true, true, 'topic'); // Инициализируем постраничную навигацию $navigation = new Navigation($page); $navigation->FrendlyUrl = System::config('general/ufu'); // Выводим топики в шаблон if (count($topics) == 0) { // В этом форуме пока нет ни одной темы System::site()->AddBlock('no_topics', true); $navigation->DisableNavigation(); } else { // Вывод постраничной навигации $navigation->GenNavigationMenu($topics, $topics_on_page, $forum_nav_url); // Загружаем данные о прочтении тем $read_data = Forum_Marker_GetReadData(); $visable_topics = false; // Вывод тем из этой категории с постраничной навигацией foreach ($topics as $topic) { $forum_config = $forums_tree->GetForumConfigRecursive($topic['forum_id']); // Конфигурация просматриваемого форума // Статус прочитано $read = true; // прочитано if ($auth && (!isset($read_data[$topic['id']]) || $topic['last_post'] > $read_data[$topic['id']]['date'])) { $read = false; } $topic = ForumTopicFilterData($topic); // Фильтрация данных топика $topic['on'] = !$read; $topic['off'] = $read; if (!$topic['close']) { $topic['close'] = $forum_config['close']; $topic['begin'] = !$forum_config['close']; } $topic['page'] = $page; $visable_topics = true; System::site()->AddSubBlock('topics', true, $topic); } System::site()->AddBlock('no_topics', !$visable_topics); } // Блоки модерации ModerationForumTopicsBlocks(); // Подключаем шаблон System::site()->AddTemplatedBox('', 'module/forum_topics.html'); // Выводм блок онлайн $online->Render('0', '0', $forum_lang['all_online'], 'forum_topics_online'); // Выводим статистику $statistics->Render('forum_topics_statistics'); // Выбор периода и быстрый переход ForumQuickTransitionBox(0, $forum_lang['quick_transition']); }
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(); } }