Вход Регистрация
Файл: 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($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) >= && 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 ) {

        
$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) >= && 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'$fidRND) . '">Обзор раздела</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']) ? 0;
            
$closed = !empty($_POST['closed']) ? 0;

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

                if (
cms_strlen($title) >= && 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'$tidRND);

                    
$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'], 11$logSITE_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$msgSITE_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'$tidRND) . '">Обзор темы</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) >= && 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$logSITE_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;
}

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