Вход Регистрация
Файл: 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(101, 102))) {

    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,60, 90) 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 == 1 || $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(1 => 'Мужской', 2 => 'Женский'));
            
$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'] == 1 && $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);
} 

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