From b39f3fd7f5978d13640f18ff93c15a3278bbb733 Mon Sep 17 00:00:00 2001 From: Ron Rennick Date: Sat, 13 Feb 2010 18:56:50 +0000 Subject: [PATCH] use object cache on get_blog_option on current blog, props sivel, See #11644 git-svn-id: https://develop.svn.wordpress.org/trunk@13116 602fd350-edb4-49c9-b593-d223f7449a82 --- wp-includes/ms-functions.php | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/wp-includes/ms-functions.php b/wp-includes/ms-functions.php index 0eceb67415..87daa84ecd 100644 --- a/wp-includes/ms-functions.php +++ b/wp-includes/ms-functions.php @@ -250,17 +250,28 @@ function get_blog_option( $blog_id, $setting, $default = false ) { $key = $blog_id."-".$setting."-blog_option"; $value = wp_cache_get( $key, "site-options" ); if ( $value == null ) { - $blog_prefix = $wpdb->get_blog_prefix( $blog_id ); - $row = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$blog_prefix}options WHERE option_name = %s", $setting ) ); - if ( is_object( $row ) ) { // Has to be get_row instead of get_var because of funkiness with 0, false, null values - $value = $row->option_value; - if ( $value == false ) + if ( $blog_id == $wpdb->blogid ) { + $value = get_option( $setting, $default ); + $notoptions = wp_cache_get( 'notoptions', 'options' ); + if ( isset( $notoptions[$setting] ) ) + wp_cache_set( $key, 'noop', 'site-options' ); + elseif ( $value == false ) wp_cache_set( $key, 'falsevalue', 'site-options' ); else wp_cache_set( $key, $value, 'site-options' ); - } else { // option does not exist, so we must cache its non-existence - wp_cache_set( $key, 'noop', 'site-options' ); - $value = $default; + } else { + $blog_prefix = $wpdb->get_blog_prefix( $blog_id ); + $row = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$blog_prefix}options WHERE option_name = %s", $setting ) ); + if ( is_object( $row ) ) { // Has to be get_row instead of get_var because of funkiness with 0, false, null values + $value = $row->option_value; + if ( $value == false ) + wp_cache_set( $key, 'falsevalue', 'site-options' ); + else + wp_cache_set( $key, $value, 'site-options' ); + } else { // option does not exist, so we must cache its non-existence + wp_cache_set( $key, 'noop', 'site-options' ); + $value = $default; + } } } elseif ( $value == 'noop' ) { $value = $default;