Вход Регистрация
Файл: CMS/core/admin/users.php
Строк: 330
<?php

if (!defined('CMS')) { die('Access Denied!'); }

$config['usersearch'] = 30;

if (!empty(
$_POST['uz']) || !empty($_GET['uz'])) {

    
$uz = !empty($_GET['uz']) ? check($_GET['uz']) : check($_POST['uz']);
}
else 
$uz '';

$countries get_vars('country');

if (!
$countries || !is_array($countries)) {

    
$countries = array();
    
$rows $db->select("SELECT `tld`,`name` FROM ?_country ORDER BY `name` ASC;");
    foreach(
$rows as $row$countries[$row['tld']] = $row['name'];
    
set_vars('country'$countries);
}

if (
is_admin(array(101102))) {

    switch (
$mod):
    default:

        
$q = !empty($_REQUEST['q']) ? check(strtolower($_REQUEST['q'])) : '';

        
show_header('Управление пользователями');
        echo 
'<div class="b">';
        echo 
'<div class="form">';
        echo 
'<form method="post" action="?m=users_edit&amp;' RND '">';
        echo 
'Введите логин юзера:<br />';
        echo 
'<input type="text" name="uz" maxlength="20" />';
        echo 
'<input type="submit" class="btns" value="Редактировать" /></form></div>';

        
$arr   = array();
        
$arr[] = '<a title="0-9" href="?m=users&amp;q=1&amp;' RND '">0-9</a>';
        foreach(
range('a''z') as $val) {
          
$arr[] = '<a href="?m=users&amp;q=' $val '">' strtoupper($val) . '</a>';
        }
        echo 
implode(' / '$arr) . '<br />';
        
$arr   = array();
        echo 
'Неактивные: ';
        foreach(array(
30,45,6090) as $val$arr[] = '<a href="?m=users&amp;day=' $val '">' $val '</a>';
        echo 
implode(', '$arr) . ' дней.<br />';
        echo 
'</div>';

        
$onpage = !empty($config['usersearch']) ? num($config['usersearch']) : 30;

        if (
$page 1$from = ($page 1) * $onpage; else $from 0;

        if (!empty(
$q)) {

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

            
$rows $db->selectPage($total"SELECT `u`.*, `v`.`visit_nowtime`
                                             FROM ?_users `u`
                                             LEFT JOIN ?_users_visit `v`
                                             ON `u`.`users_login` = `v`.`visit_user`
                                             WHERE LOWER(`u`.`users_login`) " 
$search 
                                             ORDER BY `u`.`users_point` DESC
                                             LIMIT ?d, ?d"
$from$onpage);
        }
        else if (!empty(
$_REQUEST['day'])) {

            
$time time() - (86400 num($_REQUEST['day']));

            
$rows $db->selectPage($total"SELECT `u`.*, `v`.`visit_nowtime`
                                             FROM ?_users `u`
                                             LEFT JOIN ?_users_visit `v`
                                             ON `u`.`users_login` = `v`.`visit_user`
                                             WHERE `u`.`users_timelastlogin` < " 
$time 
                                             ORDER BY `u`.`users_point` DESC
                                             LIMIT ?d, ?d"
$from$onpage);

        }
        else {

            
$rows $db->selectPage($total"SELECT `u`.*, `v`.`visit_nowtime`
                                             FROM ?_users `u`
                                             LEFT JOIN ?_users_visit `v`
                                             ON `u`.`users_login` = `v`.`visit_user` 
                                             ORDER BY `u`.`users_point` DESC
                                             LIMIT ?d, ?d"
$from$onpage);
        }

        if (!empty(
$rows) && $total 0) {

            
$i $from 1;
            foreach(
$rows as $row) {

                echo 
'<div class="b">';
                echo 
'<div class="right">' get_date($row['users_timelastlogin']) . '</div>';
                echo 
$i++ . '. ' user_visit_icon($row['users_login'], $row['users_gender'], $row['visit_nowtime']);
                echo 
' <a href="?m=users_edit&amp;uz=' $row['users_login'] . '&amp;' RND '"><b>' $row['users_login'] . '</b></a> (';
                if (!empty(
$row['users_nickname'])) echo 'Ник: ' $row['users_nickname'] . ' / ';
                echo 
num2name($row['users_point'], $config['score_name']) . ')<br />';
                if (!empty(
$_REQUEST['day'])) echo 'Не был на сайте: <b>' makestime(time()-$row['users_timelastlogin']) . '</b><br />';
                echo 
'- <a href="?m=users_files&amp;uz=' $row['users_login'] . '">Файлы</a><br />';

                echo 
'</div>';
            }
            if (!empty(
$_REQUEST['day'])) {

                echo 
show_pages('?m=users&amp;day=' num($_REQUEST['day']) . '&amp;' RND);
            }
            else {

                echo 
show_pages('?m=users&amp;q=' $q '&amp;' RND);
            }

            echo 
'<div class="b">- Найдено совпадений: ' $total '<br /></div>';
        }
        else 
show_error('Пользователей не найдено!');

    break;
    case 
'users_edit':

        
$arr_access = array(101 => 'Суперадмин'102 => 'Админ'103 => 'Старший модер'105 => 'Модератор'106 => 'Журналист'107 => 'Пользователь');

        
$user $db->selectRow("SELECT `u`.*, `v`.`visit_nowtime`
                                FROM ?_users `u`
                                LEFT JOIN ?_users_visit `v`
                                ON `u`.`users_login` = `v`.`visit_user` 
                                WHERE `u`.`users_login` = ? LIMIT 1;"
$uz);

        if (!empty(
$user)) {

          if (
$log == $config['nickname'] || $log == $user['users_login'] || ($user['users_level'] < 101 || $user['users_level'] > 105)) {

            if (!empty(
$_POST['save_user'])) {

              
$level     = !empty($_POST['level'])     ? num($_POST['level'])      : '';
              
$pass      = !empty($_POST['pass'])      ? check($_POST['pass'])     : '';
              
$email     = !empty($_POST['email'])     ? check($_POST['email'])    : '';
              
$joined    = !empty($_POST['joined'])    ? check($_POST['joined'])   : '';
              
$fname     = !empty($_POST['fname'])     ? check($_POST['fname'])    : '';
              
$lname     = !empty($_POST['lname'])     ? check($_POST['lname'])    : '';
              
$nickname  = !empty($_POST['nickname'])  ? check($_POST['nickname']) : '';
              
$country   = !empty($_POST['country'])   ? check($_POST['country'])  : '';
              
$city      = !empty($_POST['city'])      ? check($_POST['city'])     : '';
              
$info      = !empty($_POST['info'])      ? check($_POST['info'])     : '';
              
$site      = !empty($_POST['site'])      ? check($_POST['site'])     : '';
              
$icq       = !empty($_POST['icq'])       ? num($_POST['icq'])        : '';
              
$jabber    = !empty($_POST['jabber'])    ? check($_POST['jabber'])   : '';
              
$gender    = !empty($_POST['gender'])    ? num($_POST['gender'])     : '';

              
$year      = !empty($_POST['year'])      ? num($_POST['year'])       : '0000';
              
$month     = !empty($_POST['month'])     ? num($_POST['month'])      : '00';
              
$month     = (strlen($month) == 1)        ? '0' $month              $month;
              
$day       = !empty($_POST['day'])       ? num($_POST['day'])        : '00';
              
$day       = (strlen($day) == 1)          ? '0' $day                $day;
              
$birthday  $year '-' $month '-' $day;

              
$themes    = !empty($_POST['themes'])    ? check($_POST['themes'])  : '';
              
$point     = !empty($_POST['point'])     ? num($_POST['point'])     : '';
              
$money     = !empty($_POST['money'])     ? num($_POST['money'])     : '';
              
$status    = !empty($_POST['status'])    ? check($_POST['status'])  : '';
              
$avatar    = !empty($_POST['avatar'])    ? check($_POST['avatar'])  : '';
              
$posrating = !empty($_POST['posrating']) ? num($_POST['posrating']) : '';
              
$negrating = !empty($_POST['negrating']) ? num($_POST['negrating']) : '';
              
$uploads   = !empty($_POST['uploads'])   ? num($_POST['uploads'])   : '';


              if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

                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/])+)+$#u'$site) || empty($site)) {

                        if (
preg_match('#^[0-9]{2}+.[0-9]{2}+.[0-9]{4}$#'$joined)) {

                          if (
preg_match('#^[0-9]{4}+-[0-9]{2}+-[0-9]{2}$#'$birthday) || empty($birthday)) {

                            if (
$gender == || $gender == 2) {

                              if (
cms_strlen($info) <= 1000) {

                                if (
$log == $config['nickname']) {

                                    
$access $level;
                                }
                                else {

                                    
$access $user['users_level'];
                                } 

                                if (!empty(
$pass)) {

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

                                    
$mdpass  $user['users_pass'];
                                    
$warning '';
                                }
                                list(
$uday$umonth$uyear) = explode('.'$joined);
                                
$joined mktime('0''0''0'$umonth$uday$uyear);
                                
$rating $posrating $negrating;

                                
$db->query("UPDATE ?_users SET `users_pass` = ?, `users_email` = ?, `users_joined` = ?, `users_level` = ?, `users_first_name` = ?, `users_last_name` = ?, `users_nickname` = ?, `users_country` = ?, `users_city` = ?, `users_info` = ?, `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` = ?, `users_uploads` = ? WHERE `users_login` = ? LIMIT 1;"$mdpass$email$joined$access$fname$lname$nickname$country$city$info$site$icq$jabber$gender$birthday$themes$point$money$status$avatar$rating$posrating$negrating$uploads$uz);

                                
$inSes->addMessage('Данные юзера успешно изменены!' $warning'ok');

                                
redirect('?m=users&' RND);
                              }
                              else 
$error 'Ошибка! Слишком большая информация в графе о себе, не более 1000 символов!';
                            }
                            else 
$error 'Ошибка! Вы не указали пол пользователя!';
                          }
                          else 
$error 'Ошибка! Недопустимая дата дня рождения, необходим формат (дд.мм.гггг)!';
                        }
                        else 
$error 'Ошибка! Недопустимая дата регистрации, необходим формат (дд.мм.гггг)!';
                      }
                      else 
$error 'Ошибка! Недопустимый адрес сайта, необходим формат http://' $_SERVER['HTTP_HOST'];
                    }
                    else 
$error 'Ошибка! Недопустимый формат Jabber, необходим формат name@site.domen!';
                  }
                  else 
$error 'Ошибка! Вы ввели неверный адрес e-mail, необходим формат name@site.domen!';
                }
                else 
$error 'Ошибка! Недопустимые символы в пароле. Разрешены знаки латинского алфавита, цифры и дефис!';
              }
              else 
$error 'Ошибка! Неверный идентификатор сессии, повторите действие!';

              if (!empty(
$error)) $inSes->addMessage($error'error');
            }

            
show_header('Управление пользователями - ' $user['users_login']);
            echo 
'<div class="b">' user_visit_icon($user['users_login'], $user['users_gender'], $user['visit_nowtime']); 
            echo 
' <b>Профиль ' users_anketa($user['users_login']) . '</b> ';
            echo 
user_visit($user['users_login']) . '<br /></div>';
            
$form = new cmsForm('?m=users_edit&amp;uz=' $user['users_login'] . '&amp;rnd=' $_SESSION['token']);

            if (
$user['users_login'] == $log) {

                echo 
'<div class="message_warning"><b><span style="color:#ff0000">Внимание! Вы редактируете cобственный аккаунт!</span></b></div>';
            }

            if (
$log == $config['nickname']) {

                
$form->addSelect('Уровень доступа:''level'$user['users_level'], $arr_access);
            }

            
$form->addText('Имя юзера:''fname'$user['users_first_name']);
            
$form->addText('Фамилия:''lname'$user['users_last_name']);
            
$nick = !empty($user['users_nickname']) ? $user['users_nickname'] . ' - после ред., цвет будет утерян''';
            
$form->addText('Ник юзера: ' $nick'nickname'strip_tags($user['users_nickname']));
            
$form->addText('Город:''city'$user['users_city']);
            
$form->addSelect('Страна:''country', !empty($user['users_country']) ? $user['users_country'] : 'RU'$countries);
            
$form->addSelect('Пол:''gender'$user['users_gender'], array(=> 'Мужской'=> 'Женский'));
            
$form->addText('Зарегистрирован:''joined'get_date($user['users_joined'], 'd.m.Y'));

            if (!empty(
$user['users_birthday'])) {

                list(
$year$month$day) = explode('-'$user['users_birthday']);
            }
            else {

                
$day   date('d');
                
$month date('m');
                
$year  date('Y');
            }
            
$form->addDate('- Дата рождения:''day''d'$day);
            
$form->addDate('''month''m'$month);
            
$form->addDate('''year''y'$year);
            
$form->addText('ICQ:','icq'$user['users_icq']);
            
$form->addText('E-mail:''email'$user['users_email']);
            
$form->addText('Jabber:''jabber'$user['users_jabber']);
            
$form->addText('Сайт:''site'$user['users_site']);
            
$form->addText('Актив:''point'$user['users_point']);
            
$form->addText('Деньги:''money'$user['users_money']);
            
$form->addText('Особый статус:''status'$user['users_status']);
            
$form->addText('Аватар:''avatar'$user['users_avatar']);
            
$form->addText('Авторитет (плюсы):''posrating'$user['users_posrating']);
            
$form->addText('Авторитет (минусы):''negrating'$user['users_negrating']);
            
$form->addText('Кол-во файлов в з.ц:''uploads'$user['users_uploads']);
            
$form->addText('Скин:''themes'$user['users_themes']);
            
$form->addTextarea('О себе:''info'str_replace('<br />'"rn"$user['users_info']));
            
//$form->addTextarea('Заметка:', 'note', str_replace('<br />', "rn", $user['users_note']));
            
$form->addText('Новый пароль: (Oставьте пустым если не надо менять)''pass');
            echo 
$form->Submit('Изменить''save_user');
            unset(
$form);

            echo 
'<div class="b"><b>Дополнительная информация</b><br />';

            if (
$user['users_confirmreg'] == 1) {
                echo 
'<span style="color:#ff0000"><b>Аккаунт не активирован</b></span><br />';
            }

            
$visit $db->selectRow("SELECT `visit_ip`, `visit_nowtime` FROM ?_users_visit WHERE `visit_user` = ? LIMIT 1;"$uz);

            if (!empty(
$visit)) {
                echo 
'<b>Последний визит:</b> ' get_date($visit['visit_nowtime'], 'j F Y / H:i') . '<br />';
                echo 
'<b>С IP-адреса:</b> ' $visit['visit_ip'] . '<br />';
            }

            if (
$user['users_ban'] == && $user['users_timeban'] > SITE_TIME) {
                echo 
'<span style="color:#ff0000"><b>Юзер забанен</b></span><br />';
            }

            if (!empty(
$user['users_timelastban']) && !empty($user['users_reasonban'])) {
                echo 
'Последний бан: ' get_date($user['users_timelastban'], 'j F Y / H:i') . '<br />';
                echo 
'Последняя причина: ' bb_code($user['users_reasonban']) . '<br />';
                echo 
'Забанил: ' users_anketa($user['users_loginsendban']) . '<br />';
            }
            echo 
'Строгих банов: <b>' num($user['users_totalban']) . '</b><br /></div>';

            if (
$user['users_level'] < 101 || $user['users_level'] > 105) {

                echo 
'<div class="b">' icon('error.gif''icons');
                echo 
' <a href="?m=users_del&amp;uz=' $uz '"><b>Удалить профиль</b></a><br /></div>';
        }

            echo 
'<div class="b">' icon('return.png') . ' <a href="?m=users&amp;' RND '">Вернуться</a><br /></div>';

          }
          else {

              
$inSes->addMessage('Ошибка! У вас недостаточно прав для редактирования этого профиля!');
              
redirect('?m=users&' RND);
          }
        }
        else {

            
$inSes->addMessage('Ошибка! Пользователя с данным логином не существует!');
            
redirect('?m=users&' RND);
        }

    break;
    case 
'users_del':

        
$uz = !empty($_REQUEST['uz']) ? check($_REQUEST['uz']) : '';

        include_once( 
dirname(__FILE__) . '/del.inc.php' );

        
$user $db->selectRow("SELECT * FROM ?_users WHERE `users_login` = ? LIMIT 1;"$uz);

        if (!empty(
$user)) {

            if (!empty(
$_POST['del_users'])) {

                if (!empty(
$_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {

                    if (
$user['users_level'] < 101 || $user['users_level'] > 105) {

                        if (!empty(
$_POST['black'])) {

                            
$is_black = (int) $db->selectCell("SELECT `id` FROM ?_users_black_list 
                                                               WHERE (LOWER(`login`) = ? OR LOWER(`email`) = ?) 
                                                               LIMIT 1;"
strtolower($user['users_login']), strtolower($user['users_email']));

                            if (
$is_black 1) {

                               
$db->query("INSERT INTO ?_users_black_list (`id`, `login`, `email`, `site`, `time`) VALUES (?, ?, ?, ?, ?);"$user['users_id'], $user['users_login'], $user['users_email'], $user['users_site'], SITE_TIME);
                            }
                        }

                        
/* Удаление фотографий в галерее */
                        
delete_album($user['users_login']);

                        
/* Удаление файлов пользователя */
                        
delete_files($user['users_login']);

                        
/* Удаления сообществ пользователя */

                        
$coms $db->select("SELECT `comm_id`, `comm_image` FROM ?_comm_comm WHERE `comm_user` = ?"$user['users_login']);

                        if (!empty(
$coms) && @count($coms) > 0) {

                            foreach(
$coms as $com) {

                                
delete_soo($com['comm_id'], $com['comm_image']);
                            }
                        }
 
                        
/* Удаление тем в форуме */

                        
$topics $db->selectCol("SELECT `topics_id` FROM ?_forums_topics WHERE `topics_author` = ?;"$user['users_login']);

                        if (!empty(
$topics)) {

                            
$strtopics implode(','$topics);
                            
$db->query("DELETE FROM ?_forums_posts WHERE `posts_topics_id` IN (" $strtopics ");");
                            
$db->query("DELETE FROM ?_forums_topics WHERE `topics_id` IN (" $strtopics ");");
                    }

                        
$db->query("DELETE FROM ?_forums_posts WHERE `posts_user` = ?;"$user['users_login']);

                        
/* Удаление коментарий */
                        
$db->query("DELETE FROM ?_comments WHERE `comm_author` = ?;"$user['users_login']);


                        
/* Удаление профиля */
                        
delete_users($user['users_login']);

                        
$inSes->addMessage('Профиль пользователя успешно удален!''ok');

                        
redirect('?m=users&' RND);
                    }
                    else 
$inSes->addMessage('Ошибка! У вас недостаточно прав для удаления этого профиля!');
                }
                else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
            }

            
show_header('Удаление пользователя ' $user['users_login']);
            echo 
'<div class="b">' icon('error.gif''icons');
            echo 
' Вы подтверждаете, что хотите полностью удалить аккаунт пользователя ';
            echo 
'<b>' users_anketa($user['users_login']) . '</b>?<br /></div>';
            
$form = new cmsForm('?m=users_del&amp;rnd=' $_SESSION['token']);
            
$form->addcheckBox(array(''' Добавить в черный список'), 'black');
            
$form->addHidden('uz',$user['users_login']);
            echo 
$form->Submit('Удалить профиль''del_users');
            unset(
$form);
            echo 
'<div class="b">' icon('return.png') . ' <a href="?m=users_edit&amp;uz=' $uz '">Вернуться</a>';
            echo 
' | <a href="?m=users&amp;' RND '">Выбор юзера</a><br /></div>';
        }
        else {

            
$inSes->addMessage('Ошибка! Пользователя с данным логином не существует!');
            
redirect('?m=users&' RND);
        }
    break;
    endswitch;

    echo 
'<div class="b">' icon('return.png') . ' <a href="index.php">В админку</a><br /></div>';

}
else {

    
redirect('./?' RND);


?>
Онлайн: 0
Реклама