From 9bbc0df8d84a2d57d26a7fdfea310a06f87b45e0 Mon Sep 17 00:00:00 2001 From: Jeremy Felt Date: Thu, 2 Jun 2016 21:45:20 +0000 Subject: [PATCH] Multisite: Replace `$wpdb->blog` queries in `get_site_by_path()` with `get_sites()` Props spacedmonkey, DrewAPicture. See #35791. git-svn-id: https://develop.svn.wordpress.org/trunk@37628 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/ms-load.php | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/wp-includes/ms-load.php b/src/wp-includes/ms-load.php index 56db231f25..7f9c28b2b6 100644 --- a/src/wp-includes/ms-load.php +++ b/src/wp-includes/ms-load.php @@ -154,6 +154,7 @@ function wp_get_network( $network ) { * Retrieve a site object by its domain and path. * * @since 3.9.0 + * @since 4.6.0 Converted to use get_sites() * * @global wpdb $wpdb WordPress database abstraction object. * @@ -163,8 +164,6 @@ function wp_get_network( $network ) { * @return object|false Site object if successful. False when no site is found. */ function get_site_by_path( $domain, $path, $segments = null ) { - global $wpdb; - $path_segments = array_filter( explode( '/', trim( $path, '/' ) ) ); /** @@ -231,27 +230,28 @@ function get_site_by_path( $domain, $path, $segments = null ) { $domains = array( $domain ); if ( 'www.' === substr( $domain, 0, 4 ) ) { $domains[] = substr( $domain, 4 ); - $search_domains = "'" . implode( "', '", $wpdb->_escape( $domains ) ) . "'"; } - if ( count( $paths ) > 1 ) { - $search_paths = "'" . implode( "', '", $wpdb->_escape( $paths ) ) . "'"; - } + $args = array( + 'domain__in' => $domains, + 'path__in' => $paths, + 'number' => 1, + ); if ( count( $domains ) > 1 && count( $paths ) > 1 ) { - $site = $wpdb->get_row( "SELECT * FROM $wpdb->blogs WHERE domain IN ($search_domains) AND path IN ($search_paths) ORDER BY CHAR_LENGTH(domain) DESC, CHAR_LENGTH(path) DESC LIMIT 1" ); + $args['orderby'] = 'domain_length path_length'; + $args['order'] = 'DESC DESC'; } elseif ( count( $domains ) > 1 ) { - $sql = $wpdb->prepare( "SELECT * FROM $wpdb->blogs WHERE path = %s", $paths[0] ); - $sql .= " AND domain IN ($search_domains) ORDER BY CHAR_LENGTH(domain) DESC LIMIT 1"; - $site = $wpdb->get_row( $sql ); + $args['orderby'] = 'domain_length'; + $args['order'] = 'DESC'; } elseif ( count( $paths ) > 1 ) { - $sql = $wpdb->prepare( "SELECT * FROM $wpdb->blogs WHERE domain = %s", $domains[0] ); - $sql .= " AND path IN ($search_paths) ORDER BY CHAR_LENGTH(path) DESC LIMIT 1"; - $site = $wpdb->get_row( $sql ); - } else { - $site = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->blogs WHERE domain = %s AND path = %s", $domains[0], $paths[0] ) ); + $args['orderby'] = 'path_length'; + $args['order'] = 'DESC'; } + $result = get_sites( $args ); + $site = array_shift( $result ); + if ( $site ) { // @todo get_blog_details() return $site;