Use API to set the user's role. see #11781

git-svn-id: http://svn.automattic.com/wordpress/trunk@12770 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
ryan 2010-01-19 20:12:04 +00:00
parent 5c5be8cd43
commit aac0a1230a
2 changed files with 13 additions and 8 deletions

View File

@ -235,12 +235,12 @@ switch ( $_GET['action'] ) {
$newroles = $_POST[ 'role' ];
reset( $newroles );
foreach ( (array) $newroles as $userid => $role ) {
$role_len = strlen( $role );
$existing_role = $wpdb->get_var( "SELECT meta_value FROM $wpdb->usermeta WHERE user_id = '$userid' AND meta_key = '" . $blog_prefix. "capabilities'" );
if ( false == $existing_role )
$wpdb->query( "INSERT INTO " . $wpdb->usermeta . "( `umeta_id` , `user_id` , `meta_key` , `meta_value` ) VALUES ( NULL, '$userid', '" . $blog_prefix . "capabilities', 'a:1:{s:" . strlen( $role ) . ":\"" . $role . "\";b:1;}')" );
elseif ( $existing_role != "a:1:{s:" . strlen( $role ) . ":\"" . $role . "\";b:1;}" )
$wpdb->query( "UPDATE $wpdb->usermeta SET meta_value = 'a:1:{s:" . strlen( $role ) . ":\"" . $role . "\";b:1;}' WHERE user_id = '$userid' AND meta_key = '" . $blog_prefix . "capabilities'" );
$user = new WP_User($userid);
if ( ! $user )
continue;
// Hack. Init user caps for given blog.
$user->_init_caps($blog_prefix . 'capabilities');
$user->set_role($role);
}
}

View File

@ -508,11 +508,16 @@ class WP_User {
* used.
*
* @since 2.1.0
*
* @param string $cap_key Optional capability key
* @access protected
*/
function _init_caps() {
function _init_caps( $cap_key = '' ) {
global $wpdb;
$this->cap_key = $wpdb->prefix . 'capabilities';
if ( empty($cap_key) )
$this->cap_key = $wpdb->prefix . 'capabilities';
else
$this->cap_key = $cap_key;
$this->caps = &$this->{$this->cap_key};
if ( ! is_array( $this->caps ) )
$this->caps = array();