Файл: forum/addtopic.php
Строк: 188
<?php
# Script by seg0ro http://mobilarts.ru
# Not for sale!!!
defined('_IN_JOHNCMS') or die('Error: restricted access');
$textl .= ' | Новая тема';
require_once('../incfiles/head.php');
if (!$forum){
echo functions::display_error('Отсутствует идентификатор форума!<br /><a href="index.php">Форум</a>');
require_once('../incfiles/end.php');
exit;
}
if (!$user_id || $ban['1'] || $ban['11'] || ($forumRes['close'] && !$rights)){
echo functions::display_error('У вас недостаточно прав для просмотра этой страницы!<br /><a href="index.php">Форум</a>');
require_once('../incfiles/end.php');
exit;
}
if (empty($_SESSION['tempid']))
$_SESSION['tempid'] = rand(1111, 9999).$user_id;
$tree = array('<a href="index.php">Форум</a>', '<a href="index.php?forum='.$forumRes['forum'].'">'.functions::checkout($forumRes['forumname']).'</a>', 'Новая тема');
echo '<div class="phdr">'.functions::display_menu($tree).'</div>';
$flood = functions::antiflood();
if ($flood){
echo functions::display_error('Слишком высокая активность!<br />Пожалуйста, подождите '.$flood.' сек.<br /><a href="index.php?forum='.$forum.'">Назад</a>');
require_once('../incfiles/end.php');
exit;
}
$name = $_POST['topicname'] ? trim($_POST['topicname']) : '';
$text = $_POST['text'] ? trim($_POST['text']) : $forumRes['template'];
$clip = $_POST['clip'] ? 1 : 0;
$close = $_POST['close'] ? 1 : 0;
$sticky = $_POST['sticky'] ? 1 : 0;
$pollName = $_POST['poll_name'] ? trim($_POST['poll_name']) : '';
$poll = 0;
$pollSet = '';
if (isset($_POST['addfile']) && $_FILES['file']['name']){
$postId = 0;
$topicId = 0;
$tempId = $_SESSION['tempid'];
require_once ('includes/fileupload.php');
}
if (isset($_POST['delfile'])){
$array = $_POST['delfile'];
if (is_array($array)){
foreach ($array as $file => $val){
require_once ('includes/delfile.php');
}
}else{
$error = 'Возникла ошибка при удалении файла!';
}
}
$fileReq = mysql_query("SELECT * FROM `forum_files` WHERE `tempid` = '".intval($_SESSION['tempid'])."' LIMIT 11 ");
$total = mysql_num_rows($fileReq);
if (isset($_POST['send'])){
if (!$name)
$error .= 'Не введено название темы!<br />';
if ($name && mb_strlen($name) < 2)
$error .= 'Слишком короткое название темы!<br />';
if ($name && mb_strlen($name) > 100)
$error .= 'Слишком длинное название темы!<br />';
$check = mysql_result(mysql_query("SELECT COUNT(*) FROM `forum_topics` WHERE `topicname` = '".mysql_real_escape_string($name)."' AND `forum` = '$forum' LIMIT 1 "), 0);
if ($check)
$error .= 'Тема с таким названием уже существует!<br />';
if (!$text || $text == $forumRes['template'])
$error .= 'Не введен текст сообщения!<br />';
if (empty($pollName) && !empty($_POST[0]))
$error .= 'Вы не ввели заголовок голосования<br />';
if (!empty($pollName) && (empty($_POST[0]) || empty($_POST[1])))
$error .= 'Не введены как минимум два варианта голосования<br />';
if (!$error){
if (!empty($pollName) && !empty($_POST['count_vars'])){
$pollName = mb_substr(trim($pollName), 0, 200);
$pollSet = array('poll_mod' => intval($_POST['poll_mod']), 'total_polls' => '0', 'total_polled' => '0', 'poll_close' => '0');
$poll = 1;
}
mysql_query("INSERT INTO `forum_topics` SET
`forum` = '$forum',
`time` = '".time()."',
`topicname` = '".mysql_real_escape_string($name)."',
`forumname` = '".mysql_real_escape_string($forumRes['forumname'])."',
`user_id` = '$user_id',
`user` = '$login',
`lastpost` = '',
`count` = '1',
`close` = '$close',
`sticky` = '$sticky',
`clip` = '$clip',
`poll_name` = '".mysql_real_escape_string($pollName)."',
`poll_set` = '".serialize($pollSet)."'
");
$tid = mysql_insert_id();
if ($poll){
if ($_POST['count_vars'] > 20)
$_POST['count_vars'] = 20;
elseif ($_POST['count_vars'] < 2)
$_POST['count_vars'] = 2;
for ($var = 0; $var < $_POST['count_vars']; $var++){
$vars = mb_substr(trim($_POST[$var]), 0, 100);
if (empty($vars)){
continue;
}
mysql_query("INSERT INTO `forum_polls` SET
`topic` = '$tid',
`variantname` = '".mysql_real_escape_string($vars)."'
");
}
}
mysql_query("INSERT INTO `forum_posts` SET
`topic` = '$tid',
`time` = '".time()."',
`user_id` = '$user_id',
`user` = '$login',
`text` = '".mysql_real_escape_string($text)."',
`browser` = '".mysql_real_escape_string($agn)."',
`ip` = '".core::$ip."',
`ip_via_proxy` = '".core::$ip_via_proxy."',
`files` = '$total'
");
$pid = mysql_insert_id();
if ($total){
mysql_query("UPDATE `forum_files` SET
`post` = '$pid',
`topic` = '$tid',
`tempid` = ''
WHERE `tempid` = '".intval($_SESSION['tempid'])."' ");
}
mysql_query("UPDATE `forum_forums` SET
`count` = count + 1,
`last_topic` = '$tid:|:".mysql_real_escape_string($name).":|:".time()."'
WHERE `forum` = '$forum' LIMIT 1 ");
mysql_query("UPDATE `users` SET `lastpost` = '".time()."', `postforum` = postforum + 1 WHERE `id` = '$user_id' ");
unset ($_SESSION['tempid']);
unset ($_SESSION['filename']);
header ('Refresh:1; URL=index.php?topic='.$tid);
echo '<div class="gmenu">Тема создана<br />Сообщение добавлено<br />';
if ($total)
echo 'Файлы загружены<br />';
if ($poll)
echo 'Голосование создано<br />';
echo '<a href="index.php?topic='.$tid.'">Далее</a></div>';
require_once('../incfiles/end.php');
exit;
}
}
if ($error)
echo functions::display_error($error);
if ($text && isset($_POST['preview'])){
$textPreview = quote(functions::checkout($text, 1, 1));
if ($set_user['smileys'])
$textPreview = functions::smileys($textPreview, $rights >= 1 ? 1 : 0);
echo '<div class="list1"><strong>Предпросмотр:</strong><br />'.$textPreview.'</div>';
}
echo '<form id="form" name="form" action="index.php?act=addtopic&forum='.$forum.'" method="post" enctype="multipart/form-data">'.
'<div class="list1">Название <img style="cursor: pointer;" onclick="alert(this.title);" src="images/question.png" alt="?" title="Мин. 2, макс. 100 символов" />:<br /><input type="text" name="topicname" value="'.text($name).'" /></div>'.
'<div class="gmenu">Текст:<br />'.bbcode::auto_bb('form', 'text').'<textarea name="text" cols="30" rows="'.$set_user['field_h'].'">'.text($text).'</textarea><br />'.
'<input type="submit" name="send" value="Отправить" /> <input type="submit" name="preview" value="Предпросм." /> <a href="../pages/faq.php?act=smileys">Смайлы</a></div>'.
'<div class="phdr">Файлы: '.$total.' из 10</div>';
if ($total){
while ($fileRes = mysql_fetch_array($fileReq)){
echo $i % 2 ? '<div class="list2">' : '<div class="list1">';
echo show_file($fileRes).' <input type="submit" name="delfile['.$fileRes['file'].']" onclick="return confirm('Вы действительно хотите удалить файл?');" value="Удалить" /></div>';
++$i;
}
}
if ($total < 10){
echo '<div class="gmenu">Файл <img style="cursor: pointer;" onclick="alert(this.title);" src="images/question.png" alt="?" title="Максимально '.$set['flsz'].' Кб." />:<br /><input type="file" name="file" /><br /><input type="submit" name="addfile" value="Прикрепить" /></div>';
}
echo '<div class="list1"><label><input type="checkbox" name="clip" value="1" '.($clip ? 'checked="checked"' : '').' /> Закрепить 1-ое сообщение</label><br />';
if ($rights == 3 || $rights > 6){
echo '<label><input type="checkbox" name="close" value="1" '.($close ? 'checked="checked"' : '').' /> Закрыть</label><br />'.
'<label><input type="checkbox" name="sticky" value="1" '.($sticky ? 'checked="checked"' : '').' /> Закрепить</label></div>'.
'<div class="phdr">Голосование</div>'.
'<div class="list1">Название <img style="cursor: pointer;" onclick="alert(this.title);" src="images/question.png" alt="?" title="Максимально 200 символов" />:<br /><input type="text" name="poll_name" value="'.text($pollName).'" /><br />';
if (isset($_POST['add']))
++$_POST['count_vars'];
elseif (isset($_POST['del']))
--$_POST['count_vars'];
if ($_POST['count_vars'] < 2 || empty($_POST['count_vars']))
$_POST['count_vars'] = 2;
elseif ($_POST['count_vars'] > 20)
$_POST['count_vars'] = 20;
for ($vars = 0; $vars < $_POST['count_vars']; $vars++){
echo 'Вариант '.($vars + 1).' <img style="cursor: pointer;" onclick="alert(this.title);" src="images/question.png" alt="?" title="Максимально 100 символов" />:<br /><input type="text" name="'.$vars.'" value="'.text($_POST[$vars]).'" /><br />';
}
echo '<input type="hidden" name="count_vars" value="'.intval($_POST['count_vars']).'" />'.
($_POST['count_vars'] < 20 ? '<br /><input type="submit" name="add" value=" + " />' : '').
($_POST['count_vars'] > 2 ? '<input type="submit" name="del" value=" - " /><br />' : '<br />').
'<label><input type="radio" value="0" name="poll_mod" '.($_POST['poll_mod'] == 0 ? 'checked="checked" ' : '').'/> Можно выбирать только один вариант</label><br /><label><input type="radio" value="1" name="poll_mod" '.($_POST['poll_mod'] == 1 ? 'checked="checked" ' : '').'/> Можно выбирать несколько вариантов</label>';
}
echo '</div></form>';