Introduce get_super_admins(). Allow hard-coding a global super_admins array and bypassing site options. fixes #12815

git-svn-id: https://develop.svn.wordpress.org/trunk@14206 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Ryan Boren
2010-04-23 20:34:03 +00:00
parent e45d699ca7
commit 8d9073103c
5 changed files with 40 additions and 7 deletions
+20 -2
View File
@@ -1170,6 +1170,24 @@ function remove_role( $role ) {
return $wp_roles->remove_role( $role );
}
/**
* Retrieve a list of super admins.
*
* @since 3.0.0
*
* @uses $super_admins Super admins global variable, if set.
*
* @return array List of super admin logins
*/
function get_super_admins() {
global $super_admins;
if ( isset($super_admins) )
return $super_admins;
else
return get_site_option( 'site_admins', array('admin') );
}
/**
* Determine if user is a site admin.
*
@@ -1190,8 +1208,8 @@ function is_super_admin( $user_id = false ) {
$user = new WP_User($user_id);
if ( is_multisite() ) {
$site_admins = get_site_option( 'site_admins', array('admin') );
if ( is_array( $site_admins ) && in_array( $user->user_login, $site_admins ) )
$super_admins = get_super_admins();
if ( is_array( $super_admins ) && in_array( $user->user_login, $super_admins ) )
return true;
} else {
if ( $user->has_cap('delete_users') )