WordPress PHP Cross Reference Web Logs

Source: /wp-admin/network/users.php - 299 lines - 10803 bytes - Summary - Text - Print

Description: Multisite users administration panel.

   1  <?php
   2  /**
   3   * Multisite users administration panel.
   4   *
   5   * @package WordPress
   6   * @subpackage Multisite
   7   * @since 3.0.0
   8   */
   9  
  10  /** Load WordPress Administration Bootstrap */
  11  require_once ( './admin.php' );
  12  
  13  if ( ! is_multisite() )
  14      wp_die( __( 'Multisite support is not enabled.' ) );
  15  
  16  if ( ! current_user_can( 'manage_network_users' ) )
  17      wp_die( __( 'You do not have permission to access this page.' ) );
  18  
  19  function confirm_delete_users( $users ) {
  20      $current_user = wp_get_current_user();
  21      if ( !is_array( $users ) )
  22          return false;
  23  
  24      screen_icon();
  25      ?>
  26      <h2><?php esc_html_e( 'Users' ); ?></h2>
  27      <p><?php _e( 'Transfer or delete posts before deleting users.' ); ?></p>
  28      <form action="users.php?action=dodelete" method="post">
  29      <input type="hidden" name="dodelete" />
  30      <?php
  31      wp_nonce_field( 'ms-users-delete' );
  32      $site_admins = get_super_admins();
  33      $admin_out = "<option value='$current_user->ID'>$current_user->user_login</option>";
  34  
  35      foreach ( ( $allusers = (array) $_POST['allusers'] ) as $key => $val ) {
  36          if ( $val != '' && $val != '0' ) {
  37              $delete_user = get_userdata( $val );
  38  
  39              if ( ! current_user_can( 'delete_user', $delete_user->ID ) )
  40                  wp_die( sprintf( __( 'Warning! User %s cannot be deleted.' ), $delete_user->user_login ) );
  41  
  42              if ( in_array( $delete_user->user_login, $site_admins ) )
  43                  wp_die( sprintf( __( 'Warning! User cannot be deleted. The user %s is a network administrator.' ), $delete_user->user_login ) );
  44  
  45              echo "<input type='hidden' name='user[]' value='{$val}'/>\n";
  46              $blogs = get_blogs_of_user( $val, true );
  47  
  48              if ( !empty( $blogs ) ) {
  49                  ?>
  50                  <br /><fieldset><p><legend><?php printf( __( "What should be done with posts owned by <em>%s</em>?" ), $delete_user->user_login ); ?></legend></p>
  51                  <?php
  52                  foreach ( (array) $blogs as $key => $details ) {
  53                      $blog_users = get_users( array( 'blog_id' => $details->userblog_id ) );
  54                      if ( is_array( $blog_users ) && !empty( $blog_users ) ) {
  55                          $user_site = "<a href='" . esc_url( get_home_url( $details->userblog_id ) ) . "'>{$details->blogname}</a>";
  56                          $user_dropdown = "<select name='blog[$val][{$key}]'>";
  57                          $user_list = '';
  58                          foreach ( $blog_users as $user ) {
  59                              if ( ! in_array( $user->ID, $allusers ) )
  60                                  $user_list .= "<option value='{$user->ID}'>{$user->user_login}</option>";
  61                          }
  62                          if ( '' == $user_list )
  63                              $user_list = $admin_out;
  64                          $user_dropdown .= $user_list;
  65                          $user_dropdown .= "</select>\n";
  66                          ?>
  67                          <ul style="list-style:none;">
  68                              <li><?php printf( __( 'Site: %s' ), $user_site ); ?></li>
  69                              <li><label><input type="radio" id="delete_option0" name="delete[<?php echo $details->userblog_id . '][' . $delete_user->ID ?>]" value="delete" checked="checked" />
  70                              <?php _e( 'Delete all posts.' ); ?></label></li>
  71                              <li><label><input type="radio" id="delete_option1" name="delete[<?php echo $details->userblog_id . '][' . $delete_user->ID ?>]" value="reassign" />
  72                              <?php echo __( 'Attribute all posts to:' ) . '</label>' . $user_dropdown; ?></li>
  73                          </ul>
  74                          <?php
  75                      }
  76                  }
  77                  echo "</fieldset>";
  78              }
  79          }
  80      }
  81  
  82      submit_button( __('Confirm Deletion'), 'delete' );
  83      ?>
  84      </form>
  85      <?php
  86      return true;
  87  }
  88  
  89  if ( isset( $_GET['action'] ) ) {
  90      do_action( 'wpmuadminedit' , '' );
  91  
  92      switch ( $_GET['action'] ) {
  93          case 'deleteuser':
  94              if ( ! current_user_can( 'manage_network_users' ) )
  95                  wp_die( __( 'You do not have permission to access this page.' ) );
  96  
  97              check_admin_referer( 'deleteuser' );
  98  
  99              $id = intval( $_GET['id'] );
 100              if ( $id != '0' && $id != '1' ) {
 101                  $_POST['allusers'] = array( $id ); // confirm_delete_users() can only handle with arrays
 102                  $title = __( 'Users' );
 103                  $parent_file = 'users.php';
 104                  require_once ( '../admin-header.php' );
 105                  echo '<div class="wrap">';
 106                  confirm_delete_users( $_POST['allusers'] );
 107                  echo '</div>';
 108                  require_once ( '../admin-footer.php' );
 109                } else {
 110                  wp_redirect( network_admin_url( 'users.php' ) );
 111              }
 112              exit();
 113          break;
 114  
 115          case 'allusers':
 116              if ( !current_user_can( 'manage_network_users' ) )
 117                  wp_die( __( 'You do not have permission to access this page.' ) );
 118  
 119              if ( ( isset( $_POST['action']) || isset($_POST['action2'] ) ) && isset( $_POST['allusers'] ) ) {
 120                  check_admin_referer( 'bulk-users-network' );
 121  
 122                  $doaction = $_POST['action'] != -1 ? $_POST['action'] : $_POST['action2'];
 123                  $userfunction = '';
 124  
 125                  foreach ( (array) $_POST['allusers'] as $key => $val ) {
 126                      if ( !empty( $val ) ) {
 127                          switch ( $doaction ) {
 128                              case 'delete':
 129                                  if ( ! current_user_can( 'delete_users' ) )
 130                                      wp_die( __( 'You do not have permission to access this page.' ) );
 131                                  $title = __( 'Users' );
 132                                  $parent_file = 'users.php';
 133                                  require_once ( '../admin-header.php' );
 134                                  echo '<div class="wrap">';
 135                                  confirm_delete_users( $_POST['allusers'] );
 136                                  echo '</div>';
 137                                  require_once ( '../admin-footer.php' );
 138                                  exit();
 139                              break;
 140  
 141                              case 'spam':
 142                                  $user = get_userdata( $val );
 143                                  if ( is_super_admin( $user->ID ) )
 144                                      wp_die( sprintf( __( 'Warning! User cannot be modified. The user %s is a network administrator.' ), esc_html( $user->user_login ) ) );
 145  
 146                                  $userfunction = 'all_spam';
 147                                  $blogs = get_blogs_of_user( $val, true );
 148                                  foreach ( (array) $blogs as $key => $details ) {
 149                                      if ( $details->userblog_id != $current_site->blog_id ) // main blog not a spam !
 150                                          update_blog_status( $details->userblog_id, 'spam', '1' );
 151                                  }
 152                                  update_user_status( $val, 'spam', '1' );
 153                              break;
 154  
 155                              case 'notspam':
 156                                  $userfunction = 'all_notspam';
 157                                  $blogs = get_blogs_of_user( $val, true );
 158                                  foreach ( (array) $blogs as $key => $details )
 159                                      update_blog_status( $details->userblog_id, 'spam', '0' );
 160  
 161                                  update_user_status( $val, 'spam', '0' );
 162                              break;
 163                          }
 164                      }
 165                  }
 166  
 167                  wp_safe_redirect( add_query_arg( array( 'updated' => 'true', 'action' => $userfunction ), wp_get_referer() ) );
 168              } else {
 169                  $location = network_admin_url( 'users.php' );
 170  
 171                  if ( ! empty( $_REQUEST['paged'] ) )
 172                      $location = add_query_arg( 'paged', (int) $_REQUEST['paged'], $location );
 173                  wp_redirect( $location );
 174              }
 175              exit();
 176          break;
 177  
 178          case 'dodelete':
 179              check_admin_referer( 'ms-users-delete' );
 180              if ( ! ( current_user_can( 'manage_network_users' ) && current_user_can( 'delete_users' ) ) )
 181                  wp_die( __( 'You do not have permission to access this page.' ) );
 182  
 183              if ( ! empty( $_POST['blog'] ) && is_array( $_POST['blog'] ) ) {
 184                  foreach ( $_POST['blog'] as $id => $users ) {
 185                      foreach ( $users as $blogid => $user_id ) {
 186                          if ( ! current_user_can( 'delete_user', $id ) )
 187                              continue;
 188  
 189                          if ( ! empty( $_POST['delete'] ) && 'reassign' == $_POST['delete'][$blogid][$id] )
 190                              remove_user_from_blog( $id, $blogid, $user_id );
 191                          else
 192                              remove_user_from_blog( $id, $blogid );
 193                      }
 194                  }
 195              }
 196              $i = 0;
 197              if ( is_array( $_POST['user'] ) && ! empty( $_POST['user'] ) )
 198                  foreach( $_POST['user'] as $id ) {
 199                      if ( ! current_user_can( 'delete_user', $id ) )
 200                          continue;
 201                      wpmu_delete_user( $id );
 202                      $i++;
 203                  }
 204  
 205              if ( $i == 1 )
 206                  $deletefunction = 'delete';
 207              else
 208                  $deletefunction = 'all_delete';
 209  
 210              wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => $deletefunction ), network_admin_url( 'users.php' ) ) );
 211              exit();
 212          break;
 213      }
 214  }
 215  
 216  $wp_list_table = _get_list_table('WP_MS_Users_List_Table');
 217  $pagenum = $wp_list_table->get_pagenum();
 218  $wp_list_table->prepare_items();
 219  $total_pages = $wp_list_table->get_pagination_arg( 'total_pages' );
 220  
 221  if ( $pagenum > $total_pages && $total_pages > 0 ) {
 222      wp_redirect( add_query_arg( 'paged', $total_pages ) );
 223      exit;
 224  }
 225  $title = __( 'Users' );
 226  $parent_file = 'users.php';
 227  
 228  add_screen_option( 'per_page', array('label' => _x( 'Users', 'users per page (screen options)' )) );
 229  
 230  get_current_screen()->add_help_tab( array(
 231      'id'      => 'overview',
 232      'title'   => __('Overview'),
 233      'content' =>
 234          '<p>' . __('This table shows all users across the network and the sites to which they are assigned.') . '</p>' .
 235          '<p>' . __('Hover over any user on the list to make the edit links appear. The Edit link on the left will take you to his or her Edit User profile page; the Edit link on the right by any site name goes to an Edit Site screen for that site.') . '</p>' .
 236          '<p>' . __('You can also go to the user&#8217;s profile page by clicking on the individual username.') . '</p>' .
 237          '<p>' . __('You can sort the table by clicking on any of the bold headings and switch between list and excerpt views by using the icons in the upper right.') . '</p>' .
 238          '<p>' . __('The bulk action will permanently delete selected users, or mark/unmark those selected as spam. Spam users will have posts removed and will be unable to sign up again with the same email addresses.') . '</p>' .
 239          '<p>' . __('You can make an existing user an additional super admin by going to the Edit User profile page and checking the box to grant that privilege.') . '</p>'
 240  ) );
 241  
 242  get_current_screen()->set_help_sidebar(
 243      '<p><strong>' . __('For more information:') . '</strong></p>' .
 244      '<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Users_Screen" target="_blank">Documentation on Network Users</a>') . '</p>' .
 245      '<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
 246  );
 247  
 248  require_once ( '../admin-header.php' );
 249  
 250  if ( isset( $_REQUEST['updated'] ) && $_REQUEST['updated'] == 'true' && ! empty( $_REQUEST['action'] ) ) {
 251      ?>
 252      <div id="message" class="updated"><p>
 253          <?php
 254          switch ( $_REQUEST['action'] ) {
 255              case 'delete':
 256                  _e( 'User deleted.' );
 257              break;
 258              case 'all_spam':
 259                  _e( 'Users marked as spam.' );
 260              break;
 261              case 'all_notspam':
 262                  _e( 'Users removed from spam.' );
 263              break;
 264              case 'all_delete':
 265                  _e( 'Users deleted.' );
 266              break;
 267              case 'add':
 268                  _e( 'User added.' );
 269              break;
 270          }
 271          ?>
 272      </p></div>
 273      <?php
 274  }
 275      ?>
 276  <div class="wrap">
 277      <?php screen_icon(); ?>
 278      <h2><?php esc_html_e( 'Users' );
 279      if ( current_user_can( 'create_users') ) : ?>
 280          <a href="<?php echo network_admin_url('user-new.php'); ?>" class="add-new-h2"><?php echo esc_html_x( 'Add New', 'user' ); ?></a><?php
 281      endif;
 282  
 283      if ( !empty( $usersearch ) )
 284      printf( '<span class="subtitle">' . __( 'Search results for &#8220;%s&#8221;' ) . '</span>', esc_html( $usersearch ) );
 285      ?>
 286      </h2>
 287  
 288      <?php $wp_list_table->views(); ?>
 289  
 290      <form action="" method="get" class="search-form">
 291          <?php $wp_list_table->search_box( __( 'Search Users' ), 'all-user' ); ?>
 292      </form>
 293  
 294      <form id="form-user-list" action='users.php?action=allusers' method='post'>
 295          <?php $wp_list_table->display(); ?>
 296      </form>
 297  </div>
 298  
 299  <?php require_once ( '../admin-footer.php' ); ?>

title

Description

title

Description

title

Description

title

title

Body