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

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

$user=login('nick, forum_moder', false, true);

if(!$user or $user['forum_moder']!=1){
	head('Ошибка!', 15, 'forums.php');
	echo '<small><b>Вы не модер!</b></small>';
	foot();
	exit();
}


$sess = 'sid='.$sid.'&amp;';

@$mod=($_GET['mod'])?$_GET['mod']:$_POST['mod'];
@$tid = intval($_GET['tid']);

head('Модерка форумов');

switch($mod){
	
	default:
		echo '<small>Ник:</small><br/>';
		echo '<input name="nick'.$ref.'" type="text" maxlength="30"/>';
		echo '<select name="mod'.$ref.'">';
		echo '<option value="">[Действие]</option>';
		echo '<option value="info">Информация</option>';
		echo '<option value="ban">Забанить</option>';
		echo '<option value="ban_ip">Забанить по IP</option>';
		echo '<option value="ban_only_read">Только чтение</option>';
		echo '<option value="full_ignor">Полный игнор</option>';
		echo '</select> ';
		echo '<small><anchor>OK<go href="forum_moder.php?'.$sess.'" method="post">';
		echo '<postfield name="mod" value="$(mod'.$ref.')"/>';
		echo '<postfield name="nick" value="$(nick'.$ref.')"/>';
		echo '</go></anchor><br/>';
		echo '---<br/>';
		echo '<b>Управление банами:</b><br/>';
		echo '<a href="forum_moder.php?'.$sess.'mod=bans">Список банов</a><br/>';
		echo '<a href="forum_moder.php?'.$sess.'mod=ignors">Список полного игнора</a><br/>';
		echo '<a href="forum_moder.php?'.$sess.'mod=bans_ip">Список банов по IP</a><br/>';
		echo '</small>';
		break;
	
	case 'ban_an_id':
		@$an_id = intval($_GET['an_id']);
		
		$select = mysql_query("SELECT `id` FROM `wip_anonymouses` WHERE `id`='".$an_id."';");
		
		if(mysql_affected_rows()<1){
			echo '<small>ID не существует!</small><br/>';
			break;
		}
		
		if(!isset($_GET['act'])){
			echo '<small>Время &quot;только чтения&quot; для <b>an_id='.$an_id.'</b>:</small><br/>';
			echo '<select name="time'.$ref.'">';
			echo '<option value="1800">30 минут</option>';
			echo '<option value="3600">1 час</option>';
			echo '<option value="10800">3 часа</option>';
			echo '<option value="21600">6 часов</option>';
			echo '<option value="43200">12 часов</option>';
			echo '<option value="86400">24 часа</option>';
			echo '</select><br/>';
			echo '<small><a href="forum_admin.php?sid='.$sid.'&amp;mod=ban_an_id&amp;an_id='.$an_id.'&amp;time=$(time'.$ref.')&amp;act=go">OK</a></small><br/>';
			break;
		}
		
		@$time = intval($_GET['time']);
		
		if($time<1800 or $time>86400){
			echo '<small>Неверно задано время бана!</small><br/>';
			break;
		}
		
		mysql_query("UPDATE `wip_anonymouses` SET `ban`=1, `ban_time`='".(time()+$time)."' WHERE `id`='".$an_id."';");
		
		echo '<small>Аноним <b>an_id='.$an_id.'</b> забанен!</small><br/>';
		break;
		
	case 'ban':
		@$nick=htmlspecialchars($_POST['nick'],ENT_QUOTES);
		
		$select=mysql_query("select nick, id, forum_admin, forum_moder from wip_users where nick='$nick';");
		if(mysql_affected_rows()<1){
			echo '<small>Неверный ник!</small><br/>';
			break;
		}
		
		$res=mysql_fetch_row($select);
		
		if($res[2] or $res[3]){
			echo '<small>Вы не можете банить админов или модеров!</small><br/>';
			break;
		}
		
		echo '<small>Забанить <b>'.$res[0].'</b>:<br/>';
		echo '* Время:</small><br/>';
		echo '<input name="day'.$ref.'" maxlength="3" format="*N" value="0" size="3"/> <small>дней (0-365)</small> ';
		echo '<input name="hour'.$ref.'" maxlength="2" format="*N" value="0" size="2"/> <small>часов (0-59)</small> ';
		echo '<input name="min'.$ref.'" maxlength="2" format="*N" value="0" size="2"/> <small>минут (0-59)</small><br/>';
		echo '<small>* Причина:</small><br/>';
		echo '<input name="reason'.$ref.'" type="text" maxlength="100"/><br/>';
		echo '<small><anchor>Забанить<go href="forum_moder.php?'.$sess.'mod=ban_save&amp;uid='.$res[1].'" method="post">';
		echo '<postfield name="day" value="$(day'.$ref.')"/>';
		echo '<postfield name="hour" value="$(hour'.$ref.')"/>';
		echo '<postfield name="min" value="$(min'.$ref.')"/>';
		echo '<postfield name="reason" value="$(reason'.$ref.')"/>';
		echo '</go></anchor></small><br/>';
		break;
		
	case 'ban_save':
		@$uid=intval($_GET['uid']);
		@$day=substr(intval($_POST['day']),0,3);
		@$hour=substr(intval($_POST['hour']),0,2);
		@$min=substr(intval($_POST['min']),0,2);
		@$reason=substr(trim(htmlspecialchars($_POST['reason'],ENT_QUOTES)),0,100);
		
		$select=mysql_query("select nick, forum_admin, forum_moder from wip_users where id='$uid';");
		if(mysql_affected_rows()<1){
			echo '<small>Неверный юзер!</small><br/>';
		}
		$res=mysql_fetch_row($select);
		
		if($res[1] or $res[2]){
			echo '<small>Вы не можете банить админов или модеров!</small><br/>';
			break;
		}
		
		if(($day<0 and $day>365) or ($hour<0 and $hour>59) or ($min<0 and $min>59)){
			echo '<small>Неверно установлено время!<br/>';
			echo '<anchor>Назад<prev/></anchor><br/></small>';
			break;
		}
		
		if(!$reason){
			echo '<small>Вы должны ввести причину бана!<br/>';
			echo '<anchor>Назад<prev/></anchor><br/></small>';
			break;
		}
		
		$ban_time=time()+($day*86400+$hour*3600+$min*60);
		
		mysql_query("select id from wip_bans where uid='$uid' and loc='forums';");
		
		if(mysql_affected_rows()<1) mysql_query("insert into wip_bans set uid='$uid', who='$user[id]', time='$ban_time', reason='$reason', loc='forums';");
		else mysql_query("update wip_bans set who='$user[id]', time='$ban_time', reason='$reason', loc='forums' where uid='$uid';");
		
		echo '<small><b>'.$res[0].'</b> забанен!</small><br/>';
		break;
		
	case 'ban_ip':
		@$nick=htmlspecialchars($_POST['nick'],ENT_QUOTES);
		
		$select=mysql_query("select nick, id, ip, forum_admin, forum_moder from wip_users where nick='$nick';");
		if(mysql_affected_rows()<1){
			echo '<small>Неверный ник!</small><br/>';
			break;
		}
		
		$res=mysql_fetch_row($select);
		
		if($res[3] or $res[4]){
			echo '<small>Вы не можете банить админов или модеров!</small><br/>';
			break;
		}
		
		echo '<small>Забанить <b>'.$res[0].'</b> по IP:<br/>';
		echo 'IP адрес или маска вида xxx.xxx.xxx:</small><br/>';
		echo '<input name="ip'.$ref.'" type="text" value="'.$res['2'].'" maxlength="15"/><br/>';
		echo '<small><anchor>Забанить<go href="forum_moder.php?'.$sess.'mod=ban_ip_save&amp;uid='.$res[1].'" method="post">';
		echo '<postfield name="ip" value="$(ip'.$ref.')"/>';
		echo '</go></anchor></small><br/>';
		break;
		
		
	case 'ban_ip_save':
		@$uid=intval($_GET['uid']);
		@$ip=substr(trim(htmlspecialchars($_POST['ip'],ENT_QUOTES)),0,15);
		
		$select=mysql_query("select nick, forum_admin, forum_moder from wip_users where id='$uid';");
		if(mysql_affected_rows()<1){
			echo '<small>Неверный юзер!</small><br/>';
		}
		$res=mysql_fetch_row($select);
		
		if($res[1] or $res[2]){
			echo '<small>Вы не можете банить админов или модеров!</small><br/>';
			break;
		}
		
		mysql_query("select id from wip_bans where uid='$uid' and loc='forums';");
		
		if(mysql_affected_rows()<1) mysql_query("insert into wip_bans set uid='$uid', ip='$ip', loc='forums';");
		else mysql_query("update wip_bans set ip='$ip', loc='forums' where uid='$uid';");
		
		echo '<small><b>'.$res[0].'</b> забанен по IP!</small><br/>';
		break;
		
		
	case 'full_ignor':
		@$nick=htmlspecialchars($_POST['nick'],ENT_QUOTES);
		
		$select=mysql_query("select nick, id, forum_admin, forum_moder from wip_users where nick='$nick';");
		if(mysql_affected_rows()<1){
			echo '<small>Неверный ник!</small><br/>';
			break;
		}
		
		$res=mysql_fetch_row($select);
		
		if($res[2] or $res[3]){
			echo '<small>Вы не можете игнорировать админов или модеров!</small><br/>';
			break;
		}
		
		mysql_query("update wip_users set forum_full_ignor=1 where id='$res[1]';");
		echo '<small><b>'.$res[0].'</b> добавлен в полный игнор!</small><br/>';
		break;
		
	case 'ban_only_read':
		@$nick=htmlspecialchars($_POST['nick'],ENT_QUOTES);
		
		$select = mysql_query("SELECT `id`, `forum_admin`, `forum_moder` FROM `wip_users` WHERE `nick` = '".$nick."';");
		if(mysql_affected_rows()<1){
			echo '<small>Неверный ник!</small><br/>';
			break;
		}
		
		$res = mysql_fetch_row($select);
		
		if($res[1] or $res[2]){
			echo '<small>Вы не можете ставить &quot;только чтение&quot; на админов или модеров!</small><br/>';
			break;
		}
		
		$upd = mysql_query("UPDATE `wip_users` SET `forum_cookie_ban`=1 WHERE `nick`='".$nick."';");
		
		if($upd) echo '<small>Юзеру <b>'.$nick.'</b> установлен режим &quot;только чтение&quot;.</small><br/>';
		else echo '<small>Ошибка!</small><br/>';
		break;
		
	case 'bans':
		$select=mysql_query("select wip_bans.uid, wip_bans.who, wip_users.nick, wip_bans.time, wip_bans.reason from wip_bans, wip_users where wip_users.id=wip_bans.uid and wip_bans.time>'".time()."' and wip_bans.loc='forums';");
		if(mysql_affected_rows()<1){
			echo '<small>Забаненых нет!<br/>---<br/></small>';
			break;
		}
		
		echo '<small>';
		echo '<b>Список банов:</b><br/>---<br/>';
		
		while($res=mysql_fetch_assoc($select)){
			//Определяем время бана:
			$str_diff=false;
			$diff=$res['time']-time();
				
			if($diff>=3600){
				$hor=floor($diff/3600);
				if($hor!=0) $str_diff=$hor.' часов ';
			}
			
			if($diff>=60){
				$min=floor(($diff%3600)/60);
				if($min!=0) $str_diff.=$min.' минут ';
			}
				
			$sec=floor($diff%60);
			if($sec!=0) $str_diff.=$sec.' секунд ';
			/////
			
			
			$who=mysql_fetch_row(mysql_query("select nick from wip_users where id='$res[who]';"));
			echo '<a href="user.php?'.$sess.'uid='.$res['uid'].'">'.$res['nick'].'</a><br/>';
			echo '<b>Забанил:</b> '.$who[0].'<br/>';
			echo '<b>Время бана:</b> '.$str_diff.'<br/>';
			echo '<a href="forum_moder.php?'.$sess.'mod=unban&amp;uid='.$res['uid'].'">Разбанить</a><br/>';
			echo '---<br/>';
		}
		echo '</small>';
		break;
		
		
	case 'unban':
		@$uid=intval($_GET['uid']);
		
		mysql_query("select id from wip_bans where time>'".time()."' and loc='forums' and uid='$uid';");
		if(mysql_affected_rows()<1){
			echo '<small>Пользователь не значится в списке банов чата<br/>';
			echo '<anchor>Назад<prev/></anchor></small><br/>';
			break;
		}
		
		mysql_query("delete from wip_bans where uid='$uid' and loc='forums';");
		echo '<small>Пользователь разбанен!<br/>';
		echo '<anchor>Назад<prev/></anchor></small><br/>';
		break;
		
		
	case 'ignors':
		$select=mysql_query("select id,nick from wip_users where forum_full_ignor=1;");
		if(mysql_affected_rows()<1){
			echo '<small>Список полного игнора пуст!</small><br/>';
			break;
		}
		
		echo '<small>';
		echo '<b>Список полного игнора:</b><br/>---<br/>';
		
		while($res=mysql_fetch_assoc($select)) echo '<a href="user.php?'.$sess.'uid='.$res['id'].'">'.$res['nick'].'</a> <a href="forum_moder.php?'.$sess.'mod=unignor&amp;uid='.$res['id'].'">[x]</a><br/>';
		
		echo '</small>';	
		break;
	
		
	case 'unignor':
		@$uid=intval($_GET['uid']);
		
		mysql_query("select id from wip_users where id='$uid' and forum_full_ignor=1;");
		if(mysql_affected_rows()<1){
			echo '<small>Пользователь не находится в полном игноре!<br/>';
			echo '<anchor>Назад<prev/></anchor></small><br/>';
			break;
		}
		
		mysql_query("update wip_users set forum_full_ignor=0 where id='".$uid."';");
		echo '<small>Пользователь удален из полного игнора!<br/>';
		echo '<anchor>Назад<prev/></anchor></small><br/>';
		break;
		
	case 'bans_ip':
		$select=mysql_query("select id, ip from wip_bans where ip!='' and loc='forums';");
		if(mysql_affected_rows()<1){
			echo '<small>Забаненых по IP нет!<br/></small>';
			break;
		}
		
		echo '<small>';
		echo '<b>Список банов  по IP:</b><br/>---<br/>';
		
		while($res=mysql_fetch_assoc($select)) echo $res['ip'].' <a href="forum_moder.php?'.$sess.'mod=unban_ip&amp;bid='.$res['id'].'">[x]</a><br/>';

		echo '</small>';
		break;
		
	case 'unban_ip':
		@$bid=intval($_GET['bid']);
		
		$select=mysql_query("select ip from wip_bans where id='$bid';");
		if(mysql_affected_rows()<1){
			echo '<small>Неверный IP!</small><br/>';
			break;
		}
		
		$res=mysql_fetch_assoc($select);
		
		mysql_query("delete from wip_bans where id='$bid';");
		echo '<small>IP <b>'.$res['ip'].'</b> разбанен!<br/>';
		echo '<anchor>Назад<prev/></anchor></small><br/>';
		break;
		
		
	case 'topic':
		$select = mysql_query("SELECT `name`, `close`, `last`, `read`, `write` FROM `wip_forum_topics` WHERE `id`='".$tid."'");
		
		if(mysql_affected_rows()<1){
			echo '<small>Неверная тема!</small><br/>';
			break;
		}
		
		$res = mysql_fetch_assoc($select);
		
		echo '<small>Название темы:</small><br/>';
		echo '<input name="name'.$ref.'" type="text" value="'.$res['name'].'" maxlength="50"/><br/>';
		
		echo '<small>Читать могут:</small> ';
		echo '<select name="read'.$ref.'" value="'.$res['read'].'">';
		echo '<option value="1">Зарегистрированные</option>';
		echo '<option value="0">Все</option>';
		echo '</select><br/>';
		
		echo '<small>Отвечать могут:</small> ';
		echo '<select name="write'.$ref.'" value="'.$res['write'].'">';
		echo '<option value="1">Зарегистрированные</option>';
		echo '<option value="0">Все</option>';
		echo '</select><br/>';
		
		echo '<small><anchor>Сохранить<go href="forum_moder.php?'.$sess.'mod=t_edit&amp;tid='.$tid.'" method="post">';
		echo '<postfield name="name" value="$(name'.$ref.')"/>';
		echo '<postfield name="read" value="$(read'.$ref.')"/>';
		echo '<postfield name="write" value="$(write'.$ref.')"/>';
		echo '</go></anchor><br/>';
		echo '---<br/>';
		
		$str = ($res['close'] == 1) ? 'От' : 'За'; 
		echo '<a href="forum_moder.php?'.$sess.'mod=t_close&amp;tid='.$tid.'">'.$str.'крыть тему</a><br/>';
		
		$str = ($res['last'] == 'lock') ? 'От' : 'За'; 
		echo '<a href="forum_moder.php?'.$sess.'mod=t_lock&amp;tid='.$tid.'">'.$str.'крепить тему</a><br/>';
		
		echo '<a href="forum_moder.php?'.$sess.'mod=t_del&amp;tid='.$tid.'">Удалить тему</a><br/>';
		echo '<a href="forum_moder.php?'.$sess.'mod=t_move&amp;tid='.$tid.'">Переместить тему</a><br/>';
		echo '</small>';
		break;
		
	case 't_edit':
		
		$select = mysql_query("SELECT `name` FROM `wip_forum_topics` WHERE `id`='".$tid."'");
		
		if(mysql_affected_rows()<1){
			echo '<small>Неверная тема!</small><br/>';
			break;
		}
		
		@$name = mb_substr(htmlspecialchars($_POST['name'], ENT_QUOTES), 0, 50);
		@$read = ($_POST['read']==1) ? 1 : 0;
		@$write = ($_POST['write']==1) ? 1 : 0;
		
		$upd = mysql_query("UPDATE `wip_forum_topics` SET `name`='".$name."', `read`='".$read."', `write`='".$write."' WHERE `id`='".$tid."';");
		
		if($upd) echo '<small>Параметры темы сохранены!</small><br/>';
		else echo '<small>Ошибка!</small><br/>';
		break;
		
	case 't_close':
		
		$select = mysql_query("SELECT `close` FROM `wip_forum_topics` WHERE `id`='".$tid."'");
		
		if(mysql_affected_rows()<1){
			echo '<small>Неверная тема!</small><br/>';
			break;
		}
		
		$res = mysql_result($select, 0);
		
		if($res==1){
			$v = 0;
			$str = 'от';
		}
		
		else {
			$v = 1;
			$str = 'за';
		}
		
		$upd = mysql_query("UPDATE `wip_forum_topics` SET `close`='".$v."' WHERE `id`='".$tid."';");
		
		if($upd) echo '<small>Тема '.$str.'крыта!</small><br/>';
		else echo '<small>Ошибка!</small><br/>';
		break;
		
	case 't_lock':
		
		$select = mysql_query("SELECT `last` FROM `wip_forum_topics` WHERE `id`='".$tid."'");
		
		if(mysql_affected_rows()<1){
			echo '<small>Неверная тема!</small><br/>';
			break;
		}
		
		$res = mysql_result($select, 0);
		
		if($res=='lock'){
			$v = mysql_result(mysql_query("SELECT `time` FROM `wip_forum_messages` WHERE `tid`='".$tid."' ORDER BY `id` DESC LIMIT 1;"), 0);
			$str = 'от';
		}
		
		else {
			$v = 'lock';
			$str = 'за';
		}
		
		$upd = mysql_query("UPDATE `wip_forum_topics` SET `last`='".$v."' WHERE `id`='".$tid."';");
		
		if($upd) echo '<small>Тема '.$str.'креплена!</small><br/>';
		else echo '<small>Ошибка!</small><br/>';
		break;
	
	case 't_del':
		
		$select = mysql_query("SELECT `id` FROM `wip_forum_topics` WHERE `id`='".$tid."'");
		
		if(mysql_affected_rows()<1){
			echo '<small>Неверная тема!</small><br/>';
			break;
		}
		
		$del = mysql_query("DELETE FROM `wip_forum_topics` WHERE `id`='".$tid."';");
		$del = mysql_query("DELETE FROM `wip_forum_messages` WHERE `tid`='".$tid."';");
		
		if($del) echo '<small>Тема удалена!</small><br/>';
		else echo '<small>Ошибка!</small><br/>';
		break;
		
}


echo '<small>';
if($mod!='bans') echo '---<br/>';


if($tid and $mod!='t_del'){
	$fid = mysql_result(mysql_query("SELECT `fid` FROM `wip_forum_topics` WHERE `id`='".$tid."';"), 0);
	echo '<a href="forum_topics.php?sid='.$sid.'&amp;fid='.$fid.'">На форум</a><br/>';
}

if($mod) echo '<a href="forum_moder.php?sid='.$sid.'">Модерка</a><br/>';
echo '<a href="forums.php?sid='.$sid.'">Форумы</a><br/>';
echo '<a href="enter.php?sid='.$sid.'">Главное меню</a>';
echo '</small>';

foot();
mysql_close($link);
?>