View file wip-site-portal/src/forum_topics.php

File size: 9.66Kb
<?
require('ini.php');
$link=connect();

$user=login('nick, loc, forum_tlim, forum_admin, forum_moder, forum_mlim', 'forums', true);

if(isset($_COOKIE['forums_login'])) $ban_cookie = true;
else $ban_cookie = false;

if($user) $sess = 'sid='.$sid.'&amp;';
else $sess = false;

@$mod=$_GET['mod'];
@$fid = intval($_GET['fid']);
@$s = intval($_GET['s']);

$select = mysql_query("SELECT `name` FROM `wip_forum_forums` WHERE `id`='".$fid."';");

if(mysql_affected_rows()<1){
	head('Ошибка!', 15, 'forums.php?'.$sess);
	echo '<small><b>Неверный форум!</b></small>';
	foot();
	exit();
}

$forum = mysql_result($select, 0);

if($user) mysql_query("UPDATE `wip_users` SET `loc`='forum_".$fid."', `forum_online`='".time()."' WHERE `id`='".$user['id']."';");

# Анонимный ID
if(!$user and $mod == 'new_topic_make'){
	$an_id = an_id();
}
###

switch($mod){
	
	# Список тем на форуме
	default:
		head($forum);
		echo '<small>';
		
		echo '<a href="forums.php?'.$sess.'">Форумы</a> | <b>'.$forum.'</b>';
		if(!$ban_cookie)  echo ' | <a href="forum_topics.php?'.$sess.'fid='.$fid.'&amp;mod=new_topic&amp;r='.rand(100, 500).'">Новая тема</a>';
		
		$onl = mysql_result(mysql_query("SELECT COUNT(`id`) FROM `wip_users` WHERE `loc`='forum_".$fid."' AND `forum_online`>'".(time()-300)."';"), 0);
		if($onl > 0) echo '<br/><a href="forum_online.php?'.$sess.'fid='.$fid.'">Кто на форуме</a> ['.$onl.']';
		
		echo '<br/>---<br/>';
		
		# Постраничный вывод
		$tlim = ($user) ? $user['forum_tlim'] : 10;
		
		if (!$s or $s<=0) $s=1;
		$all = mysql_result(mysql_query("SELECT COUNT(`id`) FROM `wip_forum_topics` WHERE `fid`='".$fid."';"), 0);
		$pgs=ceil($all / $tlim);
		if($s > $pgs) $s = $pgs;
		$n = ($s-1) * $tlim;
		###
		
		$select = mysql_query("SELECT `t`.`id` AS `tid`, `u`.`nick`, `t`.`name`, `t`.`last`, `t`.`time`, `t`.`close`, `t`.`move` FROM `wip_forum_topics` AS `t`, `wip_users` AS `u` WHERE `t`.`uid`=`u`.`id` AND `t`.`fid`='".$fid."' ORDER BY `last` DESC LIMIT ".$n.", ".$tlim.";");

		if(mysql_affected_rows()<1){
			echo 'В этом форуме нет тем<br/>';
		}
		
		else {
			
			$today = date('d.m.Y');
			
			while($res = mysql_fetch_assoc($select)){
				
				$q = mysql_query("SELECT COUNT(`id`) FROM `wip_forum_messages` WHERE `tid`='".$res['tid']."';");
				$msgs = mysql_result($q, 0);
				
				$mlim = ($user) ? $user['forum_mlim'] : 10;
				$pgs=ceil($msgs / $mlim);
				
				$last = mysql_fetch_assoc(mysql_query("SELECT `u`.`nick`, `m`.`time` FROM `wip_forum_messages` AS `m`, `wip_users` AS `u` WHERE `u`.`id`=`m`.`uid` AND `tid`='".$res['tid']."' ORDER BY `m`.`id` DESC LIMIT 1;"));
				
				$last_date=false;
				$last_date=(date('d.m.Y', $last['time']) == $today)?'[ceгoдня / ':'['.date('d.m', $last['time']).' / ';
				$last_date.=date('H:i', $last['time']).']';
				
				$date = (date('d.m.Y', $res['time']) == $today) ? 'сегодня' : date('d.m.Y', $res['time']);
				$date .= ' / '.date('H:i', $res['time']);
				
				if($user['forum_admin']) echo '<a href="forum_admin.php?'.$sess.'mod=topic&amp;tid='.$res['tid'].'">[+]</a> ';
				if($user['forum_moder']) echo '<a href="forum_moder.php?'.$sess.'mod=topic&amp;tid='.$res['tid'].'">[+]</a> ';
				
				if($pgs>1) echo '<a href="forum_messages.php?'.$sess.'tid='.$res['tid'].'&amp;s='.$pgs.'">-&gt;</a> ';
				
				echo '<a href="forum_messages.php?'.$sess.'tid='.$res['tid'].'">'.$res['name'].'</a> ['.$msgs.']';
				if($res['last']=='lock') echo ' <b>[!]</b>';
				
				echo '<br/>';
				if($res['close']==1) echo '<b>Тема закрыта</b><br/>';
				
				echo $res['nick'].', '.$date.'<br/>';
				echo 'Посл: '.$last['nick'].' '.$last_date.'<br/>';
				echo '---<br/>';
			}
			
			# Список страниц
			if ($all > $tlim){
				if ($pgs>3 and $s>2) echo '<a href="forum_topics.php?'.$sess.'fid='.$fid.'&amp;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_topics.php?'.$sess.'fid='.$fid.'&amp;s='.$m.'">'.$m.'</a>';
			
						if($m!=$end) echo '-';
					}
				
					if ($end>$pgs) $end=$pgs;
				}
	
				if ($pgs>3 and $s<=($pgs-2)) echo '...<a href="forum_topics.php?'.$sess.'fid='.$fid.'&amp;s='.$pgs.'">'.$pgs.'</a>';
				
				echo '<br/>---<br/>';
			}
			
			echo '<a href="forums.php?'.$sess.'">Форумы</a> | <b>'.$forum.'</b>';
			if(!$ban_cookie) echo ' | <a href="forum_topics.php?'.$sess.'fid='.$fid.'&amp;mod=new_topic&amp;r='.rand(100, 500).'">Новая тема</a>';
			echo '<br/>';
		}
		
		echo '</small>';
		break;
		
	# Новая тема: ввод данных
	case 'new_topic':
		@$r = intval($_GET['r']);
		
		head('Новая тема');
		
		if($ban_cookie){
			echo '<small>Вы не можете создавать темы!<br/><anchor>Назад<prev/></anchor><br/></small>';
			break;
		}
		
		echo '<small><a href="forum_topics.php?'.$sess.'fid='.$fid.'">'.$forum.'</a> | <b>Новая тема</b><br/>';
		echo '---<br/>';
		echo 'Название темы:</small> <input name="name'.$r.'" type="text" maxlength="50"/><br/>';
		echo '<small>Сообщение:</small> <input name="msg'.$r.'" type="text" maxlength="1000"/><br/>';
		echo '<small><anchor>Создать<go href="forum_topics.php?'.$sess.'mod=new_topic_make&amp;fid='.$fid.'" method="post">';
		echo '<postfield name="name" value="$(name'.$r.')"/>';
		echo '<postfield name="msg" value="$(msg'.$r.')"/>';
		echo '</go></anchor></small><br/>';
		break;
	
	# Новая тема: запись данных
	case 'new_topic_make':
				
		head('Новая тема');
		
		if($ban_cookie){
			echo '<small>Вы не можете создавать темы!<br/><anchor>Назад<prev/></anchor><br/></small>';
			break;
		}
		
		@$name = mb_substr( htmlspecialchars(trim($_POST['name']), ENT_QUOTES), 0, 50, 'UTF-8');
		@$msg = mb_substr( htmlspecialchars(trim($_POST['msg']), ENT_QUOTES), 0, 1000, 'UTF-8');
		
		if(!$name or !$msg){
			echo '<small>Введите название и сообщение темы!<br/><anchor>Назад<prev/></anchor></small><br/>';
			break;
		}
		
		# Добавление смайлов
		$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);
		####
		
		if($user) $uid = $user['id'];
		else $uid = 3; # Публичный ID анонима
		
		mysql_query("SELECT `id` FROM `wip_forum_topics` WHERE `name`='".$name."' AND `fid`='".$fid."' AND `uid`='".$uid."';");
		
		if(mysql_affected_rows()>0){
			echo '<small>Вы уже создавали тему с таким названием!<br/><anchor>Назад<prev/></anchor></small><br/>';
			break;
		}
		
		$c_last = mysql_result(mysql_query("SELECT COUNT(`id`) FROM `wip_forum_topics` WHERE `time`>'".(time()-60)."' AND `uid`='".$uid."';"), 0);
		
		if($c_last >= 2){
			echo '<small>Вы не можете создавать темы так часто, подождите 1 минуту и обновите страницу<br/><anchor>Назад<prev/></anchor></small><br/>';
			break;
		}
		
		if(!$user) $add_an_id = ", `an_id`='".$an_id."'";
		else $add_an_id = false;
		
		mysql_query("INSERT INTO `wip_forum_topics` SET `fid`='".$fid."', `uid`='".$uid."', `time`='".time()."', name='".$name."', `last`='".time()."' ".$add_an_id.";");
		
		$tid = mysql_insert_id();
		
		if(!$tid){
			echo '<small>Ошибка создания темы!<br/><anchor>Назад<prev/></anchor></small><br/>';
			break;
		}
		
		$ins = mysql_query("INSERT INTO `wip_forum_messages` SET `fid`='".$fid."', `tid`='".$tid."', `uid`='".$uid."', `time`='".time()."', `msg`='".$msg."' ".$add_an_id.";");
		
		if($ins){
			echo '<small>Новая тема успешно создана!<br/>';
			echo '<a href="forum_messages.php?'.$sess.'tid='.$tid.'">В тему</a><br/>';
			echo '<a href="forum_topics.php?'.$sess.'fid='.$fid.'">'.$forum.'</a>';
			echo '</small><br/>';
		}
		
		else echo '<small>Ошибка при создании темы!<br/><anchor>Назад<prev/></anchor></small><br/>';
		break;
	
	
}



echo '<small>';
if($mod) echo '---<br/>';
if($mod == 'new_topic') echo '<a href="forums.php?'.$sess.'">Форумы</a><br/>';
if($user) echo '<a href="enter.php?'.$sess.'">Главное меню</a>';
echo '</small>';
foot();

mysql_close($link);
?>