WordPress.org

Make WordPress Core

Ticket #21837: 21837.with-unit-tests.diff

File 21837.with-unit-tests.diff, 3.5 KB (added by georgestephanis, 5 years ago)
  • src/wp-includes/ms-blogs.php

     
    124124                                $nowww = substr( $fields['domain'], 4 );
    125125                                $blog = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->blogs WHERE domain IN (%s,%s) AND path = %s ORDER BY CHAR_LENGTH(domain) DESC", $nowww, $fields['domain'], $fields['path'] ) );
    126126                        } else {
    127                                 $blog = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->blogs WHERE domain = %s AND path = %s", $fields['domain'], $fields['path'] ) );
     127                                $www = "www.{$fields['domain']}";
     128                                $blog = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->blogs WHERE domain IN (%s,%s) AND path = %s ORDER BY CHAR_LENGTH(domain) ASC", $fields['domain'], $www, $fields['path'] ) );
    128129                        }
    129130                        if ( $blog ) {
    130131                                wp_cache_set($blog->blog_id . 'short', $blog, 'blog-details');
     
    141142                                $nowww = substr( $fields['domain'], 4 );
    142143                                $blog = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->blogs WHERE domain IN (%s,%s) ORDER BY CHAR_LENGTH(domain) DESC", $nowww, $fields['domain'] ) );
    143144                        } else {
    144                                 $blog = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->blogs WHERE domain = %s", $fields['domain'] ) );
     145                                $www = "www.{$fields['domain']}";
     146                                $blog = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->blogs WHERE domain IN (%s,%s) ORDER BY CHAR_LENGTH(domain) ASC", $fields['domain'], $www ) );
    145147                        }
    146148                        if ( $blog ) {
    147149                                wp_cache_set($blog->blog_id . 'short', $blog, 'blog-details');
  • tests/phpunit/tests/multisite/site.php

     
    770770        }
    771771
    772772        /**
     773         * Ensure that we find the blog we want, regardless of www. prefix.
     774         *
     775         * @ticket 21837
     776         */
     777        function test_get_blog_details_www_nowww() {
     778                $network_ids = array(
     779                        'example.test/' => array(
     780                                'domain' => 'example.test',
     781                                'path'   => '/',
     782                                ),
     783                );
     784
     785                foreach ( $network_ids as &$id ) {
     786                        $id = $this->factory->network->create( $id );
     787                }
     788                unset( $id );
     789
     790                $ids = array(
     791                        'no-www.test/'   => array( 'domain' => 'no-www.test',   'path' => '/', 'title' => 'No WWW',   'site_id' => $network_ids['example.test/'] ),
     792                        'www.with.test/' => array( 'domain' => 'www.with.test', 'path' => '/', 'title' => 'With WWW', 'site_id' => $network_ids['example.test/'] ),
     793                );
     794
     795                foreach ( $ids as &$id ) {
     796                        $id = $this->factory->blog->create( $id );
     797                }
     798                unset( $id );
     799
     800                $site = get_blog_details( array( 'domain' => 'no-www.test' ) );
     801                $this->assertEquals( $ids['no-www.test/'], $site->blog_id );
     802                $this->assertEquals( 'No WWW', $site->blogname );
     803
     804                $site = get_blog_details( array( 'domain' => 'www.no-www.test' ) );
     805                $this->assertEquals( $ids['no-www.test/'], $site->blog_id );
     806                $this->assertEquals( 'No WWW', $site->blogname );
     807
     808                $site = get_blog_details( array( 'domain' => 'with.test' ) );
     809                $this->assertEquals( $ids['www.with.test/'], $site->blog_id );
     810                $this->assertEquals( 'With WWW', $site->blogname );
     811
     812                $site = get_blog_details( array( 'domain' => 'www.with.test' ) );
     813                $this->assertEquals( $ids['www.with.test/'], $site->blog_id );
     814                $this->assertEquals( 'With WWW', $site->blogname );
     815        }
     816
     817        /**
    773818         * Test the original and cached responses for a created and then deleted site when
    774819         * the blog ID is requested through get_blog_id_from_url().
    775820         */