Make WordPress Core

Ticket #21432: 21432.3.diff

File 21432.3.diff, 19.3 KB (added by ryan, 12 years ago)
  • wp-includes/class-wp-theme.php

     
    11091109
    11101110                $current = $blog_id == get_current_blog_id();
    11111111
    1112                 if ( $current )
     1112                if ( $current ) {
    11131113                        $allowed_themes[ $blog_id ] = get_option( 'allowedthemes' );
    1114                 else
    1115                         $allowed_themes[ $blog_id ] = get_blog_option( $blog_id, 'allowedthemes' );
     1114                } else {
     1115                        switch_to_blog( $blog_id );
     1116                        $allowed_themes[ $blog_id ] = get_option( 'allowedthemes' );
     1117                        restore_current_blog();
     1118                }
    11161119
    11171120                // This is all super old MU back compat joy.
    11181121                // 'allowedthemes' keys things by stylesheet. 'allowed_themes' keyed things by name.
    11191122                if ( false === $allowed_themes[ $blog_id ] ) {
    1120                         if ( $current )
     1123                        if ( $current ) {
    11211124                                $allowed_themes[ $blog_id ] = get_option( 'allowed_themes' );
    1122                         else
    1123                                 $allowed_themes[ $blog_id ] = get_blog_option( $blog_id, 'allowed_themes' );
     1125                        } else {
     1126                                switch_to_blog( $blog_id );
     1127                                $allowed_themes[ $blog_id ] = get_option( 'allowed_themes' );
     1128                                restore_current_blog();
     1129                        }
    11241130
    11251131                        if ( ! is_array( $allowed_themes[ $blog_id ] ) || empty( $allowed_themes[ $blog_id ] ) ) {
    11261132                                $allowed_themes[ $blog_id ] = array();
     
    11391145                                        update_option( 'allowedthemes', $allowed_themes[ $blog_id ] );
    11401146                                        delete_option( 'allowed_themes' );
    11411147                                } else {
    1142                                         update_blog_option( $blog_id, 'allowedthemes', $allowed_themes[ $blog_id ] );
    1143                                         delete_blog_option( $blog_id, 'allowed_themes' );
     1148                                        switch_to_blog( $blog_id );
     1149                                        update_option( 'allowedthemes', $allowed_themes[ $blog_id ] );
     1150                                        delete_option( 'allowed_themes' );
     1151                                        restore_current_blog();
    11441152                                }
    11451153                        }
    11461154                }
  • wp-includes/ms-blogs.php

     
    222222                return $details;
    223223        }
    224224
    225         $details->blogname              = get_blog_option( $blog_id, 'blogname' );
    226         $details->siteurl               = get_blog_option( $blog_id, 'siteurl' );
    227         $details->post_count    = get_blog_option( $blog_id, 'post_count' );
     225        switch_to_blog( $blog_id );
     226        $details->blogname              = get_option( 'blogname' );
     227        $details->siteurl               = get_option( 'siteurl' );
     228        $details->post_count    = get_option( 'post_count' );
     229        restore_current_blog();
    228230
    229231        $details = apply_filters( 'blog_details', $details );
    230232
     
    298300                        do_action( "make_ham_blog", $blog_id );
    299301        }
    300302
    301         if ( isset($details[ 'public' ]) )
    302                 update_blog_option( $blog_id, 'blog_public', $details[ 'public' ] );
     303        if ( isset($details[ 'public' ]) ) {
     304                switch_to_blog( $blog_id );
     305                update_option( 'blog_public', $details[ 'public' ] );
     306                restore_current_blog();
     307        }
    303308
    304309        refresh_blog_details($blog_id);
    305310
     
    307312}
    308313
    309314/**
    310  * Retrieve option value for a given blog id based on name of option.
    311  *
    312  * If the option does not exist or does not have a value, then the return value
    313  * will be false. This is useful to check whether you need to install an option
    314  * and is commonly used during installation of plugin options and to test
    315  * whether upgrading is required.
    316  *
    317  * If the option was serialized then it will be unserialized when it is returned.
    318  *
    319  * @since MU
    320  *
    321  * @param int $id A blog ID. Can be null to refer to the current blog.
    322  * @param string $option Name of option to retrieve. Expected to not be SQL-escaped.
    323  * @param mixed $default Optional. Default value to return if the option does not exist.
    324  * @return mixed Value set for the option.
    325  */
    326 function get_blog_option( $id, $option, $default = false ) {
    327         $id = (int) $id;
    328 
    329         if ( empty( $id ) )
    330                 $id = get_current_blog_id();
    331 
    332         if ( get_current_blog_id() == $id )
    333                 return get_option( $option, $default );
    334 
    335         switch_to_blog( $id );
    336         $option = get_option( $option, $default );
    337         restore_current_blog();
    338 
    339         return $option;
    340 }
    341 
    342 /**
    343  * Add a new option for a given blog id.
    344  *
    345  * You do not need to serialize values. If the value needs to be serialized, then
    346  * it will be serialized before it is inserted into the database. Remember,
    347  * resources can not be serialized or added as an option.
    348  *
    349  * You can create options without values and then update the values later.
    350  * Existing options will not be updated and checks are performed to ensure that you
    351  * aren't adding a protected WordPress option. Care should be taken to not name
    352  * options the same as the ones which are protected.
    353  *
    354  * @since MU
    355  *
    356  * @param int $id A blog ID. Can be null to refer to the current blog.
    357  * @param string $option Name of option to add. Expected to not be SQL-escaped.
    358  * @param mixed $value Optional. Option value, can be anything. Expected to not be SQL-escaped.
    359  * @return bool False if option was not added and true if option was added.
    360  */
    361 function add_blog_option( $id, $option, $value ) {
    362         $id = (int) $id;
    363 
    364         if ( empty( $id ) )
    365                 $id = get_current_blog_id();
    366 
    367         if ( get_current_blog_id() == $id )
    368                 return add_option( $option, $value );
    369 
    370         switch_to_blog( $id );
    371         $return = add_option( $option, $value );
    372         restore_current_blog();
    373 
    374         return $return;
    375 }
    376 
    377 /**
    378  * Removes option by name for a given blog id. Prevents removal of protected WordPress options.
    379  *
    380  * @since MU
    381  *
    382  * @param int $id A blog ID. Can be null to refer to the current blog.
    383  * @param string $option Name of option to remove. Expected to not be SQL-escaped.
    384  * @return bool True, if option is successfully deleted. False on failure.
    385  */
    386 function delete_blog_option( $id, $option ) {
    387         $id = (int) $id;
    388 
    389         if ( empty( $id ) )
    390                 $id = get_current_blog_id();
    391 
    392         if ( get_current_blog_id() == $id )
    393                 return delete_option( $option );
    394 
    395         switch_to_blog( $id );
    396         $return = delete_option( $option );
    397         restore_current_blog();
    398 
    399         return $return;
    400 }
    401 
    402 /**
    403  * Update an option for a particular blog.
    404  *
    405  * @since MU
    406  *
    407  * @param int $id The blog id
    408  * @param string $option The option key
    409  * @param mixed $value The option value
    410  * @return bool True on success, false on failrue.
    411  */
    412 function update_blog_option( $id, $option, $value, $deprecated = null ) {
    413         $id = (int) $id;
    414 
    415         if ( null !== $deprecated  )
    416                 _deprecated_argument( __FUNCTION__, '3.1' );
    417 
    418         if ( get_current_blog_id() == $id )
    419                 return update_option( $option, $value );
    420 
    421         switch_to_blog( $id );
    422         $return = update_option( $option, $value );
    423         restore_current_blog();
    424 
    425         refresh_blog_details( $id );
    426 
    427         return $return;
    428 }
    429 
    430 /**
    431315 * Switch the current blog.
    432316 *
    433317 * This function is useful if you need to pull posts, or other information,
  • wp-includes/class-wp-xmlrpc-server.php

     
    475475                        $blog_id = $blog->userblog_id;
    476476                        $is_admin = current_user_can_for_blog( $blog_id, 'manage_options' );
    477477
     478                        switch_to_blog( $blog_id );
    478479                        $struct[] = array(
    479480                                'isAdmin'               => $is_admin,
    480                                 'url'                   => get_home_url( $blog_id, '/' ),
     481                                'url'                   => home_url( '/' ),
    481482                                'blogid'                => (string) $blog_id,
    482                                 'blogName'              => get_blog_option( $blog_id, 'blogname' ),
    483                                 'xmlrpc'                => get_site_url( $blog_id, 'xmlrpc.php' )
     483                                'blogName'              => get_option( 'blogname' ),
     484                                'xmlrpc'                => site_url( 'xmlrpc.php' )
    484485                        );
     486                        restore_current_blog();
    485487                }
    486488
    487489                return $struct;
  • wp-includes/link-template.php

     
    18961896        if ( !in_array( $scheme, array( 'http', 'https', 'relative' ) ) )
    18971897                $scheme = is_ssl() && !is_admin() ? 'https' : 'http';
    18981898
    1899         if ( empty( $blog_id ) || !is_multisite() )
     1899        if ( empty( $blog_id ) || !is_multisite() ) {
    19001900                $url = get_option( 'home' );
    1901         else
    1902                 $url = get_blog_option( $blog_id, 'home' );
     1901        } else {
     1902                switch_to_blog( $blog_id );
     1903                $url = get_option( 'home' );
     1904                restore_current_blog();
     1905        }
    19031906
    19041907        if ( 'relative' == $scheme )
    19051908                $url = preg_replace( '#^.+://[^/]*#', '', $url );
     
    19611964                        $scheme = ( is_ssl() ? 'https' : 'http' );
    19621965        }
    19631966
    1964         if ( empty( $blog_id ) || !is_multisite() )
     1967        if ( empty( $blog_id ) || !is_multisite() ) {
    19651968                $url = get_option( 'siteurl' );
    1966         else
    1967                 $url = get_blog_option( $blog_id, 'siteurl' );
     1969        } else {
     1970                switch_to_blog( $blog_id );
     1971                $url = get_option( 'siteurl' );
     1972                restore_current_blog();
     1973        }
    19681974
    19691975        if ( 'relative' == $scheme )
    19701976                $url = preg_replace( '#^.+://[^/]*#', '', $url );
  • wp-includes/ms-deprecated.php

     
    270270        }
    271271        return $url;
    272272}
     273
     274/**
     275 * Retrieve option value for a given blog id based on name of option.
     276 *
     277 * If the option does not exist or does not have a value, then the return value
     278 * will be false. This is useful to check whether you need to install an option
     279 * and is commonly used during installation of plugin options and to test
     280 * whether upgrading is required.
     281 *
     282 * If the option was serialized then it will be unserialized when it is returned.
     283 *
     284 * @since MU
     285 * @deprecated 3.5.0
     286 *
     287 * @param int $id A blog ID. Can be null to refer to the current blog.
     288 * @param string $option Name of option to retrieve. Expected to not be SQL-escaped.
     289 * @param mixed $default Optional. Default value to return if the option does not exist.
     290 * @return mixed Value set for the option.
     291 */
     292function get_blog_option( $id, $option, $default = false ) {
     293        _deprecated_function( __FUNCTION__, '3.5' );
     294
     295        $id = (int) $id;
     296
     297        if ( empty( $id ) )
     298                $id = get_current_blog_id();
     299
     300        if ( get_current_blog_id() == $id )
     301                return get_option( $option, $default );
     302
     303        switch_to_blog( $id );
     304        $option = get_option( $option, $default );
     305        restore_current_blog();
     306
     307        return $option;
     308}
     309
     310/**
     311 * Add a new option for a given blog id.
     312 *
     313 * You do not need to serialize values. If the value needs to be serialized, then
     314 * it will be serialized before it is inserted into the database. Remember,
     315 * resources can not be serialized or added as an option.
     316 *
     317 * You can create options without values and then update the values later.
     318 * Existing options will not be updated and checks are performed to ensure that you
     319 * aren't adding a protected WordPress option. Care should be taken to not name
     320 * options the same as the ones which are protected.
     321 *
     322 * @since MU
     323 * @deprecated 3.5.0
     324 *
     325 * @param int $id A blog ID. Can be null to refer to the current blog.
     326 * @param string $option Name of option to add. Expected to not be SQL-escaped.
     327 * @param mixed $value Optional. Option value, can be anything. Expected to not be SQL-escaped.
     328 * @return bool False if option was not added and true if option was added.
     329 */
     330function add_blog_option( $id, $option, $value ) {
     331        _deprecated_function( __FUNCTION__, '3.5' );
     332
     333        $id = (int) $id;
     334
     335        if ( empty( $id ) )
     336                $id = get_current_blog_id();
     337
     338        if ( get_current_blog_id() == $id )
     339                return add_option( $option, $value );
     340
     341        switch_to_blog( $id );
     342        $return = add_option( $option, $value );
     343        restore_current_blog();
     344
     345        return $return;
     346}
     347
     348/**
     349 * Removes option by name for a given blog id. Prevents removal of protected WordPress options.
     350 *
     351 * @since MU
     352 * @deprecated 3.5.0
     353 *
     354 * @param int $id A blog ID. Can be null to refer to the current blog.
     355 * @param string $option Name of option to remove. Expected to not be SQL-escaped.
     356 * @return bool True, if option is successfully deleted. False on failure.
     357 */
     358function delete_blog_option( $id, $option ) {
     359        _deprecated_function( __FUNCTION__, '3.5' );
     360
     361        $id = (int) $id;
     362
     363        if ( empty( $id ) )
     364                $id = get_current_blog_id();
     365
     366        if ( get_current_blog_id() == $id )
     367                return delete_option( $option );
     368
     369        switch_to_blog( $id );
     370        $return = delete_option( $option );
     371        restore_current_blog();
     372
     373        return $return;
     374}
     375
     376/**
     377 * Update an option for a particular blog.
     378 *
     379 * @since MU
     380 * @deprecated 3.5.0
     381 *
     382 * @param int $id The blog id
     383 * @param string $option The option key
     384 * @param mixed $value The option value
     385 * @return bool True on success, false on failrue.
     386 */
     387function update_blog_option( $id, $option, $value, $deprecated = null ) {
     388        _deprecated_function( __FUNCTION__, '3.5' );
     389
     390        $id = (int) $id;
     391
     392        if ( null !== $deprecated  )
     393                _deprecated_argument( __FUNCTION__, '3.1' );
     394
     395        if ( get_current_blog_id() == $id )
     396                return update_option( $option, $value );
     397
     398        switch_to_blog( $id );
     399        $return = update_option( $option, $value );
     400        restore_current_blog();
     401
     402        refresh_blog_details( $id );
     403
     404        return $return;
     405}
  • wp-admin/includes/class-wp-ms-sites-list-table.php

     
    230230                                                echo "<td class='column-$column_name $column_name'$style>"; ?>
    231231                                                        <a href="<?php echo esc_url( network_admin_url( 'site-info.php?id=' . $blog['blog_id'] ) ); ?>" class="edit"><?php echo $blogname . $blog_state; ?></a>
    232232                                                        <?php
    233                                                         if ( 'list' != $mode )
    234                                                                 echo '<p>' . sprintf( _x( '%1$s &#8211; <em>%2$s</em>', '%1$s: site name. %2$s: site tagline.' ), get_blog_option( $blog['blog_id'], 'blogname' ), get_blog_option( $blog['blog_id'], 'blogdescription ' ) ) . '</p>';
     233                                                        if ( 'list' != $mode ) {
     234                                                                switch_to_blog( $blog['blog_id'] );
     235                                                                echo '<p>' . sprintf( _x( '%1$s &#8211; <em>%2$s</em>', '%1$s: site name. %2$s: site tagline.' ), get_option( 'blogname' ), get_option( 'blogdescription ' ) ) . '</p>';
     236                                                                restore_current_blog();
     237                                                        }
    235238
    236239                                                        // Preordered.
    237240                                                        $actions = array(
  • wp-admin/includes/ms.php

     
    411411
    412412// Edit blog upload space setting on Edit Blog page
    413413function upload_space_setting( $id ) {
    414         $quota = get_blog_option( $id, 'blog_upload_space' );
     414        switch_to_blog( $id );
     415        $quota = get_option( 'blog_upload_space' );
     416        restore_current_blog();
     417
    415418        if ( !$quota )
    416419                $quota = '';
    417420
  • wp-admin/network/site-info.php

     
    135135                        <th scope="row"><?php _e( 'Path' ) ?></th>
    136136                        <?php if ( $is_main_site ) { ?>
    137137                        <td><code><?php echo esc_attr( $details->path ) ?></code></td>
    138                         <?php } else { ?>
     138                        <?php
     139                        } else {
     140                                switch_to_blog( $id );
     141                        ?>
    139142                        <td><input name="blog[path]" type="text" id="path" value="<?php echo esc_attr( $details->path ) ?>" size="40" style='margin-bottom:5px;' />
    140                         <br /><input type="checkbox" style="width:20px;" name="update_home_url" value="update" <?php if ( get_blog_option( $id, 'siteurl' ) == untrailingslashit( get_blogaddress_by_id ($id ) ) || get_blog_option( $id, 'home' ) == untrailingslashit( get_blogaddress_by_id( $id ) ) ) echo 'checked="checked"'; ?> /> <?php _e( 'Update <code>siteurl</code> and <code>home</code> as well.' ); ?></td>
    141                         <?php } ?>
     143                        <br /><input type="checkbox" style="width:20px;" name="update_home_url" value="update" <?php if ( get_option( 'siteurl' ) == untrailingslashit( get_blogaddress_by_id ($id ) ) || get_option( 'home' ) == untrailingslashit( get_blogaddress_by_id( $id ) ) ) echo 'checked="checked"'; ?> /> <?php _e( 'Update <code>siteurl</code> and <code>home</code> as well.' ); ?></td>
     144                        <?php
     145                                restore_current_blog();
     146                        } ?>
    142147                </tr>
    143148                <tr class="form-field">
    144149                        <th scope="row"><?php _ex( 'Registered', 'site' ) ?></th>
  • wp-admin/network/site-users.php

     
    4545        wp_die( __('Invalid site ID.') );
    4646
    4747$details = get_blog_details( $id );
    48 if ( !can_edit_network( $details->site_id ) )
     48if ( ! can_edit_network( $details->site_id ) )
    4949        wp_die( __( 'You do not have permission to access this page.' ) );
    5050
    5151$is_main_site = is_main_site( $id );
    5252
    53 // get blog prefix
    54 $blog_prefix = $wpdb->get_blog_prefix( $id );
     53switch_to_blog( $id );
    5554
    56 // @todo This is a hack. Eventually, add API to WP_Roles allowing retrieval of roles for a particular blog.
    57 if ( ! empty($wp_roles->use_db) ) {
    58         $editblog_roles = get_blog_option( $id, "{$blog_prefix}user_roles" );
    59 } else {
    60         // Roles are stored in memory, not the DB.
    61         $editblog_roles = $wp_roles->roles;
    62 }
    63 $default_role = get_blog_option( $id, 'default_role' );
     55$editblog_roles = $wp_roles->roles;
    6456
     57$default_role = get_option( 'default_role' );
     58
    6559$action = $wp_list_table->current_action();
    6660
    6761if ( $action ) {
    68         switch_to_blog( $id );
    6962
    7063        switch ( $action ) {
    7164                case 'newuser':
    7265                        check_admin_referer( 'add-user', '_wpnonce_add-new-user' );
    7366                        $user = $_POST['user'];
    74                         if ( !is_array( $_POST['user'] ) || empty( $user['username'] ) || empty( $user['email'] ) ) {
     67                        if ( ! is_array( $_POST['user'] ) || empty( $user['username'] ) || empty( $user['email'] ) ) {
    7568                                $update = 'err_new';
    7669                        } else {
    7770                                $password = wp_generate_password( 12, false);
     
    9487                                $newuser = $_POST['newuser'];
    9588                                $userid = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM " . $wpdb->users . " WHERE user_login = %s", $newuser ) );
    9689                                if ( $userid ) {
     90                                        $blog_prefix = $wpdb->get_blog_prefix( $id );
    9791                                        $user = $wpdb->get_var( "SELECT user_id FROM " . $wpdb->usermeta . " WHERE user_id='$userid' AND meta_key='{$blog_prefix}capabilities'" );
    9892                                        if ( $user == false )
    9993                                                add_user_to_blog( $id, $userid, $_POST['new_role'] );
     
    108102                        break;
    109103
    110104                case 'remove':
    111                         if ( !current_user_can('remove_users')  )
     105                        if ( ! current_user_can( 'remove_users' )  )
    112106                                die(__('You can&#8217;t remove users.'));
    113107                        check_admin_referer( 'bulk-users' );
    114108
     
    152146                        break;
    153147        }
    154148
    155         restore_current_blog();
    156149        wp_safe_redirect( add_query_arg( 'update', $update, $referer ) );
    157150        exit();
    158151}
    159152
     153restore_current_blog();
     154
    160155if ( isset( $_GET['action'] ) && 'update-site' == $_GET['action'] ) {
    161156        wp_safe_redirect( $referer );
    162157        exit();
  • wp-admin/network/upgrade.php

     
    6060                }
    6161                echo "<ul>";
    6262                foreach ( (array) $blogs as $details ) {
    63                         $siteurl = get_blog_option( $details['blog_id'], 'siteurl' );
     63                        switch_to_blog( $details['blog_id'] );
     64                        $siteurl = site_url();
     65                        $upgrade_url = admin_url( 'upgrade.php?step=upgrade_db' );
     66                        restore_current_blog();
    6467                        echo "<li>$siteurl</li>";
    65                         $response = wp_remote_get( trailingslashit( $siteurl ) . "wp-admin/upgrade.php?step=upgrade_db", array( 'timeout' => 120, 'httpversion' => '1.1' ) );
     68                        $response = wp_remote_get( $upgrade_url, array( 'timeout' => 120, 'httpversion' => '1.1' ) );
    6669                        if ( is_wp_error( $response ) )
    6770                                wp_die( sprintf( __( 'Warning! Problem updating %1$s. Your server may not be able to connect to sites running on it. Error message: <em>%2$s</em>' ), $siteurl, $response->get_error_message() ) );
    6871                        do_action( 'after_mu_upgrade', $response );