Make WordPress Core

Ticket #12815: 12815.2.diff

File 12815.2.diff, 4.5 KB (added by ryan, 12 years ago)
  • wp-includes/capabilities.php

     
    11711171}
    11721172
    11731173/**
     1174 * Retrieve a list of super admins.
     1175 *
     1176 * @since 3.0.0
     1177 *
     1178 * @uses $super_admins Super admins global variable, if set.
     1179 *
     1180 * @return array List of super admin logins
     1181 */
     1182function get_super_admins() {
     1183        global $super_admins;
     1184
     1185        if ( isset($super_admins) )
     1186                $supes = $super_admins;
     1187        else
     1188                $supes = get_site_option( 'site_admins', array('admin') );
     1189
     1190        return $supes; // Add a filter here?
     1191}
     1192
     1193/**
    11741194 * Determine if user is a site admin.
    11751195 *
    11761196 * @since 3.0.0
     
    11901210        $user = new WP_User($user_id);
    11911211
    11921212        if ( is_multisite() ) {
    1193                 $site_admins = get_site_option( 'site_admins', array('admin') );
    1194                 if ( is_array( $site_admins ) && in_array( $user->user_login, $site_admins ) )
     1213                $super_admins = get_super_admins();
     1214                if ( is_array( $super_admins ) && in_array( $user->user_login, $super_admins ) )
    11951215                        return true;
    11961216        } else {
    11971217                if ( $user->has_cap('delete_users') )
  • wp-admin/ms-edit.php

     
    531531
    532532                                                case 'spam':
    533533                                                        $user = new WP_User( $val );
    534                                                         if ( in_array( $user->user_login, get_site_option( 'site_admins', array( 'admin' ) ) ) )
     534                                                        if ( in_array( $user->user_login, get_super_admins() ) )
    535535                                                                wp_die( sprintf( __( 'Warning! User cannot be modified. The user %s is a network admnistrator.' ), esc_html( $user->user_login ) ) );
    536536
    537537                                                        $userfunction = 'all_spam';
  • wp-admin/includes/ms.php

     
    187187        <input type="hidden" name="dodelete" />
    188188    <?php
    189189        wp_nonce_field( 'ms-users-delete' );
    190         $site_admins = get_site_option( 'site_admins', array( 'admin' ) );
     190        $site_admins = get_super_admins();
    191191        $admin_out = "<option value='$current_user->ID'>$current_user->user_login</option>";
    192192
    193193        foreach ( ( $allusers = (array) $_POST['allusers'] ) as $key => $val ) {
     
    811811 * @param $user_id
    812812 */
    813813function grant_super_admin( $user_id ) {
     814        global $super_admins;
     815
     816        // If global super_admins override is defined, there is nothing to do here.
     817        if ( isset($super_admins) )
     818                return true;
     819
    814820        do_action( 'grant_super_admin', $user_id );
    815821
     822        // Directly fetch site_admins instead of using get_super_admins()
    816823        $super_admins = get_site_option( 'site_admins', array( 'admin' ) );
    817824
    818825        $user = new WP_User( $user_id );
     
    832839 * @param $user_id
    833840 */
    834841function revoke_super_admin( $user_id ) {
     842        global $super_admins;
     843
     844        // If global super_admins override is defined, there is nothing to do here.
     845        if ( isset($super_admins) )
     846                return true;
     847
    835848        do_action( 'revoke_super_admin', $user_id );
    836849
     850        // Directly fetch site_admins instead of using get_super_admins()
    837851        $super_admins = get_site_option( 'site_admins', array( 'admin' ) );
     852
    838853        $user = new WP_User( $user_id );
    839854        if ( $user->user_email != get_site_option( 'admin_email' ) ) {
    840855                if ( false !== ( $key = array_search( $user->user_login, $super_admins ) ) ) {
  • wp-admin/ms-users.php

     
    199199                        <tbody id="the-user-list" class="list:user">
    200200                        <?php if ( $user_list ) {
    201201                                $class = '';
    202                                 $super_admins = get_site_option( 'site_admins' );
     202                                $super_admins = get_super_admins();
    203203                                foreach ( (array) $user_list as $user ) {
    204204                                        $class = ( 'alternate' == $class ) ? '' : 'alternate';
    205205
  • wp-admin/user-edit.php

     
    235235        echo '<option value="" selected="selected">' . __('&mdash; No role for this blog &mdash;') . '</option>';
    236236?>
    237237</select>
    238 <?php if ( is_multisite() && current_user_can( 'manage_network_options' ) ) { ?>
     238<?php if ( is_multisite() && current_user_can( 'manage_network_options' ) && !isset($super_admins) ) { ?>
    239239<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>
    240240<?php } ?>
    241241</td></tr>