<?php
include_once '../sys/inc/start.php';
dpanel::check_access();
$doc = new document(2);
$doc -> title = 'Бан пользователя';

$ank = new user(@$_GET['id_ank']);

if (!$ank->group)
{

if (isset($_GET['return']))header('Refresh: 1; url='.$_GET['return']);else header('Refresh: 1; url=/');

$doc->err('Нет данных о пользователе');
exit;
}


if ($ank->group>=$user->group)
{
if (isset($_GET['return']))header('Refresh: 1; url='.$_GET['return']);else header('Refresh: 1; url=/');

$doc->err('Недостаточно привилегий');
exit;
}

$doc->title='Бан "'.$ank->login.'"';

$link=!empty($_GET['link'])?$_GET['link']:(!empty($_POST['link'])?$_POST['link']:false);
$code=!empty($_GET['code'])?$_GET['code']:(!empty($_POST['code'])?$_POST['code']:false);


$codes = new menu_code('code');

if (!$code)
{

$smarty = new design();
$smarty->assign('method','post');
$smarty->assign('action','?id_ank='.$ank->id.'&amp;link='.urlencode($link).(isset($_GET['return'])?'&amp;return='.urlencode($_GET['return']):null));
$elements=array();
$elements[]=array('type'=>'input_text', 'title'=>'<a'.($dcms->browser_type=='web'?' target="_blank"':null).' href="'.for_value($link).'">Ссылка</a>', 'br'=>1, 'info'=>array('name'=>'link', 'value'=>$link));
$elements[]=array('type'=>'select', 'br'=>1, 'title'=>'Нарушение', 'info'=>array('name' => 'code','options' => $codes->options()));
$elements[]=array('type'=>'submit', 'br'=>0, 'info'=>array('value'=>'Далее')); // кнопка
$smarty->assign('el',$elements);
$smarty->display('input.form.tpl');
if (isset($_GET['return']))$doc->ret('Вернуться',for_value($_GET['return']));
$doc->ret('В анкету','/profile.view.php?id='.$ank->id);
$doc->ret('Админка','./');
exit;
}



// получение минимального и максимального срока банов
list($min,$max) = $codes->get_time($code);

if (isset($_POST['ban']))
{
$comm=text::input_text(@$_POST['comment']);
$access_view=(int)empty($_POST['full']);


$time_1=abs((int)@$_POST['time']);
switch (@$_POST['timem']) {
case 'm':$time_1 = $time_1*60; break;
case 'h':$time_1 = $time_1*3600; break;
case 'd':$time_1 = $time_1*86400; break;
case 'ms':$time_1 = $time_1*2592000; break;
}


if ($min)$time_1=max($min,$time_1);
if ($max)$time_1=min($max,$time_1);

$time_ban_end=$time_1+TIME;

if (!$time_1)$doc->err('Не корректное время бана');
elseif (!isset($codes->menu_arr[$code]))$doc->err('Не выбрано нарушение');
elseif (!$comm)$doc->err('Необходимо прокомментировать бан');
elseif ($link && mysql_result(mysql_query("SELECT COUNT(*) FROM `ban` WHERE `id_user` = '$ank->id' AND `link` = '".my_esc($link)."' AND `code` = '".my_esc($code)."'"),0))$doc->err('Нельзя банить пользователя несколько раз за одно и то же нарушение');
else
{
// делаем все жалобы обработанными
mysql_query("UPDATE `complaints` SET `processed` = '1' WHERE `id_ank` = '$ank->id' AND `link` = '".my_esc($link)."' AND `code` = '".my_esc($code)."'");
// ставим запись о бане
mysql_query("INSERT INTO `ban` (`id_user`, `id_adm`, `link`, `code`, `comment`, `time_start`, `time_end`, `access_view`)
VALUES ('$ank->id', '$user->id', '".my_esc($link)."', '".my_esc($code)."', '".my_esc($comm)."', '".TIME."', '$time_ban_end', '$access_view') ");
mysql_query("UPDATE `users` SET `is_ban` = '1' WHERE `id` = '$ank->id'");

$doc->msg('Пользователь успешно забанен на '.vremja($time_ban_end));
}

}




// вывод нарушений
$posts = array();
$q = mysql_query("SELECT * FROM `ban` WHERE `id_user` = '$ank->id' ORDER BY `id` DESC");
while ($c=mysql_fetch_assoc($q)) {
$adm=new user($c['id_adm']);
$t=$adm->nick.' ('.vremja($c['time_start']).')';



$post='Нарушение: '.for_value($c['code']).'<br />';

if (TIME<$c['time_end'])$post.='Осталось: '.vremja($c['time_end']).'<br />';

if ($c['link'])$post.='Ссылка: <a'.($dcms->browser_type=='web'?' target="_blank"':null).' href="'.for_value($c['link']).'">'.for_value($c['link']).'</a><br />';
if ($c['time_start'] && TIME<$c['time_start'])$p.='<b>Начало действия:</b>'.vremja($c['time_start']).'<br />';

$post.=output_text($c['comment']);

$posts[]=array('title'=>$t,'post'=>$post,'hide'=>(TIME>$c['time_end'] || TIME<$c['time_start']));
}
if (!$posts)$posts[]=array('icon'=>array('size'=>'small','src'=>'/sys/images/icons/empty.png'),'title'=>'Нарушения отсутствуют');

$show = new design();
$show->assign('post',$posts);
$show->display('design.listing.tpl');




$smarty = new design();
$smarty->assign('method','post');
$smarty->assign('action','?id_ank='.$ank->id.'&amp;code='.urlencode($code).'&amp;link='.urlencode($link).(isset($_GET['return'])?'&amp;return='.urlencode($_GET['return']):null));
$elements=array();
$elements[]=array('type'=>'input_text', 'title'=>'<a'.($dcms->browser_type=='web'?' target="_blank"':null).' href="'.for_value($link).'">Ссылка</a>', 'br'=>1, 'info'=>array('name'=>'link', 'value'=>$link));
$elements[]=array('type'=>'select', 'br'=>1, 'title'=>'Нарушение', 'info'=>array('name' => 'code','options' => $codes->options($code)));



if (!$min || $min<3600)
{
$time=max(round($min/60),10);
$timem='m';
}
elseif($min<86400)
{
$time=max(round($min/3600),1);
$timem='h';
}
elseif($min<2592000)
{
$time=max(round($min/86400),1);
$timem='d';
}
else
{
$time=max(round($min/2592000),1);
$timem='ms';
}




$elements[]=array('type'=>'input_text', 'title'=>'Срок бана *', 'br'=>0, 'info'=>array('size'=>3, 'name'=>'time','value'=>$time));
$options=array();
$options[]=array('m','Минуты',$timem == 'm');
if (!$max || $max > 3600)$options[]=array('h','Часы',$timem == 'h');
if (!$max || $max > 86400)$options[]=array('d','Сутки',$timem == 'd');
if (!$max || $max > 2592000)$options[]=array('ms','Месяцы',$timem == 'ms');
$elements[]=array('type'=>'select', 'br'=>1, 'info'=>array('name' => 'timem','options' => $options));


$elements[]=array('type'=>'checkbox', 'br'=>1, 'info'=>array('value'=>1, 'name'=>'full', 'text'=>'Полная блокировка **'));



$elements[]=array('type'=>'textarea', 'title'=>'Комментарий', 'br'=>1, 'info'=>array('name'=>'comment'));
if ($max)$elements[]=array('type'=>'text', 'value'=>'* Максимальный срок бана за данное нарушение: '.vremja(TIME+$max), 'br'=>1);
else $elements[]=array('type'=>'text', 'value'=>'* Максимальный срок бана не определен', 'br'=>1);
$elements[]=array('type'=>'text', 'value'=>'** Блокирует всю навигацию на сайте', 'br'=>1);
$elements[]=array('type'=>'submit', 'br'=>0, 'info'=>array('value'=>'Забанить', 'name'=>'ban')); // кнопка
$smarty->assign('el',$elements);
$smarty->display('input.form.tpl');
if (isset($_GET['return']))$doc->ret('Вернуться',for_value($_GET['return']));
$doc->ret('В анкету','/profile.view.php?id='.$ank->id);
$doc->ret('Админка','./');
?>
