<?
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.'&';
@$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>Время "только чтения" для <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.'&mod=ban_an_id&an_id='.$an_id.'&time=$(time'.$ref.')&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&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&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>Вы не можете ставить "только чтение" на админов или модеров!</small><br/>';
break;
}
$upd = mysql_query("UPDATE `wip_users` SET `forum_cookie_ban`=1 WHERE `nick`='".$nick."';");
if($upd) echo '<small>Юзеру <b>'.$nick.'</b> установлен режим "только чтение".</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&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&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&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&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&tid='.$tid.'">'.$str.'крыть тему</a><br/>';
$str = ($res['last'] == 'lock') ? 'От' : 'За';
echo '<a href="forum_moder.php?'.$sess.'mod=t_lock&tid='.$tid.'">'.$str.'крепить тему</a><br/>';
echo '<a href="forum_moder.php?'.$sess.'mod=t_del&tid='.$tid.'">Удалить тему</a><br/>';
echo '<a href="forum_moder.php?'.$sess.'mod=t_move&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.'&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);
?>