Файл: page/forum/topic.php
Строк: 315
<?php
$title = 'Форум';
require_once($_SERVER["DOCUMENT_ROOT"]."/inc/head.php");
if (isset($active) && $sys['modules']['forum'] == 1) {
$strow_top = $connect->prepare("select * from `topic` where `id` = ?");
$strow_top->execute(array($id));
$n_row = $strow_top->fetch();
if ($n_row) {
// prepared
$top = $connect->prepare("update `topic` set `top` = ? where `id` = ?");
// категория
$stmt_kat = $connect->prepare("select * from `kat` where `type` = '2' and `id` = ?");
$stmt_kat->execute(array($n_row['kat']));
$krow = $stmt_kat->fetch();
// up
$up = $connect->prepare("update `topic` set `up` = ? where `id` = ?");
// тип
$type = 3;
// количество комментариев
$count_comm = Comments::CountMess($id, $type);
// файлы
$attach_files = GlobFiles::findById($id, GlobFiles::Files, GlobFiles::MaskForum, true);
$count_files = count($attach_files);
// Лайки
$like = new Respect($id, 2);
echo '<div class="title">'.$n_row['name'].'</div>';
if (isset($_GET['del_n']) && $adm_id == 1 || $adm_id == 5) {
if (isset($_POST['ok'])) {
$del_topic = $connect->prepare("delete from `topic` where `id` = ?");
if ($del_topic->execute(array($id)) &&
Comments::DelMess($id, $type) &&
Vote::Delete($id, $type) &&
GlobFiles::DelAllById($id, GlobFiles::Files, GlobFiles::MaskForum) &&
$like->removeLikes()) {
header ('location: /forum');
} else {
echo '<div class="menu">Произошла ошибка!</div>';
}
}
elseif (isset($_POST['cancel'])) {
header('Location: /forum/topic/'.$id);
}
echo '<div class="menu">
<form action="" method="POST">
<input type="submit" name="ok" value="Удалить">
<input type="submit" name="cancel" value="Отмена">
</form></div>';
}
elseif (isset($_GET['pictures']) && $n_row['uid'] == $user['id'] && $n_row['status'] == 1 && $count_files < $sys['system']['forum_attach']) {
if (isset($_POST['cancel'])) {
header('Location: /forum/topic/'.$id);
}
elseif (isset($_POST['upload_f'])) {
$error = '';
$reFiles = reArrayFiles($_FILES['filename']);
foreach ($reFiles as $key => $file) {
if (file_exists($file['tmp_name'])) {
if (!BeforeUpload::AttachIMG($file)) {
$error.= $file['name'] . ': неверный тип файла!<br/>';
}
if ($file['size'] > 1024 * 1024) {
$error.= $file['name'] . ': максимальный размер файла - 1 Mb!<br/>';
}
} else {
unset($reFiles[$key]);
}
}
if ($count_files + count($reFiles) > $sys['system']['forum_attach']) {
$error.= 'Максимальное количество прикреплённых файлов - '.$sys['system']['forum_attach'].'!<br/>';
}
elseif (count($reFiles) == 0) {
$error.= 'Выберите хотя бы 1 файл!<br/>';
}
elseif (count($reFiles) > 10) {
$error.= 'Нельзя загружать более 10 файлов одновременно!<br/>';
}
if ($error) {
echo '<div class="menu">'.$error.'</div>';
} else {
$path = $_SERVER["DOCUMENT_ROOT"]."/files/";
foreach ($reFiles as $key => $file) {
if (file_exists($file['tmp_name'])) {
$files = $id."_".$key."_forum_".random_int(11111, 99999)."_".$file['name'];
$full_path = $path . $files;
move_uploaded_file($file['tmp_name'], $full_path);
}
}
header('Location: /forum/topic/'.$id);
}
}
echo '<div class="menu">
<form action="" method="POST" enctype="multipart/form-data">
<div id="inpContFile">
<input type="file" name="filename[]" id="file"><br/>
<input type="file" name="filename[]" id="file"><br/>
<input type="file" name="filename[]" id="file"><br/>
<input type="file" name="filename[]" id="file"><br/>
<input type="file" name="filename[]" id="file"><br/>
</div>
<div class="butt1"><a href="javascript:AddFile()">Добавить еще</a></div><br/>
<input type="submit" name="upload_f" value="Загрузить">
<input type="submit" name="cancel" value="Отмена">
</form></div>';
}
elseif (isset($_GET['del_file']) && isset($attach_files[$_GET['del_file']]) && $n_row['uid'] == $user['id'] && $n_row['status'] == 1) {
$filedel = $attach_files[$_GET['del_file']];
if ($filedel) {
if (isset($_POST['cancel'])) {
header('Location: /forum/topic/'.$id);
}
elseif (isset($_POST['yes'])) {
unlink($filedel);
header('Location: /forum/topic/'.$id);
}
echo '<div class="menu">
<form action="" method="POST">
<input type="submit" name="yes" value="Удалить файл ('.basename($filedel).')">
<input type="submit" name="cancel" value="Отмена">
</form></div>';
} else {
header('Location: /forum/topic/'.$id);
}
}
elseif (isset($_GET['del_all_files']) && $n_row['uid'] == $user['id'] && $n_row['status'] == 1) {
if ($attach_files) {
if (isset($_POST['cancel'])) {
header('Location: /forum/topic/'.$id);
}
elseif (isset($_POST['yes'])) {
GlobFiles::DelAllById($id, GlobFiles::Files, GlobFiles::MaskForum);
header('Location: /forum/topic/'.$id);
}
echo '<div class="menu">
<form action="" method="POST">
<input type="submit" name="yes" value="Удалить все прикреплённые файлы ('.$count_files.')">
<input type="submit" name="cancel" value="Отмена">
</form></div>';
} else {
header('Location: /forum/topic/'.$id);
}
}
elseif (isset($_GET['edit_n']) && $n_row['uid'] == $user['id'] && $n_row['status'] == 1 && $count_comm == 0) {
SmilesAndBB('#topic');
if (isset($_POST['cancel'])) {
header('Location: /forum/topic/'.$id);
}
elseif (isset($_POST['red'])) {
$error = '';
if (empty($_POST['name'])) {
$error.= 'Введите название темы!<br/>';
}
elseif (mb_strlen($_POST['name']) < 5 || mb_strlen($_POST['name']) > 50) {
$error.= 'Название темы должно содержать не менее 5 и не более 50 символов!<br/>';
}
if (empty($_POST['text'])) {
$error.= 'Введите сообщение!<br/>';
}
elseif (mb_strlen($_POST['text']) < 10 || mb_strlen($_POST['text']) > 25000) {
$error.= 'Сообщение должно содержать не менее 10 и не более 25000 символов!<br/>';
}
if ($error) {
echo '<div class="menu">'.$error.'</div>';
} else {
$stmt = $connect->prepare("update `topic` set `name` = ?, `text` = ? where `id` = ?");
if ($stmt->execute(array($_POST['name'], $_POST['text'], $id))) {
header('Location: /forum/topic/'.$id);
} else {
echo '<div class="menu">Произошла ошибка!</div>';
}
}
}
echo '<div class="menu">
<form action="" method="POST">
Название темы:<br/><input type="text" name="name" value="'.$n_row['name'].'"><br/>
Сообщение:<br/><textarea data-select-range id="topic" name="text" rows="5" cols="30">'.$n_row['text'].'</textarea><br/>
<input type="submit" name="red" value="Сохранить">
<input type="submit" name="cancel" value="Отмена">
</form></div>';
}
elseif (isset($_GET['kat']) && ($n_row['uid'] == $user['id'] || $adm_id == 1 || $adm_id == 3 || $adm_id == 5)) {
if (isset($_POST['cancel'])) {
header('Location: /forum/topic/'.$id);
}
elseif (isset($_POST['ok'])) {
$stmt = $connect->prepare("update `topic` set `kat` = ? where `id` = ?");
if ($stmt->execute(array($_POST['kat'], $id))) {
header('Location: /forum/topic/'.$id);
} else {
echo '<div class="menu">Произошла ошибка!</div>';
}
}
echo '<div class="menu">
<form action="" method="POST">
Раздел форума:<br/><select name="kat">';
$sql = $connect->query("select * from `kat` where `type` = '2' order by `id` desc")->fetchAll();
foreach ($sql as $kat_row) {
echo '<option ' . ($n_row['kat'] == $kat_row['id'] ? 'selected' : '') . ' value="'.$kat_row['id'].'">'.$kat_row['name'].'</option>';
}
echo '</select><br/>
<input type="submit" name="ok" value="Перенести">
<input type="submit" name="cancel" value="Отмена">
</form></div>';
}
elseif (isset($_GET['up']) && $n_row['uid'] == $user['id'] && $n_row['status'] == 1 && $n_row['up'] < time() - 3600 * $sys['system']['forum_up']) {
$up->execute(array(time(), $id));
header('Location: /forum/topic/'.$id);
}
elseif (isset($_GET['close']) && ($n_row['uid'] == $user['id'] || $adm_id == 1 || $adm_id == 3 || $adm_id == 5) && $n_row['status'] == 1) {
if (isset($_POST['ok'])) {
$stmt = $connect->prepare("update `topic` set `status` = '0' where `id` = ?");
if ($stmt->execute(array($id))) {
header('Location: /forum/topic/'.$id);
} else {
echo '<div class="menu">Произошла ошибка!</div>';
}
}
elseif (isset($_POST['cancel'])) {
header('Location: /forum/topic/'.$id);
}
echo '<div class="menu">
<form action="" method="POST">
<input type="submit" name="ok" value="Закрыть тему">
<input type="submit" name="cancel" value="Отмена">
</form></div>';
}
elseif (isset($_GET['pt']) && $n_row['uid'] == $user['id']) {
if ($count_pt < $sys['system']['ft_limit'] || $n_row['top'] > time()) {
if (isset($_POST['cancel'])) {
header('Location: /forum/topic/'.$id);
}
elseif (isset($_POST['ok'])) {
$error = '';
$days = intval(abs($_POST['days']));
$sum = $sys['system']['ft_cena'] * $days;
if (empty($days)) {
$error.= 'Введите количество дней!<br/>';
}
elseif ($user['money'] < $sum) {
$error.= 'Недостаточно средств!<br/>';
}
if ($error) {
echo '<div class="menu">'.$error.'</div>';
} else {
$time = $n_row['top'] > time() ? $n_row['top'] : time();
$top_time = $time + 3600 * 24 * $days;
if (pay(-$sum, $user['id']) && $top->execute(array($top_time, $id))) {
header('Location: /forum/topic/'.$id);
} else {
echo '<div class="menu">Произошла ошибка!</div>';
}
}
}
echo '<div class="menu">
<form action="" method="POST">
Количество дней:<br/><input type="text" name="days"><br/>
<input type="submit" name="ok" value="'.($n_row['top'] > time() ? 'Продлить закрепление темы' : 'Закрепить тему').'">
<input type="submit" name="cancel" value="Отмена">
<div class="chi">Стоимость: '.quantDec($sys['system']['ft_cena'], ['рубль', 'рубля', 'рублей']).'/день</div>
</form></div>';
} else {
echo '<div class="menu">
Нет свободных мест!<br/>
Следующее освободится: '.daytime($ptrow['top']).'<br/>
Всего мест: '.$sys['system']['ft_limit'].'
</div>';
}
}
elseif (isset($_GET['unf']) && $n_row['top'] > time() && ($adm_id == 1 || $adm_id == 5)) {
if (isset($_POST['ok'])) {
if ($top->execute(array(0, $id))) {
header('Location: /forum/topic/'.$id);
} else {
echo '<div class="menu">Произошла ошибка!</div>';
}
}
elseif (isset($_POST['cancel'])) {
header('Location: /forum/topic/'.$id);
}
echo '<div class="menu">
<form action="" method="POST">
<input type="submit" name="ok" value="Открепить тему">
<input type="submit" name="cancel" value="Отмена">
</form></div>';
}
elseif (isset($_GET['respect'])) {
$review = ($_GET['respect'] == 1);
$like->Like($review);
header('Location: /forum/topic/'.$id);
}
/* Голосование */
$vote = new Vote($id, $type, ($n_row['uid'] == $user['id']), '/forum/topic/'.$id);
// Вывод опроса
$vote->output();
echo '<div class="menu">
'.nl2br(smiles(bb(bbyoutube(bblinks($n_row['text']))))).'<hr/>
Автор: '.profileLink($n_row['uid']).'<br/>
Дата публикации: '.daytime($n_row['time']).
$like->OutputLikes().'
<div class="butt2">
'.($n_row['uid'] == $user['id'] && $n_row['status'] == 1 && $count_files < $sys['system']['forum_attach'] ? '<a href="?pictures">Прикрепить картинки</a><br/>' : '').
($adm_id == 1 || $adm_id == 5 ? '<a href="?del_n">Удалить</a>' : '').
($n_row['uid'] == $user['id'] && $n_row['status'] == 1 && $count_comm == 0 ? '<a href="?edit_n">Редактировать</a>' : '').
(($n_row['uid'] == $user['id'] || $adm_id == 1 || $adm_id == 3 || $adm_id == 5) ? '<a href="?kat">Перенести</a>' : '').
($n_row['uid'] == $user['id'] && $n_row['status'] == 1 && $n_row['up'] < time() - 3600 * $sys['system']['forum_up'] ? '<a href="?up">Поднять</a>' : '').
($n_row['uid'] == $user['id'] ? '<br/><a href="?pt">'.($n_row['top'] > time() ? 'Продлить закрепление темы' : 'Закрепить тему').'</a>
'.($n_row['top'] > time() && ($adm_id == 1 || $adm_id == 5) ? '<a href="?unf">Открепить тему</a>' : '').
(!$vote->row ? '<br/><a href="?vote">Создать опрос</a>' : '') : '').
(($n_row['uid'] == $user['id'] || $adm_id == 1 || $adm_id == 3 || $adm_id == 5) && $n_row['status'] == 1 ? '<a href="?close">Закрыть </a>' : '').'
</div>
</div>';
if ($attach_files) {
echo '<div class="menu">Прикреплённые файлы ('.$count_files.'):<br/>';
foreach ($attach_files as $key => $file) {
echo iconFile($file).'<a data-noajax href="/files/'.basename($file).'">'.basename($file).'</a> ('.get_filesize($file).')'.($n_row['uid'] == $user['id'] ? '<a href="?del_file='.$key.'"><img src="/img/delete.png" alt="delete"></a>' : '').'<br/>';
}
echo '</div>';
if ($n_row['uid'] == $user['id'])
echo '<div class="forlink"><a href="?del_all_files" class="links"><img src="/img/delete.png" alt="delete">Удалить все файлы</a></div>';
}
if ($n_row['uid'] == $user['id'] && $n_row['top'] > time())
echo '<div class="menu">Тема закреплена до: '.date('d.m.Y H:i', $n_row['top']).'</div>';
if ($n_row['uid'] == $user['id'] && $n_row['status'] == 1 && $n_row['up'] > time() - 3600 * $sys['system']['forum_up'])
echo '<div class="menu">Следующий UP через '.restime($n_row['up'] - time() + 3600 * $sys['system']['forum_up']).'.</div>';
// Кто в теме?
$congestion = congestion($_SERVER['PHP_SELF'], $id);
if ($congestion)
echo '<div class="menu">Сейчас в теме ('.count($congestion).'): '.congestionOutputLinks($congestion, 25).'</div>';
/* Комментарии */
$c = new Comments($id, $type, $n_row['uid'], ($adm_id == 1 || $adm_id == 3 || $adm_id == 5), '/forum/topic/'.$id);
if ($n_row['status'] == 1) {
// Форма ввода
$c->InsertForm(
// добавление
'[b]'.$user['login'].'[/b] оставил комментарий в вашей теме на форуме [url='.ROOT.'/forum/topic/'.$id.']'.$n_row['name'].'[/url].',
// цитата
'[b]'.$user['login'].'[/b] процитировал ваше сообщение в [url='.ROOT.'/forum/topic/'.$id.']Теме на форуме[/url].',
//ответ
'[b]'.$user['login'].'[/b] ответил вам в [url='.ROOT.'/forum/topic/'.$id.']Теме на форуме[/url].',
true // разрешаем прикреплять картинки
);
} else
echo '<div class="menu">Тема закрыта!</div>';
// Модератору
$c->moder();
// Вывод комментариев
$c->output();
if ($krow)
echo '<div class="forlink"><a href="/forum/category/'.$krow['id'].'" class="links"><img src="/img/top.png" alt="kat">'.$krow['name'].'</a></div>';
echo '<div class="forlink"><a href="/forum" class="links" ><img src="/img/forum.png" alt="">Форум</a></div>';
} else {
header('Location: /forum');
}
} else {
header('Location: /');
}
require($_SERVER["DOCUMENT_ROOT"]."/inc/foot.php");
?>