[ Root ] [ Search ] [ Index ]

PHP Cross Reference of WordPress 3.0.1

Provided by Yoast

title

Body

[close]

/wp-admin/ -> ms-edit.php (source)

   1  <?php
   2  /**
   3   * Action handler for Multisite administration panels.
   4   *
   5   * @package WordPress
   6   * @subpackage Multisite
   7   * @since 3.0.0
   8   */
   9  
  10  require_once ( './admin.php' );
  11  
  12  if ( ! is_multisite() )
  13      wp_die( __( 'Multisite support is not enabled.' ) );
  14  
  15  if ( empty( $_GET['action'] ) )
  16      wp_redirect( admin_url( 'ms-admin.php' ) );
  17  
  18  do_action( 'wpmuadminedit' , '');
  19  
  20  if ( isset( $_GET['id' ]) )
  21      $id = intval( $_GET['id'] );
  22  elseif ( isset( $_POST['id'] ) )
  23      $id = intval( $_POST['id'] );
  24  
  25  switch ( $_GET['action'] ) {
  26      case 'siteoptions':
  27          check_admin_referer( 'siteoptions' );
  28          if ( ! current_user_can( 'manage_network_options' ) )
  29              wp_die( __( 'You do not have permission to access this page.' ) );
  30  
  31          if ( empty( $_POST ) )
  32              wp_die( sprintf( __( 'You probably need to go back to the <a href="%s">options page</a>.', esc_url( admin_url( 'ms-options.php' ) ) ) ) );
  33  
  34          if ( isset($_POST['WPLANG']) && ( '' === $_POST['WPLANG'] || in_array( $_POST['WPLANG'], get_available_languages() ) ) )
  35              update_site_option( 'WPLANG', $_POST['WPLANG'] );
  36  
  37          if ( is_email( $_POST['admin_email'] ) )
  38              update_site_option( 'admin_email', $_POST['admin_email'] );
  39  
  40          $illegal_names = split( ' ', $_POST['illegal_names'] );
  41          foreach ( (array) $illegal_names as $name ) {
  42              $name = trim( $name );
  43              if ( $name != '' )
  44                  $names[] = trim( $name );
  45          }
  46          update_site_option( 'illegal_names', $names );
  47  
  48          if ( $_POST['limited_email_domains'] != '' ) {
  49              $limited_email_domains = str_replace( ' ', "\n", $_POST['limited_email_domains'] );
  50              $limited_email_domains = split( "\n", stripslashes( $limited_email_domains ) );
  51              $limited_email = array();
  52              foreach ( (array) $limited_email_domains as $domain ) {
  53                      $domain = trim( $domain );
  54                  if ( ! preg_match( '/(--|\.\.)/', $domain ) && preg_match( '|^([a-zA-Z0-9-\.])+$|', $domain ) )
  55                      $limited_email[] = trim( $domain );
  56              }
  57              update_site_option( 'limited_email_domains', $limited_email );
  58          } else {
  59              update_site_option( 'limited_email_domains', '' );
  60          }
  61  
  62          if ( $_POST['banned_email_domains'] != '' ) {
  63              $banned_email_domains = split( "\n", stripslashes( $_POST['banned_email_domains'] ) );
  64              $banned = array();
  65              foreach ( (array) $banned_email_domains as $domain ) {
  66                  $domain = trim( $domain );
  67                  if ( ! preg_match( '/(--|\.\.)/', $domain ) && preg_match( '|^([a-zA-Z0-9-\.])+$|', $domain ) )
  68                      $banned[] = trim( $domain );
  69              }
  70              update_site_option( 'banned_email_domains', $banned );
  71          } else {
  72              update_site_option( 'banned_email_domains', '' );
  73          }
  74          update_site_option( 'default_user_role', $_POST['default_user_role'] );
  75          if ( trim( $_POST['dashboard_blog_orig'] ) == '' )
  76              $_POST['dashboard_blog_orig'] = $current_site->blog_id;
  77          if ( trim( $_POST['dashboard_blog'] ) == '' ) {
  78              $_POST['dashboard_blog'] = $current_site->blog_id;
  79              $dashboard_blog_id = $current_site->blog_id;
  80          } elseif ( ! preg_match( '/(--|\.)/', $_POST['dashboard_blog'] ) && preg_match( '|^([a-zA-Z0-9-\.])+$|', $_POST['dashboard_blog'] ) ) {
  81              $dashboard_blog = $_POST['dashboard_blog'];
  82              $blog_details = get_blog_details( $dashboard_blog );
  83              if ( false === $blog_details ) {
  84                  if ( is_numeric( $dashboard_blog ) )
  85                      wp_die( __( 'A dashboard site referenced by ID must already exist' ) );
  86                  if ( is_subdomain_install() ) {
  87                      $domain = $dashboard_blog . '.' . $current_site->domain;
  88                      $path = $current_site->path;
  89                  } else {
  90                      $domain = $current_site->domain;
  91                      $path = trailingslashit( $current_site->path . $dashboard_blog );
  92                  }
  93                  $wpdb->hide_errors();
  94                  $dashboard_blog_id = wpmu_create_blog( $domain, $path, __( 'My Dashboard' ), $current_user->id , array( 'public' => 0 ), $current_site->id );
  95                  $wpdb->show_errors();
  96              } else {
  97                  $dashboard_blog_id = $blog_details->blog_id;
  98              }
  99          }
 100          if ( is_wp_error( $dashboard_blog_id ) )
 101              wp_die( __( 'Problem creating dashboard site: ' ) . $dashboard_blog_id->get_error_message() );
 102          if ( $_POST['dashboard_blog_orig'] != $_POST['dashboard_blog'] ) {
 103              $users = get_users_of_blog( get_site_option( 'dashboard_blog' ) );
 104              $move_users = array();
 105              foreach ( (array)$users as $user ) {
 106                  $user_meta_value = unserialize( $user->meta_value );
 107                  if ( is_array( $user_meta_value ) && array_pop( $var_by_ref = array_keys( $user_meta_value ) ) == 'subscriber' )
 108                      $move_users[] = $user->user_id;
 109              }
 110              if ( false == empty( $move_users ) ) {
 111                  foreach ( (array)$move_users as $user_id ) {
 112                      remove_user_from_blog($user_id, get_site_option( 'dashboard_blog' ) );
 113                      add_user_to_blog( $dashboard_blog_id, $user_id, get_site_option( 'default_user_role', 'subscriber' ) );
 114                      update_user_meta( $user_id, 'primary_blog', $dashboard_blog_id );
 115                  }
 116              }
 117          }
 118          update_site_option( 'dashboard_blog', $dashboard_blog_id );
 119  
 120          $options = array( 'registrationnotification', 'registration', 'add_new_users', 'menu_items', 'mu_media_buttons', 'upload_space_check_disabled', 'blog_upload_space', 'upload_filetypes', 'site_name', 'first_post', 'first_page', 'first_comment', 'first_comment_url', 'first_comment_author', 'welcome_email', 'welcome_user_email', 'fileupload_maxk', 'admin_notice_feed', 'global_terms_enabled' );
 121          $checked_options = array( 'mu_media_buttons' => array(), 'menu_items' => array(), 'registrationnotification' => 'no', 'upload_space_check_disabled' => 1, 'add_new_users' => 0 );
 122          foreach ( $checked_options as $option_name => $option_unchecked_value ) {
 123              if ( ! isset( $_POST[$option_name] ) )
 124                  $_POST[$option_name] = $option_unchecked_value;
 125          }
 126          foreach ( $options as $option_name ) {
 127              if ( ! isset($_POST[$option_name]) )
 128                  continue;
 129              $value = stripslashes_deep( $_POST[$option_name] );
 130              update_site_option( $option_name, $value );
 131          }
 132  
 133          // Update more options here
 134          do_action( 'update_wpmu_options' );
 135  
 136          wp_redirect( add_query_arg( 'updated', 'true', admin_url( 'ms-options.php' ) ) );
 137          exit();
 138      break;
 139      case 'addblog':
 140          check_admin_referer( 'add-blog', '_wpnonce_add-blog' );
 141  
 142          if ( ! current_user_can( 'manage_sites' ) )
 143              wp_die( __( 'You do not have permission to access this page.' ) );
 144  
 145          if ( is_array( $_POST['blog'] ) == false )
 146              wp_die(  __( 'Can&#8217;t create an empty site.' ) );
 147          $blog = $_POST['blog'];
 148          $domain = '';
 149          if ( ! preg_match( '/(--)/', $blog['domain'] ) && preg_match( '|^([a-zA-Z0-9-])+$|', $blog['domain'] ) )
 150              $domain = strtolower( $blog['domain'] );
 151  
 152          // If not a subdomain install, make sure the domain isn't a reserved word
 153          if ( ! is_subdomain_install() ) {
 154              $subdirectory_reserved_names = apply_filters( 'subdirectory_reserved_names', array( 'page', 'comments', 'blog', 'files', 'feed' ) );
 155              if ( in_array( $domain, $subdirectory_reserved_names ) )
 156                  wp_die( sprintf( __('The following words are reserved for use by WordPress functions and cannot be used as blog names: <code>%s</code>' ), implode( '</code>, <code>', $subdirectory_reserved_names ) ) );
 157          }
 158  
 159          $email = sanitize_email( $blog['email'] );
 160          $title = $blog['title'];
 161  
 162          if ( empty( $domain ) )
 163              wp_die( __( 'Missing or invalid site address.' ) );
 164          if ( empty( $email ) )
 165              wp_die( __( 'Missing email address.' ) );
 166          if ( !is_email( $email ) )
 167              wp_die( __( 'Invalid email address.' ) );
 168  
 169          if ( is_subdomain_install() ) {
 170              $newdomain = $domain . '.' . preg_replace( '|^www\.|', '', $current_site->domain );
 171              $path = $base;
 172          } else {
 173              $newdomain = $current_site->domain;
 174              $path = $base . $domain . '/';
 175          }
 176  
 177          $password = 'N/A';
 178          $user_id = email_exists($email);
 179          if ( !$user_id ) { // Create a new user with a random password
 180              $password = wp_generate_password();
 181              $user_id = wpmu_create_user( $domain, $password, $email );
 182              if ( false == $user_id )
 183                  wp_die( __( 'There was an error creating the user.' ) );
 184              else
 185                  wp_new_user_notification( $user_id, $password );
 186          }
 187  
 188          $wpdb->hide_errors();
 189          $id = wpmu_create_blog( $newdomain, $path, $title, $user_id , array( 'public' => 1 ), $current_site->id );
 190          $wpdb->show_errors();
 191          if ( !is_wp_error( $id ) ) {
 192              $dashboard_blog = get_dashboard_blog();
 193              if ( !is_super_admin( $user_id ) && get_user_option( 'primary_blog', $user_id ) == $dashboard_blog->blog_id )
 194                  update_user_option( $user_id, 'primary_blog', $id, true );
 195              $content_mail = sprintf( __( "New site created by %1s\n\nAddress: http://%2s\nName: %3s"), $current_user->user_login , $newdomain . $path, stripslashes( $title ) );
 196              wp_mail( get_site_option('admin_email'),  sprintf( __( '[%s] New Site Created' ), $current_site->site_name ), $content_mail, 'From: "Site Admin" <' . get_site_option( 'admin_email' ) . '>' );
 197              wpmu_welcome_notification( $id, $user_id, $password, $title, array( 'public' => 1 ) );
 198              wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'add-blog' ), wp_get_referer() ) );
 199              exit();
 200          } else {
 201              wp_die( $id->get_error_message() );
 202          }
 203      break;
 204  
 205      case 'updateblog':
 206          check_admin_referer( 'editblog' );
 207          if ( ! current_user_can( 'manage_sites' ) )
 208              wp_die( __( 'You do not have permission to access this page.' ) );
 209  
 210          if ( empty( $_POST ) )
 211              wp_die( sprintf( __( 'You probably need to go back to the <a href="%s">sites page</a>', esc_url( admin_url( 'ms-sites.php' ) ) ) ) );
 212  
 213          switch_to_blog( $id );
 214  
 215          // themes
 216          $allowedthemes = array();
 217          if ( isset($_POST['theme']) && is_array( $_POST['theme'] ) ) {
 218              foreach ( $_POST['theme'] as $theme => $val ) {
 219                  if ( 'on' == $val )
 220                      $allowedthemes[$theme] = true;
 221              }
 222          }
 223          update_option( 'allowedthemes',  $allowedthemes );
 224  
 225          // options
 226          if ( is_array( $_POST['option'] ) ) {
 227              $c = 1;
 228              $count = count( $_POST['option'] );
 229              $skip_options = array( 'allowedthemes' ); // Don't update these options since they are handled elsewhere in the form.
 230              foreach ( (array) $_POST['option'] as $key => $val ) {
 231                  if ( $key === 0 || is_array( $val ) || in_array($key, $skip_options) )
 232                      continue; // Avoids "0 is a protected WP option and may not be modified" error when edit blog options
 233                  if ( $c == $count )
 234                      update_option( $key, stripslashes( $val ) );
 235                  else
 236                      update_option( $key, stripslashes( $val ), false ); // no need to refresh blog details yet
 237                  $c++;
 238              }
 239          }
 240  
 241          // home and siteurl
 242          if ( isset( $_POST['update_home_url'] ) && $_POST['update_home_url'] == 'update' ) {
 243              $blog_address = get_blogaddress_by_domain( $_POST['blog']['domain'], $_POST['blog']['path'] );
 244              if ( get_option( 'siteurl' ) !=  $blog_address )
 245                  update_option( 'siteurl', $blog_address );
 246  
 247              if ( get_option( 'home' ) != $blog_address )
 248                  update_option( 'home', $blog_address );
 249          }
 250  
 251          // rewrite rules can't be flushed during switch to blog
 252          delete_option( 'rewrite_rules' );
 253  
 254          // update blogs table
 255          $blog_data = stripslashes_deep( $_POST['blog'] );
 256          update_blog_details( $id, $blog_data );
 257  
 258          // get blog prefix
 259          $blog_prefix = $wpdb->get_blog_prefix( $id );
 260  
 261          // user roles
 262          if ( isset( $_POST['role'] ) && is_array( $_POST['role'] ) == true ) {
 263              $newroles = $_POST['role'];
 264  
 265              reset( $newroles );
 266              foreach ( (array) $newroles as $userid => $role ) {
 267                  $user = new WP_User( $userid );
 268                  if ( empty( $user->ID ) )
 269                      continue;
 270                  $user->for_blog( $id );
 271                  $user->set_role( $role );
 272              }
 273          }
 274  
 275          // remove user
 276          if ( isset( $_POST['blogusers'] ) && is_array( $_POST['blogusers'] ) ) {
 277              reset( $_POST['blogusers'] );
 278              foreach ( (array) $_POST['blogusers'] as $key => $val )
 279                  remove_user_from_blog( $key, $id );
 280          }
 281  
 282          // change password
 283          if ( isset( $_POST['user_password'] ) && is_array( $_POST['user_password'] ) ) {
 284              reset( $_POST['user_password'] );
 285              $newroles = $_POST['role'];
 286              foreach ( (array) $_POST['user_password'] as $userid => $pass ) {
 287                  unset( $_POST['role'] );
 288                  $_POST['role'] = $newroles[ $userid ];
 289                  if ( $pass != '' ) {
 290                      $cap = $wpdb->get_var( $wpdb->prepare( "SELECT meta_value FROM {$wpdb->usermeta} WHERE user_id = %d AND meta_key = '{$blog_prefix}capabilities' AND meta_value = 'a:0:{}'", $userid ) );
 291                      $userdata = get_userdata($userid);
 292                      $_POST['pass1'] = $_POST['pass2'] = $pass;
 293                      $_POST['email'] = $userdata->user_email;
 294                      $_POST['rich_editing'] = $userdata->rich_editing;
 295                      edit_user( $userid );
 296                      if ( $cap == null )
 297                          $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->usermeta} WHERE user_id = %d AND meta_key = '{$blog_prefix}capabilities' AND meta_value = 'a:0:{}'", $userid ) );
 298                  }
 299              }
 300              unset( $_POST['role'] );
 301              $_POST['role'] = $newroles;
 302          }
 303  
 304          // add user
 305          if ( !empty( $_POST['newuser'] ) ) {
 306              $newuser = $_POST['newuser'];
 307              $userid = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM " . $wpdb->users . " WHERE user_login = %s", $newuser ) );
 308              if ( $userid ) {
 309                  $user = $wpdb->get_var( "SELECT user_id FROM " . $wpdb->usermeta . " WHERE user_id='$userid' AND meta_key='{$blog_prefix}capabilities'" );
 310                  if ( $user == false )
 311                      add_user_to_blog( $id, $userid, $_POST['new_role'] );
 312              }
 313          }
 314          do_action( 'wpmu_update_blog_options' );
 315          restore_current_blog();
 316          wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'editblog', 'id' => $id ), wp_get_referer() ) );
 317      break;
 318  
 319      case 'deleteblog':
 320          check_admin_referer('deleteblog');
 321          if ( ! current_user_can( 'manage_sites' ) )
 322              wp_die( __( 'You do not have permission to access this page.' ) );
 323  
 324          if ( $id != '0' && $id != $current_site->blog_id )
 325              wpmu_delete_blog( $id, true );
 326  
 327          wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'delete' ), wp_get_referer() ) );
 328          exit();
 329      break;
 330  
 331      case 'allblogs':
 332          if ( isset( $_POST['doaction']) || isset($_POST['doaction2'] ) ) {
 333              check_admin_referer( 'bulk-ms-sites', '_wpnonce_bulk-ms-sites' );
 334  
 335              if ( ! current_user_can( 'manage_sites' ) )
 336                  wp_die( __( 'You do not have permission to access this page.' ) );
 337  
 338              if ( $_GET['action'] != -1 || $_POST['action2'] != -1 )
 339                  $doaction = $_POST['action'] != -1 ? $_POST['action'] : $_POST['action2'];
 340  
 341  
 342              foreach ( (array) $_POST['allblogs'] as $key => $val ) {
 343                  if ( $val != '0' && $val != $current_site->blog_id ) {
 344                      switch ( $doaction ) {
 345                          case 'delete':
 346                              $blogfunction = 'all_delete';
 347                              wpmu_delete_blog( $val, true );
 348                          break;
 349  
 350                          case 'spam':
 351                              $blogfunction = 'all_spam';
 352                              update_blog_status( $val, 'spam', '1', 0 );
 353                              set_time_limit( 60 );
 354                          break;
 355  
 356                          case 'notspam':
 357                              $blogfunction = 'all_notspam';
 358                              update_blog_status( $val, 'spam', '0', 0 );
 359                              set_time_limit( 60 );
 360                          break;
 361                      }
 362                  } else {
 363                      wp_die( __( 'You are not allowed to change the current site.' ) );
 364                  }
 365              }
 366  
 367              wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => $blogfunction ), wp_get_referer() ) );
 368              exit();
 369          } else {
 370              wp_redirect( admin_url( 'ms-sites.php' ) );
 371          }
 372      break;
 373  
 374      case 'archiveblog':
 375          check_admin_referer( 'archiveblog' );
 376          if ( ! current_user_can( 'manage_sites' ) )
 377              wp_die( __( 'You do not have permission to access this page.' ) );
 378  
 379          update_blog_status( $id, 'archived', '1' );
 380          do_action( 'archive_blog', $id );
 381          wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'archive' ), wp_get_referer() ) );
 382          exit();
 383      break;
 384  
 385      case 'unarchiveblog':
 386          check_admin_referer( 'unarchiveblog' );
 387          if ( ! current_user_can( 'manage_sites' ) )
 388              wp_die( __( 'You do not have permission to access this page.' ) );
 389  
 390          do_action( 'unarchive_blog', $id );
 391          update_blog_status( $id, 'archived', '0' );
 392          wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'unarchive' ), wp_get_referer() ) );
 393          exit();
 394      break;
 395  
 396      case 'activateblog':
 397          check_admin_referer( 'activateblog' );
 398          if ( ! current_user_can( 'manage_sites' ) )
 399              wp_die( __( 'You do not have permission to access this page.' ) );
 400  
 401          update_blog_status( $id, 'deleted', '0' );
 402          do_action( 'activate_blog', $id );
 403          wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'activate' ), wp_get_referer() ) );
 404          exit();
 405      break;
 406  
 407      case 'deactivateblog':
 408          check_admin_referer( 'deactivateblog' );
 409          if ( ! current_user_can( 'manage_sites' ) )
 410              wp_die( __( 'You do not have permission to access this page.' ) );
 411  
 412          do_action( 'deactivate_blog', $id );
 413          update_blog_status( $id, 'deleted', '1' );
 414          wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'deactivate' ), wp_get_referer() ) );
 415          exit();
 416      break;
 417  
 418      case 'unspamblog':
 419          check_admin_referer( 'unspamblog' );
 420          if ( ! current_user_can( 'manage_sites' ) )
 421              wp_die( __( 'You do not have permission to access this page.' ) );
 422  
 423          update_blog_status( $id, 'spam', '0' );
 424          wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'unspam' ), wp_get_referer() ) );
 425          exit();
 426      break;
 427  
 428      case 'spamblog':
 429          check_admin_referer( 'spamblog' );
 430          if ( ! current_user_can( 'manage_sites' ) )
 431              wp_die( __( 'You do not have permission to access this page.' ) );
 432  
 433          update_blog_status( $id, 'spam', '1' );
 434          wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'spam' ), wp_get_referer() ) );
 435          exit();
 436      break;
 437  
 438      // Themes
 439      case 'updatethemes':
 440      if ( ! current_user_can( 'manage_network_themes' ) )
 441          wp_die( __( 'You do not have permission to access this page.' ) );
 442  
 443          if ( is_array( $_POST['theme'] ) ) {
 444              $themes = get_themes();
 445              reset( $themes );
 446              $allowed_themes = array();
 447              foreach ( (array) $themes as $key => $theme ) {
 448                  if ( $_POST['theme'][ esc_html( $theme['Stylesheet'] ) ] == 'enabled' )
 449                      $allowed_themes[ esc_html( $theme['Stylesheet'] ) ] = true;
 450              }
 451              update_site_option( 'allowedthemes', $allowed_themes );
 452          }
 453          wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'themes' ),  wp_get_referer() ) );
 454          exit();
 455      break;
 456  
 457      // Common
 458      case 'confirm':
 459          if ( !headers_sent() ) {
 460              nocache_headers();
 461              header( 'Content-Type: text/html; charset=utf-8' );
 462          }
 463          if ( $current_site->blog_id == $id )
 464              wp_die( __( 'You are not allowed to change the current site.' ) );
 465          ?>
 466          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 467          <html xmlns="http://www.w3.org/1999/xhtml" <?php if ( function_exists( 'language_attributes' ) ) language_attributes(); ?>>
 468              <head>
 469                  <title><?php _e( 'WordPress &rsaquo; Confirm your action' ); ?></title>
 470  
 471                  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 472                  <?php
 473                  wp_admin_css( 'install', true );
 474                  wp_admin_css( 'ie', true );
 475                  ?>
 476              </head>
 477              <body>
 478                  <h1 id="logo"><img alt="WordPress" src="<?php echo esc_attr( admin_url( 'images/wordpress-logo.png' ) ); ?>" /></h1>
 479                  <form action="ms-edit.php?action=<?php echo esc_attr( $_GET['action2'] ) ?>" method="post">
 480                      <input type="hidden" name="action" value="<?php echo esc_attr( $_GET['action2'] ) ?>" />
 481                      <input type="hidden" name="id" value="<?php echo esc_attr( $id ); ?>" />
 482                      <input type="hidden" name="_wp_http_referer" value="<?php echo esc_attr( wp_get_referer() ); ?>" />
 483                      <?php wp_nonce_field( $_GET['action2'], '_wpnonce', false ); ?>
 484                      <p><?php echo esc_html( stripslashes( $_GET['msg'] ) ); ?></p>
 485                      <p class="submit"><input class="button" type="submit" value="<?php _e( 'Confirm' ); ?>" /></p>
 486                  </form>
 487              </body>
 488          </html>
 489          <?php
 490      break;
 491  
 492      // Users
 493      case 'deleteuser':
 494          if ( ! current_user_can( 'manage_network_users' ) )
 495              wp_die( __( 'You do not have permission to access this page.' ) );
 496  
 497          check_admin_referer( 'deleteuser' );
 498  
 499          if ( $id != '0' && $id != '1' ) {
 500              $_POST['allusers'] = array( $id ); // confirm_delete_users() can only handle with arrays
 501              $title = __( 'Users' );
 502              $parent_file = 'ms-admin.php';
 503              require_once ( 'admin-header.php' );
 504              echo '<div class="wrap">';
 505              confirm_delete_users( $_POST['allusers'] );
 506              echo '</div>';
 507              require_once ( 'admin-footer.php' );
 508              exit();
 509          } else {
 510              wp_redirect( admin_url( 'ms-users.php' ) );
 511          }
 512      break;
 513  
 514      case 'allusers':
 515          if ( ! current_user_can( 'manage_network_users' ) )
 516              wp_die( __( 'You do not have permission to access this page.' ) );
 517  
 518          if ( isset( $_POST['doaction']) || isset($_POST['doaction2'] ) ) {
 519              check_admin_referer( 'bulk-ms-users', '_wpnonce_bulk-ms-users' );
 520  
 521              if ( $_GET['action'] != -1 || $_POST['action2'] != -1 )
 522                  $doaction = $_POST['action'] != -1 ? $_POST['action'] : $_POST['action2'];
 523  
 524              foreach ( (array) $_POST['allusers'] as $key => $val ) {
 525                  if ( !empty( $val ) ) {
 526                      switch ( $doaction ) {
 527                          case 'delete':
 528                              $title = __( 'Users' );
 529                              $parent_file = 'ms-admin.php';
 530                              require_once ( 'admin-header.php' );
 531                              echo '<div class="wrap">';
 532                              confirm_delete_users( $_POST['allusers'] );
 533                              echo '</div>';
 534                              require_once ( 'admin-footer.php' );
 535                              exit();
 536                             break;
 537  
 538                          case 'spam':
 539                              $user = new WP_User( $val );
 540                              if ( in_array( $user->user_login, get_super_admins() ) )
 541                                  wp_die( sprintf( __( 'Warning! User cannot be modified. The user %s is a network administrator.' ), esc_html( $user->user_login ) ) );
 542  
 543                              $userfunction = 'all_spam';
 544                              $blogs = get_blogs_of_user( $val, true );
 545                              foreach ( (array) $blogs as $key => $details ) {
 546                                  if ( $details->userblog_id != $current_site->blog_id ) // main blog not a spam !
 547                                      update_blog_status( $details->userblog_id, 'spam', '1' );
 548                              }
 549                              update_user_status( $val, 'spam', '1', 1 );
 550                          break;
 551  
 552                          case 'notspam':
 553                              $userfunction = 'all_notspam';
 554                              $blogs = get_blogs_of_user( $val, true );
 555                              foreach ( (array) $blogs as $key => $details )
 556                                  update_blog_status( $details->userblog_id, 'spam', '0' );
 557  
 558                              update_user_status( $val, 'spam', '0', 1 );
 559                          break;
 560                      }
 561                  }
 562              }
 563  
 564              wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => $userfunction ), wp_get_referer() ) );
 565              exit();
 566          } else {
 567              wp_redirect( admin_url( 'ms-users.php' ) );
 568          }
 569      break;
 570  
 571      case 'dodelete':
 572          check_admin_referer( 'ms-users-delete' );
 573          if ( ! current_user_can( 'manage_network_users' ) )
 574              wp_die( __( 'You do not have permission to access this page.' ) );
 575  
 576          if ( ! empty( $_POST['blog'] ) && is_array( $_POST['blog'] ) ) {
 577              foreach ( $_POST['blog'] as $id => $users ) {
 578                  foreach ( $users as $blogid => $user_id ) {
 579                      if ( ! empty( $_POST['delete'] ) && 'reassign' == $_POST['delete'][$blogid][$id] )
 580                          remove_user_from_blog( $id, $blogid, $user_id );
 581                      else
 582                          remove_user_from_blog( $id, $blogid );
 583                  }
 584              }
 585          }
 586          $i = 0;
 587          if ( is_array( $_POST['user'] ) && ! empty( $_POST['user'] ) )
 588              foreach( $_POST['user'] as $id ) {
 589                  wpmu_delete_user( $id );
 590                  $i++;
 591              }
 592  
 593          if ( $i == 1 )
 594              $deletefunction = 'delete';
 595          else
 596              $deletefunction = 'all_delete';
 597  
 598          wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => $deletefunction ), admin_url( 'ms-users.php' ) ) );
 599      break;
 600  
 601      case 'adduser':
 602          check_admin_referer( 'add-user', '_wpnonce_add-user' );
 603          if ( ! current_user_can( 'manage_network_users' ) )
 604              wp_die( __( 'You do not have permission to access this page.' ) );
 605  
 606          if ( is_array( $_POST['user'] ) == false )
 607              wp_die( __( 'Cannot create an empty user.' ) );
 608          $user = $_POST['user'];
 609          if ( empty($user['username']) && empty($user['email']) )
 610              wp_die( __( 'Missing username and email.' ) );
 611          elseif ( empty($user['username']) )
 612              wp_die( __( 'Missing username.' ) );
 613          elseif ( empty($user['email']) )
 614              wp_die( __( 'Missing email.' ) );
 615  
 616          $password = wp_generate_password();
 617          $user_id = wpmu_create_user( esc_html( strtolower( $user['username'] ) ), $password, esc_html( $user['email'] ) );
 618  
 619          if ( false == $user_id )
 620               wp_die( __( 'Duplicated username or email address.' ) );
 621          else
 622              wp_new_user_notification( $user_id, $password );
 623  
 624          if ( get_site_option( 'dashboard_blog' ) == false )
 625              add_user_to_blog( $current_site->blog_id, $user_id, get_site_option( 'default_user_role', 'subscriber' ) );
 626          else
 627              add_user_to_blog( get_site_option( 'dashboard_blog' ), $user_id, get_site_option( 'default_user_role', 'subscriber' ) );
 628  
 629          wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'add' ), wp_get_referer() ) );
 630          exit();
 631      break;
 632  
 633      default:
 634          wp_redirect( admin_url( 'ms-admin.php' ) );
 635      break;
 636  }
 637  ?>


Generated: Thu Oct 14 05:12:05 2010 Cross-referenced by PHPXref 0.7