Вход Регистрация
Файл: CMS/core/admin/forum.php
Строк: 361
<?php

if (!defined('CMS')) { die('Access Denied!'); }

$fid = !empty($_REQUEST['fid']) ? num($_REQUEST['fid']) : 0;
$tid = !empty($_REQUEST['tid']) ? num($_REQUEST['tid']) : 0;

# Вывод страниц в форуме
function forum_navigation($link = '', $id = '', $posts, $total) {

    global 
$page;

    if (
$total > 0) {

        
$ba = ceil($total / $posts);
        
$ba2 = $ba * $posts - $posts;
        
$max = $posts * 5;

        for(
$i = 0; $i < $max;) {

            if (
$i < $total && $i >= 0) {

                
$ii = floor(1 + $i / $posts);

                echo 
' <a href="?m=topic&amp;tid=' . $id . '&amp;page=' . $ii . '&amp;' . RND . '">' . $ii . '</a> ';
            }

            
$i += $posts;
        }

        if (
$max < $total) {

            if (
$max + $posts < $total) {
                 echo 
' ... <a href="' . $link . 'page=' . $ba . '&amp;' . RND . '">' . $ba . '</a>';
            } else {
                echo 
' <a href="' . $link . 'page=' . $ba . '&amp;' . RND . '">' . $ba . '</a>';
            }
        }

        echo 
'<br />';
    }
}

if (
is_admin()) {

    if (!empty(
$_GET['restatement'])) { // Пересчет счетчиков

        
if (is_admin(array(101))) {

            if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

                
$db->query("UPDATE ?_forums SET `forums_topics` = (SELECT COUNT(*) FROM ?_forums_topics 
                            WHERE ?_forums.`forums_id` = ?_forums_topics.`topics_forums_id`);"
);
                
$db->query("UPDATE ?_forums SET `forums_posts` = (SELECT COUNT(*) FROM ?_forums_posts
                            WHERE ?_forums.`forums_id` = ?_forums_posts.`posts_forums_id`);"
);
                
$db->query("UPDATE ?_forums_topics SET `topics_posts` = (SELECT COUNT(*) FROM ?_forums_posts
                            WHERE ?_forums_topics.`topics_id` = ?_forums_posts.`posts_topics_id`);"
);

                
$inSes->addMessage('Все данные успешно пересчитаны!', 'ok');
            }
            else  
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
        }
        else 
$inSes->addMessage('Ошибка! Пересчитывать сообщения могут только суперадмины!');
    }

    if (!empty(
$_POST['add_forum'])) { // Добавление разделов

        
$title = !empty($_POST['title']) ? check($_POST['title']) : '';

        if (
is_admin(array(101))) {

            if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

                if (
cms_strlen($title) >= 3 && cms_strlen($title) <= 100) {

                    
$maxorder = $db->selectCell("SELECT IFNULL(MAX(`forums_order`),0)+1 FROM ?_forums;");

                    
$db->query("INSERT INTO ?_forums (`forums_order`, `forums_title`) VALUES (?, ?);", $maxorder, $title);

                    
$inSes->addMessage('Новый раздел успешно добавлен!', 'ok');
                }
                else 
$inSes->addMessage('Ошибка! Слишком длинное или короткое название раздела!');
            }
            else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
        }
        else 
$inSes->addMessage('Ошибка! Добавлять разделы могут только суперадмины!');
    }

    switch(
$mod):
    default:

    
show_header('Управление форумом');

    
$forums = $db->selectPage($total, "SELECT * FROM ?_forums ORDER BY `forums_order` ASC;");

    if ( !empty(
$forums) && $total > 0 ) {

        
$output = array();

        foreach( 
$forums as $row ) {

            
$id = $row['forums_id'];
            
$fp = $row['forums_parent'];
            
$output[$fp][$id] = $row;
        }

        echo 
'<div class="b">';
        echo 
'<a href="#down">' . icon('down.png') . '</a> ';
        echo 
'<a href="../forum/' . gen_uri('index', '', RND) . '">Обзор форума</a><br /></div>';

        foreach(
$output[0] as $key => $data) {

            echo 
'<div class="b">' . icon('forums.gif');
            echo 
' <b>' . $data['forums_order'] . '. <a href="?m=forums&amp;fid=' . $data['forums_id'] . '&amp;' . RND . '">' . $data['forums_title'] . '</a></b> (' . $data['forums_topics'] . '/' . $data['forums_posts'] . ')<br />';

            if (
is_admin(array(101))) {

                echo 
'<a href="?m=edit_forum&amp;id=' . $data['forums_id'] . '&amp;' . RND . '">Редактировать</a> | ';
                echo 
'<a href="?m=del_forum&amp;id=' . $data['forums_id'] . '&amp;' . RND . '">Удалить</a>';
            }

            
//echo '</div><div class="b">';
            
echo '<hr />';

            if (!empty(
$output[$key])) {

                foreach(
$output[$key] as $datasub) {

                    echo 
icon('topics-small.gif');
                    echo 
' <b>' . $datasub['forums_order'] . '. <a href="?m=forums&amp;fid=' . $datasub['forums_id'] . '&amp;' . RND . '">' . $datasub['forums_title'] . '</a></b>  (' . $datasub['forums_topics'] . '/' . $datasub['forums_posts'] . ') ';

                    if (
is_admin(array(101))) {

                        echo 
'(<a href="?m=edit_forum&amp;id=' . $datasub['forums_id'] . '&amp;' . RND . '">Редактировать</a> | ';
                        echo 
'<a href="?m=del_forum&amp;id=' . $datasub['forums_id'] . '&amp;' . RND . '">Удалить</a>)';
                    }
                    echo 
'<br />';
                }
            }

            if (
$data['forums_last_id'] > 0) {

                echo 
'Тема: <a href="?m=topic&amp;tid=' . $data['forums_last_id'] . '&amp;' . RND . '">' . $data['forums_last_themes'] . '</a><br />';
                echo 
'Сообщение: ' . nickname($data['forums_last_user']) . ' (' . get_date($data['forums_last_time']) . ')';
            }
            else echo 
'Темы еще не созданы!';
            echo 
'</div>';
        }
    }
    else {
    
        
show_error('Разделы форума еще не созданы!');
    }

    if (
is_admin(array(101))) {

        echo 
'<div class="b">';
        echo 
'<form action="?m=forum&amp;rnd=' . $_SESSION['token'] . '&amp;' . RND . '" method="post">';
        echo 
'Заголовок:<br />';
        echo 
'<input type="text" name="title" maxlength="100" />';
        echo 
'<input type="submit" name="add_forum" class="btns" value="Создать раздел" /></form><br />';
        echo 
icon('mail.png');
        echo 
'<a href="?m=forum&amp;restatement=1&amp;rnd=' . $_SESSION['token'] . '&amp;' . RND . '">Пересчитать</a> | ';
        echo 
'<a href="?m=set_forum&amp;&&amp;' . RND . '">Настройки</a><br /></div>';
    }

    break;
    case 
'edit_forum':

        if (
is_admin(array(101))) {

            
$forums = $db->selectRow("SELECT * FROM ?_forums WHERE `forums_id` = ? LIMIT 1;", $id);

            if (!empty(
$forums)) {

                if (!empty(
$_POST['cancel'])) {

                    
redirect('?m=forum&' . RND);
                }

                if (!empty(
$_POST['submit'])) {

                    
$keyw   = !empty($_POST['keyw']) ? check($_POST['keyw']) : '';
                    
$desc   = !empty($_POST['desc']) ? check($_POST['desc']) : '';
                    
$title  = !empty($_POST['title']) ? check($_POST['title']) : '';
                    
$order  = abs(intval($_POST['order']));
                    
$parent = abs(intval($_POST['parent']));
                    
$keyw   = cms_tolower($keyw);

                    if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

                        if (
cms_strlen($title) >= 3 && cms_strlen($title) <= 100) {

                            if (
$id != $parent) {

                                
$forums = $db->query("SELECT forums_id FROM ?_forums WHERE forums_parent = ? LIMIT 1;", $id);

                                if (empty(
$forums) || $parent == 0) {

                                    
$db->query("UPDATE ?_forums SET `forums_order` = ?, `forums_parent` = ?, `forums_title` = ?, `forums_keywords` = ?, `forums_description` = ? WHERE `forums_id` = ?;", $order, $parent, $title, $keyw, $desc, $id);

                                    
$inSes->addMessage('Раздел успешно отредактирован!', 'ok');

                                    
redirect('?m=forum&' . RND);
                                }
                                else 
$inSes->addMessage('Ошибка! Данный раздел имеет подфорумы!');
                            }
                            else 
$inSes->addMessage('Ошибка! Недопустимый выбор родительского форума!');
                        }
                        else 
$inSes->addMessage('Ошибка! Слишком длинное или короткое название раздела!');
                    }
                    else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
                }

                
show_header('Редактирование - ' . $forums['forums_title']);

                
$section = $db->select("SELECT * FROM ?_forums WHERE `forums_parent` = '0' ORDER BY `forums_order` ASC;");
                
$show[0] = 'Основной форум';

                foreach(
$section as $data) {

                    if (
$id != $data['forums_id']) {

                        
$show[$data['forums_id']] = $data['forums_title'];
                    }
                }
                
$form = new cmsForm('?m=edit_forum&amp;id=' . $id . '&amp;rnd=' . $_SESSION['token'] . '&amp;' . RND);
                
$form->addText('Раздел:', 'title', $forums['forums_title']);
                
$form->addSelect('Родительский форум:', 'parent', $forums['forums_parent'], $show);
                
$form->addTextarea('Keywords:', 'keyw', $forums['forums_keywords']);
                
$form->addTextarea('Description:', 'desc', $forums['forums_description']);
                
$form->addText('Положение:', 'order', $forums['forums_order']);
                echo 
$form->Submit(array('Изменить', 'Отмена'), array('submit', 'cancel'));
                unset(
$form);
            }
            else {

                
$inSes->addMessage('Ошибка! Данного раздела не существует!');
                
redirect('?m=forum&' . RND);
            }
        }
        else {

            
$inSes->addMessage('Ошибка! Изменять разделы могут только суперадмины!');
            
redirect('?m=forum&' . RND);
        }

    break;
    case 
'del_forum':

        if (
is_admin(array(101))) {

            
$forums = $db->selectRow("SELECT `f1`.*, count(`f2`.`forums_id`) AS `subcnt` FROM ?_forums `f1`
                                      LEFT JOIN ?_forums `f2`
                                      ON `f2`.`forums_parent` = `f1`.`forums_id`
                                      WHERE `f1`.`forums_id` = ? 
                                      GROUP BY `forums_id` LIMIT 1;"
, $id);

            if (!empty(
$forums['forums_id'])) {

                if (empty(
$forums['subcnt'])) {

                    if (!empty(
$_GET['del']) && $_GET['del'] == $_SESSION['token']) {

                        
$db->query("DELETE FROM ?_forums_posts WHERE `posts_forums_id` = ?", $id);
                        
$db->query("DELETE FROM ?_forums_topics WHERE `topics_forums_id` = ?", $id);
                        
$db->query("DELETE FROM ?_forums WHERE `forums_id` = ?", $id);
                        
$db->query("OPTIMIZE TABLE ?_forums, ?_forums_topics, ?_forums_posts");
                        
del_vars('forum_select_search');
                        
del_vars('forum_select_addtheme');
                        
$inSes->addMessage('Раздел успешно удален!', 'ok');
                        
redirect('?m=forum&' . RND);
                    }

                    
show_header('Управление форумом - Удаление');
                    echo 
'<div class="b">Вы уверены что хотите удалить раздел <b>' . $forums['forums_title'] . '</b> в форуме?<br /><br />';
                    echo 
icon('error.gif', 'icons');
                    echo 
' <a href="?m=del_forum&amp;id=' . $id . '&amp;del=' . $_SESSION['token'] . '&amp;' . RND . '"><b>Да, уверен!</b></a>';
                    echo 
'<br /></div>';
                    echo 
'<div class="b">' . icon('return.png') . ' <a href="?m=forum&amp;' . RND . '">Вернуться</a><br /></div>';
                }
                else {

                    
$inSes->addMessage('Ошибка! Данный раздел имеет подфорумы!');
                    
redirect('?m=forum&' . RND);
                }
            }
            else {

                
$inSes->addMessage('Ошибка! Данного раздела не существует!');
                
redirect('?m=forum&' . RND);
            }
        }
        else {

           
$inSes->addMessage('Ошибка! Удалять разделы могут только суперадмины!');
           
redirect('?m=forum&' . RND);
        }

    break;
    case 
'forums':

        
$forums = $db->selectRow("SELECT * FROM ?_forums WHERE forums_id = ? LIMIT 1;", $fid);

        if (!empty(
$forums)) {

            if (!empty(
$_REQUEST['delt'])) {

                
$del = intar($_REQUEST['delt']);

                if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

                    if (!
is_array($del)) $del = array($del);

                    if (
$del > 0) {

                        
$del = implode(',', $del);

                        
$oldlast = $db->selectRow("SELECT * FROM ?_forums_topics 
                                                   WHERE `topics_forums_id` = ? ORDER BY `topics_last_time` DESC LIMIT 1;"
, $fid);

                        
$deltopics = $db->query("DELETE FROM ?_forums_topics WHERE `topics_id` IN (" . $del . ");");
                        
$delposts  = $db->query("DELETE FROM ?_forums_posts WHERE `posts_topics_id` IN (" . $del . ");");

                        
// Обновление счетчиков
                        
$db->query("UPDATE ?_forums SET `forums_topics` = `forums_topics` - ?, `forums_posts` = `forums_posts` - ?
                                    WHERE `forums_id` = ?"
, $deltopics, $delposts, $fid);

                        
$db->query("UPDATE ?_forums SET `forums_last_id` = ?, `forums_last_themes` = ?, `forums_last_user` = ?, `forums_last_time` = ? WHERE `forums_id` = ?", $oldlast['topics_id'], $oldlast['topics_title'], $oldlast['topics_last_user'], $oldlast['topics_last_time'], $fid);

                        
del_vars('forum_select_search');
                        
del_vars('forum_select_addtheme');

                        
$inSes->addMessage('Выбранные темы успешно удалены!', 'ok');
                    }
                    else 
$inSes->addMessage('Ошибка! Отсутствуют выбранные темы форума!');
                }
                else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
            }

            
show_header('Управление форумом');

            echo 
'<div class="b">';
            echo 
'<div class="right"><a href="../forum/' . gen_uri('forum', $fid, RND) . '">Обзор раздела</a></div>';
            echo 
'<a href="#down">' . icon('down.png') . '</a> ';
            echo 
'<a href="?m=forum&amp;' . RND . '">Форум</a> | ';
            echo 
'<b>' . $forums['forums_title'] . '</b><br /></div>';

            
$onpage = !empty($config['themes_num']) ? num($config['themes_num']) : 10;

            if (
$page > 1) $from = ($page - 1) * $onpage; else $from = 0;

            
$rows = $db->selectPage($total, "SELECT * FROM ?_forums_topics
                                             WHERE `topics_forums_id` = ?
                                             ORDER BY `topics_locked` DESC, `topics_last_time` DESC
                                             LIMIT ?d, ?d"
, $fid, $from, $onpage);

            if (!empty(
$rows) && $total > 0) {

                echo 
'<form action="?m=forums&amp;fid=' . $fid . '&amp;rnd=' . $_SESSION['token'] . '&amp;' . RND . '" method="post">';

                foreach(
$rows as $row) {

                    if (
$row['topics_locked'] == 1) {

                        
$icon = icon('sticky-notes-pin.png', 'icons');
                    }
                    else if (
$row['topics_closed'] == 1) {

                        
$icon = icon('lock.png', 'icons');
                    }
                    else 
$icon = icon('post_new.png', 'icons');

                    echo 
'<div class="b">&nbsp;' . $icon;
                    echo 
'<a href="?m=topic&amp;tid=' . $row['topics_id'] . '&amp;' . RND . '"><b>' . $row['topics_title'] . '</b></a> (' . $row['topics_posts'] . ')<br />';

                    echo 
'<input type="checkbox" name="delt[]" value="' . $row['topics_id'] . '" /> ';

                    echo 
'<a href="?m=edit_topic&amp;tid=' . $row['topics_id'] . '&amp;page=' . $page . '&amp;' . RND . '">Редактировать</a> | ';
                    echo 
'<a href="?m=move_topic&amp;tid=' . $row['topics_id'] . '&amp;page=' . $page . '&amp;' . RND . '">Переместить</a>';

                    echo 
'<br />Страницы: ';
                    
forum_navigation('?', $row['topics_id'], $config['post_num'], $row['topics_posts']);
                    echo 
'Сообщение: ' . nickname($row['topics_last_user']) . ' (' . get_date($row['topics_last_time']) . ')</div>';
                }

                echo 
'<div class="b"><input type="submit" class="btns" value="Удалить выбранное" /></form></div>';

                echo 
show_pages('?m=forums&amp;fid=' . $fid);
            }
            else {

                
show_error('В данном форуме еще нет тем!');
            }
        }
        else {

            
show_error('Ошибка! Данного раздела не существует!');
        }

        echo 
'<div class="b">' . icon('return.png') . ' <a href="?m=forum&amp;' . RND . '">К форумам</a><br /></div>';

    break;
    case 
'edit_topic':

    
$topics = $db->selectRow("SELECT `t`.*, `f`.`forums_id`
                              FROM ?_forums_topics `t`
                              LEFT JOIN ?_forums `f`
                              ON `t`.`topics_forums_id` = `f`.`forums_id`
                              WHERE `t`.`topics_id` = ? LIMIT 1;"
, $tid);

    if (!empty(
$topics)) {

        if (!empty(
$_POST['cancel'])) {

            
redirect('?m=forums&fid=' . $topics['forums_id'] . '&page=' . $page);
        }
        if (!empty(
$_POST['submit'])) {

            
$title  = !empty($_POST['title'])  ? check($_POST['title']) : '';
            
$mod    = !empty($_POST['mod'])    ? check($_POST['mod'])   : '';
            
$locked = !empty($_POST['locked']) ? 1 : 0;
            
$closed = !empty($_POST['closed']) ? 1 : 0;

            if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

                if (
cms_strlen($title) >= 3 && cms_strlen($title) <= 100) {

                    
$db->query("UPDATE ?_forums_topics SET `topics_title` = ?, `topics_closed` = ?, `topics_locked` = ?, `topics_mod` = ?
                                WHERE `topics_id` = ?;"
, $title, $closed, $locked, $mod, $tid);

                    if (
$locked == 1) { $page = 1; }

                    
$inSes->addMessage('Тема успешно отредактирована!', 'ok');

                    
redirect('?m=forums&fid=' . $topics['forums_id'] . '&page=' . $page);
                }
                else 
$inSes->addMessage('Ошибка! Слишком длинное или короткое название темы!');
            }
            else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
        }

        
show_header('Управление форумом - Редактирование');
        
$form = new cmsForm('?m=edit_topic&amp;page=' . $page . '&amp;rnd=' . $_SESSION['token'] . '&amp;' . RND, 'post');
        
$form->addText('Тема:', 'title', $topics['topics_title']);
        
$form->addTextarea('Кураторы темы:', 'mod', $topics['topics_mod']);
        
$form->addCheckbox(array('', '- Закрепить тему'), 'locked', $topics['topics_locked']);
        
$form->addCheckbox(array('', '- Закрыть тему'), 'closed', $topics['topics_closed']);
        
$form->addHidden('fid', $topics['forums_id']);
        
$form->addHidden('tid', $tid);
        echo 
$form->Submit(array('Изменить', 'Отмена'), array('submit', 'cancel'));
        unset(
$form);
    }
    else {

        
$inSes->addMessage('Ошибка! Данной темы не существует!');
        
redirect('?m=forum&' . RND);
    }

    break;
    case 
'move_topic':

    
$topics = $db->selectRow("SELECT * FROM ?_forums_topics WHERE `topics_id` = ? LIMIT 1;", $tid);

    if (!empty(
$topics)) {

        if (!empty(
$_POST['cancel'])) {

            
redirect('?m=forums&fid=' . $topics['topics_forums_id'] . '&page=' . $page);
        }
        if (!empty(
$_POST['submit'])) {

            
$section = !empty($_POST['section']) ? num($_POST['section']) : 0;

            if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

                
$forums = $db->selectRow("SELECT * FROM ?_forums WHERE `forums_id` = ? LIMIT 1;", $section);

                if (!empty(
$forums)) {

                    if (
strpos($topics['topics_title'], 'Перемещено') == false) $title = $topics['topics_title'] . ' (Перемещено)';
                    else 
$title = $topics['topics_title'];

                    
$msg  = 'Тема была перемещена в раздел [b]' . $forums['forums_title'] . '[/b] по адресу ';
                    
$msg .= $config['site_url'] . '/forum/' . gen_uri('topic', $tid, RND);

                    
$lastid = $db->query("INSERT INTO ?_forums_topics (topics_forums_id, topics_title, topics_author, topics_closed, topics_posts, topics_last_user, topics_last_time) VALUES (?, ?, ?, ?, ?, ?, ?);", $topics['topics_forums_id'], $title, $topics['topics_author'], 1, 1, $log, SITE_TIME);

                    
$db->query("INSERT INTO ?_forums_posts (posts_topics_id, posts_forums_id, posts_user, posts_text, posts_time, posts_ip, posts_brow) VALUES (?, ?, ?, ?, ?, ?, ?);", $lastid, $topics['topics_forums_id'], $log, $msg, SITE_TIME, $ip, $brow);

                    
// Обновление номера раздела
                    
$db->query("UPDATE ?_forums_topics SET `topics_forums_id` = ? WHERE `topics_id` = ?;", $section, $tid);
                    
$db->query("UPDATE ?_forums_posts SET `posts_forums_id` = ? WHERE `posts_topics_id` = ?;", $section, $tid);

                    
// Обновление счетчиков
                    
$db->query("UPDATE ?_forums SET `forums_topics` = (`forums_topics` + 1), `forums_posts` = `forums_posts`+?
                                WHERE `forums_id` = ?"
, $topics['topics_posts'], $section);

                    
$db->query("UPDATE ?_forums SET `forums_posts` = `forums_posts` + 1 - ?
                                WHERE `forums_id` = ?"
, $topics['topics_posts'], $topics['topics_forums_id']);

                    
$oldlast = $db->selectRow("SELECT * FROM ?_forums_topics
                                               WHERE `topics_forums_id` = ?
                                               ORDER BY `topics_last_time` DESC LIMIT 1;"
, $topics['topics_forums_id']);

                    
$newlast = $db->selectRow("SELECT * FROM ?_forums_topics
                                               WHERE `topics_forums_id` = ?
                                               ORDER BY `topics_last_time` DESC LIMIT 1;"
, $section);

                    
$db->query("UPDATE ?_forums SET `forums_last_id` = ?, `forums_last_themes` = ?, `forums_last_user` = ?, `forums_last_time` = ?
                                WHERE `forums_id` = ?"
, $oldlast['topics_id'], $oldlast['topics_title'], $oldlast['topics_last_user'], $oldlast['topics_last_time'], $oldlast['topics_forums_id']);

                    
$db->query("UPDATE ?_forums SET `forums_last_id` = ?, `forums_last_themes` = ?, `forums_last_user` = ?, `forums_last_time` = ?
                                WHERE `forums_id` = ?"
, $newlast['topics_id'], $newlast['topics_title'], $newlast['topics_last_user'], $newlast['topics_last_time'], $newlast['topics_forums_id']);

                    
$inSes->addMessage('Тема успешно перемещена!', 'ok');

                    
redirect('?m=forums&fid=' . $topics['topics_forums_id'] . '&page=' . $page);
                }
                else 
$inSes->addMessage('Ошибка! Выбранного раздела не существует!');
            }
            else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
        }

        
show_header('Управление форумом - Перемещение темы');

        echo 
'<div class="b">' . icon('post_new.png', 'icons');
        echo 
' <b>' . $topics['topics_title'] . '</b> (Автор темы: ' . nickname($topics['topics_author']) . ')</div>';

        
$forums = $db->select("SELECT forums_id, forums_parent, forums_title FROM ?_forums ORDER BY forums_order ASC;");

        if (
count($forums) > 0) {

            
$output = array();

            foreach (
$forums as $row) {
                
$i = $row['forums_id'];
                
$p = $row['forums_parent'];
                
$output[$p][$i] = $row;
            }

            
$show = array();

            foreach(
$output[0] as $key => $data) {

                if (
$topics['topics_forums_id'] != $data['forums_id']) {

                    
$show[$data['forums_id']] = $data['forums_title'];
                }

                if (isset(
$output[$key])) {

                    foreach(
$output[$key] as $datasub) {

                        if (
$topics['topics_forums_id'] != $datasub['forums_id']) {

                            
$show[$datasub['forums_id']] = '– ' . $datasub['forums_title'];
                        }
                    }
                }
            }
            echo 
'</select>';
            
$form = new cmsForm('?m=move_topic&amp;rnd=' . $_SESSION['token'] . '&amp;' . RND, 'post');
            
$form->addSelect('Выберите раздел для перемещения:', 'section', '', $show);
            
$form->addHidden('fid', $topics['topics_forums_id']);
            
$form->addHidden('tid', $tid);
            echo 
$form->Submit(array('Переместить', 'Отмена'), array('submit', 'cancel'));
            unset(
$form);
        }
        else {

            
$inSes->addMessage('Разделы форума еще не созданы!');
            
redirect('?m=forum&' . RND);
        }
    }
    else {

        
$inSes->addMessage('Ошибка! Данной темы не существует!');
        
redirect('?m=forum&' . RND);
    }

    break;
    case 
'act_topic':

        
$do = !empty($_GET['do']) ? check($_GET['do']) : '';

        if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

            
$topics = $db->selectRow("SELECT * FROM ?_forums_topics WHERE `topics_id` = ? LIMIT 1;", $tid);

            if (!empty(
$topics)) {

                switch (
$do):
                case 
'closed':
                    
$db->query("UPDATE ?_forums_topics SET `topics_closed` = ? WHERE `topics_id` = ?;", 1, $tid);
                    
$inSes->addMessage('Тема успешно закрыта!', 'ok');
                break;
                case 
'open':
                    
$db->query("UPDATE ?_forums_topics SET `topics_closed` = ? WHERE `topics_id` = ?;", 0, $tid);
                    
$inSes->addMessage('Тема успешно открыта!', 'ok');
                break;
                case 
'locked':
                    
$db->query("UPDATE ?_forums_topics SET `topics_locked` = ? WHERE `topics_id` = ?;", 1, $tid);
                    
$inSes->addMessage('Тема успешно закреплена!', 'ok');
                break;
                case 
'unlocked':
                    
$db->query("UPDATE ?_forums_topics SET `topics_locked` = ? WHERE `topics_id` = ?;", 0, $tid);
                    
$inSes->addMessage('Тема успешно откреплена!', 'ok');
                break;
                default:
                    
$inSes->addMessage('Ошибка! Не выбрано действие для темы!');
                endswitch;
            }
            else 
$inSes->addMessage('Ошибка! Данной темы не существует!');
        }
        else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');

        
redirect('?m=topic&tid=' . $tid . '&page=' . $page);

    break;
    case 
'topic':

        if (!empty(
$_POST['del'])) {

            
$del = intar($_POST['del']);

            if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

                if (!empty(
$del)) {

                    
$topics = $db->selectRow("SELECT * FROM ?_forums_topics WHERE `topics_id` = ? LIMIT 1;", $tid);

                    
$del = implode(',', $del);

                    
$delposts = $db->query("DELETE FROM ?_forums_posts WHERE `posts_id` IN(" . $del . ") AND `posts_topics_id` = ?", $tid);

                    
$db->query("UPDATE ?_forums_topics SET `topics_posts` = `topics_posts` - ? WHERE `topics_id` = ?", $delposts, $tid);

                    
$db->query("UPDATE ?_forums SET `forums_posts` = `forums_posts` - ?
                                WHERE `forums_id` = ?"
, $delposts, $topics['topics_forums_id']);

                    
$db->query("OPTIMIZE TABLE ?_forums, ?_forums_topics, ?_forums_posts");

                    
$inSes->addMessage('Выбранные сообщения успешно удалены!', 'ok');
                }
                else 
$inSes->addMessage('Ошибка! Отсутствуют выбранные сообщения!');
            }
            else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
        }

        
show_header('Управление форумом - Просмотр сообщений');

        
$topic = $db->selectRow("SELECT `t`.*, `f`.`forums_id`, `f`.`forums_title`
                                 FROM ?_forums_topics `t`
                                 LEFT JOIN ?_forums `f`
                                 ON `t`.`topics_forums_id` = `f`.`forums_id`
                                 WHERE `t`.`topics_id` = ? LIMIT 1;"
, $tid);

        if (!empty(
$topic)) {

            echo 
'<div class="b">';
            echo 
'<div class="right"><a href="' . $config['site_url'] . '/forum/' . gen_uri('topic', $tid, RND) . '">Обзор темы</a></div>';
            echo 
'<a href="#down">' . icon('down.png') . '</a> ';
            echo 
'<a href="?m=forum&amp;' . RND . '">Форум</a> | ';
            echo 
'<a href="?m=forums&amp;fid=' . $topic['forums_id'] . '&amp;' . RND . '">' . $topic['forums_title'] . '</a> | ';
            echo 
'<b>' . $topic['topics_title'] . '</b></div>';

            if (!empty(
$topic['topics_mod'])) {

                
$topics_mod = explode(',', $topic['topics_mod']);
                
$kur = array();
                foreach(
$topics_mod as $mkey => $mval) {

                    
$kur[] = users_anketa($mval);
                }
                echo 
'<div class="b">Кураторы темы: ' . implode(', ', $kur) . '...</div>';
            }

            echo 
'<div class="b">';

            if (empty(
$topic['topics_closed'])) {

                echo 
'<a href="?m=act_topic&amp;do=closed&amp;tid=' . $tid . '&amp;page=' . $page . '&amp;rnd=' . $_SESSION['token'] . '&amp;' . RND . '">Закрыть</a> | ';
            }
            else
            {
                echo 
'<a href="?m=act_topic&amp;do=open&amp;tid=' . $tid . '&amp;page=' . $page . '&amp;rnd=' . $_SESSION['token'] . '&amp;' . RND . '">Открыть</a> | ';
            }

            if (empty(
$topic['topics_locked'])) {

                echo 
'<a href="?m=act_topic&amp;do=locked&amp;tid=' . $tid . '&amp;page=' . $page . '&amp;rnd=' . $_SESSION['token'] . '&amp;' . RND . '">Закрепить</a> | ';
            }
            else
            {
                echo 
'<a href="?m=act_topic&amp;do=unlocked&amp;tid=' . $tid . '&amp;page=' . $page . '&amp;rnd=' . $_SESSION['token'] . '&amp;' . RND . '">Открепить</a> | ';
            }

            echo 
'<a href="?m=edit_topic&amp;tid=' . $tid . '&amp;page=' . $page . '&amp;' . RND . '">Изменить</a> | ';
            echo 
'<a href="?m=move_topic&amp;tid=' . $tid . '&amp;' . RND . '">Переместить</a> | ';
            echo 
'<a href="?m=forums&amp;fid=' . $topic['forums_id'] . '&amp;delt=' . $tid . '&amp;rnd=' . $_SESSION['token'] . '&amp;' . RND . '" onclick="return confirm('Вы действительно хотите удалить данную тему?')">Удалить</a><br /></div>';

            
$onpage = !empty($config['post_num']) ? num($config['post_num']) : 10;

            if (
$page > 1) $from = ($page - 1) * $onpage; else $from = 0;

            
$rows = $db->selectPage($total, "SELECT * FROM ?_forums_posts WHERE `posts_topics_id` = ?
                                             ORDER BY `posts_time` ASC
                                             LIMIT ?d, ?d"
, $tid, $from, $onpage);

            if (
$total > 0) {

                echo 
'<form action="?m=topic&amp;tid=' . $tid . '&amp;page=' . $page . '&amp;rnd=' . $_SESSION['token'] . '&amp;' . RND . '" method="post" name="topic">';

                
$i = 0;
                foreach(
$rows as $data) {
                    ++
$i;

                    echo 
'<div class="b">' . user_avatars($data['posts_user']);

                    echo (
$from + $i) . '. <b>' . users_anketa($data['posts_user']) . '</a></b> ';
                    echo 
user_title($data['posts_user']) . user_online($data['posts_user']);

                    echo 
' <small>(' . get_date($data['posts_time']) . ')</small><br />';

                    echo 
'<input type="checkbox" name="del[]" value="' . $data['posts_id'] . '" /> ';

                    echo 
'<a href="?m=edit_post&amp;tid=' . $tid . '&amp;pid=' . $data['posts_id'] . '&amp;page=' . $page . '&amp;' . RND . '">Редактировать</a><br />';

                    echo 
nl2br(bb_code($data['posts_text'])) . '<br />';

                    if (!empty(
$data['posts_edit'])) {

                        echo 
icon('exclamation_small.gif') . ' <small>Отредактировано: ' . nickname($data['posts_edit']) . ' (' . get_date($data['posts_edit_time']) . ')</small><br />';
                    }

                    echo 
'<span class="data">(' . $data['posts_brow'] . ', ' . $data['posts_ip'] . ')</span></div>';
                }

                echo 
'<div class="b">';
                echo 
'<input type="checkbox" name="master_box" title="Отметить всё" onclick="javascript:ckeck_uncheck_all()">';
                echo 
'<input type="submit" class="btns" value="Удалить выбранное" /></form><br /></div>';

                echo 
show_pages('?m=topic&amp;tid=' . $tid);
            }
            else {
                
show_error('Сообщений еще нет, будь первым!');
            }

            if (
$topic['topics_closed'] == 0) {

                
$form = new cmsForm('../forum/' . gen_uri('add', $tid, 'page=' . $page . '&amp;rnd=' . $_SESSION['token'] . '&amp;' . RND), 'post', ' name="post" id="post"');
                
$form->addTextarea('Сообщение:', 'msg', '', ' id="msg"');
                echo 
$form->submit('Написать','submit');
                unset(
$form);
            }
            else {

                
show_error('Данная тема закрыта для обсуждения!');
            }
        }
        else {

           
show_error('Ошибка! Данной темы не существует!');
        }

        echo 
'<div class="b">' . icon('return.png') . ' <a href="?m=forum&amp;' . RND . '">К форумам</a><br /></div>';

        echo <<<JSCRIPT

<script language='JavaScript' type="text/javascript">
<!--
function ckeck_uncheck_all() {
    var frm = document.topic;
    if(frm.master_box.checked == true){ frm.master_box.checked = false; }
    else{ frm.master_box.checked = true; }
    for (var i=0;i<frm.elements.length;i++) {
        var elmnt = frm.elements[i];
        if (elmnt.type=='checkbox') {
            if(frm.master_box.checked == true){ elmnt.checked=false; }
            else{ elmnt.checked=true; }
        }
    }
    //if(frm.master_box.checked == true){ frm.master_box.checked = false; }
    //else{ frm.master_box.checked = true; }
}
-->
</script>

JSCRIPT;

    break;
    case 
'edit_post':

        
$pid = !empty($_GET['pid']) ? num($_GET['pid']) : 0;

        
$post = $db->selectRow("SELECT * FROM ?_forums_posts WHERE `posts_id` = ? LIMIT 1;", $pid);

        if (!empty(
$post)) {

            if (!empty(
$_POST['cancel'])) {

                
redirect('?m=topic&amp;tid=' . $post['posts_topics_id'] . '&page=' . $page . '&' . RND);
            }

            if (!empty(
$_POST['submit'])) {

                
$text = !empty($_POST['text']) ? check($_POST['text']) : '';

                if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

                    if (
cms_strlen($text) >= 5 && cms_strlen($text) <= $config['forum_max_text']) {

                        
$text = smiles($text);

                        if (
is_admin(array(101))) {

                            
$db->query("UPDATE ?_forums_posts SET `posts_text` = ? WHERE `posts_id` = ?", $text, $pid);
                        }
                        else {

                            
$db->query("UPDATE ?_forums_posts SET `posts_text` = ?, `posts_edit` = ?, `posts_edit_time` = ?
                                        WHERE `posts_id` = ?"
, $text, $log, SITE_TIME, $pid);
                        }

                        
$inSes->addMessage('Сообщение успешно отредактировано!', 'ok');

                        
redirect('?m=topic&amp;tid=' . $post['posts_topics_id'] . '&page=' . $page . '&' . RND);
                    }
                    else 
$inSes->addMessage('Ошибка! Слишком длинное или короткое сообщение!');
                }
                else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
            }

            
show_header('Управление форумом');

            
$post['posts_text'] = nosmiles($post['posts_text']);
            
$post['posts_text'] = str_replace('<br />', "rn", $post['posts_text']);
            
$text = !empty($_POST['text']) ? $_POST['text'] : $post['posts_text'];

            echo 
'<div class="b">' . icon('edit.png', 'icons');
            echo 
' <b>' . users_anketa($post['posts_user']) . '</b> <small>(' . get_date($post['posts_time']) . ')</small><br /></div>';

            if (!empty(
$_GET['code'])) include( MODULES_PATH . 'code.inc.php' );
            else if (!empty(
$_GET['smiles'])) include( MODULES_PATH . 'smiles.inc.php' );

            
$form = new cmsForm('?m=edit_post&amp;pid=' . $pid . '&amp;page=' . $page . '&amp;rnd=' . $_SESSION['token'] . '&amp;' . RND, 'post', ' name="form" id="post"');
            
$form->addCode(blink('*') . ' Сообщение: <small>');
            
$form->addCode('[<a href="?m=edit_post&amp;pid=' . $pid . '&amp;smiles=1&amp;page=' . $page . '">Смайлы</a>] ');
            
$form->addCode('[<a href="?m=edit_post&amp;pid=' . $pid . '&amp;code=1&amp;page=' . $page . '">ББ-коды</a>]</small>');
            
$form->addCode(' [<a href="#post" onclick="document.post.msg.rows += 5;">+</a>]');
            
$form->addCode(' [<a href="#post" onclick="document.post.msg.rows -= 5;">-</a>]');
            
$form->addTextarea('Сообщение:', 'text', $text, ' id="msg" style="width:98%;"');
            
$form->addHidden('tid', $post['posts_topics_id']);
            echo 
$form->Submit(array('Редактировать', 'Отмена'), array('submit', 'cancel'));
            unset(
$form);
            echo 
'<div class="b">' . icon('return.png');
            echo 
'<a href="?m=topic&amp;tid=' . $post['posts_topics_id'] . '&amp;page=' . $page . '&amp;' . RND . '">Вернуться</a></div>';
        }
        else {

            
$inSes->addMessage('Ошибка! Данного сообщения не существует!');
            
redirect('?m=forum&' . RND);
        }

    break;

    endswitch;

    echo 
'<div class="b">' . icon('return.png') . ' <a href="?' . RND . '">В админку</a><br /></div>';

    
show_footer();
}
else {

    
header ('Location: ' . $config['site_url'] . '/out/');
    exit;
}

?>
Онлайн: 0
Реклама