WordPress PHP Cross Reference Web Logs

Source: /wp-admin/includes/class-wp-ms-users-list-table.php - 272 lines - 8813 bytes - Summary - Text - Print

   1  <?php
   2  /**
   3   * Multisite Users List Table class.
   4   *
   5   * @package WordPress
   6   * @subpackage List_Table
   7   * @since 3.1.0
   8   * @access private
   9   */
  10  class WP_MS_Users_List_Table extends WP_List_Table {
  11  
  12  	function ajax_user_can() {
  13          return current_user_can( 'manage_network_users' );
  14      }
  15  
  16  	function prepare_items() {
  17          global $usersearch, $role, $wpdb, $mode;
  18  
  19          $usersearch = isset( $_REQUEST['s'] ) ? $_REQUEST['s'] : '';
  20  
  21          $users_per_page = $this->get_items_per_page( 'users_network_per_page' );
  22  
  23          $role = isset( $_REQUEST['role'] ) ? $_REQUEST['role'] : '';
  24  
  25          $paged = $this->get_pagenum();
  26  
  27          $args = array(
  28              'number' => $users_per_page,
  29              'offset' => ( $paged-1 ) * $users_per_page,
  30              'search' => $usersearch,
  31              'blog_id' => 0,
  32              'fields' => 'all_with_meta'
  33          );
  34  
  35          if ( wp_is_large_network( 'users' ) )
  36              $args['search'] = ltrim( $args['search'], '*' );
  37  
  38          if ( $role == 'super' ) {
  39              $logins = implode( "', '", get_super_admins() );
  40              $args['include'] = $wpdb->get_col( "SELECT ID FROM $wpdb->users WHERE user_login IN ('$logins')" );
  41          }
  42  
  43          // If the network is large and a search is not being performed, show only the latest users with no paging in order
  44          // to avoid expensive count queries.
  45          if ( !$usersearch && wp_is_large_network( 'users' ) ) {
  46              if ( !isset($_REQUEST['orderby']) )
  47                  $_GET['orderby'] = $_REQUEST['orderby'] = 'id';
  48              if ( !isset($_REQUEST['order']) )
  49                  $_GET['order'] = $_REQUEST['order'] = 'DESC';
  50              $args['count_total'] = false;
  51          }
  52  
  53          if ( isset( $_REQUEST['orderby'] ) )
  54              $args['orderby'] = $_REQUEST['orderby'];
  55  
  56          if ( isset( $_REQUEST['order'] ) )
  57              $args['order'] = $_REQUEST['order'];
  58  
  59          $mode = empty( $_REQUEST['mode'] ) ? 'list' : $_REQUEST['mode'];
  60  
  61          // Query the user IDs for this page
  62          $wp_user_search = new WP_User_Query( $args );
  63  
  64          $this->items = $wp_user_search->get_results();
  65  
  66          $this->set_pagination_args( array(
  67              'total_items' => $wp_user_search->get_total(),
  68              'per_page' => $users_per_page,
  69          ) );
  70      }
  71  
  72  	function get_bulk_actions() {
  73          $actions = array();
  74          if ( current_user_can( 'delete_users' ) )
  75              $actions['delete'] = __( 'Delete' );
  76          $actions['spam'] = _x( 'Mark as Spam', 'user' );
  77          $actions['notspam'] = _x( 'Not Spam', 'user' );
  78  
  79          return $actions;
  80      }
  81  
  82  	function no_items() {
  83          _e( 'No users found.' );
  84      }
  85  
  86  	function get_views() {
  87          global $wp_roles, $role;
  88  
  89          $total_users = get_user_count();
  90          $super_admins = get_super_admins();
  91          $total_admins = count( $super_admins );
  92  
  93          $current_role = false;
  94          $class = $role != 'super' ? ' class="current"' : '';
  95          $role_links = array();
  96          $role_links['all'] = "<a href='" . network_admin_url('users.php') . "'$class>" . sprintf( _nx( 'All <span class="count">(%s)</span>', 'All <span class="count">(%s)</span>', $total_users, 'users' ), number_format_i18n( $total_users ) ) . '</a>';
  97          $class = $role == 'super' ? ' class="current"' : '';
  98          $role_links['super'] = "<a href='" . network_admin_url('users.php?role=super') . "'$class>" . sprintf( _n( 'Super Admin <span class="count">(%s)</span>', 'Super Admins <span class="count">(%s)</span>', $total_admins ), number_format_i18n( $total_admins ) ) . '</a>';
  99  
 100          return $role_links;
 101      }
 102  
 103  	function pagination( $which ) {
 104          global $mode;
 105  
 106          parent::pagination ( $which );
 107  
 108          if ( 'top' == $which )
 109              $this->view_switcher( $mode );
 110      }
 111  
 112  	function get_columns() {
 113          $users_columns = array(
 114              'cb'         => '<input type="checkbox" />',
 115              'username'   => __( 'Username' ),
 116              'name'       => __( 'Name' ),
 117              'email'      => __( 'E-mail' ),
 118              'registered' => _x( 'Registered', 'user' ),
 119              'blogs'      => __( 'Sites' )
 120          );
 121          $users_columns = apply_filters( 'wpmu_users_columns', $users_columns );
 122  
 123          return $users_columns;
 124      }
 125  
 126  	function get_sortable_columns() {
 127          return array(
 128              'username'   => 'login',
 129              'name'       => 'name',
 130              'email'      => 'email',
 131              'registered' => 'id',
 132          );
 133      }
 134  
 135  	function display_rows() {
 136          global $current_site, $mode;
 137  
 138          $alt = '';
 139          $super_admins = get_super_admins();
 140          foreach ( $this->items as $user ) {
 141              $alt = ( 'alternate' == $alt ) ? '' : 'alternate';
 142  
 143              $status_list = array( 'spam' => 'site-spammed', 'deleted' => 'site-deleted' );
 144  
 145              foreach ( $status_list as $status => $col ) {
 146                  if ( $user->$status )
 147                      $alt .= " $col";
 148              }
 149  
 150              ?>
 151              <tr class="<?php echo $alt; ?>">
 152              <?php
 153  
 154              list( $columns, $hidden ) = $this->get_column_info();
 155  
 156              foreach ( $columns as $column_name => $column_display_name ) :
 157                  $class = "class='$column_name column-$column_name'";
 158  
 159                  $style = '';
 160                  if ( in_array( $column_name, $hidden ) )
 161                      $style = ' style="display:none;"';
 162  
 163                  $attributes = "$class$style";
 164  
 165                  switch ( $column_name ) {
 166                      case 'cb': ?>
 167                          <th scope="row" class="check-column">
 168                              <label class="screen-reader-text" for="blog_<?php echo $user->ID; ?>"><?php echo sprintf( __( 'Select %s' ), $user->user_login ); ?></label>
 169                              <input type="checkbox" id="blog_<?php echo $user->ID ?>" name="allusers[]" value="<?php echo esc_attr( $user->ID ) ?>" />
 170                          </th>
 171                      <?php
 172                      break;
 173  
 174                      case 'username':
 175                          $avatar    = get_avatar( $user->user_email, 32 );
 176                          $edit_link = esc_url( add_query_arg( 'wp_http_referer', urlencode( stripslashes( $_SERVER['REQUEST_URI'] ) ), get_edit_user_link( $user->ID ) ) );
 177  
 178                          echo "<td $attributes>"; ?>
 179                              <?php echo $avatar; ?><strong><a href="<?php echo $edit_link; ?>" class="edit"><?php echo stripslashes( $user->user_login ); ?></a><?php
 180                              if ( in_array( $user->user_login, $super_admins ) )
 181                                  echo ' - ' . __( 'Super Admin' );
 182                              ?></strong>
 183                              <br/>
 184                              <?php
 185                                  $actions = array();
 186                                  $actions['edit'] = '<a href="' . $edit_link . '">' . __( 'Edit' ) . '</a>';
 187  
 188                                  if ( current_user_can( 'delete_user', $user->ID ) && ! in_array( $user->user_login, $super_admins ) ) {
 189                                      $actions['delete'] = '<a href="' . $delete = esc_url( network_admin_url( add_query_arg( '_wp_http_referer', urlencode( stripslashes( $_SERVER['REQUEST_URI'] ) ), wp_nonce_url( 'users.php', 'deleteuser' ) . '&amp;action=deleteuser&amp;id=' . $user->ID ) ) ) . '" class="delete">' . __( 'Delete' ) . '</a>';
 190                                  }
 191  
 192                                  $actions = apply_filters( 'ms_user_row_actions', $actions, $user );
 193                                  echo $this->row_actions( $actions );
 194                              ?>
 195                          </td>
 196                      <?php
 197                      break;
 198  
 199                      case 'name':
 200                          echo "<td $attributes>$user->first_name $user->last_name</td>";
 201                      break;
 202  
 203                      case 'email':
 204                          echo "<td $attributes><a href='mailto:$user->user_email'>$user->user_email</a></td>";
 205                      break;
 206  
 207                      case 'registered':
 208                          if ( 'list' == $mode )
 209                              $date = 'Y/m/d';
 210                          else
 211                              $date = 'Y/m/d \<\b\r \/\> g:i:s a';
 212  
 213                          echo "<td $attributes>" . mysql2date( $date, $user->user_registered ) . "</td>";
 214                      break;
 215  
 216                      case 'blogs':
 217                          $blogs = get_blogs_of_user( $user->ID, true );
 218                          echo "<td $attributes>";
 219                              if ( is_array( $blogs ) ) {
 220                                  foreach ( (array) $blogs as $key => $val ) {
 221                                      if ( !can_edit_network( $val->site_id ) )
 222                                          continue;
 223  
 224                                      $path    = ( $val->path == '/' ) ? '' : $val->path;
 225                                      echo '<span class="site-' . $val->site_id . '" >';
 226                                      echo '<a href="'. esc_url( network_admin_url( 'site-info.php?id=' . $val->userblog_id ) ) .'">' . str_replace( '.' . $current_site->domain, '', $val->domain . $path ) . '</a>';
 227                                      echo ' <small class="row-actions">';
 228                                      $actions = array();
 229                                      $actions['edit'] = '<a href="'. esc_url( network_admin_url( 'site-info.php?id=' . $val->userblog_id ) ) .'">' . __( 'Edit' ) . '</a>';
 230  
 231                                      $class = '';
 232                                      if ( get_blog_status( $val->userblog_id, 'spam' ) == 1 )
 233                                          $class .= 'site-spammed ';
 234                                      if ( get_blog_status( $val->userblog_id, 'mature' ) == 1 )
 235                                          $class .= 'site-mature ';
 236                                      if ( get_blog_status( $val->userblog_id, 'deleted' ) == 1 )
 237                                          $class .= 'site-deleted ';
 238                                      if ( get_blog_status( $val->userblog_id, 'archived' ) == 1 )
 239                                          $class .= 'site-archived ';
 240  
 241                                      $actions['view'] = '<a class="' . $class . '" href="' . esc_url( get_home_url( $val->userblog_id ) ) . '">' . __( 'View' ) . '</a>';
 242  
 243                                      $actions = apply_filters('ms_user_list_site_actions', $actions, $val->userblog_id);
 244  
 245                                      $i=0;
 246                                      $action_count = count( $actions );
 247                                      foreach ( $actions as $action => $link ) {
 248                                          ++$i;
 249                                          ( $i == $action_count ) ? $sep = '' : $sep = ' | ';
 250                                          echo "<span class='$action'>$link$sep</span>";
 251                                      }
 252                                      echo '</small></span><br/>';
 253                                  }
 254                              }
 255                              ?>
 256                          </td>
 257                      <?php
 258                      break;
 259  
 260                      default:
 261                          echo "<td $attributes>";
 262                          echo apply_filters( 'manage_users_custom_column', '', $column_name, $user->ID );
 263                          echo "</td>";
 264                      break;
 265                  }
 266              endforeach
 267              ?>
 268              </tr>
 269              <?php
 270          }
 271      }
 272  }

title

Description

title

Description

title

Description

title

title

Body