<?
require('ini.php');
$link=connect();
$user=login('nick, loc, forum_mlim, forum_full_ignor, forum_admin, forum_moder', 'forums', true);
if(isset($_COOKIE['forums_login'])) $ban_cookie = true;
else $ban_cookie = false;
if($user) $sess = 'sid='.$sid.'&';
else $sess = false;
@$mod=$_GET['mod'];
@$msg = trim($_POST['msg']);
@$tid = intval($_GET['tid']);
@$mid = intval($_GET['mid']);
@$s = intval($_GET['s']);
$select = mysql_query("SELECT `t`.`name` AS `topic`, `t`.`last`, `t`.`read`, `t`.`close`, `t`.`write`, `f`.`id` AS `fid`, `f`.`name` AS `forum` FROM `wip_forum_topics` AS `t`, `wip_forum_forums` AS `f` WHERE `f`.`id`=`t`.`fid` AND `t`.`id`='".$tid."';");
if(mysql_affected_rows()<1){
head('Ошибка!', 15, 'forums.php?'.$sess);
echo '<small><b>Неверная тема!</b></small>';
foot();
exit();
}
$topic = mysql_fetch_assoc($select);
if(!$user and $topic['read']==1){
head('Ограничение!');
echo '<small>Эту тему могут просматривать только зарегистрированные пользователи!<br/>---<br/>';
echo '<anchor>Назад<prev/></anchor><br/>';
echo '<a href="forums.php?'.$sess.'">Форумы</a></small>';
foot();
exit();
}
if($user) mysql_query("UPDATE `wip_users` SET `loc`='forum_".$topic['fid']."', `forum_online`='".time()."' WHERE `id`='".$user['id']."';");
# Анонимные ID
if(!$user){
$an_id = an_id();
$uid = 3;
$ban_time = mysql_result(mysql_query("SELECT `ban_time` FROM `wip_anonymouses` WHERE `id`='".$an_id."';"), 0);
if($ban_time > time()) $an_ban = true;
else $an_ban = false;
}
###
else $uid = $user['id'];
switch($mod){
# Сообщения в теме
default:
head($topic['topic']);
echo '<small>';
# Новый ответ в теме
if($msg and !$ban_cookie and ( ($topic['write']==0 and !$user) or $user) and $topic['close']==0){
$edit = false;
if($mid){
$select = mysql_query("SELECT `uid`, `msg` FROM `wip_forum_messages` WHERE `id`='".$mid."';");
if(mysql_affected_rows()>0){
if($user['forum_moder'] or $user['forum_admin']) $edit = true;
$res = mysql_fetch_assoc($select);
if($res['uid'] == $user['id']) $edit = true;
}
}
if($user) $uid = $user['id'];
else $uid = 3; # Публичный ID анонима
@$msg = mb_substr( htmlspecialchars($_POST['msg'], ENT_QUOTES), 0, 1000, 'UTF-8');
# Добавление смайлов
$msg=strtr($msg,array(':)'=>'<smile.gif>', ';)'=>'<wink.gif>', 'B)'=>'<cool.gif>', ':(('=>'<aaa.gif>', ':!'=>'<be.gif>', ':S'=>'<blin.gif>', '@='=>'<bum.gif>', ':X'=>'<close.gif>', ';('=>'<cry.gif>', ']:)'=>'<devil.gif>', '@-/-'=>'<flow.gif>', ':]'=>'<gaga.gif>', ':D'=>'<green.gif>', '=)'=>'<ha.gif>', '(:'=>'<lol.gif>', '=/'=>'<hm.gif>', '.kiss.'=>'<kiss.gif>', ':o)'=>'<kloun.gif>', '.lips.'=>'<lips.gif>', '.love.'=>'<love.gif>', '8o'=>'<mmm.gif>', '[:)'=>'<music.gif>', '=]'=>'<napolu.gif>', '.ninja.'=>'<ninja.gif>', '.down.'=>'<no.gif>', '%)'=>'<ogo.gif>', '.pirat.'=>'<pirate.gif>', '.beer.'=>'<pivo.gif>', ':['=>'<red.gif>', ':('=>'<sad.gif>', '.woot.'=>'<shok.gif>', '.zz.'=>'<spit.gif>', '=p'=>'<tong.gif>', ':T'=>'<svist.gif>', '.uuu.'=>'<uuu.gif>', '.wow.'=>'<view.gif>', ':?'=>'<vopros.gif>', '.up.'=>'<yes.gif>', ':@'=>'<angry2.gif>', ':O'=>'<angry.gif>'));
$arr=explode('<',$msg);
$msg=false;
foreach($arr as $k=>$val){
if($k!=0 and $k<=3) $msg.='<img src="smiles/'.$val;
else $msg.=$val;
}
$msg=preg_replace("/src\=\"smiles\/([a-z]+)\.gif\>/","src=\"smiles/\\1.gif\" alt=\"\\1\"/>",$msg);
$msg=eregi_replace("([a-z]+)\.gif\>","",$msg);
####
$msg = preg_replace("#\[link\=http\:\/\/(.*?)\](.*?)\[\/link\]#ei", "'<a href=\"go.php?'.base64_encode('http://'.mb_substr(\"\\1\", 0, 200, 'UTF-8')).'\">'.mb_substr(\"\\2\", 0, 40, 'UTF-8').'</a>'", $msg);
$msg = nl2br($msg);
$msg = str_replace('<br />', '<br/>', $msg);
# Ограничение по количеству сообщений в минуту для анонимусов
if($uid==3 and !$edit){
$c_last = mysql_result(mysql_query("SELECT COUNT(`id`) FROM `wip_forum_messages` WHERE `an_id`='".$an_id."' AND `time`>'".(time()-60)."';"), 0);
if($c_last>=3){
echo 'Вы не можете так часто отвечать на форуме! Перезагрузите страницу через минуту.<br/>'.
'<a href="forum_messages.php?tid='.$tid.'&s='.$s.'">В тему</a><br/>';
break;
}
}
###
# Проверка на боян (если добавляем сообщение)
if(!$edit) mysql_query("SELECT `id` FROM `wip_forum_messages` WHERE `tid`='".$tid."' AND `msg`='".$msg."';");
if(mysql_affected_rows()>0 and !$edit){
echo 'Вы уже писали это сообщение в теме<br/>---<br/>';
}
###
else {
if(!$user) $add_an_id = ", `an_id`='".$an_id."'";
else $add_an_id = false;
# Добавляем сообщение
if(!$edit) $ins = mysql_query("INSERT INTO `wip_forum_messages` SET `fid`='".$topic['fid']."', `tid`='".$tid."', `uid`='".$uid."', `time`='".time()."', `msg`='".$msg."' ".$add_an_id.";");
else {
if($_POST['del']==1) $ins = mysql_query("DELETE FROM `wip_forum_messages` WHERE `id`='".$mid."';");
else $ins = mysql_query("UPDATE `wip_forum_messages` SET `msg`='".$msg."' WHERE `id`='".$mid."';");
}
# Обновляем посты
if(!$edit or $_POST['del']==1) mysql_query("UPDATE `wip_users` SET `forum_posts` = `forum_posts` +1 WHERE `id`='".$uid."';");
# Обновляем время последнего ответа, если тема не закреплена
if ($topic['last'] != 'lock' and !$edit) mysql_query("UPDATE `wip_forum_topics` SET `last`='".time()."' WHERE `id`='".$tid."';");
if(!$ins) echo 'Ошибка при добавлении сообщения!<br/>---<br/>';
}
}
###
# Постраничный вывод
$mlim = ($user) ? $user['forum_mlim'] : 10;
if (!$s or $s<=0) $s=1;
$all = mysql_result(mysql_query("SELECT COUNT(`id`) FROM `wip_forum_messages` WHERE `tid`='".$tid."';"), 0);
$pgs=ceil($all / $mlim);
if($s > $pgs) $s = $pgs;
$n = ($s-1) * $mlim;
###
# "Шапка темы"
echo '<a href="forums.php?'.$sess.'">Форумы</a> | <a href="forum_topics.php?'.$sess.'fid='.$topic['fid'].'">'.$topic['forum'].'</a> | <b>'.$topic['topic'].'</b><br/>';
#echo '<b>'.$topic['topic'].'</b><br/>';
# Условие для отображения "Ответить". Работает РУКАМИ НЕ ТРОГАТЬ!!!!!!!
if(!$ban_cookie and ( ($topic['write']==0 and !$user) or $user) and $topic['close']==0 and ($uid!=3 or ($uid==3 and !$an_id))) echo '<a href="forum_messages.php?'.$sess.'tid='.$tid.'&mod=new_msg&s='.$s.'&r='.rand(100, 500).'">Ответить</a> | ';
echo '<a href="forum_messages.php?'.$sess.'tid='.$tid.'&s='.$pgs.'&r='.rand(100, 500).'">Обновить</a><br/>';
if($topic['close']==1) echo '<b>Тема закрыта!</b><br/>';
elseif($topic['write']==1) echo '<b>Ограничение:</b> отвечать в теме могут только зарегистрированные юзеры<br/>';
echo '---<br/>';
###
$select = mysql_query("SELECT `u`.`nick`, `m`.`uid`, `m`.`time`, `m`.`msg`, `m`.`id`, `m`.`an_id` FROM `wip_forum_messages` AS `m`, `wip_users` AS `u` WHERE `m`.`tid`='".$tid."' AND `u`.`id`=`m`.`uid` AND ((`u`.`forum_full_ignor`=1 AND `u`.`id`='".$uid."') OR (`u`.`forum_full_ignor`=0)) ORDER BY `m`.`id` LIMIT ".$n.", ".$mlim.";");
if(mysql_affected_rows()<1){
echo 'В этой теме сообщений нет<br/>';
}
else {
$today = date('d.m.Y');
$np = $n+1;
while($res = mysql_fetch_assoc($select)){
$date = (date('d.m.Y', $res['time']) == $today) ? 'сегодня '.date('H:i', $res['time']) : date('d.m.Y H:i', $res['time']);
echo ''.$np.'. ';
if(!$user /*or $user['id'] == $res['uid']*/ or $res['uid']==3) echo '<b>'.$res['nick'].'</b>';
else echo '<b><a href="user.php?'.$sess.'uid='.$res['uid'].'&tid='.$tid.'">'.$res['nick'].'</a></b>';
if($res['uid']==3 and ($user['forum_admin'] or $user['forum_moder'])){
$page = ($user['forum_admin']) ? 'forum_admin' : 'forum_moder';
echo ' [id='.$res['an_id'].', <a href="'.$page.'.php?sid='.$sid.'&mod=ban_an_id&an_id='.$res['an_id'].'">бан</a>]';
}
echo ', '.$date.'<br/>'.$res['msg'].' ';
if($res['uid']==$user['id'] or $user['forum_admin'] or $user['forum_moder']) echo '<a href="forum_messages.php?sid='.$sid.'&tid='.$tid.'&mod=new_msg&mid='.$res['id'].'">[изм]</a>';
echo '<br/>---<br/>';
$np++;
}
# Список страниц
if ($all > $mlim){
if ($pgs>3 and $s>2) echo '<a href="forum_messages.php?'.$sess.'tid='.$tid.'&s=1">1</a>...';
$beg=$s-1; $end=$s+1;
if ($end>$pgs+1){
$end=$pgs; $beg=$beg-2;
}
elseif ($end>$pgs){
$end=$pgs; $beg=$beg-1;
}
for($m=$beg;$m<=$end;$m++){
if ($m<=0) $end++;
else{
if($m==$s) echo '<b>'.$m.'</b>';
else echo '<a href="forum_messages.php?'.$sess.'tid='.$tid.'&s='.$m.'">'.$m.'</a>';
if($m!=$end) echo '-';
}
if ($end>$pgs) $end=$pgs;
}
if ($pgs>3 and $s<=($pgs-2)) echo '...<a href="forum_messages.php?'.$sess.'tid='.$tid.'&s='.$pgs.'">'.$pgs.'</a>';
echo '<br/>---<br/>';
}
}
# Условие для отображения "Ответить". Работает РУКАМИ НЕ ТРОГАТЬ!!!!!!!
if(!$ban_cookie and ( ($topic['write']==0 and !$user) or $user) and $topic['close']==0 and ($uid!=3 or ($uid==3 and !$an_id))) echo '<a href="forum_messages.php?'.$sess.'tid='.$tid.'&mod=new_msg&s='.$s.'&r='.rand(100, 500).'">Ответить</a> | ';
echo '<a href="forum_messages.php?'.$sess.'tid='.$tid.'&s='.$pgs.'&r='.rand(100, 500).'">Обновить</a>';
echo '<br/>';
echo '<a href="forums.php?'.$sess.'">Форумы</a> | <a href="forum_topics.php?'.$sess.'fid='.$topic['fid'].'">'.$topic['forum'].'</a> | <b>'.$topic['topic'].'</b><br/>';
echo '</small>';
break;
# Новое сообщение
case 'new_msg':
if($uid==3 and $an_ban==true){
head('Ошибка!', 15, 'forums.php?'.$sess);
echo '<small><b>Вы не можете отвечать в теме!</b></small>';
foot();
exit();
}
###
$mlim = ($user) ? $user['forum_mlim'] : 10;
$all = mysql_result(mysql_query("SELECT COUNT(`id`) FROM `wip_forum_messages` WHERE `tid`='".$tid."';"), 0);
$pgs=ceil($all / $mlim);
###
@$r = intval($_GET['r']);
$edit = false;
if($mid){
$select = mysql_query("SELECT `uid`, `msg` FROM `wip_forum_messages` WHERE `id`='".$mid."';");
if(mysql_affected_rows()>0){
if($user['forum_moder'] or $user['forum_admin']) $edit = true;
$res = mysql_fetch_assoc($select);
if($res['uid'] == $user['id']) $edit = true;
}
}
if($edit == false){
$title = 'Ответить';
$value = false;
$lnk = false;
}
else {
$title = 'Изменить';
$value = $res['msg'];
$lnk = '&mid='.$mid;
}
head($title);
echo '<small><a href="forum_messages.php?'.$sess.'tid='.$tid.'&s='.$s.'">'.$topic['topic'].'</a> | <b>'.$title.'</b><br/>';
echo '---<br/>';
echo 'Сообщение:</small> <input name="msg'.$ref.'" type="text" value="'.$value.'" maxlength="1000"/><br/>';
if($edit){
echo '<select multiple="true" name="del">';
echo '<option value="1">Удалить</option>';
echo '</select><br/>';
}
echo '<small><anchor>'.$title.'<go href="forum_messages.php?'.$sess.'tid='.$tid.'&s='.($pgs+1).''.$lnk.'" method="post">';
echo '<postfield name="msg" value="$(msg'.$ref.')"/>';
echo '<postfield name="del" value="$(del)"/>';
echo '</go></anchor></small><br/>';
break;
}
echo '<small>';
if($mod){
echo '---<br/>';
echo '<anchor>Назад<prev/></anchor><br/>';
}
if($user) echo '<a href="enter.php?'.$sess.'">Главное меню</a>';
echo '</small>';
foot();
mysql_close($link);
?>