Файл: CMS/core/modules/forum_addtheme.php
Строк: 91
<?php
if (!defined('CMS')) { die('Access Denied!'); }
$forums = get_vars('forum_select_addtheme');
if (!$forums) {
    $rows = $db->select("SELECT `forums_id`, `forums_parent`, `forums_title` FROM ?_forums ORDER BY `forums_order` ASC;");
    if (!empty($rows) && count($rows) > 0) {
        $output = array();
        foreach($rows as $row) {
            $i = $row['forums_id'];
            $p = $row['forums_parent'];
            $output[$p][$i] = $row;
        }
        foreach($output[0] as $key => $data) {
            $forums[$data['forums_id']] = $data['forums_title'];
            if (isset($output[$key])) {
                foreach($output[$key] as $datasub) {
                    $forums[$datasub['forums_id']] = '– ' . $datasub['forums_title'];
                }
            }
        }
    }
    set_vars('forum_select_addtheme', $forums);
}
if (!empty($_POST['cancel'])) {
    gen_red('forum', $id, RND);
}
if (!empty($_POST['submit'])) {
    $fid   = !empty($_POST['fid'])   ? num($_POST['fid'])     : 0;
    $title = !empty($_POST['title']) ? check($_POST['title']) : '';
    $msg   = !empty($_POST['text'])  ? check($_POST['text'])  : '';
    $track = !empty($_POST['track']) ? 1 : 0;
    $error = '';
    if ($is_logged) {
        if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
            if (cms_strlen($title) >= 3 && cms_strlen($title) <= 100) {
                if (cms_strlen($msg) >= 10 && cms_strlen($msg) <= $config['forum_max_text'] || is_admin()) {
                    $row = $db->selectRow("SELECT * FROM ?_forums WHERE `forums_id` = ? LIMIT 1;", $fid);
                    if (!empty($row)) {
                        if (is_admin()) {
                            $admins = !empty($_POST['admins']) ? num($_POST['admins']) : 0;
                        }
                        else $admins = 0;
                        if (is_quarantine($log)) {
                            if (is_flood($log)) {
                                $msg = antimat($msg);
                                $msg = smiles($msg);
                                $db->query("UPDATE ?_users SET `users_allforum` = (`users_allforum` + 1), `users_point` = (`users_point` + 1), `users_money` = (`users_money` + 5) WHERE `users_login` = ?", $log);
                                $lastid = $db->query("INSERT INTO ?_forums_topics (`topics_forums_id`, `topics_title`, `topics_author`, `topics_posts`, `topics_last_user`, `topics_last_time`, `topics_admins`, `topics_track`) VALUES (?, ?, ?, ?, ?, ?, ?, ?);", $fid, $title, $log, 1, $log, SITE_TIME, $admins, $track);
                                $db->query("INSERT INTO ?_forums_posts (`posts_topics_id`, `posts_forums_id`, `posts_user`, `posts_text`, `posts_time`, `posts_ip`, `posts_brow`) VALUES (?, ?, ?, ?, ?, ?, ?);", $lastid, $fid, $log, $msg, SITE_TIME, $ip, $brow);
                                $db->query("UPDATE ?_forums SET `forums_topics` = (`forums_topics` + 1), `forums_posts` = (`forums_posts` + 1), `forums_last_id` = ?, `forums_last_themes` = ?, `forums_last_user` = ?, `forums_last_time` = ? WHERE `forums_id` = ?", $lastid, $title, $log, SITE_TIME, $fid);
                                // Обновление родительского форума
                                if ($row['forums_parent'] > 0) {
                                    $db->query("UPDATE ?_forums SET `forums_last_id` = ?, `forums_last_themes` = ?, `forums_last_user` = ?, `forums_last_time` = ? WHERE `forums_id` = ?", $lastid, $title, $log, SITE_TIME, $row['forums_parent']);
                                }
                                /* Лента */
                                $subs = $db->select("SELECT * FROM ?_users_lenta_subscribe
                                                     WHERE `sub_publisher` = ?", $log);
                                if (!empty($subs) && count($subs) > 0) {
                                    $sex   = ($uset['users_gender'] == 1) ? 'создал' : 'создала';
                                    $text  = $sex . " новую тему <b>" . $title . "</b> на форуме.n";
                                    $text .= "[forum=" . $lastid . "]Подробнее >>[/forum]";
                                    foreach($subs as $sub) {
                                        $db->query("INSERT INTO ?_users_lenta SET `lenta_subscriber` = ?, `lenta_publisher` = ?, `lenta_time` = ?, `lenta_message` = ?", $sub['sub_subscriber'], $log, SITE_TIME, $text);
                                    }
                                }
                                $inSes->addMessage('Новая тема успешно добавлена!', 'ok');
                                gen_red('topic', $lastid, RND);
                            }
                            else $inSes->addMessage('Антифлуд! Разрешается отправлять сообщения раз в ' . flood_period() . ' секунд!');
                        }
                        else $inSes->addMessage('Карантин! Вы не можете писать в течении ' . round($config['karantin'] / 3600) . ' часов!');
                    }
                    else $inSes->addMessage('Ошибка! Раздела для новой темы не существует!');
                }
                else $inSes->addMessage('Ошибка! Слишком длинное или короткое сообщение!');
            }
            else $inSes->addMessage('Ошибка! Слишком длинный или короткий заголовок темы!');
        }
        else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
    }
    else $inSes->addMessage('Ошибка! Создавать темы могут только зарегистрированые пользователи сайта!');
}
show_header('Создание новой темы');
if ($is_logged) {
    if (count($forums) > 0) {
       if (!empty($_GET['code'])) include( MODULES_PATH . 'code.inc.php' );
       else if (!empty($_GET['smiles'])) include( MODULES_PATH . 'smiles.inc.php' );
        $form = new cmsForm(gen_uri('addtheme', $id, 'rnd=' . $_SESSION['token']), 'post', ' name="form" id="form"');
        $form->addSelect('Раздел:', 'fid', $id, $forums);
        $form->addText('Заголовок:', 'title', request('title'), ' size="50" maxlength="50"');
        $form->addCode(blink('*') . ' Сообщение: ');
        $form->addCode('<small>[<a href="' . gen_uri('addtheme', $id, 'smiles=1&' . RND) . '">Смайлы</a>] ');
        $form->addCode('[<a href="' . gen_uri('addtheme', $id, 'code=1&' . RND) . '">ББ-коды</a>]</small>');
        $form->addCode(' [<a href="#form" onclick="document.form.text.rows += 5;">+</a>]');
        $form->addCode(' [<a href="#form" onclick="document.form.text.rows -= 5;">-</a>]');
        $form->addTextarea('', 'text', request('text'), ' id="text" style="width:98%;"');
        $form->addRadio('Следить за темой:', 'track', '0', array('1' => 'Да', '0' => 'Нет'));
        if (is_admin(array(101,102))) {
            $form->addRadio('Доступ:', 'admins', request('admins'), array('0' => 'Для всех', '1' => 'Только для модеров', '2' => 'Только для администрации'));
        }
        else if (is_admin()) {
            $form->addRadio('Доступ:', 'admins', request('admins'), array('0' => 'Для всех', '1' => 'Только для модеров'));
        }
        echo $form->Submit(array('Создать тему','Отмена'), array('submit','cancel'));
        unset($form);
        echo '<div class="b">';
        echo 'Прежде чем создать новую тему необходимо ознакомиться с правилами<br />';
        echo '<a href="' . gen_uri('rules', '', RND) . '">Правила сайта</a><br />';
        echo 'Также убедись что такой темы нет, чтобы не создавать одинаковые, для этого введи ключевое слово в поиске<br />';
        echo '<a href="' . gen_uri('search', '', RND) . '">Поиск по форуму</a><br />';
        echo 'И если после этого вы уверены, что ваша тема будет интересна другим пользователям, то можете ее создать<br /></div>';
    }
    else {
        show_error('Разделы форума еще не созданы!');
    }
}
else {
    show_login('Вы не авторизованы, для создания новой темы, необходимо');
}
echo '<div class="b">' . icon('return.png') . ' <a href="' . gen_uri('forum', $id, RND) . '">Вернуться</a><br /></div>';
?>