Commit Graph

18 Commits

Author SHA1 Message Date
Boone Gorges
578134d4ff Use wp_installing() instead of WP_INSTALLING constant.
The `WP_INSTALLING` constant is a flag that WordPress sets in a number of
places, telling the system that options should be fetched directly from the
database instead of from the cache, that WP should not ping wordpress.org for
updates, that the normal "not installed" checks should be bypassed, and so on.

A constant is generally necessary for this purpose, because the flag is
typically set before the WP bootstrap, meaning that WP functions are not yet
available.  However, it is possible - notably, during `wpmu_create_blog()` -
for the "installing" flag to be set after WP has already loaded. In these
cases, `WP_INSTALLING` would be set for the remainder of the process, since
there's no way to change a constant once it's defined. This, in turn, polluted
later function calls that ought to have been outside the scope of site
creation, particularly the non-caching of option data. The problem was
particularly evident in the case of the automated tests, where `WP_INSTALLING`
was set the first time a site was created, and remained set for the rest of the
suite.

The new `wp_installing()` function allows developers to fetch the current
installation status (when called without any arguments) or to set the
installation status (when called with a boolean `true` or `false`). Use of
the `WP_INSTALLING` constant is still supported; `wp_installing()` will default
to `true` if the constant is defined during the bootstrap.

Props boonebgorges, jeremyfelt.
See #31130.

git-svn-id: https://develop.svn.wordpress.org/trunk@34828 602fd350-edb4-49c9-b593-d223f7449a82
2015-10-05 15:05:26 +00:00
Jeremy Felt
bb8ca3bd5f MS: Populate site_name property in a new WP_Network.
This allows us to reduce some extra handling in `ms-settings.php`. Requires [34777].

Props johnjamesjacoby for the initial patch.
See #31985.


git-svn-id: https://develop.svn.wordpress.org/trunk@34819 602fd350-edb4-49c9-b593-d223f7449a82
2015-10-04 20:50:48 +00:00
Jeremy Felt
3c177b8c6f MS: Use *_network_option() functions throughout core.
Replaces all uses of `*_site_option()` with the corresponding "network" function.

This excludes one usage in `wp-admin/admin-footer.php` that needs more investigation.

Props spacedmonkey.
See #28290.


git-svn-id: https://develop.svn.wordpress.org/trunk@34778 602fd350-edb4-49c9-b593-d223f7449a82
2015-10-02 19:07:23 +00:00
Jeremy Felt
13dd966554 Multisite: Implement the get_by_path method in WP_Network.
Move the internals of `get_network_by_path()` to `WP_Network()` and allow network objects to be retrieved by passing a requested domain and path.

Props johnjamesjacoby, jeremyfelt, drewapicture, wonderboymusic.
See #31985.


git-svn-id: https://develop.svn.wordpress.org/trunk@34099 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-13 23:39:20 +00:00
Jeremy Felt
591a9aa73c Multisite: Introduce the WP_Network class.
A `WP_Network` object initially matches a row from `wp_site` and is populated with additional properties used by WordPress core. The first iteration is used to retrieve an existing network based on data passed to the class.

* A network can be retrieved by its ID through `WP_Network::get_instance()`, following in the steps of `WP_Post` and `WP_Comment`.
* A network object can be created or completed by passing initial properties in as a standard object to `new WP_Network()`.

Using these methods, we are now able to populate the global `$current_site` during load via this class.

Props johnjamesjacoby, jeremyfelt, drewapicture, wonderboymusic.
See #31985.


git-svn-id: https://develop.svn.wordpress.org/trunk@34097 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-13 23:30:57 +00:00
Jeremy Felt
837b6c3e3e Multisite: Add action to handle network not found
`ms_network_not_found` fires when the global `$current_site` has not been filled and `ms_not_installed()` is about to fire. It cannot be used to populate `$current_site`, but can be used to capture the request and redirect or present a custom error.

Props rmccue.
Fixes #31702.


git-svn-id: https://develop.svn.wordpress.org/trunk@33990 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-10 05:05:14 +00:00
Jeremy Felt
d0706ac9ca Multisite: Remove $domain and $path globals in ms_not_installed()
Further reduces the reliance on these unnecessary globals.

Fixes #27264.


git-svn-id: https://develop.svn.wordpress.org/trunk@33989 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-10 03:52:21 +00:00
Sergey Biryukov
416e5bcb96 Move ms-load.php and ms-default-constants.php inclusion back to ms-settings.php to avoid breaking WP-CLI.
Use require_once() to allow for ms-settings.php to be included multiple times while testing.

props jeremyfelt.
see #27884.

git-svn-id: https://develop.svn.wordpress.org/trunk@28934 602fd350-edb4-49c9-b593-d223f7449a82
2014-06-30 23:49:34 +00:00
Andrew Nacin
9e24832a0e Add initial unit tests for multisite's bootstrap.
props jeremyfelt.
fixes #27884.


git-svn-id: https://develop.svn.wordpress.org/trunk@28910 602fd350-edb4-49c9-b593-d223f7449a82
2014-06-29 22:50:44 +00:00
Andrew Nacin
7839dd671c Multisite: Fix case sensitivity regressions in 3.9.
props jeremyfelt.
fixes #27866.


git-svn-id: https://develop.svn.wordpress.org/trunk@28276 602fd350-edb4-49c9-b593-d223f7449a82
2014-05-06 05:23:56 +00:00
Andrew Nacin
51847e0c73 Multisite: Lowercase REQUEST_URI when matching paths.
props markjaquith, jeremyfelt.
fixes #26403.


git-svn-id: https://develop.svn.wordpress.org/trunk@27724 602fd350-edb4-49c9-b593-d223f7449a82
2014-03-25 21:04:23 +00:00
Andrew Nacin
06a02bc455 Use wp_cache_add() instead of wp_cache_set() when we don't want an unconditional set.
props jeremyfelt.
see #27003.


git-svn-id: https://develop.svn.wordpress.org/trunk@27665 602fd350-edb4-49c9-b593-d223f7449a82
2014-03-24 01:02:06 +00:00
Andrew Nacin
9c520a5412 Multisite load: Cache the main site lookup query.
props jeremyfelt.
see #27003.


git-svn-id: https://develop.svn.wordpress.org/trunk@27664 602fd350-edb4-49c9-b593-d223f7449a82
2014-03-24 01:00:17 +00:00
Andrew Nacin
903c86d927 Introduce a ms_site_not_found filter to replace NOBLOGREDIRECT.
Move some processing down below the point where we bail if there's no site. Add more documentation.

props jeremyfelt.
fixes #21143, see #27003.


git-svn-id: https://develop.svn.wordpress.org/trunk@27663 602fd350-edb4-49c9-b593-d223f7449a82
2014-03-24 00:13:48 +00:00
Andrew Nacin
99e617f006 Multisite load: Properly call wp_cache_set().
props gradyetc.
see #27003.


git-svn-id: https://develop.svn.wordpress.org/trunk@27406 602fd350-edb4-49c9-b593-d223f7449a82
2014-03-05 06:26:30 +00:00
Andrew Nacin
6869d203d0 Introduce get_site_by_path() and further rewrite the site detection process for multisite.
This is the first big step to supporting arbitrary domains and paths. In this new approach, sites are detected first where possible, then the network is inferred. Allows filtering for arbitrary path segments, smooths out some weirdness, and removes various restrictions. A sunrise plugin could do much of its work by adding filters, if those are even needed.

see #27003.


git-svn-id: https://develop.svn.wordpress.org/trunk@27359 602fd350-edb4-49c9-b593-d223f7449a82
2014-03-02 22:24:50 +00:00
Andrew Nacin
31d3af406c Multisite: Add get_network_by_path() and wp_get_network() to begin cleanup of multisite load.
Tries to get network detection under control by simplifying wpmu_current_site(). It now also pops off each subdomain to find a more general match. Adds unit tests for get_network_by_path() and a new network factory for unit tests.

Much of this is likely to change in 3.9 as more of ms-load.php and ms-settings.php gets hacked to bits.

props jeremyfelt.
see #27003.


git-svn-id: https://develop.svn.wordpress.org/trunk@27178 602fd350-edb4-49c9-b593-d223f7449a82
2014-02-13 23:06:12 +00:00
Andrew Nacin
b43712e0f7 New develop.svn.wordpress.org repository based on the old core.svn repository.
* All WordPress files move to a src/ directory.
 * New task runner (Grunt), configured to copy a built WordPress to build/.
 * svn:ignore and .gitignore for Gruntfile.js, wp-config.php, and node.js.
 * Remove Akismet external from develop.svn. Still exists in core.svn.
 * Drop minified files from src/. The build process will now generate these.

props koop.
see #24976.

and see http://wp.me/p2AvED-1AI.



git-svn-id: https://develop.svn.wordpress.org/trunk@25001 602fd350-edb4-49c9-b593-d223f7449a82
2013-08-07 05:25:25 +00:00