[ Index ]

PHP Cross Reference of MantisBT

title

Body

[close]

/ -> manage_user_page.php (source)

   1  <?php
   2  # MantisBT - A PHP based bugtracking system
   3  
   4  # MantisBT is free software: you can redistribute it and/or modify
   5  # it under the terms of the GNU General Public License as published by
   6  # the Free Software Foundation, either version 2 of the License, or
   7  # (at your option) any later version.
   8  #
   9  # MantisBT is distributed in the hope that it will be useful,
  10  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  11  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12  # GNU General Public License for more details.
  13  #
  14  # You should have received a copy of the GNU General Public License
  15  # along with MantisBT.  If not, see <http://www.gnu.org/licenses/>.
  16  
  17  /**
  18   * @package MantisBT
  19   * @copyright Copyright (C) 2000 - 2002  Kenzaburo Ito - kenito@300baud.org
  20   * @copyright Copyright (C) 2002 - 2011  MantisBT Team - mantisbt-dev@lists.sourceforge.net
  21   * @link http://www.mantisbt.org
  22   *
  23   * @uses core.php
  24   * @uses access_api.php
  25   * @uses authentication_api.php
  26   * @uses config_api.php
  27   * @uses constant_inc.php
  28   * @uses database_api.php
  29   * @uses gpc_api.php
  30   * @uses helper_api.php
  31   * @uses html_api.php
  32   * @uses icon_api.php
  33   * @uses lang_api.php
  34   * @uses print_api.php
  35   * @uses string_api.php
  36   * @uses utility_api.php
  37   */
  38  
  39  /**
  40   * MantisBT Core API's
  41   */
  42  require_once ( 'core.php' );
  43  require_api( 'access_api.php' );
  44  require_api( 'authentication_api.php' );
  45  require_api( 'config_api.php' );
  46  require_api( 'constant_inc.php' );
  47  require_api( 'database_api.php' );
  48  require_api( 'gpc_api.php' );
  49  require_api( 'helper_api.php' );
  50  require_api( 'html_api.php' );
  51  require_api( 'icon_api.php' );
  52  require_api( 'lang_api.php' );
  53  require_api( 'print_api.php' );
  54  require_api( 'string_api.php' );
  55  require_api( 'utility_api.php' );
  56  
  57  auth_reauthenticate();
  58  
  59  access_ensure_global_level( config_get( 'manage_user_threshold' ) );
  60  
  61  $f_sort    = gpc_get_string( 'sort', 'username' );
  62  $f_dir    = gpc_get_string( 'dir', 'ASC' );
  63  $f_hide = gpc_get_bool( 'hide' );
  64  $f_save = gpc_get_bool( 'save' );
  65  $f_filter = utf8_strtoupper( gpc_get_string( 'filter', config_get( 'default_manage_user_prefix' ) ) );
  66  $f_page_number        = gpc_get_int( 'page_number', 1 );
  67  
  68  $t_user_table = db_get_table( 'user' );
  69  $t_cookie_name = config_get( 'manage_cookie' );
  70  $t_lock_image = '<img src="' . config_get( 'icon_path' ) . 'protected.gif" width="8" height="15" alt="' . lang_get( 'protected' ) . '" />';
  71  $c_filter = '';
  72  
  73  # Clean up the form variables
  74  if ( !db_field_exists( $f_sort, $t_user_table ) ) {
  75      $c_sort = 'username';
  76  } else {
  77      $c_sort = addslashes($f_sort);
  78  }
  79  
  80  if ($f_dir == 'ASC') {
  81      $c_dir = 'ASC';
  82  } else {
  83      $c_dir = 'DESC';
  84  }
  85  
  86  if ($f_hide == 0) { # a 0 will turn it off
  87      $c_hide = 0;
  88  } else {            # anything else (including 'on') will turn it on
  89      $c_hide = 1;
  90  }
  91  $t_hide_filter = '&amp;hide=' . $c_hide;
  92  
  93  # set cookie values for hide, sort by, and dir
  94  if ( $f_save ) {
  95      $t_manage_string = $c_hide.':'.$c_sort.':'.$c_dir;
  96      gpc_set_cookie( $t_cookie_name, $t_manage_string, true );
  97  } else if ( !is_blank( gpc_get_cookie( $t_cookie_name, '' ) ) ) {
  98      $t_manage_arr = explode( ':', gpc_get_cookie( $t_cookie_name ) );
  99      $f_hide = $t_manage_arr[0];
 100  
 101      if ( isset( $t_manage_arr[1] ) ) {
 102          $f_sort = $t_manage_arr[1];
 103      } else {
 104          $f_sort = 'username';
 105      }
 106  
 107      if ( isset( $t_manage_arr[2] ) ) {
 108          $f_dir  = $t_manage_arr[2];
 109      } else {
 110          $f_dir = 'DESC';
 111      }
 112  }
 113  
 114  html_page_top( lang_get( 'manage_users_link' ) );
 115  
 116  print_manage_menu( 'manage_user_page.php' );
 117  
 118  # New Accounts Form BEGIN
 119  
 120  $days_old = 7 * SECONDS_PER_DAY;
 121  $query = "SELECT *
 122      FROM $t_user_table
 123      WHERE ".db_helper_compare_days("" . db_now() . "","date_created","<= $days_old")."
 124      ORDER BY date_created DESC";
 125  $result = db_query_bound( $query );
 126  $g_db->debug=false;
 127  $new_user_count = db_num_rows( $result);
 128  
 129  # Never Logged In Form BEGIN
 130  
 131  $query = "SELECT *
 132      FROM $t_user_table
 133      WHERE ( login_count = 0 ) AND ( date_created = last_visit )
 134      ORDER BY date_created DESC";
 135  $result = db_query_bound( $query );
 136  $unused_user_count = db_num_rows( $result );
 137  
 138  # Manage Form BEGIN
 139  
 140  $t_prefix_array = array();
 141  
 142  $t_prefix_array['ALL'] = lang_get( 'show_all_users' );
 143  
 144  for ( $i = 'A'; $i != 'AA'; $i++ ) {
 145      $t_prefix_array[$i] = $i;
 146  }
 147  
 148  for ( $i = 0; $i <= 9; $i++ ) {
 149      $t_prefix_array["$i"] = "$i";
 150  }
 151  $t_prefix_array['UNUSED'] = lang_get( 'users_unused' );
 152  $t_prefix_array['NEW'] = lang_get( 'users_new' );
 153  
 154  echo '<div id="manage-user-filter-menu">';
 155  echo '<ul class="menu">';
 156  foreach ( $t_prefix_array as $t_prefix => $t_caption ) {
 157      echo '<li>';
 158      if ( $t_prefix === 'UNUSED' ) {
 159          $t_title = ' title="[' . $unused_user_count . '] (' . lang_get( 'never_logged_in_title' ) . ')"';
 160      } else if ( $t_prefix === 'NEW' ) {
 161          $t_title = ' title="[' . $new_user_count . '] (' . lang_get( '1_week_title' ) . ')"';
 162      } else {
 163          $t_title = '';
 164      }
 165      if ( $t_prefix === $f_filter ) {
 166          $c_filter = $f_filter;
 167          echo '<span class="current-filter">' . $t_caption . '</span>';
 168      } else {
 169          echo '<a' . $t_title . ' href="manage_user_page.php?sort=' . $c_sort . '&amp;dir=' . $c_dir . '&amp;save=1' . $t_hide_filter . '&amp;filter=' . $t_prefix . '">' . $t_caption . '</a>';
 170      }
 171      echo '</li>';
 172  }
 173  echo '</ul>';
 174  echo '</div>';
 175  
 176  $t_where_params = null;
 177  if ( $f_filter === 'ALL' ) {
 178      $t_where = '(1 = 1)';
 179  } else if ( $f_filter === 'UNUSED' ) {
 180      $t_where = '(login_count = 0) AND ( date_created = last_visit )';
 181  } else if ( $f_filter === 'NEW' ) {
 182      $t_where = db_helper_compare_days("" . db_now() . "","date_created","<= $days_old");
 183  } else {
 184      $c_prefix = db_prepare_string($f_filter);
 185      $t_where = "(UPPER(username) LIKE '$c_prefix%')";
 186  }
 187  
 188  $p_per_page = 50;
 189  
 190  $t_offset = ( ( $f_page_number - 1 ) * $p_per_page );
 191  
 192  $total_user_count = 0;
 193  
 194  # Get the user data in $c_sort order
 195  $result = '';
 196  if ( 0 == $c_hide ) {
 197      $query = "SELECT count(*) as usercnt
 198              FROM $t_user_table
 199              WHERE $t_where";
 200      $result = db_query_bound($query, $t_where_params);
 201      $row = db_fetch_array( $result );
 202      $total_user_count = $row['usercnt'];
 203  } else {
 204      $query = "SELECT count(*) as usercnt
 205              FROM $t_user_table
 206              WHERE $t_where AND " . db_helper_compare_days("" . db_now() . "","last_visit","< $days_old");
 207      $result = db_query_bound($query, $t_where_params);
 208      $row = db_fetch_array( $result );
 209      $total_user_count = $row['usercnt'];
 210  }
 211  
 212  $t_page_count = ceil($total_user_count / $p_per_page);
 213  if ( $t_page_count < 1 ) {
 214      $t_page_count = 1;
 215  }
 216  
 217  # Make sure $p_page_number isn't past the last page.
 218  if ( $f_page_number > $t_page_count ) {
 219      $f_page_number = $t_page_count;
 220  }
 221  
 222  # Make sure $p_page_number isn't before the first page
 223  if ( $f_page_number < 1 ) {
 224      $f_page_number = 1;
 225  }
 226  
 227  
 228  if ( 0 == $c_hide ) {
 229      $query = "SELECT *
 230              FROM $t_user_table
 231              WHERE $t_where
 232              ORDER BY $c_sort $c_dir";
 233      $result = db_query_bound($query, $t_where_params, $p_per_page, $t_offset);
 234  } else {
 235  
 236      $query = "SELECT *
 237              FROM $t_user_table
 238              WHERE $t_where AND " . db_helper_compare_days( "" . db_now() . "", "last_visit", "< $days_old" ) . "
 239              ORDER BY $c_sort $c_dir";
 240      $result = db_query_bound($query, $t_where_params, $p_per_page, $t_offset );
 241  }
 242  $user_count = db_num_rows( $result );
 243  ?>
 244  <div id="manage-user-div" class="form-container">
 245      <h2><?php echo lang_get( 'manage_accounts_title' ) ?></h2> [<?php echo $total_user_count ?>]
 246      <?php print_button( 'manage_user_create_page.php', lang_get( 'create_new_account_link' ) ) ?>
 247      <?php if ( $f_filter === 'UNUSED' ) echo print_button( 'manage_user_prune.php', lang_get( 'prune_accounts' ) ); ?>
 248      <form id="manage-user-filter" method="post" action="manage_user_page.php">
 249          <fieldset>
 250              <?php # CSRF protection not required here - form does not result in modifications ?>
 251              <input type="hidden" name="sort" value="<?php echo $c_sort ?>" />
 252              <input type="hidden" name="dir" value="<?php echo $c_dir ?>" />
 253              <input type="hidden" name="save" value="1" />
 254              <input type="hidden" name="filter" value="<?php echo $c_filter ?>" />
 255              <input type="checkbox" name="hide" value="1" <?php check_checked( $c_hide, 1 ); ?> /> <?php echo lang_get( 'hide_inactive' ) ?>
 256              <input type="submit" class="button" value="<?php echo lang_get( 'filter_button' ) ?>" />
 257          </fieldset>
 258      </form>
 259  
 260      <table cellspacing="1" cellpadding="5" border="1">
 261          <tr class="row-category">
 262              <td><?php
 263                  print_manage_user_sort_link(  'manage_user_page.php', lang_get( 'username' ), 'username', $c_dir, $c_sort, $c_hide, $c_filter );
 264                  print_sort_icon( $c_dir, $c_sort, 'username' ); ?>
 265              </td>
 266              <td><?php
 267                  print_manage_user_sort_link(  'manage_user_page.php', lang_get( 'realname' ), 'realname', $c_dir, $c_sort, $c_hide, $c_filter );
 268                  print_sort_icon( $c_dir, $c_sort, 'realname' ); ?>
 269              </td>
 270              <td><?php
 271                  print_manage_user_sort_link(  'manage_user_page.php', lang_get( 'email' ), 'email', $c_dir, $c_sort, $c_hide, $c_filter );
 272                  print_sort_icon( $c_dir, $c_sort, 'email' ); ?>
 273              </td>
 274              <td><?php
 275                  print_manage_user_sort_link(  'manage_user_page.php', lang_get( 'access_level' ), 'access_level', $c_dir, $c_sort, $c_hide, $c_filter );
 276                  print_sort_icon( $c_dir, $c_sort, 'access_level' ); ?>
 277              </td>
 278              <td><?php
 279                  print_manage_user_sort_link(  'manage_user_page.php', lang_get( 'enabled' ), 'enabled', $c_dir, $c_sort, $c_hide, $c_filter );
 280                  print_sort_icon( $c_dir, $c_sort, 'enabled' ); ?>
 281              </td>
 282              <td><?php
 283                  print_manage_user_sort_link(  'manage_user_page.php', $t_lock_image, 'protected', $c_dir, $c_sort, $c_hide, $c_filter );
 284                  print_sort_icon( $c_dir, $c_sort, 'protected' ); ?>
 285              </td>
 286              <td><?php
 287                  print_manage_user_sort_link(  'manage_user_page.php', lang_get( 'date_created' ), 'date_created', $c_dir, $c_sort, $c_hide, $c_filter );
 288                  print_sort_icon( $c_dir, $c_sort, 'date_created' ); ?>
 289              </td>
 290              <td><?php
 291                  print_manage_user_sort_link(  'manage_user_page.php', lang_get( 'last_visit' ), 'last_visit', $c_dir, $c_sort, $c_hide, $c_filter );
 292                  print_sort_icon( $c_dir, $c_sort, 'last_visit' ); ?>
 293              </td>
 294          </tr><?php
 295      $t_date_format = config_get( 'normal_date_format' );
 296      $t_access_level = Array();
 297      for ($i=0;$i<$user_count;$i++) {
 298          # prefix user data with u_
 299          $row = db_fetch_array($result);
 300          extract( $row, EXTR_PREFIX_ALL, 'u' );
 301  
 302          $u_date_created  = date( $t_date_format, $u_date_created );
 303          $u_last_visit    = date( $t_date_format, $u_last_visit );
 304  
 305          if( !isset( $t_access_level[$u_access_level] ) ) {
 306              $t_access_level[$u_access_level] = get_enum_element( 'access_levels', $u_access_level );
 307          } ?>
 308          <tr <?php echo helper_alternate_class( $i ) ?>>
 309              <td><?php
 310                  if ( access_has_global_level( $u_access_level ) ) { ?>
 311                      <a href="manage_user_edit_page.php?user_id=<?php echo $u_id ?>"><?php echo string_display_line( $u_username ) ?></a><?php
 312                  } else {
 313                      echo string_display_line( $u_username );
 314                  } ?>
 315              </td>
 316              <td><?php echo string_display_line( $u_realname ) ?></td>
 317              <td><?php print_email_link( $u_email, $u_email ) ?></td>
 318              <td><?php echo $t_access_level[$u_access_level] ?></td>
 319              <td><?php echo trans_bool( $u_enabled ) ?></td>
 320              <td class="center"><?php
 321                  if ( $u_protected ) {
 322                      echo " $t_lock_image";
 323                  } else {
 324                      echo '&#160;';
 325                  } ?>
 326              </td>
 327              <td><?php echo $u_date_created ?></td>
 328              <td><?php echo $u_last_visit ?></td>
 329          </tr><?php
 330      }  # end for ?>
 331      </table>
 332      <div class="pager-links">
 333          <?php
 334          /* @todo hack - pass in the hide inactive filter via cheating the actual filter value */
 335          print_page_links( 'manage_user_page.php', 1, $t_page_count, (int)$f_page_number, $c_filter . $t_hide_filter . "&amp;sort=$c_sort&amp;dir=$c_dir");
 336          ?>
 337      </div>
 338  </div>
 339  <?php
 340      # Manage Form END
 341      helper_alternate_class_no_attribute(0);
 342  ?>
 343      <div id="manage-user-edit-div" class="form-container">
 344          <form id="manage-user-edit-form" method="get" action="manage_user_edit_page.php"<?php # CSRF protection not required here - form does not result in modifications ?>>
 345              <fieldset>
 346                  <div class="field-container <?php echo helper_alternate_class_no_attribute(); ?>">
 347                      <label for="username"><span><?php echo lang_get( 'username' ) ?></span></label>
 348                      <span class="input"><input id="username" type="text" name="username" value="" /></span>
 349                      <span class="label-style"></span>
 350                  </div>
 351                  <span class="submit-button"><input type="submit" class="button" value="<?php echo lang_get( 'manage_user' ) ?>" /></span>
 352              </fieldset>
 353          </form>
 354      </div>
 355  <?php
 356  html_page_bottom();


Generated: Thu Jul 28 15:48:31 2011 Cross-referenced by PHPXref 0.7