| | 1413 | |
| | 1414 | /** |
| | 1415 | * @ticket 27884 |
| | 1416 | * |
| | 1417 | * @expectedDeprecated define() |
| | 1418 | */ |
| | 1419 | function test_multisite_bootstrap() { |
| | 1420 | global $current_site, $current_blog; |
| | 1421 | |
| | 1422 | $network_ids = array( |
| | 1423 | 'wordpress.org/' => array( 'domain' => 'wordpress.org', 'path' => '/' ), |
| | 1424 | 'make.wordpress.org/' => array( 'domain' => 'make.wordpress.org', 'path' => '/' ), |
| | 1425 | ); |
| | 1426 | |
| | 1427 | foreach ( $network_ids as &$id ) { |
| | 1428 | $id = $this->factory->network->create( $id ); |
| | 1429 | } |
| | 1430 | unset( $id ); |
| | 1431 | |
| | 1432 | $ids = array( |
| | 1433 | 'wordpress.org/' => array( 'domain' => 'wordpress.org', 'path' => '/', 'site_id' => $network_ids['wordpress.org/'] ), |
| | 1434 | 'wordpress.org/foo/' => array( 'domain' => 'wordpress.org', 'path' => '/foo/', 'site_id' => $network_ids['wordpress.org/'] ), |
| | 1435 | 'wordpress.org/foo/bar/' => array( 'domain' => 'wordpress.org', 'path' => '/foo/bar/', 'site_id' => $network_ids['wordpress.org/'] ), |
| | 1436 | 'make.wordpress.org/' => array( 'domain' => 'make.wordpress.org', 'path' => '/', 'site_id' => $network_ids['make.wordpress.org/'] ), |
| | 1437 | 'make.wordpress.org/foo/' => array( 'domain' => 'make.wordpress.org', 'path' => '/foo/', 'site_id' => $network_ids['make.wordpress.org/'] ), |
| | 1438 | ); |
| | 1439 | |
| | 1440 | foreach ( $ids as &$id ) { |
| | 1441 | $id = $this->factory->blog->create( $id ); |
| | 1442 | } |
| | 1443 | unset( $id ); |
| | 1444 | |
| | 1445 | $this->_setup_host_request( 'wordpress.org', '/' ); |
| | 1446 | $this->assertEquals( $ids['wordpress.org/'], $current_blog->blog_id ); |
| | 1447 | $this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id ); |
| | 1448 | |
| | 1449 | $this->_setup_host_request( 'wordpress.org', '/2014/04/23/hello-world/' ); |
| | 1450 | $this->assertEquals( $ids['wordpress.org/'], $current_blog->blog_id ); |
| | 1451 | $this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id ); |
| | 1452 | |
| | 1453 | $this->_setup_host_request( 'wordpress.org', '/sample-page/' ); |
| | 1454 | $this->assertEquals( $ids['wordpress.org/'], $current_blog->blog_id ); |
| | 1455 | $this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id ); |
| | 1456 | |
| | 1457 | $this->_setup_host_request( 'wordpress.org', '/?p=1' ); |
| | 1458 | $this->assertEquals( $ids['wordpress.org/'], $current_blog->blog_id ); |
| | 1459 | $this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id ); |
| | 1460 | |
| | 1461 | $this->_setup_host_request( 'wordpress.org', '/wp-admin/' ); |
| | 1462 | $this->assertEquals( $ids['wordpress.org/'], $current_blog->blog_id ); |
| | 1463 | $this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id ); |
| | 1464 | |
| | 1465 | $this->_setup_host_request( 'wordpress.org', '/foo/' ); |
| | 1466 | $this->assertEquals( $ids['wordpress.org/foo/'], $current_blog->blog_id ); |
| | 1467 | $this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id ); |
| | 1468 | |
| | 1469 | $this->_setup_host_request( 'wordpress.org', '/FOO/' ); |
| | 1470 | $this->assertEquals( $ids['wordpress.org/foo/'], $current_blog->blog_id ); |
| | 1471 | $this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id ); |
| | 1472 | |
| | 1473 | $this->_setup_host_request( 'wordpress.org', '/foo/2014/04/23/hello-world/' ); |
| | 1474 | $this->assertEquals( $ids['wordpress.org/foo/'], $current_blog->blog_id ); |
| | 1475 | $this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id ); |
| | 1476 | |
| | 1477 | $this->_setup_host_request( 'wordpress.org', '/foo/sample-page/' ); |
| | 1478 | $this->assertEquals( $ids['wordpress.org/foo/'], $current_blog->blog_id ); |
| | 1479 | $this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id ); |
| | 1480 | |
| | 1481 | $this->_setup_host_request( 'wordpress.org', '/foo/?p=1' ); |
| | 1482 | $this->assertEquals( $ids['wordpress.org/foo/'], $current_blog->blog_id ); |
| | 1483 | $this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id ); |
| | 1484 | |
| | 1485 | $this->_setup_host_request( 'wordpress.org', '/foo/wp-admin/' ); |
| | 1486 | $this->assertEquals( $ids['wordpress.org/foo/'], $current_blog->blog_id ); |
| | 1487 | $this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id ); |
| | 1488 | |
| | 1489 | // @todo not currently passing. |
| | 1490 | //$this->_setup_host_request( 'wordpress.org', '/foo/bar/' ); |
| | 1491 | //$this->assertEquals( $ids['wordpress.org/foo/bar/'], $current_blog->blog_id ); |
| | 1492 | //$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id ); |
| | 1493 | |
| | 1494 | $this->_setup_host_request( 'make.wordpress.org', '/' ); |
| | 1495 | $this->assertEquals( $ids['make.wordpress.org/'], $current_blog->blog_id ); |
| | 1496 | $this->assertEquals( $network_ids['make.wordpress.org/'], $current_blog->site_id ); |
| | 1497 | |
| | 1498 | $this->_setup_host_request( 'make.wordpress.org', '/foo/' ); |
| | 1499 | $this->assertEquals( $ids['make.wordpress.org/foo/'], $current_blog->blog_id ); |
| | 1500 | $this->assertEquals( $network_ids['make.wordpress.org/'], $current_blog->site_id ); |
| | 1501 | } |
| | 1502 | |
| | 1503 | /** |
| | 1504 | * Reset various globals required for a 'clean' multisite boot. |
| | 1505 | * |
| | 1506 | * The $wpdb and $table_prefix globals are required for ms-settings.php to |
| | 1507 | * load properly. |
| | 1508 | * |
| | 1509 | * @param string $domain HTTP_HOST of the bootstrap request. |
| | 1510 | * @param string $path REQUEST_URI of the boot strap request. |
| | 1511 | */ |
| | 1512 | function _setup_host_request( $domain, $path ) { |
| | 1513 | global $current_site, $current_blog, $wpdb, $table_prefix; |
| | 1514 | |
| | 1515 | $current_site = $current_blog = null; |
| | 1516 | $_SERVER['HTTP_HOST'] = $domain; |
| | 1517 | $_SERVER['REQUEST_URI'] = $path; |
| | 1518 | |
| | 1519 | include ABSPATH . '/wp-includes/ms-settings.php'; |
| | 1520 | } |