Create new $wp_roles object in install_blog() to avoid protected _init() call

Our call to `$wp_roles->_init()` relied on the `__call()` method in `WP_Roles` to handle the link to the protected method. This works back to PHP 5.2.9, when a bug was fixed allowing access to protected methods through this exact approach.

`install_blog()` needs a fresh `$wp_roles` object after `populate_roles()` resets everything in its path. We can create this new object from scratch, effectively doing the same thing with the call to `_init()` via the constructor.

Fixes #29692 for trunk.

Built from https://develop.svn.wordpress.org/trunk@30242


git-svn-id: http://core.svn.wordpress.org/trunk@30242 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Jeremy Felt 2014-11-05 05:12:22 +00:00
parent 3706590afb
commit c47552dc6d
2 changed files with 4 additions and 2 deletions

View File

@ -1352,7 +1352,9 @@ function install_blog( $blog_id, $blog_title = '' ) {
make_db_current_silent( 'blog' );
populate_options();
populate_roles();
$wp_roles->_init();
// populate_roles() clears previous role definitions so we start over.
$wp_roles = new WP_Roles();
$url = untrailingslashit( $url );

View File

@ -4,7 +4,7 @@
*
* @global string $wp_version
*/
$wp_version = '4.1-alpha-30241';
$wp_version = '4.1-alpha-30242';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.