Patches for the WordPress MU Domain Mapping plugin. Part of a blog post at sixohthree.com.
http://sixohthree.com/1595/wordpress-mu-domain-mapping-patches
Patches for the WordPress MU Domain Mapping plugin. Part of a blog post at sixohthree.com.
http://sixohthree.com/1595/wordpress-mu-domain-mapping-patches
Index: domain_mapping.php | |
=================================================================== | |
--- domain_mapping.php (revision 9545) | |
+++ domain_mapping.php (revision 9553) | |
@@ -515,27 +515,37 @@ | |
} | |
-function domain_mapping_siteurl( $setting ) { | |
- global $wpdb, $current_blog; | |
+function domain_mapping_siteurl( $setting, $blog_id = 0 ) { | |
+ global $wpdb, $current_blog, $switched; | |
// To reduce the number of database queries, save the results the first time we encounter each blog ID. | |
static $return_url = array(); | |
+ if( $blog_id == 0 ) { | |
+ $blog_id = $current_blog->blog_id; | |
+ } | |
+ | |
$wpdb->dmtable = $wpdb->base_prefix . 'domain_mapping'; | |
- if ( !isset( $return_url[ $wpdb->blogid ] ) ) { | |
+ if ( !isset( $return_url[ $blog_id ] ) ) { | |
$s = $wpdb->suppress_errors(); | |
- if ( get_site_option( 'dm_no_primary_domain' ) == 1 ) { | |
- $domain = $wpdb->get_var( "SELECT domain FROM {$wpdb->dmtable} WHERE blog_id = '{$wpdb->blogid}' AND domain = '" . $wpdb->escape( $_SERVER[ 'HTTP_HOST' ] ) . "' LIMIT 1" ); | |
+ if ( get_site_option( $blog_id, 'dm_no_primary_domain' ) == 1 ) { | |
+ if ( $switched === false ) { | |
+ // Only filter using HTTP_HOST if we haven't done switch_to_blog() | |
+ $domain = $wpdb->get_var( "SELECT domain FROM {$wpdb->dmtable} WHERE blog_id = '{$blog_id}' AND domain = '" . $wpdb->escape( $_SERVER[ 'HTTP_HOST' ] ) . "' LIMIT 1" ); | |
+ } else { | |
+ $domain = $wpdb->get_var( "SELECT domain FROM {$wpdb->dmtable} WHERE blog_id = '{$blog_id}' LIMIT 1" ); | |
+ } | |
+ | |
if ( null == $domain ) { | |
- $return_url[ $wpdb->blogid ] = untrailingslashit( get_original_url( "siteurl" ) ); | |
- return $return_url[ $wpdb->blogid ]; | |
+ $return_url[ $blog_id ] = untrailingslashit( get_original_url( "siteurl", $blog_id ) ); | |
+ return $return_url[ $blog_id ]; | |
} | |
} else { | |
// get primary domain, if we don't have one then return original url. | |
- $domain = $wpdb->get_var( "SELECT domain FROM {$wpdb->dmtable} WHERE blog_id = '{$wpdb->blogid}' AND active = 1 LIMIT 1" ); | |
+ $domain = $wpdb->get_var( "SELECT domain FROM {$wpdb->dmtable} WHERE blog_id = '{$blog_id}' AND active = 1 LIMIT 1" ); | |
if ( null == $domain ) { | |
- $return_url[ $wpdb->blogid ] = untrailingslashit( get_original_url( "siteurl" ) ); | |
- return $return_url[ $wpdb->blogid ]; | |
+ $return_url[ $blog_id ] = untrailingslashit( get_original_url( "siteurl", $blog_id ) ); | |
+ return $return_url[ $blog_id ]; | |
} | |
} | |
@@ -546,11 +556,11 @@ | |
$protocol = ( 'on' == strtolower( $_SERVER[ 'HTTPS' ] ) ) ? 'https://' : 'http://'; | |
if ( $domain ) { | |
- $return_url[ $wpdb->blogid ] = untrailingslashit( $protocol . $domain ); | |
- $setting = $return_url[ $wpdb->blogid ]; | |
- } else { | |
- $return_url[ $wpdb->blogid ] = false; | |
- } | |
- } elseif ( $return_url[ $wpdb->blogid ] !== FALSE) { | |
- $setting = $return_url[ $wpdb->blogid ]; | |
+ $return_url[ $blog_id ] = untrailingslashit( $protocol . $domain ); | |
+ $setting = $return_url[ $blog_id ]; | |
+ } else { | |
+ $return_url[ $blog_id ] = false; | |
+ } | |
+ } elseif ( $return_url[ $blog_id ] !== FALSE) { | |
+ $setting = $return_url[ $blog_id ]; | |
} | |
Index: domain_mapping.php | |
=================================================================== | |
--- domain_mapping.php (revision 9553) | |
+++ domain_mapping.php (revision 9554) | |
@@ -660,5 +660,9 @@ | |
// fixes the plugins_url | |
function domain_mapping_plugins_uri( $full_url, $path=NULL, $plugin=NULL ) { | |
- return get_option( 'siteurl' ) . substr( $full_url, stripos( $full_url, PLUGINDIR ) - 1 ); | |
+ if( false === ( $pos = stripos( $full_url, PLUGINDIR ) ) ) { | |
+ $pos = stripos( $full_url, MUPLUGINDIR ); | |
+ } | |
+ | |
+ return get_option( 'siteurl' ) . substr( $full_url, $pos - 1 ); | |
} | |
@@ -668,5 +672,5 @@ | |
if ( defined( 'DOMAIN_MAPPING' ) ) { | |
- add_filter( 'plugins_url', 'domain_mapping_plugins_uri', 1 ); | |
+ add_filter( 'plugins_url', 'domain_mapping_plugins_uri', 1, 3 ); | |
add_filter( 'theme_root_uri', 'domain_mapping_themes_uri', 1 ); | |
add_filter( 'pre_option_siteurl', 'domain_mapping_siteurl' ); |