Make WordPress Core

Changeset 13941


Ignore:
Timestamp:
04/02/2010 06:46:07 AM (17 years ago)
Author:
nacin
Message:

Move add/remove super admin out of bulk edit and into user-edit.php. Introduce grant_super_admin() and revoke_super_admin(). Link to profile.php in ms-users user row for current user. Add defensive check by forcing IS_PROFILE_PAGE on user-edit if trying to edit your own user_id. see #12460

Location:
trunk/wp-admin
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/includes/ms.php

    r13918 r13941  
    794794}
    795795
     796/**
     797 * Grants super admin privileges.
     798 *
     799 * @since 3.0.0
     800 * @param $user_id
     801 */
     802function grant_super_admin( $user_id ) {
     803        $super_admins = get_site_option( 'site_admins', array( 'admin' ) );
     804
     805        $user = new WP_User( $user_id );
     806        if ( ! in_array( $user->user_login, $super_admins ) ) {
     807                $super_admins[] = $user->user_login;
     808                update_site_option( 'site_admins' , $super_admins );
     809        }
     810}
     811
     812/**
     813 * Revokes super admin privileges.
     814 *
     815 * @since 3.0.0
     816 * @param $user_id
     817 */
     818function revoke_super_admin( $user_id ) {
     819        $super_admins = get_site_option( 'site_admins', array( 'admin' ) );
     820        $admin_email = get_site_option( 'admin_email' );
     821       
     822        $user = new WP_User( $user_id );
     823        if ( $user->ID != $current_user->ID || $user->user_email != $admin_email ) {
     824                foreach ( $super_admins as $key => $username ) {
     825                        if ( $username == $user->user_login ) {
     826                                unset( $super_admins[$key] );
     827                                break;
     828                        }
     829                }
     830        }
     831
     832        update_site_option( 'site_admins' , $super_admins );
     833}
    796834?>
  • trunk/wp-admin/ms-edit.php

    r13918 r13941  
    525525
    526526                        foreach ( (array) $_POST['allusers'] as $key => $val ) {
    527                                 if ( $val != '' || $val != '0' ) {
     527                                if ( !empty( $val ) ) {
    528528                                        switch ( $doaction ) {
    529529                                                case 'delete':
    … …  
    540540                                                case 'superadmin':
    541541                                                        $userfunction = 'add_superadmin';
    542                                                         $super_admins = get_site_option( 'site_admins', array( 'admin' ) );
    543 
    544                                                         $user = new WP_User( $val );
    545                                                         if ( ! in_array( $user->user_login, $super_admins ) ) {
    546                                                                 if ( $current_site->blog_id )
    547                                                                         add_user_to_blog( $current_site->blog_id, $user->ID, 'administrator' );
    548 
    549                                                                 $super_admins[] = $user->user_login;
    550                                                                 update_site_option( 'site_admins' , $super_admins );
    551                                                         }
     542                                                        grant_super_admin( $val );
    552543                                                break;
    553544
    554545                                                case 'notsuperadmin':
    555546                                                        $userfunction = 'remove_superadmin';
    556                                                         $super_admins = get_site_option( 'site_admins', array( 'admin' ) );
    557                                                         $admin_email = get_site_option( 'admin_email' );
    558                                                        
    559                                                         $user = new WP_User( $val );
    560                                                         if ( $user->ID != $current_user->ID || $user->user_email != $admin_email ) {
    561                                                                 foreach ( $super_admins as $key => $username ) {
    562                                                                         if ( $username == $user->user_login ) {
    563                                                                                 unset( $super_admins[$key] );
    564                                                                                 break;
    565                                                                         }
    566                                                                 }
    567                                                         }
    568 
    569                                                         update_site_option( 'site_admins' , $super_admins );
     547                                                        revoke_super_admin( $val );
    570548                                                break;
    571549
  • trunk/wp-admin/ms-users.php

    r13918 r13941  
    3434                        case 'add':
    3535                                _e( 'User added.' );
    36                         break;
    37                         case 'add_superadmin':
    38                                 _e( 'Network admin added.' );
    39                         break;
    40                         case 'remove_superadmin':
    41                                 _e( 'Network admin removed.' );
    4236                        break;
    4337                }
    … …  
    129123                                        <option value="-1" selected="selected"><?php _e( 'Bulk Actions' ); ?></option>
    130124                                        <option value="delete"><?php _e( 'Delete' ); ?></option>
    131                                         <option value="spam"><?php _e( 'Mark as Spammers' ); ?></option>
     125                                        <option value="spam"><?php _e( 'Mark as Spam' ); ?></option>
    132126                                        <option value="notspam"><?php _e( 'Not Spam' ); ?></option>
    133                                         <option value="superadmin"><?php _e( 'Add Super Admins' ); ?></option>
    134                                         <option value="notsuperadmin"><?php _e( 'Remove Super Admins' ); ?></option>
    135127                                </select>
    136128                                <input type="submit" value="<?php esc_attr_e( 'Apply' ); ?>" name="doaction" id="doaction" class="button-secondary action" />
    … …  
    228220                                                        case 'login':
    229221                                                                $avatar = get_avatar( $user['user_email'], 32 );
     222                                                                $edit_link = ( $current_user->ID == $user['ID'] ) ? 'profile.php' : 'user-edit.php?user_id=' . $user['ID'];
    230223                                                                ?>
    231224                                                                <td class="username column-username">
    232                                                                         <?php echo $avatar; ?><strong><a href="<?php echo esc_url( admin_url( 'user-edit.php?user_id=' . $user['ID'] ) ); ?>" class="edit"><?php echo stripslashes( $user['user_login'] ); ?></a><?php
     225                                                                        <?php echo $avatar; ?><strong><a href="<?php echo esc_url( admin_url( $edit_link ) ); ?>" class="edit"><?php echo stripslashes( $user['user_login'] ); ?></a><?php
    233226                                                                        if ( in_array( $user['user_login'], $super_admins ) )
    234227                                                                                echo ' - ' . __( 'Super admin' );
    … …  
    236229                                                                        <br/>
    237230                                                                        <div class="row-actions">
    238                                                                                 <span class="edit"><a href="<?php echo esc_url( admin_url( 'user-edit.php?user_id=' . $user['ID'] ) ); ?>"><?php _e( 'Edit'); ?></a></span>
     231                                                                                <span class="edit"><a href="<?php echo esc_url( admin_url( $edit_link ) ); ?>"><?php _e( 'Edit' ); ?></a></span>
    239232                                                                                <?php if ( ! in_array( $user['user_login'], $super_admins ) ) { ?>
    240233                                                                                | <span class="delete"><a href="<?php echo $delete      = esc_url( admin_url( add_query_arg( '_wp_http_referer', urlencode( stripslashes( $_SERVER['REQUEST_URI'] ) ), wp_nonce_url( 'ms-edit.php', 'deleteuser' ) . '&amp;action=deleteuser&amp;id=' . $user['ID'] ) ) ); ?>" class="delete"><?php _e( 'Delete' ); ?></a></span>
    … …  
    324317                                        <option value="-1" selected="selected"><?php _e( 'Bulk Actions' ); ?></option>
    325318                                        <option value="delete"><?php _e( 'Delete' ); ?></option>
    326                                         <option value="spam"><?php _e( 'Mark as Spammers' ); ?></option>
     319                                        <option value="spam"><?php _e( 'Mark as Spam' ); ?></option>
    327320                                        <option value="notspam"><?php _e( 'Not Spam' ); ?></option>
    328                                         <option value="superadmin"><?php _e( 'Add Super Admins' ); ?></option>
    329                                         <option value="notsuperadmin"><?php _e( 'Remove Super Admins' ); ?></option>
    330321                                </select>
    331322                                <input type="submit" value="<?php esc_attr_e( 'Apply' ); ?>" name="doaction2" id="doaction2" class="button-secondary action" />
  • trunk/wp-admin/user-edit.php

    r13820 r13941  
    1010require_once('admin.php');
    1111
    12 if ( !defined('IS_PROFILE_PAGE') )
    13         define('IS_PROFILE_PAGE', false);
     12wp_reset_vars(array('action', 'redirect', 'profile', 'user_id', 'wp_http_referer'));
     13
     14$user_id = (int) $user_id;
     15$current_user = wp_get_current_user();
     16if ( ! defined( 'IS_PROFILE_PAGE' ) )
     17        define( 'IS_PROFILE_PAGE', ( $user_id == $current_user->ID ) );
     18
     19if ( ! $user_id && IS_PROFILE_PAGE )
     20        $user_id = $current_user->ID;
     21elseif ( ! $user_id && ! IS_PROFILE_PAGE )
     22        wp_die(__( 'Invalid user ID.' ) );
     23elseif ( ! get_userdata( $user_id ) )
     24        wp_die( __('Invalid user ID.') );
    1425
    1526wp_enqueue_script('user-profile');
    … …  
    2334$parent_file = 'users.php';
    2435
    25 wp_reset_vars(array('action', 'redirect', 'profile', 'user_id', 'wp_http_referer'));
    26 
    2736$wp_http_referer = remove_query_arg(array('update', 'delete_count'), stripslashes($wp_http_referer));
    28 
    29 $user_id = (int) $user_id;
    30 
    31 if ( !$user_id ) {
    32         if ( IS_PROFILE_PAGE ) {
    33                 $current_user = wp_get_current_user();
    34                 $user_id = $current_user->ID;
    35         } else {
    36                 wp_die(__('Invalid user ID.'));
    37         }
    38 } elseif ( !get_userdata($user_id) ) {
    39         wp_die( __('Invalid user ID.') );
    40 }
    4137
    4238$all_post_caps = array('posts', 'pages');
    … …  
    124120                $errors = edit_user($user_id);
    125121        if ( $delete_role ) // stops users being added to current blog when they are edited
    126                 update_user_meta( $user_id, $blog_prefix . 'capabilities' , '' );
     122                delete_user_meta( $user_id, $blog_prefix . 'capabilities' );
     123
     124        if ( is_multisite() && is_super_admin() && !IS_PROFILE_PAGE )
     125                empty( $_POST['super_admin'] ) ? revoke_super_admin( $user_id ) : grant_super_admin( $user_id );
    127126}
    128127
    … …  
    143142?>
    144143
     144<?php if ( !IS_PROFILE_PAGE && is_super_admin( $profileuser->ID ) ) { ?>
     145        <div class="updated"><p><strong><?php _e('Important:'); ?></strong> <?php _e('This user has super admin privileges.'); ?></p></div>
     146<?php } ?>
    145147<?php if ( isset($_GET['updated']) ) : ?>
    146148<div id="message" class="updated">
    … …  
    166168<h2><?php echo esc_html( $title ); ?></h2>
    167169
    168 <form id="your-profile" action="<?php if ( IS_PROFILE_PAGE ) { echo admin_url('profile.php'); } else { echo admin_url('user-edit.php'); } ?>" method="post">
     170<form id="your-profile" action="<?php echo esc_url( admin_url( IS_PROFILE_PAGE ? 'profile.php' : 'user-edit.php' ) ); ?>" method="post">
    169171<?php wp_nonce_field('update-user_' . $user_id) ?>
    170172<?php if ( $wp_http_referer ) : ?>
    … …  
    233235        echo '<option value="" selected="selected">' . __('&mdash; No role for this blog &mdash;') . '</option>';
    234236?>
    235 </select></td></tr>
     237</select>
     238<?php if ( is_multisite() && is_super_admin() ) { ?>
     239<p><label><input type="checkbox" id="super_admin" name="super_admin"<?php checked( is_super_admin( $profileuser->ID ) ); ?> /> <?php _e( 'Grant this user super admin privileges for the Network.'); ?></label></p>
     240<?php } ?>
     241</td></tr>
    236242<?php endif; //!IS_PROFILE_PAGE ?>
    237243
    … …  
    332338
    333339<?php
    334         if ( IS_PROFILE_PAGE ) {
    335                 do_action('show_user_profile', $profileuser);
    336         } else {
    337                 do_action('edit_user_profile', $profileuser);
    338         }
     340        if ( IS_PROFILE_PAGE )
     341                do_action( 'show_user_profile', $profileuser );
     342        else
     343                do_action( 'edit_user_profile', $profileuser );
    339344?>
    340345
Note: See TracChangeset for help on using the changeset viewer.