[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/includes/acp/ -> acp_ban.php (source)

   1  <?php
   2  /**
   3  *
   4  * @package acp
   5  * @version $Id$
   6  * @copyright (c) 2005 phpBB Group
   7  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
   8  *
   9  */
  10  
  11  /**
  12  * @ignore
  13  */
  14  if (!defined('IN_PHPBB'))
  15  {
  16      exit;
  17  }
  18  
  19  /**
  20  * @package acp
  21  */
  22  class acp_ban
  23  {
  24      var $u_action;
  25  
  26  	function main($id, $mode)
  27      {
  28          global $config, $db, $user, $auth, $template, $cache;
  29          global $phpbb_root_path, $phpbb_admin_path, $phpEx, $table_prefix;
  30  
  31          include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
  32  
  33          $bansubmit    = (isset($_POST['bansubmit'])) ? true : false;
  34          $unbansubmit = (isset($_POST['unbansubmit'])) ? true : false;
  35          $current_time = time();
  36  
  37          $user->add_lang(array('acp/ban', 'acp/users'));
  38          $this->tpl_name = 'acp_ban';
  39          $form_key = 'acp_ban';
  40          add_form_key($form_key);
  41  
  42          if (($bansubmit || $unbansubmit) && !check_form_key($form_key))
  43          {
  44              trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
  45          }
  46  
  47          // Ban submitted?
  48          if ($bansubmit)
  49          {
  50              // Grab the list of entries
  51              $ban                = utf8_normalize_nfc(request_var('ban', '', true));
  52              $ban_len            = request_var('banlength', 0);
  53              $ban_len_other        = request_var('banlengthother', '');
  54              $ban_exclude        = request_var('banexclude', 0);
  55              $ban_reason            = utf8_normalize_nfc(request_var('banreason', '', true));
  56              $ban_give_reason    = utf8_normalize_nfc(request_var('bangivereason', '', true));
  57  
  58              if ($ban)
  59              {
  60                  user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reason, $ban_give_reason);
  61  
  62                  trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . adm_back_link($this->u_action));
  63              }
  64          }
  65          else if ($unbansubmit)
  66          {
  67              $ban = request_var('unban', array(''));
  68  
  69              if ($ban)
  70              {
  71                  user_unban($mode, $ban);
  72  
  73                  trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . adm_back_link($this->u_action));
  74              }
  75          }
  76  
  77          // Define language vars
  78          $this->page_title = $user->lang[strtoupper($mode) . '_BAN'];
  79  
  80          $l_ban_explain = $user->lang[strtoupper($mode) . '_BAN_EXPLAIN'];
  81          $l_ban_exclude_explain = $user->lang[strtoupper($mode) . '_BAN_EXCLUDE_EXPLAIN'];
  82          $l_unban_title = $user->lang[strtoupper($mode) . '_UNBAN'];
  83          $l_unban_explain = $user->lang[strtoupper($mode) . '_UNBAN_EXPLAIN'];
  84          $l_no_ban_cell = $user->lang[strtoupper($mode) . '_NO_BANNED'];
  85  
  86          switch ($mode)
  87          {
  88              case 'user':
  89                  $l_ban_cell = $user->lang['USERNAME'];
  90              break;
  91  
  92              case 'ip':
  93                  $l_ban_cell = $user->lang['IP_HOSTNAME'];
  94              break;
  95  
  96              case 'email':
  97                  $l_ban_cell = $user->lang['EMAIL_ADDRESS'];
  98              break;
  99          }
 100  
 101          $this->display_ban_options($mode);
 102  
 103          $template->assign_vars(array(
 104              'L_TITLE'                => $this->page_title,
 105              'L_EXPLAIN'                => $l_ban_explain,
 106              'L_UNBAN_TITLE'            => $l_unban_title,
 107              'L_UNBAN_EXPLAIN'        => $l_unban_explain,
 108              'L_BAN_CELL'            => $l_ban_cell,
 109              'L_BAN_EXCLUDE_EXPLAIN'    => $l_ban_exclude_explain,
 110              'L_NO_BAN_CELL'            => $l_no_ban_cell,
 111  
 112              'S_USERNAME_BAN'    => ($mode == 'user') ? true : false,
 113              
 114              'U_ACTION'            => $this->u_action,
 115              'U_FIND_USERNAME'    => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&amp;form=acp_ban&amp;field=ban'),
 116          ));
 117      }
 118  
 119      /**
 120      * Display ban options
 121      */
 122  	function display_ban_options($mode)
 123      {
 124          global $user, $db, $template;
 125  
 126          // Ban length options
 127          $ban_end_text = array(0 => $user->lang['PERMANENT'], 30 => $user->lang['30_MINS'], 60 => $user->lang['1_HOUR'], 360 => $user->lang['6_HOURS'], 1440 => $user->lang['1_DAY'], 10080 => $user->lang['7_DAYS'], 20160 => $user->lang['2_WEEKS'], 40320 => $user->lang['1_MONTH'], -1 => $user->lang['UNTIL'] . ' -&gt; ');
 128  
 129          $ban_end_options = '';
 130          foreach ($ban_end_text as $length => $text)
 131          {
 132              $ban_end_options .= '<option value="' . $length . '">' . $text . '</option>';
 133          }
 134  
 135          switch ($mode)
 136          {
 137              case 'user':
 138  
 139                  $field = 'username';
 140                  $l_ban_cell = $user->lang['USERNAME'];
 141  
 142                  $sql = 'SELECT b.*, u.user_id, u.username, u.username_clean
 143                      FROM ' . BANLIST_TABLE . ' b, ' . USERS_TABLE . ' u
 144                      WHERE (b.ban_end >= ' . time() . '
 145                              OR b.ban_end = 0)
 146                          AND u.user_id = b.ban_userid
 147                      ORDER BY u.username_clean ASC';
 148              break;
 149  
 150              case 'ip':
 151  
 152                  $field = 'ban_ip';
 153                  $l_ban_cell = $user->lang['IP_HOSTNAME'];
 154  
 155                  $sql = 'SELECT *
 156                      FROM ' . BANLIST_TABLE . '
 157                      WHERE (ban_end >= ' . time() . "
 158                              OR ban_end = 0)
 159                          AND ban_ip <> ''
 160                      ORDER BY ban_ip";
 161              break;
 162  
 163              case 'email':
 164  
 165                  $field = 'ban_email';
 166                  $l_ban_cell = $user->lang['EMAIL_ADDRESS'];
 167  
 168                  $sql = 'SELECT *
 169                      FROM ' . BANLIST_TABLE . '
 170                      WHERE (ban_end >= ' . time() . "
 171                              OR ban_end = 0)
 172                          AND ban_email <> ''
 173                      ORDER BY ban_email";
 174              break;
 175          }
 176          $result = $db->sql_query($sql);
 177  
 178          $banned_options = $excluded_options = array();
 179          $ban_length = $ban_reasons = $ban_give_reasons = array();
 180  
 181          while ($row = $db->sql_fetchrow($result))
 182          {
 183              $option = '<option value="' . $row['ban_id'] . '">' . $row[$field] . '</option>';
 184  
 185              if ($row['ban_exclude'])
 186              {
 187                  $excluded_options[] = $option;
 188              }
 189              else
 190              {
 191                  $banned_options[] = $option;
 192              }
 193  
 194              $time_length = ($row['ban_end']) ? ($row['ban_end'] - $row['ban_start']) / 60 : 0;
 195  
 196              if ($time_length == 0)
 197              {
 198                  // Banned permanently
 199                  $ban_length[$row['ban_id']] = $user->lang['PERMANENT'];
 200              }
 201              else if (isset($ban_end_text[$time_length]))
 202              {
 203                  // Banned for a given duration
 204                  $ban_length[$row['ban_id']] = sprintf($user->lang['BANNED_UNTIL_DURATION'], $ban_end_text[$time_length], $user->format_date($row['ban_end'], false, true));
 205              }
 206              else
 207              {
 208                  // Banned until given date
 209                  $ban_length[$row['ban_id']] = sprintf($user->lang['BANNED_UNTIL_DATE'], $user->format_date($row['ban_end'], false, true));
 210              }
 211  
 212              $ban_reasons[$row['ban_id']] = $row['ban_reason'];
 213              $ban_give_reasons[$row['ban_id']] = $row['ban_give_reason'];
 214          }
 215          $db->sql_freeresult($result);
 216  
 217          if (sizeof($ban_length))
 218          {
 219              foreach ($ban_length as $ban_id => $length)
 220              {
 221                  $template->assign_block_vars('ban_length', array(
 222                      'BAN_ID'    => (int) $ban_id,
 223                      'LENGTH'    => $length,
 224                      'A_LENGTH'    => addslashes($length),
 225                  ));
 226              }
 227          }
 228  
 229          if (sizeof($ban_reasons))
 230          {
 231              foreach ($ban_reasons as $ban_id => $reason)
 232              {
 233                  $template->assign_block_vars('ban_reason', array(
 234                      'BAN_ID'    => $ban_id,
 235                      'REASON'    => $reason,
 236                      'A_REASON'    => addslashes($reason),
 237                  ));
 238              }
 239          }
 240  
 241          if (sizeof($ban_give_reasons))
 242          {
 243              foreach ($ban_give_reasons as $ban_id => $reason)
 244              {
 245                  $template->assign_block_vars('ban_give_reason', array(
 246                      'BAN_ID'    => $ban_id,
 247                      'REASON'    => $reason,
 248                      'A_REASON'    => addslashes($reason),
 249                  ));
 250              }
 251          }
 252  
 253          $options = '';
 254          if ($excluded_options)
 255          {
 256              $options .= '<optgroup label="' . $user->lang['OPTIONS_EXCLUDED'] . '">';
 257              $options .= implode('', $excluded_options);
 258              $options .= '</optgroup>';
 259          }
 260  
 261          if ($banned_options)
 262          {
 263              $options .= '<optgroup label="' . $user->lang['OPTIONS_BANNED'] . '">';
 264              $options .= implode('', $banned_options);
 265              $options .= '</optgroup>';
 266          }
 267  
 268          $template->assign_vars(array(
 269              'S_BAN_END_OPTIONS'    => $ban_end_options,
 270              'S_BANNED_OPTIONS'    => ($banned_options || $excluded_options) ? true : false,
 271              'BANNED_OPTIONS'    => $options,
 272          ));
 273      }
 274  }
 275  
 276  ?>


Generated: Wed Oct 2 15:03:47 2013 Cross-referenced by PHPXref 0.7.1