View file mpanel/zaban.php

File size: 14.99Kb
<?php
#-----------------------------------------------------#
#          ********* ROTORCMS *********               #
#              Made by  :  VANTUZ                     #
#               E-mail  :  [email protected]         #
#                 Site  :  http://pizdec.ru           #
#             WAP-Site  :  http://visavi.net          #
#                  ICQ  :  36-44-66                   #
#  Вы не имеете право вносить изменения в код скрипта #
#        для его дальнейшего распространения          #
#-----------------------------------------------------#	
require_once ('../includes/start.php');
require_once ('../includes/functions.php');
require_once ('../includes/header.php');
include_once ('../themes/' . $config['themes'] . '/index.php');

if (isset($_GET['act'])) {
  $act = check($_GET['act']);
} else {
  $act = 'index';
} 

if (is_admin(array(101, 102, 103))) {
  show_title('site.png', 'Бан/Разбан');
  $config['newtitle'] = 'Бан/Разбан';

  switch ($act):
  # ###########################################################################################
  # #                                    Главная страница                                    ##
  # ###########################################################################################
  case "index":

    echo '<div class="form">';
    echo 'Логин пользователя:<br />';
    echo '<form method="post" action="zaban.php?act=edit&amp;' . SID . '">';
    echo '<input type="text" name="uz" maxlength="20" />';
    echo '<input value="Редактировать" type="submit" /></form></div><br />';

    echo 'Введите логин пользователя который необходимо отредактировать<br /><br />';
    break;
  # ###########################################################################################
  # #                                   Редактирование                                       ##
  # ###########################################################################################
  case "edit":

    if (isset($_POST['uz'])) {
      $uz = check($_POST['uz']);
    } else {
      $uz = check($_GET['uz']);
    } 

    $queryuser = DB :: $dbh -> query("SELECT * FROM `users` WHERE `users_login`=? LIMIT 1;", array($uz));
    $user = $queryuser -> fetch();

    if (!empty($user)) {
      echo '<img src="../images/img/user.gif" alt="image" /> <b>Профиль ' . $user['users_login'] . '</b> ' . user_visit($user['users_login']) . '<br /><br />';

      if (!empty($user['users_timelastban']) && !empty($user['users_reasonban'])) {
        echo '<b>Последний бан:</b> ' . date_fixed($user['users_timelastban'], 'j F Y / H:i') . '<br />';
        echo '<b>Последняя причина:</b> ' . $user['users_reasonban'] . '<br />';
        echo '<b>Забанил:</b> <a href="../pages/anketa.php?uz=' . $user['users_loginsendban'] . '&amp;' . SID . '">' . nickname($user['users_loginsendban']) . '</a><br />';
      } 
      echo 'Общее число банов: <b>' . $user['users_totalban'] . '</b><br /><br />';

      if ($user['users_level'] < 101 || $user['users_level'] > 105) {
        if (empty($user['users_ban']) || $user['users_timeban'] < SITETIME) {
          if ($user['users_totalban'] < 5) {
            echo '<div class="form">';
            echo '<form method="post" action="zaban.php?act=zaban&amp;uz=' . $uz . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '">';
            echo 'Время бана:<br /><input name="bantime" /><br />';

            echo '<input name="bantype" type="radio" value="min" checked="checked" /> Минут<br />';
            echo '<input name="bantype" type="radio" value="chas" /> Часов<br />';
            echo '<input name="bantype" type="radio" value="sut" /> Суток<br />';

            echo 'Причина бана:<br /><textarea name="reasonban" cols="25" rows="3"></textarea><br />';

            echo 'Заметка:<br />';
            $user['users_note'] = str_replace('<br />', "\r\n", $user['users_note']);
            echo '<textarea cols="25" rows="3" name="note">' . $user['users_note'] . '</textarea><br />';

            echo '<input value="Забанить" type="submit" /></form></div><br />';

            echo 'Подсчет нарушений производится при бане более чем на 12 часов<br />';
            echo 'При общем числе нарушений более пяти, профиль пользователя удаляется<br />';
            echo 'Максимальное время бана ' . round($config['maxbantime'] / 1440) . ' суток<br />';
            echo 'Внимание! Постарайтесь как можно подробнее описать причину бана<br /><br />';
          } else {
            echo '<b><span style="color:#ff0000">Внимание! Пользователь превысил лимит банов</span></b><br />';
            echo 'Вы можете удалить этот профиль!<br /><br />';
            echo '<img src="../images/img/error.gif" alt="image" /> <b><a href="zaban.php?act=deluser&amp;uz=' . $uz . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '">Удалить профиль</a></b><br /><br />';
          } 
        } else {
          echo '<b><span style="color:#ff0000">Внимание, данный аккаунт заблокирован!</span></b><br />';
          echo 'До окончания бана осталось ' . formattime($user['users_timeban'] - SITETIME) . '<br /><br />';

          echo '<img src="../images/img/reload.gif" alt="image" /> <b><a href="zaban.php?act=razban&amp;uz=' . $uz . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '">Разбанить</a></b><hr />';
        } 
      } else {
        show_error('Ошибка! У вас недостаточно прав для редактирования этого профиля!');
      } 
    } else {
      show_error('Ошибка! Пользователя с данным логином не существует!');
    } 

    echo '<img src="../images/img/back.gif" alt="image" /> <a href="zaban.php?' . SID . '">Вернуться</a><br />';
    break;
  # ###########################################################################################
  # #                                     Бан пользователя                                   ##
  # ###########################################################################################
  case "zaban":

    $uid = check($_GET['uid']);
    $uz = check($_GET['uz']);
    $bantime = abs(intval($_POST['bantime']));
    $bantype = check($_POST['bantype']);
    $reasonban = check($_POST['reasonban']);
    $note = check($_POST['note']);

    if ($uid == $_SESSION['token']) {
      $queryuser = DB :: $dbh -> query("SELECT * FROM `users` WHERE `users_login`=? LIMIT 1;", array($uz));
      $user = $queryuser -> fetch();

      if (!empty($user)) {
        if (empty($user['users_ban']) || $user['users_timeban'] < SITETIME) {
          if ($user['users_level'] < 101 || $user['users_level'] > 105) {
            if ($bantype == 'min') {
              $bantotaltime = $bantime;
            } 
            if ($bantype == 'chas') {
              $bantotaltime = round($bantime * 60);
            } 
            if ($bantype == 'sut') {
              $bantotaltime = round($bantime * 1440);
            } 

            if ($bantotaltime > 0) {
              if ($bantotaltime <= $config['maxbantime']) {
                if (utf_strlen($reasonban) >= 5 && utf_strlen($reasonban) <= 1000) {
                  if (utf_strlen($note) <= 1000) {
                    $note = no_br($note);
                    $reasonban = no_br($reasonban);

                    if ($bantotaltime > 720) {
                      $bancount = 1;
                    } else {
                      $bancount = 0;
                    } 

                    DB :: $dbh -> query("UPDATE `users` SET `users_note`=?, `users_ban`=?, `users_timeban`=?, `users_timelastban`=?, `users_reasonban`=?, `users_loginsendban`=?, `users_totalban`=`users_totalban`+?, `users_explainban`=? WHERE `users_login`=?;", array($note, 1, SITETIME + ($bantotaltime * 60), SITETIME, $reasonban, $log, $bancount, 1, $uz));

                    echo 'Данные пользователя <b>' . $uz . '</b> успешно изменены!<br />';
                    echo '<img src="../images/img/open.gif" alt="image" /> <b><span style="color:#ff0000">Аккаунт заблокирован!</span></b><br /><br />';

                    echo '<a href="zaban.php?' . SID . '">Редактировать нового юзера</a><br /><br />';
                  } else {
                    show_error('Ошибка! Слишком большая заметка, не более 1000 символов!');
                  } 
                } else {
                  show_error('Ошибка! Слишком длинная или короткая причина бана!');
                } 
              } else {
                show_error('Ошибка! Максимальное время бана ' . round($config['maxbantime'] / 1440) . ' суток!');
              } 
            } else {
              show_error('Ошибка! Вы не указали время бана!');
            } 
          } else {
            show_error('Ошибка! У вас недостаточно прав для редактирования этого профиля!');
          } 
        } else {
          show_error('Ошибка! Данный аккаунт уже заблокирован!');
        } 
      } else {
        show_error('Ошибка! Пользователя с данным логином не существует!');
      } 
    } else {
      show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
    } 

    echo '<img src="../images/img/back.gif" alt="image" /> <a href="zaban.php?act=edit&amp;uz=' . $uz . '&amp;' . SID . '">Вернуться</a><br />';
    break;
  # ###########################################################################################
  # #                                    Разбан пользователя                                 ##
  # ###########################################################################################
  case "razban":

    $uid = check($_GET['uid']);
    $uz = check($_GET['uz']);

    if ($uid == $_SESSION['token']) {
      $queryuser = DB :: $dbh -> query("SELECT * FROM `users` WHERE `users_login`=? LIMIT 1;", array($uz));
      $user = $queryuser -> fetch();

      if (!empty($user)) {
        if ($user['users_ban'] == 1) {
          if ($user['users_totalban'] > 0 && $user['users_timeban'] > SITETIME + 43200) {
            $bancount = 1;
          } else {
            $bancount = 0;
          } 

          DB :: $dbh -> query("UPDATE `users` SET `users_ban`=?, `users_timeban`=?, `users_totalban`=`users_totalban`-?, `users_explainban`=? WHERE `users_login`=?;", array(0, 0, $bancount, 0, $uz));

          echo 'Данные юзера <b>' . $uz . '</b> успешно изменены!<br />';
          echo '<img src="../images/img/open.gif" alt="image" /> <b><span style="color:#00ff00">Аккаунт разблокирован!</span></b><br /><br />';

          echo '<a href="zaban.php?' . SID . '">Редактировать нового юзера</a><br /><br />';
        } else {
          show_error('Ошибка! Данный аккаунт уже разблокирован!');
        } 
      } else {
        show_error('Ошибка! Пользователя с данным логином не существует!');
      } 
    } else {
      show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
    } 

    echo '<img src="../images/img/back.gif" alt="image" /> <a href="zaban.php?act=edit&amp;uz=' . $uz . '&amp;' . SID . '">Вернуться</a><br />';
    break;
  # ###########################################################################################
  # #                                   Удаление пользователя                                ##
  # ###########################################################################################
  case "deluser":

    $uid = check($_GET['uid']);
    $uz = check($_GET['uz']);

    if ($uid == $_SESSION['token']) {
      $queryuser = DB :: $dbh -> query("SELECT * FROM `users` WHERE `users_login`=? LIMIT 1;", array($uz));
      $user = $queryuser -> fetch();

      if (!empty($user)) {
        if ($user['users_totalban'] >= 5) {
          if ($user['users_level'] < 101 || $user['users_level'] > 105) {
            $blacklogin = DB :: $dbh -> querySingle("SELECT `black_id` FROM `blacklogin` WHERE lower(`black_login`)=? LIMIT 1;", array(strtolower($user['users_login'])));
            if (empty($blacklogin)) {
              DB :: $dbh -> query("INSERT INTO `blacklogin` (`black_login`, `black_user`, `black_time`) VALUES (?, ?, ?);", array($user['users_login'], $log, SITETIME));
            } 

            $blackmail = DB :: $dbh -> querySingle("SELECT `black_id` FROM `blackmail` WHERE `black_mail`=? LIMIT 1;", array($user['users_email']));
            if (empty($blackmail) && !empty($user['users_email'])) {
              DB :: $dbh -> query("INSERT INTO `blackmail` (`black_mail`, `black_user`, `black_time`) VALUES (?, ?, ?);", array($user['users_email'], $log, SITETIME));
            } 

            delete_users($uz);

            echo 'Данные занесены в черный список!<br />';
            echo '<img src="../images/img/open.gif" alt="image" /> <b>Профиль пользователя успешно удален!</b><br /><br />';
          } else {
            show_error('Ошибка! У вас недостаточно прав для удаления этого профиля!');
          } 
        } else {
          show_error('Ошибка! У пользователя менее 5 нарушений, удаление невозможно!');
        } 
      } else {
        show_error('Ошибка! Пользователя с данным логином не существует!');
      } 
    } else {
      show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
    } 

    echo'<img src="../images/img/back.gif" alt="image" /> <a href="zaban.php?' . SID . '">Вернуться</a><br />';
    break;

  default:
    header("location: zaban.php?" . SID);
    exit;
    endswitch;

    echo '<img src="../images/img/panel.gif" alt="image" /> <a href="index.php?' . SID . '">В админку</a><br />';
    echo '<img src="../images/img/homepage.gif" alt="image" /> <a href="../index.php?' . SID . '">На главную</a><br />';
  } else {
  header ('Location: ' . BASEDIR . 'index.php?' . SID);
  exit;
} 

include_once ('../themes/' . $config['themes'] . '/foot.php');

?>