Просмотр файла forum/topic.php

Размер файла: 17.32Kb
<?php 
// by mides, wmclub.mobi

require('../config.php');
require('../includes/sys.php');
require('../includes/start.php');

switch($_GET['act']){

###############################################################################
##                           Главная страница                                ##
###############################################################################
default:

$id = intval($_REQUEST['id']);
$topic = mysql_fetch_assoc(mysql_query("SELECT `id_cat`, `id_subcat`, `title`, `id_user`, `closed` FROM `forum_topics` WHERE `id` = '$id'"));
if($topic['title']){
	$title = $topic['title'].' - Форум';
	require('../includes/header.php');
	tp($topic['title']);
	$all_msg = mysql_result(mysql_query("SELECT COUNT(`id`) FROM `forum_msg` WHERE `id_topic` = '$id'"), 0);
	$pages = ceil($all_msg/$config['onpage']);
	if(intval($_REQUEST['page'])){
		$page = intval($_REQUEST['page']);
	}else{
		$page = 1;
	}
	$from = ($page-1)*$config['onpage'];
	
	$r_msg = mysql_query("SELECT `id`, `id_user`, `text`, `time` FROM `forum_msg` WHERE `id_topic` = '$id' ORDER BY `time` LIMIT $from, $config[onpage]");
	while($msg = mysql_fetch_assoc($r_msg)){
		echo '<a href="../pages/profile.php?u='.$msg['id_user'].'">'.login($msg['id_user']).'</a> '.on($msg['id_user'], date('d.m.y, H:i', $msg['time'])).' <a href="?act=msg_reply&amp;id='.$msg['id'].'">Отв</a>';
		if($msg['id_user'] == $u['id'] or $u['user_access'] > 0){
			if($msg['time'] + 360 > time() or $u['user_access'] > 0){
				echo '|<a href="?act=msg_edit&amp;id='.$msg['id'].'">Ред</a>|<a href="?act=msg_del&amp;id='.$msg['id'].'">Уд</a>';
			}
		}
		echo '<br />';
		echo bb($msg['text']).'<hr />';
	}
	if($u['id']){
		if($topic['id_user'] == $u['id'] or $u['user_access'] > 0){
			if(empty($topic['closed'])){
				echo '<a href="?act=close&amp;id='.$id.'">Закр</a><br />';
			}else{
				echo '<a href="?act=open&amp;id='.$id.'">Откр</a><br />';
			}
		}
		echo '<hr />';
	}
	if($u['id']){
		if(empty($topic['closed']) or $u['user_access'] > 0){
			echo '<form action="?act=msg_add&amp;id='.$id.'" method="post" name="form">
				 Сообщение(max500):<br /><textarea name="text" cols="" rows="3"></textarea>
				 <input name="submit" type="submit" value="Ok" />
				 </form>';
		}else{
			echo 'Выбранная тема закрыта для обсуждения!';
		}
	}
	
	echo '<hr />';
		
	navig($page, '?id='.$id.'&amp;', $pages);
	echo '<a href="index.php?act=subcat&amp;id='.$topic['id_subcat'].'">Назад</a><br />
		 <a href="index.php?act=cat&amp;id='.$topic['id_cat'].'">Назад в раздел</a><br />
		 <a href="../">На главную</a><br />
		 </div>';
}else{
	require('../includes/header.php');
	$title = 'Форум';
	error('Выбранная тема не существует!');
	nav('./');
}

break;

###############################################################################
##                           Добавление сообщения                            ##
###############################################################################
case 'msg_add':

$title = 'Форум';
require('../includes/header.php');

$id = intval($_REQUEST['id']);

if($u['id']){
	if($_SESSION['spam'] < time()){
		$topic = mysql_fetch_assoc(mysql_query("SELECT `id_cat`, `id_subcat`, `closed` FROM `forum_topics` WHERE `id` = '$id'"));
		if($topic['id_cat']){
			if(empty($topic['closed']) or $u['user_access'] > 0){
				if(!empty($_POST['text'])){
					$text = check($_POST['text']);
					mb_internal_encoding('UTF-8');
					if(mb_strlen($text) <= 500){
						mysql_query("UPDATE `forum_topics` SET `last_time` = '".time()."' WHERE `id` = '$id'");
						mysql_query("INSERT INTO `forum_msg` SET `id_cat` = '$topic[id_cat]', `id_subcat` = '$topic[id_subcat]', `id_topic` = '$id', `id_user` = '$u[id]', `text` = '$text', `time` = '".time()."'") or die(mysql_error());
						mysql_query("UPDATE `users` SET `user_points` = (user_points+1) WHERE `id` = '$u[id]'");
						$_SESSION['spam'] = $config['antispam'] + time();
						info('Сообщение успешно добавлено!');
						$t_msg = mysql_result(mysql_query("SELECT COUNT(`id`) FROM `forum_msg` WHERE `id_topic` = '$id'"), 0);
						$last_page = ceil($t_msg/$config['onpage']);
						nav('?id='.$id.'&amp;page='.$last_page);
						echo '<meta http-equiv="refresh" content="0;URL=?id='.$id.'&amp;page='.$last_page.'" />';
					}else{
						error('Текст не может содержать больше 1000 символов!');
						nav('?id='.$id);
					}
				}else{
					error('Вы не заполнили поля!');
					nav('?id='.$id);
				}
			}else{
				error('Выбранная тема закрыта для обсуждения!');
				nav('?id='.$id);
			}
		}else{
			error('Выбранная тема существует!');
			nav('./');
		}
	}else{
		error('Вы не можете писать чаще, чем раз в '.$config['antispam'].' сек.!');
		nav('?id='.$id);
	}
}else{
	error('Вы не <a href="../pages/login.php">авторизованы</a> для создания новой темы :(');
	nav('?id='.$id);
}

break;

###############################################################################
##                         Форма ответа на сообщение                         ##
###############################################################################
case 'msg_reply':

$title = 'Форум';
require('../includes/header.php');

$id = intval($_REQUEST['id']);

if($u['id']){
	if($_SESSION['spam'] < time()){
		$msg = mysql_fetch_assoc(mysql_query("SELECT `id_topic`, `id_user` FROM `forum_msg` WHERE `id` = '$id'"));
		if($msg['id_topic']){
			$topic = mysql_fetch_assoc(mysql_query("SELECT `closed` FROM `forum_topics` WHERE `id` = '$msg[id_topic]'"));
			if(empty($topic['closed']) or $u['user_access'] > 0){
				tp('Ответ на сообщение');
				echo '<form action="?act=msg_reply_do&amp;id='.$id.'" method="post" name="form">
					 Сообщение(max500):<br /><textarea name="text" cols="" rows="5">[b]'.login($msg['id_user']).'[/b], </textarea>
					 <input name="submit" type="submit" value="Ok" /></form>';
				nav('?id='.$msg['id_topic']);
			}else{
				error('Выбранная тема закрыта для обсуждения!');
				nav('?id='.$msg['id_topic']);
			}
		}else{
			error('Сообщение, на которое вы хотите ответить не существует!');
			nav('./');
		}
	}else{
		error('Вы не можете писать чаще, чем раз в '.$config['antispam'].' сек.!');
		nav('?id='.$msg['id_topic']);
	}
}else{
	error('Вы не <a href="../pages/login.php">авторизованы</a> для ответа на сообщение :(');
	nav('?id='.$msg['id_topic']);
}

break;

###############################################################################
##                             Ответ на сообщение                            ##
###############################################################################
case 'msg_reply_do':

$title = 'Форум';
require('../includes/header.php');

$id = intval($_REQUEST['id']);
$msg = mysql_fetch_assoc(mysql_query("SELECT `id_cat`, `id_subcat`, `id_topic`, `id_user` FROM `forum_msg` WHERE `id` = '$id'"));

if($u['id']){
	if($_SESSION['spam'] < time()){
		if($msg['id_topic']){
			$topic = mysql_fetch_assoc(mysql_query("SELECT `closed` FROM `forum_topics` WHERE `id` = '$msg[id_topic]'"));
			if(empty($topic['closed'])){
				if(!empty($_POST['text'])){
					mb_internal_encoding('UTF-8');
					if(mb_strlen($text) <= 500){
						$text = check($_POST['text']);
						mysql_query("UPDATE `forum_topics` SET `last_time` = '".time()."' WHERE `id` = '$msg[id_topic]'");
						mysql_query("INSERT INTO `forum_msg` SET `id_cat` = '$msg[id_cat]', `id_subcat` = '$msg[id_subcat]', `id_topic` = '$msg[id_topic]', `id_user` = '$u[id]', `text` = '$text', `time` = '".time()."'");
						mysql_query("UPDATE `users` SET `user_points` = (user_points+1) WHERE `id` = '$u[id]'");
						$_SESSION['spam'] = $config['antispam'] + time();
						info('Ответ успешно добавлен.');
						$t_msg = mysql_result(mysql_query("SELECT COUNT(`id`) FROM `forum_msg` WHERE `id_topic` = '$msg[id_topic]'"), 0);
						$last_page = ceil($t_msg/$config['onpage']);
						nav('?id='.$msg['id_topic'].'&amp;page='.$last_page);
						echo '<meta http-equiv="refresh" content="0;URL=?id='.$msg['id_topic'].'&amp;page='.$last_page.'" />';
					}else{
						error('Слишком длинный текст. Не более 500 символов.');
						nav('?act=msg_reply&amp;id='.$id);
					}
					
				}else{
					error('Вы не заполнили поле!');
					nav('?act=msg_reply&amp;id='.$id);
				}
			}else{
				error('Выбранная тема закрыта для обсуждения!');
				nav('?id='.$msg['id_topic']);
			}
		}else{
			error('Сообщение, на которое вы хотите ответить не существует!');
			nav('./');
		}
	}else{
		error('Вы не можете писать чаще, чем раз в '.$config['antispam'].' сек.!');
		nav('?id='.$msg['id_topic']);
	}
}else{
	error('Вы не <a href="../pages/login.php">авторизованы</a> для ответа на сообщение :(');
	nav('?id='.$msg['id_topic']);
}

break;

###############################################################################
##                        Форма редактирования сообщения                     ##
###############################################################################
case 'msg_edit':

$title = 'Форум';
require('../includes/header.php');

$id = intval($_REQUEST['id']);

if($u['id']){
	$msg = mysql_fetch_assoc(mysql_query("SELECT `id`, `id_topic`, `id_user`, `text`, `time` FROM `forum_msg` WHERE `id` = '$id'"));
	if(isset($msg['id'])){
		if($msg['id_user'] == $u['id'] or $u['user_access'] > 0){
			if($msg['time'] + 360 > time() or $u['user_access'] > 0){
				$topic = mysql_fetch_assoc(mysql_query("SELECT `closed` FROM `forum_topics` WHERE `id` = '$msg[id_topic]'"));
				if(empty($topic['closed']) or $u['user_access'] > 0){
					tp('Редактирование сообщения');
					echo '<form action="?act=msg_edit_do&amp;id='.$id.'" method="post" name="form">
						 Сообщение(max500):<br /><textarea name="text" cols="" rows="5">'.$msg['text'].'</textarea>
						 <input name="submit" type="submit" value="Ok" /></form>';
					nav('?id='.$msg['id_topic']);
				}else{
					error('Выбранная тема закрыта для обсуждения!');
					nav('?id='.$msg['id_topic']);
				}
			}else{
				error('Вы уже не можете отредактировать это сообщение!');
				nav('?id='.$msg['id_topic']);
			}
		}else{
			error('Выбранное сообщение не принадлежит вам!');
			nav('?id='.$msg['id_topic']);
		}
	}else{
		error('Сообщение не существует!');
		nav('./');
	}
}else{
	error('Вы не <a href="../pages/login.php">авторизованы</a> для ответа на сообщение :(');
	nav('?id='.$msg['id_topic']);
}

break;

###############################################################################
##                           Редактирование сообщения                        ##
###############################################################################
case 'msg_edit_do':

$title = 'Форум';
require('../includes/header.php');

$id = intval($_REQUEST['id']);

if($u['id']){
	$msg = mysql_fetch_assoc(mysql_query("SELECT `id`, `id_topic`, `id_user`, `text`, `time` FROM `forum_msg` WHERE `id` = '$id'"));
	if(isset($msg['id'])){
		if($msg['id_user'] == $u['id'] or $u['user_access'] > 0){
			if($msg['time'] + 360 > time() or $u['user_access'] > 0){
				$topic = mysql_fetch_assoc(mysql_query("SELECT `closed` FROM `forum_topics` WHERE `id` = '$msg[id_topic]'"));
				if(empty($topic['closed']) or $u['user_access'] > 0){
					$text = check($_POST['text']);
					mysql_query("UPDATE `forum_msg` SET `text` = '$text' WHERE `id` = '$id'");
					info('Cообщение успешно отредактировано!');
					nav('?id='.$msg['id_topic']);
				}else{
					error('Выбранная тема закрыта для обсуждения!');
					nav('?id='.$msg['id_topic']);
				}
			}else{
				error('Вы уже не можете отредактировать это сообщение!');
				nav('?id='.$msg['id_topic']);
			}
		}else{
			error('Выбранное сообщение не принадлежит вам!');
			nav('?id='.$msg['id_topic']);
		}
	}else{
		error('Сообщение не существует!');
		nav('./');
	}
}else{
	error('Вы не <a href="../pages/login.php">авторизованы</a> для ответа на сообщение :(');
	nav('?id='.$msg['id_topic']);
}

break;

###############################################################################
##                           Удаление сообщения                              ##
###############################################################################
case 'msg_del':

$title = 'Форум';
require('../includes/header.php');

$id = intval($_REQUEST['id']);

if($u['id']){
	$msg = mysql_fetch_assoc(mysql_query("SELECT `id`, `id_topic`, `id_user`, `time` FROM `forum_msg` WHERE `id` = '$id'"));
	if(isset($msg['id'])){
		if($msg['id_user'] == $u['id'] or $u['user_access'] > 0){
			if($msg['time'] + 360 > time() or $u['user_access'] > 0){
				$topic = mysql_fetch_assoc(mysql_query("SELECT `closed` FROM `forum_topics` WHERE `id` = '$msg[id_topic]'"));
				if(empty($topic['closed']) or $u['user_access'] > 0){
					mysql_query("UPDATE `users` SET `user_points` = (user_points-1) WHERE `id` = '$msg[id_user]'");
					mysql_query("DELETE FROM `forum_msg` WHERE `id` = '$id'");
					info('Cообщение успешно удалено!');
					nav('?id='.$msg['id_topic']);
				}else{
					error('Выбранная тема закрыта для обсуждения!');
					nav('?id='.$msg['id_topic']);
				}
			}else{
				error('Вы уже не можете удалить это сообщение!');
				nav('?id='.$msg['id_topic']);
			}
		}else{
			error('Выбранное сообщение не принадлежит вам!');
			nav('?id='.$msg['id_topic']);
		}
	}else{
		error('Сообщение не существует!');
		nav('./');
	}
}else{
	error('Вы не <a href="../pages/login.php">авторизованы</a> для ответа на сообщение :(');
	nav('?id='.$msg['id_topic']);
}

break;

###############################################################################
##                              Закрытие темы                                ##
###############################################################################
case 'close':

$title = 'Форум';
require('../includes/header.php');

$id = intval($_REQUEST['id']);

if($u['id']){
	$topic = mysql_fetch_assoc(mysql_query("SELECT `id`, `id_user`, `closed` FROM `forum_topics` WHERE `id` = '$id'"));
	if(isset($topic['id'])){
		if($topic['id_user'] == $u['id'] or $u['user_access'] > 0){
			if(empty($topic['closed'])){
				mysql_query("UPDATE `forum_topics` SET `closed` = 1 WHERE `id` = '$id'");
				info('Тема успешно закрыта');
				nav('?id='.$id);
				echo '<meta http-equiv="refresh" content="0;URL=?id='.$id.'" />';
			}else{
				error('Выбранная уже закрыта!');
			}
		}else{
			error('У вас нет доступа!');
		}
	}else{
		error('Тема не существует!');
		nav('./');
	}
}else{
	error('Вы не <a href="../pages/login.php">авторизованы</a> для закрытия темы :(');
	nav('?id='.$msg['id_topic']);
}

break;

###############################################################################
##                              Открытие темы                                ##
###############################################################################
case 'open':

$title = 'Форум';
require('../includes/header.php');

$id = intval($_REQUEST['id']);

if($u['id']){
	$topic = mysql_fetch_assoc(mysql_query("SELECT `id`, `id_user`, `closed` FROM `forum_topics` WHERE `id` = '$id'"));
	if(isset($topic['id'])){
		if($topic['id_user'] == $u['id'] or $u['user_access'] > 0){
			if(!empty($topic['closed'])){
				mysql_query("UPDATE `forum_topics` SET `closed` = 0 WHERE `id` = '$id'");
				info('Тема успешно открыта!');
				nav('?id='.$id);
				echo '<meta http-equiv="refresh" content="0;URL=?id='.$id.'" />';
			}else{
				error('Выбранная уже открыта!');
			}
		}else{
			error('У вас нет доступа!');
		}
	}else{
		error('Тема не существует!');
		nav('./');
	}
}else{
	error('Вы не <a href="../pages/login.php">авторизованы</a> для открытия темы :(');
	nav('?id='.$msg['id_topic']);
}

break;


























}

require('../includes/tail.php');
?>