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

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

if (
is_admin(array(101102103))) {

    
$ban_times = array('min' => 'Минут''chas' => 'Часов''sut' => 'Суток');

    if (!empty(
$_GET['razban'])) {

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

        
$user $db->selectRow("SELECT * FROM ?_users WHERE `users_login` = ? LIMIT 1;"check($_GET['razban']));

        if (!empty(
$user)) {

          if (
$user['users_ban'] == 1) {

            if (
$user['users_totalban'] > && $user['users_timeban'] > SITE_TIME 43200) {
                
$bancount 1;
            } else {
                
$bancount 0;
            }

            
$db->query("UPDATE ?_users SET `users_ban` = ?, `users_timeban` = ?, `users_totalban` = (`users_totalban` - ?), `users_explainban` = ? WHERE `users_login` = ? LIMIT 1;"'0''0'$bancount'0'$user['users_login']);

            
$db->query("INSERT INTO ?_users_ban_history (`ban_user`, `ban_send`, `ban_time`) VALUES (?, ?, ?);"$user['users_login'], $logSITE_TIME);

            
$inSes->addMessage('Аккаунт успешно разблокирован!''ok');

            
redirect('?m=ban&' RND);

          }
          else 
$inSes->addMessage('Ошибка! Данный аккаунт уже разблокирован!');
        }
        else 
$inSes->addMessage('Ошибка! Пользователя с данным логином не существует!');
      }
      else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
    }

    switch (
$mod):
    default:

        
show_header('Список забаненых');

        
$onpage = !empty($config['user_list']) ? num($config['user_list']) : 10;

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


        
$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_ban` = '1' AND `u`.`users_timeban` > ? 
                                         ORDER BY `u`.`users_timelastban` DESC 
                                         LIMIT ?d, ?d"
SITE_TIME$from$onpage);
        if (!empty(
$rows) && $total 0) {

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

                echo 
'<div class="b">' $i++ . '. ' user_visit_icon($row['users_login'], $row['users_gender'], $row['visit_nowtime']);
                echo 
' <b>' users_anketa($row['users_login']) . '</b> ';
                echo 
'(Забанен: ' get_date($row['users_timelastban']) . ')<br />';
                echo 
'До окончания бана осталось ' formattime($row['users_timeban'] - SITE_TIME) . '<br />';
                echo 
'Забанил: <b>' users_anketa($row['users_loginsendban']) . '</b><br />';
                echo 
'Причина: ' bb_code($row['users_reasonban']) . '<br />';
                echo 
'<a href="?m=edit_ban&amp;uz=' $row['users_login'] . '&amp;' RND '">Редактировать</a> | ';
                echo 
'<a href="?m=ban&amp;razban=' $row['users_login'] . '&amp;rnd=' $_SESSION['token'] . '&amp;' RND '">Разбанить</a>';
                echo 
'</div>';
            }

            echo 
show_pages('?m=ban');
            echo 
'<div class="b">Всего забанено: <b>' num($total) . '</b><br /></div>';
        }
        else {

            
show_error('Пользователей еще нет!');
        }
        
$form = new cmsForm('?m=ban_user''post');
        
$form->addText('Логин пользователя:''uz');
        echo 
$form->Submit('Редактировать');
        unset(
$form);
        echo 
'<div class="b">Введите логин пользователя который необходимо отредактировать<br /></div>';

    break;
    case 
'ban_user':

        
$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;"
request('uz'));

        if (!empty(
$user)) {

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

                
$bantime   = !empty($_POST['bantime'])   ? abs(round($_POST['bantime'], 1)) : '';
                
$bantype   = !empty($_POST['bantype'])   ? check($_POST['bantype'])   : '';
                
$reasonban = !empty($_POST['reasonban']) ? check($_POST['reasonban']) : '';
                
$note      = !empty($_POST['note'])      ? check($_POST['note'])      : '';

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

                  if (empty(
$user['users_ban']) || $user['users_timeban'] < SITE_TIME) {

                    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['max_ban_time']) {

                          if (
cms_strlen($reasonban) >= && cms_strlen($reasonban) <= 1000) {

                            if (
cms_strlen($note) < 1000) {

                              
$bancount = ($bantotaltime 720) ? 0;

                              
$db->query("UPDATE ?_users SET `users_ban` = ?, `users_timeban` = ?, `users_timelastban` = ?, `users_reasonban` = ?, `users_loginsendban` = ?, `users_totalban` = (`users_totalban` + ?), `users_explainban` = ? WHERE `users_login` = ? LIMIT 1;"1SITE_TIME + ($bantotaltime 60), SITE_TIME$reasonban$log$bancount1$user['users_login']);

                              
$db->query("INSERT INTO ?_users_ban_history (`ban_user`, `ban_send`, `ban_type`, `ban_reason`, `ban_term`, `ban_time`) VALUES (?, ?, ?, ?, ?, ?);"$user['users_login'], $log1$reasonban$bantotaltime 60SITE_TIME);

                              
$inSes->addMessage('Аккаунт успешно заблокирован!''ok');

                              
redirect('?m=ban&' RND);

                            }
                            else 
$inSes->addMessage('Ошибка! Слишком большая заметка, не более 1000 символов!');
                          }
                          else 
$inSes->addMessage('Ошибка! Слишком длинная или короткая причина бана!');
                        }
                        else 
$inSes->addMessage('Ошибка! Максимальное время бана ' round($config['max_ban_time'] / 1440).' суток!');
                      }
                      else 
$inSes->addMessage('Ошибка! Вы не указали время бана!');
                    }
                    else 
$inSes->addMessage('Ошибка! Запрещено банить админов и модеров сайта!');
                  }
                  else 
$inSes->addMessage('Ошибка! Данный аккаунт уже заблокирован!');
                }
                else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
            }

            
show_header('Бан - Разбан');
            echo 
'<div class="b">';
            echo 
user_visit_icon($user['users_login'], $user['users_gender'], $user['visit_nowtime']);
            echo 
' <b>Профиль ' users_anketa($user['users_login']) . '</b> ' user_visit($user['users_login']) . '<br /></div>';

            if (!empty(
$user['users_timelastban']) && !empty($user['users_reasonban'])) {

                echo 
'<div class="b">';
                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 /></div>';
            } 

            
$total = (int) $db->selectCell("SELECT COUNT(*) FROM ?_users_ban_history WHERE `ban_user` = ?;"$user['users_login']);

            echo 
'<div class="b">';
            echo 
'- Строгих нарушений: <b>' $user['users_totalban'] . '</b><br />';
            echo 
'- <a href="?m=ban_history&amp;uz=' $user['users_login'] . '&amp;' RND '">История банов</a> (' $total ')<br /></div>';

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

              if (empty(
$user['users_ban']) || $user['users_timeban'] < SITE_TIME) {

                if (
$user['users_totalban'] < 5) {

                    
$note $db->selectRow("SELECT * FROM ?_users_note WHERE `note_user` = ? LIMIT 1;"$user['users_login']);
                    
$note['note_text'] = !empty($note['note_text']) ? $note['note_text'] : '';
                    
$form = new cmsForm('?m=ban_user&amp;rnd=' $_SESSION['token'], 'post');
                    
$form->addText('Время бана:''bantime'request('bantime'));
                    
$form->addSelect('''bantype'request('bantype'), $ban_times);
                    
$form->addTextarea('Причина бана:''reasonban'request('reasonban'));
                    
$form->addHidden('uz',$user['users_login']);
                    echo 
$form->Submit('Забанить''submit');
                    unset(
$form);
                    echo 
'<div class="b">';
                    echo 
'Подсчет нарушений производится при бане более чем на 12 часов<br />';
                    echo 
'При общем числе нарушений более пяти, профиль пользователя удаляется<br />';
                    echo 
'Максимальное время бана ' round($config['max_ban_time'] / 1440) . ' суток<br />';
                    echo 
'Внимание! Постарайтесь как можно подробнее описать причину бана<br /></div>';
                }
                else {

                    echo 
'<div class="b">';
                    echo 
'<b><span style="color:#ff0000">Внимание! Пользователь превысил лимит банов</span></b><br />';
                    echo 
'Вы можете удалить этот профиль!<br /><br />';
                    echo 
icon('error.gif''icons');
                    echo 
' <b><a href="?m=users_del&amp;uz=' $user['users_login'] . '&amp;' RND '">Удалить профиль</a></b><br />';
                    echo 
'</div>';
                }
              }
              else {

                  echo 
'<div class="b">';
                  echo 
'<b><span style="color:#ff0000">Внимание, данный аккаунт заблокирован!</span></b><br />';
                  echo 
'До окончания бана: '.formattime($user['users_timeban'] - SITE_TIME).'<br /><br />';
                  echo 
'<img src="../images/img/edit.gif" alt="" /> ';
                  echo 
'<a href="?m=edit_ban&amp;uz=' $user['users_login'] . '&amp;' RND '">Изменить</a><br />';
                  echo 
'<img src="../images/img/reload.gif" alt="" /> ';
                  echo 
'<a href="?m=ban&amp;razban=' $user['users_login'] . '&amp;rnd=' $_SESSION['token'] . '&amp;' RND '">Разбанить</a>';
                  echo 
'</div>';
              }
            }
            else {
                
show_error('Ошибка! Запрещено банить админов и модеров сайта!');
            }

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

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

    break;
    case 
'edit_ban':

        
$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;"
request('uz'));

        if (!empty(
$user)) {

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

                
$bantime   = !empty($_POST['bantime'])   ? abs(round($_POST['bantime'], 1)) : '';
            
$bantype   = !empty($_POST['bantype'])   ? check($_POST['bantype'])   : '';
                
$reasonban = !empty($_POST['reasonban']) ? check($_POST['reasonban']) : '';
                
$note      = !empty($_POST['note'])      ? check($_POST['note'])      : '';

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

                  if (!empty(
$user['users_ban']) && $user['users_timeban'] > SITE_TIME) {

                    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['max_ban_time']) {

                          if (
cms_strlen($reasonban) >= && cms_strlen($reasonban) <= 1000) {

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

                              
$db->query("UPDATE ?_users SET `users_ban` = ?, `users_timeban` = ?, `users_reasonban` = ?, `users_loginsendban` = ? WHERE `users_login` = ? LIMIT 1;"1SITE_TIME + ($bantotaltime 60), $reasonban$log$user['users_login']);

                              
$db->query("INSERT INTO ?_users_ban_history (`ban_user`, `ban_send`, `ban_type`, `ban_reason`, `ban_term`, `ban_time`) VALUES (?, ?, ?, ?, ?, ?);"$user['users_login'], $log2$reasonban$bantotaltime 60SITE_TIME);

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

                            }
                            else 
$inSes->addMessage('Ошибка! Слишком большая заметка, не более 1000 символов!');
                          }
                          else 
$inSes->addMessage('Ошибка! Слишком длинная или короткая причина бана!');
                        }
                        else 
$inSes->addMessage('Ошибка! Максимальное время бана ' round($config['max_ban_time'] / 1440) . ' суток!');
                      }
                      else 
$inSes->addMessage('Ошибка! Вы не указали время бана!');
                    }
                    else 
$inSes->addMessage('Ошибка! Запрещено банить админов и модеров сайта!');
                  }
                  else 
$inSes->addMessage('Ошибка! Данный пользователь не забанен!');
                }
                else 
$inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
            }

            
show_header('Бан - Разбан');
            echo 
'<div class="b">';
            echo 
user_visit_icon($user['users_login'], $user['users_gender'], $user['visit_nowtime']);
            echo 
' <b>Профиль ' users_anketa($user['users_login']) . '</b> ' user_visit($user['users_login']) . '<br /></div>';
            echo 
'<div class="b">';

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

              if (!empty(
$user['users_ban']) && $user['users_timeban'] > SITE_TIME) {

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

                  echo 
'Последний бан: ' get_date($user['users_timelastban'], 'j F Y / H:i') . '<br />';
                  echo 
'Забанил: ' users_anketa($user['users_loginsendban']) . '<br />';
                }
 
                echo 
'Строгих нарушений: <b>' $user['users_totalban'] . '</b><br />';
                echo 
'До окончания бана: ' formattime($user['users_timeban'] - SITE_TIME) . '<br /></div>';

                if (
$user['users_timeban'] - SITE_TIME >= 86400) {
                    
$type 'sut';
                    
$file_time round(((($user['users_timeban'] - SITE_TIME) / 60) / 60) / 241);
                }
                else if (
$user['users_timeban'] - SITE_TIME >= 3600) {
                    
$type 'chas';
                    
$file_time round((($user['users_timeban'] - SITE_TIME) / 60) / 601);
                }
                else {
                    
$type 'min';
                    
$file_time round(($user['users_timeban'] - SITE_TIME) / 60);
                }

                
$form = new cmsForm('?m=edit_ban&amp;rnd=' $_SESSION['token'], 'post');
                
$form->addText('Время бана:''bantime'$file_time);
                
$form->addSelect('''bantype'$type$ban_times);
                
$form->addTextarea('Причина бана:''reasonban'$user['users_reasonban']);
                
$form->addHidden('uz',$user['users_login']);
                echo 
$form->Submit('Изменить''submit');
                unset(
$form);
              }
              else {
                
show_error('Ошибка! Данный пользователь не забанен!');
              }
            }
            else {
              
show_error('Ошибка! Запрещено банить админов и модеров сайта!');
            } 

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

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

    break;
    case 
'ban_history':

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

        
show_header('История банов ' $uz);

        
$onpage = !empty($config['user_list']) ? num($config['user_list']) : 10;

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

        
$rows $db->selectPage($total"SELECT `h`.*, `v`.`visit_nowtime`, `u`.`users_gender`
                                         FROM ?_users_ban_history `h`
                                         LEFT JOIN ?_users `u`
                                         ON `h`.`ban_user` = `u`.`users_login`
                                         LEFT JOIN ?_users_visit `v`
                                         ON `h`.`ban_user` = `v`.`visit_user`
                                         WHERE `h`.`ban_user` = ? 
                                         ORDER BY `h`.`ban_time` DESC 
                                         LIMIT ?d, ?d"
$uz$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['ban_time']) . ')</div>';
                echo 
$i++ . '. ' user_visit_icon($row['ban_user'], $row['users_gender'], $row['visit_nowtime']);
                echo 
' <b>' users_anketa($row['ban_user']) . '</b><br />';
                echo 
'Забанен на: ' formattime($row['ban_term']) . '<br />';
                echo 
'Забанил: <b>' users_anketa($row['ban_send']) . '</b><br />';
                echo 
'Причина: ' bb_code($row['ban_reason']) . '<br />';
                echo 
'</div>';
            }

            echo 
show_pages('?m=ban_history&amp;uz=' $uz);
            echo 
'<div class="b">Всего банов: <b>' num($total) . '</b><br /></div>';
        }
        else {

            
show_error('История банов не найдена!');
        }

        
$form = new cmsForm('?m=ban_user''post');
        
$form->addText('Логин пользователя:''uz'request('uz'));
        echo 
$form->Submit('Редактировать');
        unset(
$form);
        echo 
'<div class="b">Введите логин пользователя который необходимо отредактировать.<br /></div>';
        echo 
'<div class="b">' icon('return.png') . ' <a href="?m=ban&amp;' RND '">Вернуться</a><br /></div>';

    break;

    endswitch;

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

    
show_footer();
}
else {

    
redirect('/?' RND);
}

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