2010-01-28 18:16:58 +01:00
< ? php
/**
* Defines constants and global variables that can be overridden , generally in wp - config . php .
*
* @ package WordPress
* @ subpackage Multisite
2010-04-04 15:29:35 +02:00
* @ since 3.0 . 0
2010-01-28 18:16:58 +01:00
*/
/**
2010-02-12 09:22:34 +01:00
* Defines Multisite upload constants .
2010-01-28 18:16:58 +01:00
*
2012-09-12 00:22:20 +02:00
* Exists for backward compatibility with legacy file - serving through
* wp - includes / ms - files . php ( wp - content / blogs . php in MU ) .
*
2010-01-28 18:16:58 +01:00
* @ since 3.0 . 0
*/
2012-09-12 00:22:20 +02:00
function ms_upload_constants () {
2012-09-18 00:05:06 +02:00
// This filter is attached in ms-default-filters.php but that file is not included during SHORTINIT.
add_filter ( 'default_site_option_ms_files_rewriting' , '__return_true' );
2017-12-01 00:11:00 +01:00
if ( ! get_site_option ( 'ms_files_rewriting' ) ) {
2012-09-12 00:22:20 +02:00
return ;
2017-12-01 00:11:00 +01:00
}
2012-09-12 00:22:20 +02:00
2020-01-29 01:45:18 +01:00
// Base uploads dir relative to ABSPATH.
2017-12-01 00:11:00 +01:00
if ( ! defined ( 'UPLOADBLOGSDIR' ) ) {
2010-02-12 09:22:34 +01:00
define ( 'UPLOADBLOGSDIR' , 'wp-content/blogs.dir' );
2017-12-01 00:11:00 +01:00
}
2010-02-12 09:22:34 +01:00
2012-10-13 00:05:02 +02:00
// Note, the main site in a post-MU network uses wp-content/uploads.
// This is handled in wp_upload_dir() by ignoring UPLOADS for this case.
2012-09-18 20:07:18 +02:00
if ( ! defined ( 'UPLOADS' ) ) {
2017-10-02 03:44:47 +02:00
$site_id = get_current_blog_id ();
define ( 'UPLOADS' , UPLOADBLOGSDIR . '/' . $site_id . '/files/' );
2012-09-18 20:07:18 +02:00
2020-01-29 01:45:18 +01:00
// Uploads dir relative to ABSPATH.
2020-05-16 20:42:12 +02:00
if ( 'wp-content/blogs.dir' === UPLOADBLOGSDIR && ! defined ( 'BLOGUPLOADDIR' ) ) {
2017-10-02 03:44:47 +02:00
define ( 'BLOGUPLOADDIR' , WP_CONTENT_DIR . '/blogs.dir/' . $site_id . '/files/' );
2017-12-01 00:11:00 +01:00
}
2010-03-09 19:19:28 +01:00
}
2010-02-12 09:22:34 +01:00
}
/**
* Defines Multisite cookie constants .
*
* @ since 3.0 . 0
*/
2017-12-01 00:11:00 +01:00
function ms_cookie_constants () {
2016-10-19 06:47:30 +02:00
$current_network = get_network ();
2010-02-21 01:03:42 +01:00
2010-02-12 09:22:34 +01:00
/**
* @ since 1.2 . 0
*/
2017-12-01 00:11:00 +01:00
if ( ! defined ( 'COOKIEPATH' ) ) {
2016-10-19 06:47:30 +02:00
define ( 'COOKIEPATH' , $current_network -> path );
2017-12-01 00:11:00 +01:00
}
2010-02-12 09:22:34 +01:00
/**
* @ since 1.5 . 0
*/
2017-12-01 00:11:00 +01:00
if ( ! defined ( 'SITECOOKIEPATH' ) ) {
2016-10-19 06:47:30 +02:00
define ( 'SITECOOKIEPATH' , $current_network -> path );
2017-12-01 00:11:00 +01:00
}
2010-02-12 09:22:34 +01:00
/**
* @ since 2.6 . 0
*/
2017-12-01 00:11:00 +01:00
if ( ! defined ( 'ADMIN_COOKIE_PATH' ) ) {
Code Modernization: Check the return type of `parse_url()` in `ms_cookie_constants()`.
As per the PHP manual:
> If the `component` parameter is omitted, an associative array is returned.
> If the `component` parameter is specified, `parse_url()` returns a string (or an int, in the case of `PHP_URL_PORT`) instead of an array. If the requested component doesn't exist within the given URL, `null` will be returned.
Reference: [https://www.php.net/manual/en/function.parse-url.php#refsect1-function.parse-url-returnvalues PHP Manual: parse_url(): Return Values]
It is entirely possible for the `siteurl` option to not have a "path" component.
In PHP 8.1, this would lead to a `trim(): Passing null to parameter #1 ($string) of type string is deprecated` notice.
Changing the logic around and adding validation for the return type value of `parse_url()` prevents that.
As this function is declaring global constants, adding tests for this change is not really an option without potentially affecting other tests.
Follow-up to [51606], [51622], [51626], [51629].
Props jrf, hellofromTonya, SergeyBiryukov.
See #53635.
Built from https://develop.svn.wordpress.org/trunk@51630
git-svn-id: http://core.svn.wordpress.org/trunk@51236 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-08-18 00:08:57 +02:00
$site_path = parse_url ( get_option ( 'siteurl' ), PHP_URL_PATH );
if ( ! is_subdomain_install () || is_string ( $site_path ) && trim ( $site_path , '/' ) ) {
2010-02-12 09:22:34 +01:00
define ( 'ADMIN_COOKIE_PATH' , SITECOOKIEPATH );
} else {
define ( 'ADMIN_COOKIE_PATH' , SITECOOKIEPATH . 'wp-admin' );
}
2010-01-28 18:16:58 +01:00
}
2010-02-12 09:22:34 +01:00
/**
* @ since 2.0 . 0
*/
2017-12-01 00:11:00 +01:00
if ( ! defined ( 'COOKIE_DOMAIN' ) && is_subdomain_install () ) {
if ( ! empty ( $current_network -> cookie_domain ) ) {
define ( 'COOKIE_DOMAIN' , '.' . $current_network -> cookie_domain );
} else {
define ( 'COOKIE_DOMAIN' , '.' . $current_network -> domain );
}
2010-02-14 01:12:08 +01:00
}
2010-02-12 09:22:34 +01:00
}
/**
* Defines Multisite file constants .
*
2012-09-12 00:22:20 +02:00
* Exists for backward compatibility with legacy file - serving through
* wp - includes / ms - files . php ( wp - content / blogs . php in MU ) .
*
2010-02-12 09:22:34 +01:00
* @ since 3.0 . 0
*/
2012-09-12 00:22:20 +02:00
function ms_file_constants () {
2010-02-12 09:22:34 +01:00
/**
* Optional support for X - Sendfile header
2017-12-01 00:11:00 +01:00
*
2010-02-12 09:22:34 +01:00
* @ since 3.0 . 0
*/
2017-12-01 00:11:00 +01:00
if ( ! defined ( 'WPMU_SENDFILE' ) ) {
2010-02-12 09:22:34 +01:00
define ( 'WPMU_SENDFILE' , false );
2017-12-01 00:11:00 +01:00
}
2010-02-12 09:22:34 +01:00
/**
* Optional support for X - Accel - Redirect header
2017-12-01 00:11:00 +01:00
*
2010-02-12 09:22:34 +01:00
* @ since 3.0 . 0
*/
2017-12-01 00:11:00 +01:00
if ( ! defined ( 'WPMU_ACCEL_REDIRECT' ) ) {
2010-02-12 09:22:34 +01:00
define ( 'WPMU_ACCEL_REDIRECT' , false );
2017-12-01 00:11:00 +01:00
}
2010-01-28 18:16:58 +01:00
}
2010-05-04 22:48:28 +02:00
/**
* Defines Multisite subdomain constants and handles warnings and notices .
*
* VHOST is deprecated in favor of SUBDOMAIN_INSTALL , which is a bool .
*
* On first call , the constants are checked and defined . On second call ,
* we will have translations loaded and can trigger warnings easily .
*
* @ since 3.0 . 0
*/
function ms_subdomain_constants () {
2017-12-01 00:11:00 +01:00
static $subdomain_error = null ;
2014-07-20 01:14:15 +02:00
static $subdomain_error_warn = null ;
2010-05-26 04:42:15 +02:00
2014-07-17 00:35:14 +02:00
if ( false === $subdomain_error ) {
2010-05-04 22:48:28 +02:00
return ;
2014-07-17 00:35:14 +02:00
}
2010-05-04 22:48:28 +02:00
2014-07-17 00:35:14 +02:00
if ( $subdomain_error ) {
2016-02-29 04:17:26 +01:00
$vhost_deprecated = sprintf (
/* translators: 1: VHOST, 2: SUBDOMAIN_INSTALL, 3: wp-config.php, 4: is_subdomain_install() */
__ ( 'The constant %1$s <strong>is deprecated</strong>. Use the boolean constant %2$s in %3$s to enable a subdomain configuration. Use %4$s to check whether a subdomain configuration is enabled.' ),
'<code>VHOST</code>' ,
'<code>SUBDOMAIN_INSTALL</code>' ,
'<code>wp-config.php</code>' ,
'<code>is_subdomain_install()</code>'
);
2014-07-17 00:35:14 +02:00
if ( $subdomain_error_warn ) {
2010-05-04 22:48:28 +02:00
trigger_error ( __ ( '<strong>Conflicting values for the constants VHOST and SUBDOMAIN_INSTALL.</strong> The value of SUBDOMAIN_INSTALL will be assumed to be your subdomain configuration setting.' ) . ' ' . $vhost_deprecated , E_USER_WARNING );
} else {
2017-12-01 00:11:00 +01:00
_deprecated_argument ( 'define()' , '3.0.0' , $vhost_deprecated );
2010-05-04 22:48:28 +02:00
}
return ;
}
if ( defined ( 'SUBDOMAIN_INSTALL' ) && defined ( 'VHOST' ) ) {
2014-07-17 00:35:14 +02:00
$subdomain_error = true ;
2020-05-16 20:42:12 +02:00
if ( SUBDOMAIN_INSTALL !== ( 'yes' === VHOST ) ) {
2014-07-17 00:35:14 +02:00
$subdomain_error_warn = true ;
2010-05-04 22:48:28 +02:00
}
} elseif ( defined ( 'SUBDOMAIN_INSTALL' ) ) {
2014-07-17 00:35:14 +02:00
$subdomain_error = false ;
2010-05-04 22:48:28 +02:00
define ( 'VHOST' , SUBDOMAIN_INSTALL ? 'yes' : 'no' );
} elseif ( defined ( 'VHOST' ) ) {
2014-07-17 00:35:14 +02:00
$subdomain_error = true ;
2020-05-16 20:42:12 +02:00
define ( 'SUBDOMAIN_INSTALL' , 'yes' === VHOST );
2010-05-26 04:42:15 +02:00
} else {
2014-07-17 00:35:14 +02:00
$subdomain_error = false ;
2010-05-04 22:48:28 +02:00
define ( 'SUBDOMAIN_INSTALL' , false );
define ( 'VHOST' , 'no' );
}
}