Просмотр файла mpanel/users.php

Размер файла: 24.65Kb
<?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');

$config['usersearch'] = 30;

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

if (is_admin(array(101, 102))) {
  show_title('site.png', 'Управление пользователями');
  $config['newtitle'] = 'Управление пользователями';

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

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

    echo '<a href="users.php?act=sort&amp;q=1&amp;' . SID . '">0-9</a> / <a href="users.php?act=sort&amp;q=a&amp;' . SID . '">A</a> / <a href="users.php?act=sort&amp;q=b&amp;' . SID . '">B</a> / <a href="users.php?act=sort&amp;q=c&amp;' . SID . '">C</a> / <a href="users.php?act=sort&amp;q=d&amp;' . SID . '">D</a> / <a href="users.php?act=sort&amp;q=e&amp;' . SID . '">E</a> / <a href="users.php?act=sort&amp;q=f&amp;' . SID . '">F</a> / <a href="users.php?act=sort&amp;q=g&amp;' . SID . '">G</a> / <a href="users.php?act=sort&amp;q=h&amp;' . SID . '">H</a> / <a href="users.php?act=sort&amp;q=i&amp;' . SID . '">I</a> / <a href="users.php?act=sort&amp;q=j&amp;' . SID . '">J</a> / <a href="users.php?act=sort&amp;q=k&amp;' . SID . '">K</a> / <a href="users.php?act=sort&amp;q=l&amp;' . SID . '">L</a> / <a href="users.php?act=sort&amp;q=m&amp;' . SID . '">M</a> / <a href="users.php?act=sort&amp;q=n&amp;' . SID . '">N</a> / <a href="users.php?act=sort&amp;q=o&amp;' . SID . '">O</a> / <a href="users.php?act=sort&amp;q=p&amp;' . SID . '">P</a> / <a href="users.php?act=sort&amp;q=q&amp;' . SID . '">Q</a> / <a href="users.php?act=sort&amp;q=r&amp;' . SID . '">R</a> / <a href="users.php?act=sort&amp;q=s&amp;' . SID . '">S</a> / <a href="users.php?act=sort&amp;q=t&amp;' . SID . '">T</a> / <a href="users.php?act=sort&amp;q=u&amp;' . SID . '">U</a> / <a href="users.php?act=sort&amp;q=v&amp;' . SID . '">V</a> / <a href="users.php?act=sort&amp;q=w&amp;' . SID . '">W</a> / <a href="users.php?act=sort&amp;q=x&amp;' . SID . '">X</a> / <a href="users.php?act=sort&amp;q=y&amp;' . SID . '">Y</a> / <a href="users.php?act=sort&amp;q=z&amp;' . SID . '">Z</a><br />';

    echo 'Введите логин пользователя который необходимо отредактировать<br /><br />';
    break;
  # ###########################################################################################
  # #                                  Сортировка профилей                                   ##
  # ###########################################################################################
  case 'sort':
    if (isset($_POST['q'])) {
      $q = check(strtolower($_POST['q']));
    } else {
      $q = check(strtolower($_GET['q']));
    } 

    if (!empty($q)) {
      if ($q == 1) {
        $search = "RLIKE '^[-0-9]'";
      } else {
        $search = "LIKE '$q%'";
      } 

      $total = DB :: $dbh -> querySingle("SELECT count(*) FROM `users` WHERE LOWER(`users_login`) " . $search . ";");

      if ($total > 0) {
        if ($start >= $total) {
          $start = 0;
        } 

        $queryuser = DB :: $dbh -> query("SELECT `users_login`, `users_nickname`, `users_point` FROM `users` WHERE LOWER(`users_login`) " . $search . " ORDER BY `users_point` DESC LIMIT " . $start . ", " . $config['usersearch'] . ";");
        while ($data = $queryuser -> fetch()) {
          echo '<img src="../images/img/user.gif" alt="image" /> ';

          echo '<b><a href="users.php?act=edit&amp;uz=' . $data['users_login'] . '&amp;' . SID . '">' . $data['users_login'] . '</a></b> ';

          if (!empty($data['users_nickname'])) {
            echo '(Ник: ' . $data['users_nickname'] . ') ';
          } 

          echo user_online($data['users_login']) . ' (' . points($data['users_point']) . ')<br />';
        } 

        page_jumpnavigation('users.php?act=sort&amp;q=' . $q . '&amp;', $config['usersearch'], $start, $total);
        page_strnavigation('users.php?act=sort&amp;q=' . $q . '&amp;', $config['usersearch'], $start, $total);

        echo 'Найдено совпадений: ' . $total . '<br /><br />';
      } else {
        show_error('Совпадений не найдено!');
      } 
    } else {
      show_error('Ошибка! Не выбраны критерии поиска пользователей!');
    } 

    echo '<img src="../images/img/back.gif" alt="image" /> <a href="users.php?' . SID . '">Вернуться</a><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>Профиль <a href="../pages/anketa.php?uz=' . $user['users_login'] . '&amp;' . SID . '">' . $user['users_login'] . '</a></b> ' . user_visit($user['users_login']) . '<br /><br />';

      if ($log == $config['nickname'] || $log == $user['users_login'] || ($user['users_level'] < 101 || $user['users_level'] > 105)) {
        if ($user['users_login'] == $log) {
          echo '<b><span style="color:#ff0000">Внимание! Вы редактируете cобственный аккаунт!</span></b><br /><br />';
        } 

        echo '<div class="form">';
        echo '<form method="post" action="users.php?act=upgrade&amp;uz=' . $user['users_login'] . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '">';

        if ($log == $config['nickname']) {
          $arr_access = array(101, 102, 103, 105, 107);

          echo 'Уровень доступа:<br />';
          echo '<select name="level">';
          foreach ($arr_access as $value) {
            $selected = ($user['users_level'] == $value) ? ' selected="selected"' : '';
            echo '<option value="' . $value . '"' . $selected . '>' . user_status($value) . '</option>';
          } 
          echo '</select><br />';
        } 

        echo 'Новый пароль: (Oставьте пустым если не надо менять)<br />';
        echo '<input type="text" name="pass" maxlength="20" /><br />';
        echo 'Страна:<br />';
        echo '<input type="text" name="country" maxlength="30" value="' . $user['users_country'] . '" /><br />';
        echo 'Откуда:<br />';
        echo '<input type="text" name="city" maxlength="50" value="' . $user['users_city'] . '" /><br />';
        echo 'E-mail:<br />';
        echo '<input type="text" name="email" maxlength="50" value="' . $user['users_email'] . '" /><br />';
        echo 'Сайт:<br />';
        echo '<input type="text" name="site" maxlength="50" value="' . $user['users_site'] . '" /><br />';
        echo 'Зарегистрирован:<br />';
        echo '<input type="text" name="joined" maxlength="10" value="' . date_fixed($user['users_joined'], "d.m.Y") . '" /><br />';
        echo 'Дата рождения:<br />';
        echo '<input type="text" name="birthday" maxlength="10" value="' . $user['users_birthday'] . '" /><br />';
        echo 'ICQ:<br />';
        echo '<input type="text" name="icq" maxlength="10" value="' . $user['users_icq'] . '" /><br />';
        echo 'Jabber:<br />';
        echo '<input type="text" name="jabber" maxlength="50" value="' . $user['users_jabber'] . '" /><br />';
        echo 'Имя юзера:<br />';
        echo '<input type="text" name="name" maxlength="20" value="' . $user['users_name'] . '" /><br />';
        echo 'Ник юзера:<br />';
        echo '<input type="text" name="nickname" maxlength="20" value="' . $user['users_nickname'] . '" /><br />';
        echo 'Актив:<br />';
        echo '<input type="text" name="point" value="' . $user['users_point'] . '" /><br />';
        echo 'Деньги:<br />';
        echo '<input type="text" name="money" value="' . $user['users_money'] . '" /><br />';
        echo 'Особый статус:<br />';
        echo '<input type="text" name="status" maxlength="25" value="' . $user['users_status'] . '" /><br />';
        echo 'Аватар:<br />';
        echo '<input type="text" name="avatar" value="' . $user['users_avatar'] . '" /><br />';
        echo 'Авторитет (плюсы):<br />';
        echo '<input type="text" name="posrating" value="' . $user['users_posrating'] . '" /><br />';
        echo 'Авторитет (минусы):<br />';
        echo '<input type="text" name="negrating" value="' . $user['users_negrating'] . '" /><br />';
        echo 'Скин:<br />';
        echo '<input type="text" name="themes" value="' . $user['users_themes'] . '" /><br />';

        echo 'Пол:<br />';
        echo '<select name="gender">';
        $selected = ($user['users_gender'] == "М") ? ' selected="selected"' : '';
        echo '<option value="М"' . $selected . '>Мужской</option>';
        $selected = ($user['users_gender'] == "Ж") ? ' selected="selected"' : '';
        echo '<option value="Ж"' . $selected . '>Женский</option>';
        echo '</select><br />';

        echo 'О себе:<br />';
        $user['users_info'] = str_replace('<br />', "\r\n", $user['users_info']);
        echo '<textarea cols="25" rows="3" name="info">' . $user['users_info'] . '</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 '<div class="b"><b>Дополнительная информация</b></div>';
        echo '<b>Авторизация:</b> ' . date_fixed($user['users_timelastlogin'], 'j F Y / H:i') . '<br />';
        if ($user['users_confirmreg'] == 1) {
          echo '<span style="color:#ff0000"><b>Аккаунт не активирован</b></span><br />';
        } 

        $queryvisit = DB :: $dbh -> query("SELECT * FROM `visit` WHERE `visit_user`=? LIMIT 1;", array($uz));
        $visit = $queryvisit -> fetch();
        if (!empty($visit)) {
          echo '<b>Провел на сайте:</b> ' . makestime($visit['visit_alltime']) . '<br />';
          echo '<b>Всего переходов:</b> ' . $visit['visit_allcount'] . '<br />';
          echo '<b>Последний IP:</b> ' . $visit['visit_ip'] . '<br />';
        } 

        if ($user['users_ban'] == 1 && $user['users_timeban'] > SITETIME) {
          echo '<span style="color:#ff0000"><b>Юзер забанен</b></span><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) {
          echo '<img src="../images/img/error.gif" alt="image" /> <b><a href="users.php?act=poddel&amp;uz=' . $uz . '&amp;' . SID . '">Удалить профиль</a></b><br />';
        } 
      } else {
        show_error('Ошибка! У вас недостаточно прав для редактирования этого профиля!');
      } 
    } else {
      show_error('Ошибка! Пользователя с данным логином не существует!');
    } 

    echo '<img src="../images/img/back.gif" alt="image" /> <a href="users.php?' . SID . '">Вернуться</a><br />';
    break;
  # ###########################################################################################
  # #                                   Изменение профиля                                    ##
  # ###########################################################################################
  case 'upgrade':

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

    if (!empty($_POST['level'])) {
      $level = intval($_POST['level']);
    } 

    $pass = check($_POST['pass']);
    $email = check($_POST['email']);
    $joined = check($_POST['joined']);
    $name = check($_POST['name']);
    $nickname = check($_POST['nickname']);
    $country = check($_POST['country']);
    $city = check($_POST['city']);
    $info = check($_POST['info']);
    $note = check($_POST['note']);
    $site = check($_POST['site']);
    $icq = intval($_POST['icq']);
    $jabber = check($_POST['jabber']);
    $gender = check($_POST['gender']);
    $birthday = check($_POST['birthday']);
    $themes = check($_POST['themes']);
    $point = intval($_POST['point']);
    $money = intval($_POST['money']);
    $status = check($_POST['status']);
    $avatar = check($_POST['avatar']);
    $posrating = intval($_POST['posrating']);
    $negrating = intval($_POST['negrating']);

    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 ($log == $config['nickname'] || $log == $user['users_login'] || ($user['users_level'] < 101 || $user['users_level'] > 105)) {
          if (empty($pass) || preg_match('|^[a-z0-9\-]+$|i', $pass)) {
            if (preg_match('#^([a-z0-9_\-\.])+\@([a-z0-9_\-\.])+(\.([a-z0-9])+)+$#', $email) || empty($email)) {
              if (preg_match('#^([a-z0-9_\-\.])+\@([a-z0-9_\-\.])+(\.([a-z0-9])+)+$#', $jabber) || empty($jabber)) {
                if (preg_match('#^http://([a-z0-9_\-\.])+(\.([a-z0-9\/])+)+$#', $site) || empty($site)) {
                  if (preg_match('#^[0-9]{2}+\.[0-9]{2}+\.[0-9]{4}$#', $joined)) {
                    if (preg_match('#^[0-9]{2}+\.[0-9]{2}+\.[0-9]{4}$#', $birthday) || empty($birthday)) {
                      if ($gender == 'М' || $gender == 'Ж') {
                        if (utf_strlen($info) <= 1000) {
                          if (utf_strlen($note) <= 1000) {
                            if ($log == $config['nickname']) {
                              $access = $level;
                            } else {
                              $access = $user['users_level'];
                            } 

                            if (!empty($pass)) {
                              echo '<b><span style="color:#ff0000">Внимание! Вы изменили пароль пользователя!</span></b><br />';
                              echo 'Не забудьте ему напомнить его новый пароль: <b>' . $pass . '</b><br /><br />';
                              $mdpass = md5(md5($pass));
                            } else {
                              $mdpass = $user['users_pass'];
                            } 

                            list($uday, $umonth, $uyear) = explode(".", $joined);
                            $joined = mktime('0', '0', '0', $umonth, $uday, $uyear);

                            $name = utf_substr($name, 0, 20);
                            $country = utf_substr($country, 0, 30);
                            $city = utf_substr($city, 0, 50);
                            $info = no_br($info);
                            $note = no_br($note);
                            $rating = $posrating - $negrating;

                            DB :: $dbh -> query("UPDATE `users` SET `users_pass`=?, `users_email`=?, `users_joined`=?, `users_level`=?, `users_name`=?, `users_nickname`=?, `users_country`=?, `users_city`=?, `users_info`=?, `users_note`=?, `users_site`=?, `users_icq`=?, `users_jabber`=?, `users_gender`=?, `users_birthday`=?, `users_themes`=?, `users_point`=?, `users_money`=?, `users_status`=?, `users_avatar`=?, `users_rating`=?, `users_posrating`=?, `users_negrating`=? WHERE `users_login`=?;", array($mdpass, $email, $joined, $access, $name, $nickname, $country, $city, $info, $note, $site, $icq, $jabber, $gender, $birthday, $themes, $point, $money, $status, $avatar, $rating, $posrating, $negrating, $uz));

                            echo '<img src="../images/img/open.gif" alt="image" /> <b>Данные юзера успешно изменены!</b><br /><br />';
                          } else {
                            show_error('Ошибка! Слишком большая заметка, не более 1000 символов!');
                          } 
                        } else {
                          show_error('Ошибка! Слишком большая информация в графе о себе, не более 1000 символов!');
                        } 
                      } else {
                        show_error('Ошибка! Вы не указали пол пользователя!');
                      } 
                    } else {
                      show_error('Ошибка! Недопустимая дата дня рождения, необходим формат (дд.мм.гггг)!');
                    } 
                  } else {
                    show_error('Ошибка! Недопустимая дата регистрации, необходим формат (дд.мм.гггг)!');
                  } 
                } else {
                  show_error('Ошибка! Недопустимый адрес сайта, необходим формат http://site.domen!');
                } 
              } else {
                show_error('Ошибка! Недопустимый формат Jabber, необходим формат [email protected]!');
              } 
            } else {
              show_error('Ошибка! Вы ввели неверный адрес e-mail, необходим формат [email protected]!');
            } 
          } else {
            show_error('Ошибка! Недопустимые символы в пароле. Разрешены знаки латинского алфавита, цифры и дефис!');
          } 
        } else {
          show_error('Ошибка! У вас недостаточно прав для редактирования этого профиля!');
        } 
      } else {
        show_error('Ошибка! Пользователя с данным логином не существует!');
      } 
    } else {
      show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
    } 

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

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

    echo '<img src="../images/img/error.gif" alt="image" /> Вы подтверждаете, что хотите полностью удалить аккаунт пользователя <b>' . $uz . '</b>?<br /><br />';

    echo '<div class="form">';
    echo '<form action="users.php?act=deluser&amp;uz=' . $uz . '&amp;uid=' . $_SESSION['token'] . '&amp;' . SID . '" method="post">';

    echo '<b>Добавить в черный список:</b><br />';
    echo 'Логин: <input name="loginblack" type="checkbox" value="1"  checked="checked" /><br />';
    echo 'E-mail: <input name="mailblack" type="checkbox" value="1"  checked="checked" /><br />';

    echo '<input type="submit" value="Удалить профиль" /></form></div><br />';

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

    $uid = check($_GET['uid']);
    $uz = check($_GET['uz']);
    $loginblack = (empty($_POST['loginblack'])) ? 0 : 1;
    $mailblack = (empty($_POST['mailblack'])) ? 0 : 1;

    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_level'] < 101 || $user['users_level'] > 105) {
          if ($loginblack == 1) {
            $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));
            } 
          } 

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

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

  default:
    header("location: users.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');

?>