Commit Graph

46 Commits

Author SHA1 Message Date
Felix Arntz
2b10923a28 Multisite: Introduce a site initialization and uninitialization API.
This changeset makes the new CRUD API for sites introduced in [43548] usable for real-world sites. A new function `wp_initialize_site()`, which takes care of creating a site's database tables and populating them with initial values, is hooked into the site insertion process that is initiated when calling `wp_insert_site()`. Similarly, a new function `wp_uninitialize_site()`, which takes care of dropping a site's database tables, is hooked into the site deletion process that is initiated when calling `wp_delete_site()`.

A new function `wp_is_site_initialized()` completes the API, allowing to check whether a site is initialized. Since this function always makes a database request in its default behavior, it should be called with caution. Plugins that would like to use site initialization in special ways can leverage a `pre_wp_is_site_initialized` filter to alter that default behavior.

The separate handling of the site's row in the `wp_blogs` database table and the actual site setup allows for more flexibility in controlling whether or how a site's data is set up. For example, a unit test that only checks data from the site's database table row can unhook the site initialization process to improve performance. At the same time, developers consuming the new sites API only need to know about the CRUD functions, since the initialization and uninitialization processes happen internally.

With this changeset, the foundation for a sites REST API endpoint is fully available. The previously recommended functions `wpmu_create_blog()` and `wpmu_delete_blog()` now call the new respective function internally. Further follow-up work to this includes replacing calls to `wpmu_create_blog()` with `wp_insert_site()`, `update_blog_details()` with `wp_update_site()` and `wpmu_delete_blog()` with `wp_delete_blog()` throughout the codebase.

As a side-effect of this work, the `wpmu_new_blog`, `delete_blog`, and `deleted_blog` actions and the `install_blog()` function have been deprecated.

Fixes #41333. See #40364.

Built from https://develop.svn.wordpress.org/trunk@43654


git-svn-id: http://core.svn.wordpress.org/trunk@43483 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-09-24 15:09:26 +00:00
Felix Arntz
9e2e491f1f Multisite: Complete the new CRUD API for managing sites.
New functions `wp_insert_site( $data )`, `wp_update_site( $id, $data )` and `wp_delete_site( $id )` are introduced to manage site rows in the `wp_blogs` table, forming the new CRUD API together with the existing `get_site()` / `get_sites()`. The new API provides various benefits over the previously existing API, fixing several cache invalidation issues and being hook-driven so that normalization and validation of the passed data can be fully customized.

New hooks introduced as part of this are the actions `wp_insert_site`, `wp_update_site`, `wp_delete_site`, `wp_validate_site_data` and the filter `wp_normalize_site_data`.

At this point, `wp_insert_site()` does not handle setting up the site's database tables, and `wp_delete_site()` does not handle dropping the site's database tables, so the two can not yet be used directly as full replacements of `wpmu_create_blog()` and `wpmu_delete_blog()`. Managing the site's database tables will be added via hooks as part of the follow-up ticket #41333.

The existing functions `wpmu_create_blog()`, `update_blog_details()`, and `wpmu_delete_blog()` make use of the respective new counterpart and will be obsolete once #41333 has been completed.

Props flixos90, jeremyfelt, spacedmonkey.
Fixes #40364.

Built from https://develop.svn.wordpress.org/trunk@43548


git-svn-id: http://core.svn.wordpress.org/trunk@43377 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-08-01 13:06:26 +00:00
Gary Pendergast
aaf99e6913 Code is Poetry.
WordPress' code just... wasn't.
This is now dealt with.

Props jrf, pento, netweb, GaryJ, jdgrimes, westonruter, Greg Sherwood from PHPCS, and everyone who's ever contributed to WPCS and PHPCS.
Fixes #41057.


Built from https://develop.svn.wordpress.org/trunk@42343


git-svn-id: http://core.svn.wordpress.org/trunk@42172 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-11-30 23:11:00 +00:00
Jeremy Felt
78880a6a0b Multisite: Only update a site's post count when post types of post are updated.
Previously, the query to update the count of published posts would run every time any post type transitioned between a `publish`/non-published status or was deleted.

Props sboisvert, JPry, spacedmonkey.
Fixes #42021.

Built from https://develop.svn.wordpress.org/trunk@41665


git-svn-id: http://core.svn.wordpress.org/trunk@41499 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-10-02 03:09:44 +00:00
Felix Arntz
0892a6ebbf Multisite: Improve initializing available roles when switch sites.
Switching the available roles and the current user's capabilities no longer happens in `switch_to_blog()` and `restore_current_blog()`, instead it has been moved to a new function `wp_switch_roles_and_user()` which is hooked into the site switching process. This allows to improve performance by temporarily unhooking the function when roles and capabilities do not need to be switched.

This change ensures that switching available roles now works closer to switching user capabilities, particularly the changes in [41624]. A new `WP_Roles::for_site( $site_id )` method has been introduced, and the `WP_Roles::_init()` method has been deprecated. It is furthermore possible to retrieve the site ID for which the available roles are currently initialized through a new `WP_Roles::get_site_id()`.

Props johnjamesjacoby, flixos90.
Fixes #38645.

Built from https://develop.svn.wordpress.org/trunk@41625


git-svn-id: http://core.svn.wordpress.org/trunk@41460 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-09-27 21:44:44 +00:00
Felix Arntz
d5ae7e682e Multisite: Fix filter hooks for the updating network count functions.
[40591] and [40593] introduced a `$network_id` parameter for `wp_maybe_update_network_site_counts()` and `wp_maybe_update_network_user_counts()`, as well as [40486] previously added it to `wp_update_network_counts()`. This changeset ensures the filter hooks in `ms-default-filters.php` do not pass any parameter to them that might conflict with their actual `$network_id` parameter, which caused unit test failures before.

Fixes #40703.

Built from https://develop.svn.wordpress.org/trunk@40596


git-svn-id: http://core.svn.wordpress.org/trunk@40466 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-09 17:15:43 +00:00
Pascal Birchler
6216c997ba Multisite: After [40305], rename clean_site_details_cache() method as it's not really private.
See #40063.


Built from https://develop.svn.wordpress.org/trunk@40333


git-svn-id: http://core.svn.wordpress.org/trunk@40240 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-25 15:31:43 +00:00
Felix Arntz
cde6126923 Multisite: Handle sites cache invalidation more granularly for option updates.
Previously `update_blog_option()` would trigger an invalidation of that site's entire cache although these changes did not affect the content of these caches. Furthermore changes to the special options `blogname`, `siteurl` and `post_count` should not invalidate the entire cache of that site, but only their respective site details cache. The option `home` now has the same behavior as it also belongs to the site details, but did not invalidate the cache at all previously.

Several new unit tests confirm these changes work as expected.

Fixes #40063.

Built from https://develop.svn.wordpress.org/trunk@40305


git-svn-id: http://core.svn.wordpress.org/trunk@40212 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-19 16:22:45 +00:00
Boone Gorges
85c00bd943 Move new user notification emails to add_action() callbacks.
When a new user is created in various places throughout the interface,
notifications are sent to the site admin and the new user. Previously, these
notifications were fired through direct calls to `wp_new_user_notification()`,
making it difficult to stop or modify the messages.

This changeset introduces a number of new action hooks in place of direct calls
to `wp_new_user_notification()`, and hooks the new wrapper function
`wp_send_new_user_notifications()` to these hooks.

Props dshanske, thomaswm, boonebgorges.
Fixes #33587.
Built from https://develop.svn.wordpress.org/trunk@34251


git-svn-id: http://core.svn.wordpress.org/trunk@34215 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 22:19:24 +00:00
Boone Gorges
49803a45f3 Send multisite site/user signup emails via hooked functions.
Site and user signup notifications are moved to the new actions
`'after_signup_site'` and `'after_signup_user'`. Site and user activation
notifications are moved to the existing actions `'wpmu_activate_blog'` and
`'wpmu_activate_user'`.

Props dshanske, thomaswm, jeremyfelt.
See #33587..
Built from https://develop.svn.wordpress.org/trunk@34112


git-svn-id: http://core.svn.wordpress.org/trunk@34080 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-14 03:28:24 +00:00
Scott Taylor
4d26d999ce Fix doc blocks for ms-*.php files.
A few functions can return a conditional instead of an `if`/`else` of `true`/`false`.

See #32444.

Built from https://develop.svn.wordpress.org/trunk@32611


git-svn-id: http://core.svn.wordpress.org/trunk@32581 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-26 21:51:31 +00:00
Scott Taylor
fc843ce4d0 There are some random add_action() and add_filter() calls littered around some files in wp-includes/. These should be moved to wp-includes/default-filters.php with the rest of the registered hooks. It seems like this was the best practice for awhile and then we randomly stopped. This file loads way before any of the includes, so the hooks will be registered for any request that loads WordPress, even SHORTINIT - a lot of the hooks registered won't run anyways (that's already the case).
See #30947.

Built from https://develop.svn.wordpress.org/trunk@31168


git-svn-id: http://core.svn.wordpress.org/trunk@31149 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-12 16:40:23 +00:00
Sergey Biryukov
2d1cc72d7f Simplify the code for calling refresh_blog_details() whenever 'blogname', 'siteurl', or 'post_count' option is updated.
props pento, nacin.
fixes #26410.
Built from https://develop.svn.wordpress.org/trunk@29668


git-svn-id: http://core.svn.wordpress.org/trunk@29442 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-09-02 07:30:16 +00:00
Scott Taylor
2e81419d4c In multisite, on the updated_option action, if the option name is one of: 'blogname', 'siteurl', 'post_count' - refresh the blog details cache for the current blog id.
Adds unit test.

Props kovshenin.
Fixes #26410.

Built from https://develop.svn.wordpress.org/trunk@28881


git-svn-id: http://core.svn.wordpress.org/trunk@28680 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-06-28 04:07:16 +00:00
Scott Taylor
0233933f22 get_blog_details()->post_count should update on more actions than just publish_post.
Adds unit test.

Props 5um17, midxcat, strangerstudios.
Fixes #27952.

Built from https://develop.svn.wordpress.org/trunk@28835


git-svn-id: http://core.svn.wordpress.org/trunk@28639 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-06-26 00:53:15 +00:00
Andrew Nacin
0e959f06dc Live network counts of users and sites for small networks.
props adamsilverstein, jeremyfelt.
fixes #22917.

Built from https://develop.svn.wordpress.org/trunk@25621


git-svn-id: http://core.svn.wordpress.org/trunk@25538 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-09-25 16:21:09 +00:00
Sergey Biryukov
d50200d84d 'sanitize_user' is a filter, not an action. fixes #25411.
Built from https://develop.svn.wordpress.org/trunk@25618


git-svn-id: http://core.svn.wordpress.org/trunk@25535 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-09-25 03:14:09 +00:00
Andrew Nacin
1ec392175c Additional checks when evaluating the safety of an HTTP request, to avoid false negatives.
* Check if the host is considered a safe redirect host.
 * Check if the host is another domain in a multisite installation.
 * Add a filter to control this.

This only occurs when the DNS resolution of a domain points elsewhere in an internal network, but only internally (and has its own public IP outside the network). This could be considered a bad configuration.

fixes #24646.



git-svn-id: http://core.svn.wordpress.org/trunk@24915 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2013-07-31 06:44:57 +00:00
Andrew Nacin
dc49f24a6c Remove ms-files.php rewriting from WordPress multisite. fixes #19235.
Keep existing networks compatible with a ms_files_rewriting network option.



git-svn-id: http://core.svn.wordpress.org/trunk@21823 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-09-11 22:22:20 +00:00
westi
2039e3a8f0 Multisite: Make it easy to replace or augment the over-quota message displayed when you try and upload new media and you have reached your quota.
Fixes #21179 props dllh, jkudish. 


git-svn-id: http://core.svn.wordpress.org/trunk@21256 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-07-10 13:33:44 +00:00
ryan
f86bf75b34 Don't update a blog's last_updated time for all post deletions. Update only when published posts are deleted.
Props SergeyBiryukov
fixes #20433


git-svn-id: http://svn.automattic.com/wordpress/trunk@20461 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-04-13 17:30:37 +00:00
ryan
e3b46b25d3 Lose EOF ?>. Clean up EOF newlines. fixes #12307
git-svn-id: http://svn.automattic.com/wordpress/trunk@19712 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2012-01-08 17:01:11 +00:00
ryan
eb835e1901 Update the blog date whenever a pubic post type is published or changed after being published. fixes #18624
git-svn-id: http://svn.automattic.com/wordpress/trunk@19129 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2011-11-03 17:06:45 +00:00
nacin
c8cdb0cd3d Update blog last_updated time only on publish_post. Both private_to_published and publish_phone are overly broad and otherwise redundant. props mdawaffe, fixes #18624.
git-svn-id: http://svn.automattic.com/wordpress/trunk@18657 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2011-09-09 17:49:30 +00:00
nacin
a8eb3d747d Revert [16021]. See #14170.
git-svn-id: http://svn.automattic.com/wordpress/trunk@16213 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2010-11-05 21:35:28 +00:00
scribu
4eb0f634b2 Trigger activation hooks for netork plugins when new site is created. See #14170
git-svn-id: http://svn.automattic.com/wordpress/trunk@16021 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2010-10-27 19:41:59 +00:00
ryan
669a403b55 Update network-wide active user and blog counts via a cron job to avoid costly count queries. see #15170
git-svn-id: http://svn.automattic.com/wordpress/trunk@15875 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2010-10-20 20:22:14 +00:00
ryan
ec07e220ad Remove wordpressmu_wp_mail_from(). fixes #14586
git-svn-id: http://svn.automattic.com/wordpress/trunk@15678 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2010-10-01 18:32:47 +00:00
nacin
7e30a69c07 Add force_filtered_html_on_import filter. fixes #14818.
git-svn-id: http://svn.automattic.com/wordpress/trunk@15600 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2010-09-09 02:43:18 +00:00
nacin
4deb7b8b48 Don't use WP_SITEURL and WP_HOME in multisite. fixes #13191.
git-svn-id: http://svn.automattic.com/wordpress/trunk@14517 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2010-05-08 19:31:42 +00:00
nacin
950ce6553b Remove re-adding of filter. see #11742
git-svn-id: http://svn.automattic.com/wordpress/trunk@14440 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2010-05-04 16:00:30 +00:00
wpmuguru
8c3476d90e use filter vs action in 14420, see #12853
git-svn-id: http://svn.automattic.com/wordpress/trunk@14421 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2010-05-03 22:58:04 +00:00
wpmuguru
bc0ae7852f limit upload size to site's available limit, see #12853
git-svn-id: http://svn.automattic.com/wordpress/trunk@14420 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2010-05-03 22:40:02 +00:00
nacin
c449adb237 File-level phpdoc for multisite files.
git-svn-id: http://svn.automattic.com/wordpress/trunk@13998 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2010-04-04 13:29:35 +00:00
nacin
8b87777391 Switch the multisite constant EDIT_ANY_USER to a filter. Also ensure we're back compat with POST_BY_EMAIL. see #12381
git-svn-id: http://svn.automattic.com/wordpress/trunk@13568 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2010-03-03 07:04:25 +00:00
westi
e2f5b1f6c9 Switch from POST_BY_EMAIL constant to enable post-by-email when multisite to a filter. See #12381.
git-svn-id: http://svn.automattic.com/wordpress/trunk@13416 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2010-02-25 22:01:30 +00:00
westi
e3cba9ffe7 '>"
git-svn-id: http://svn.automattic.com/wordpress/trunk@13414 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2010-02-25 21:57:38 +00:00
westi
34d3291d32 Disable update service editing by default for multisite. See #12229.
Introduce __return_false for simple filtering. See #12381.

git-svn-id: http://svn.automattic.com/wordpress/trunk@13413 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2010-02-25 21:56:28 +00:00
ryan
f4ad08882e Integrate remove_tinymce_media_button() into wp_tiny_mce(). see #11644
git-svn-id: http://svn.automattic.com/wordpress/trunk@12954 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2010-02-04 20:00:18 +00:00
ryan
9f8149616d ms-functions pruning and cleanup. Props nacin. see #11644
git-svn-id: http://svn.automattic.com/wordpress/trunk@12948 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2010-02-04 18:57:32 +00:00
ryan
1de8e037c8 Integrate mu_locale() into get_locale(). see #11644
git-svn-id: http://svn.automattic.com/wordpress/trunk@12900 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2010-01-29 19:03:51 +00:00
ryan
65ac9b6827 Integrate wordpressmu_authenticate_siteadmin() into wp_authenticate_username_password(). see #11644
git-svn-id: http://svn.automattic.com/wordpress/trunk@12879 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2010-01-27 18:11:17 +00:00
ryan
9b79d3d516 Integrate wpmu_blogger_getUsersBlogs() directly into xmlrpc.php. see #11644
git-svn-id: http://svn.automattic.com/wordpress/trunk@12852 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2010-01-26 20:15:43 +00:00
ryan
e6b0d64b4e Integrate fix_upload_details() into wp_upload_dir(). see #11644
git-svn-id: http://svn.automattic.com/wordpress/trunk@12851 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2010-01-26 20:02:11 +00:00
westi
53d810f260 Remove svn:executable property on new files. Fixes #11743 props Denis-de-Bernardy.
git-svn-id: http://svn.automattic.com/wordpress/trunk@12610 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2010-01-06 22:22:45 +00:00
wpmuguru
d07d6c5717 Add mu only (inactive) files
git-svn-id: http://svn.automattic.com/wordpress/trunk@12603 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2010-01-06 04:02:57 +00:00