From bda6f0cffe68de3cbbae2cda4d3925b880c26e5d Mon Sep 17 00:00:00 2001 From: Scott Taylor Date: Wed, 16 Jul 2014 22:34:18 +0000 Subject: [PATCH] Properly set `$subdomain_error` to `false` when applicable in `ms_subdomain_constants()`. This was previously untestable because it used static vars: use globals instead. Adds unit test. Fixes #28697. git-svn-id: https://develop.svn.wordpress.org/trunk@29200 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/ms-default-constants.php | 24 ++++++++++++++---------- tests/phpunit/tests/ms.php | 11 +++++++++++ 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/src/wp-includes/ms-default-constants.php b/src/wp-includes/ms-default-constants.php index 8cbd2c35af..c8dd091c0a 100644 --- a/src/wp-includes/ms-default-constants.php +++ b/src/wp-includes/ms-default-constants.php @@ -114,17 +114,20 @@ function ms_file_constants() { * we will have translations loaded and can trigger warnings easily. * * @since 3.0.0 + * + * @global boolean $subdomain_error + * @global boolean $subdomain_error_warn */ function ms_subdomain_constants() { - static $error = null; - static $error_warn = false; + global $subdomain_error, $subdomain_error_warn; - if ( false === $error ) + if ( false === $subdomain_error ) { return; + } - if ( $error ) { + if ( $subdomain_error ) { $vhost_deprecated = __( 'The constant VHOST is deprecated. Use the boolean constant SUBDOMAIN_INSTALL in wp-config.php to enable a subdomain configuration. Use is_subdomain_install() to check whether a subdomain configuration is enabled.' ); - if ( $error_warn ) { + if ( $subdomain_error_warn ) { trigger_error( __( 'Conflicting values for the constants VHOST and SUBDOMAIN_INSTALL. The value of SUBDOMAIN_INSTALL will be assumed to be your subdomain configuration setting.' ) . ' ' . $vhost_deprecated, E_USER_WARNING ); } else { _deprecated_argument( 'define()', '3.0', $vhost_deprecated ); @@ -133,17 +136,18 @@ function ms_subdomain_constants() { } if ( defined( 'SUBDOMAIN_INSTALL' ) && defined( 'VHOST' ) ) { - if ( SUBDOMAIN_INSTALL == ( 'yes' == VHOST ) ) { - $error = true; - } else { - $error = $error_warn = true; + $subdomain_error = true; + if ( SUBDOMAIN_INSTALL !== ( 'yes' == VHOST ) ) { + $subdomain_error_warn = true; } } elseif ( defined( 'SUBDOMAIN_INSTALL' ) ) { + $subdomain_error = false; define( 'VHOST', SUBDOMAIN_INSTALL ? 'yes' : 'no' ); } elseif ( defined( 'VHOST' ) ) { - $error = true; + $subdomain_error = true; define( 'SUBDOMAIN_INSTALL', 'yes' == VHOST ); } else { + $subdomain_error = false; define( 'SUBDOMAIN_INSTALL', false ); define( 'VHOST', 'no' ); } diff --git a/tests/phpunit/tests/ms.php b/tests/phpunit/tests/ms.php index 185133d1e6..647f5eea49 100644 --- a/tests/phpunit/tests/ms.php +++ b/tests/phpunit/tests/ms.php @@ -25,6 +25,17 @@ class Tests_MS extends WP_UnitTestCase { $wpdb->suppress_errors( $this->suppress ); } + /** + * @ticket 28697 + */ + function test_ms_subdomain_constants() { + global $subdomain_error; + + $this->assertFalse( $subdomain_error ); + ms_subdomain_constants(); + $this->assertFalse( $subdomain_error ); + } + function test_remove_user_from_blog() { $user1 = $this->factory->user->create_and_get(); $user2 = $this->factory->user->create_and_get();