Commit Graph

52 Commits

Author SHA1 Message Date
spacedmonkey
e2e15f1876 Users: Introduce the concept of a large site to single site installations.
Currently in WordPress multisite there is a concept of large networks. The function `wp_is_large_network` is used to determine if a network has a large number of sites or users. If a network is marked as large, then 
expensive queries to calculate user counts are not run on page load but deferred to scheduled events. However there are a number of places in a single site installation where this functionality would also be useful, as 
expensive calls to count users and roles can make screens in the admin extremely slow.

In this change, the `get_user_count` function and related functionality around it is ported to be available in a single site context. This means that expensive calls to the `count_users` function are replaced with 
calls to `get_user_count`. This change also includes a new function called `wp_is_large_user_count` and a filter of the same name, to mark if a site is large.

Props johnbillion, Spacedmonkey, Mista-Flo, lumpysimon, tharsheblows, obenland, miss_jwo, jrchamp, flixos90, macbookandrew, pento, desrosj, johnjamesjacoby, jb510, davidbaumwald, costdev. 
Fixes #38741.


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


git-svn-id: http://core.svn.wordpress.org/trunk@52600 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-03-29 12:42:13 +00:00
audrasjb
4b322d9de3 Posts, Post Types: Multisite: Decrement post_count option value when a post is deleted.
Previously, the `post_count` option value was not decremented when a post was deleted.

This change moves the `_update_posts_count_on_delete` action from `delete_post` hook to `after_delete_post` to ensure the deletion is taken into account.

Props henry.wright, pbearne, audrasjb.
Fixes #53443.

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


git-svn-id: http://core.svn.wordpress.org/trunk@51799 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-11-18 15:11:59 +00:00
Dominik Schilling
6496c61741 Multisite: Delete the signup entry when a user is deleted from the database.
When a user has registered with incorrect data and got the account deleted immediately, it currently wasn't possible to register with the same login or email address again due to the existing signup entry. They had to wait for two days until the entry gets automatically deleted. Now the associated signup entry gets deleted as part of the account deletion.

Fixes #43232.
Built from https://develop.svn.wordpress.org/trunk@48315


git-svn-id: http://core.svn.wordpress.org/trunk@48084 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2020-07-05 11:21:03 +00:00
desrosj
4b60af1a6a General: Remove “whitelist” and “blacklist” in favor of more clear and inclusive language.
“The WordPress open source community cares about diversity. We strive to maintain a welcoming environment where everyone can feel included.”

With this commit, all occurrences of “whitelist” and “blacklist” (with the single exception of the `$new_whitelist_options` global variable) are removed. A new ticket has been opened to explore renaming the `$new_whitelist_options` variable (#50434).

Changing to more specific names or rewording sentences containing these terms not only makes the code more inclusive, but also helps provide clarity. These terms are often ambiguous. What is being blocked or allowed is not always immediately clear. This can make it more difficult for non-native English speakers to read through the codebase.

Words matter. If one contributor feels more welcome because these terms are removed, this was worth the effort.

Props strangerstudios, jorbin, desrosj, joemcgill, timothyblynjacobs, ocean90, ayeshrajans, davidbaumwald, earnjam.
See #48900, #50434.
Fixes #50413.
Built from https://develop.svn.wordpress.org/trunk@48121


git-svn-id: http://core.svn.wordpress.org/trunk@47890 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2020-06-22 17:26:13 +00:00
Sergey Biryukov
001ffe81fb Docs: Improve inline comments per the documentation standards.
Includes minor code layout fixes for better readability.

See #48303.
Built from https://develop.svn.wordpress.org/trunk@47122


git-svn-id: http://core.svn.wordpress.org/trunk@46922 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2020-01-29 00:45:18 +00:00
Felix Arntz
321bdfbacf Multisite: Move site-specific metadata integrations from the wrapper functions to the low-level Meta API functions.
This complements the work in [43729] and prepares site metadata for future REST API support.

Props spacedmonkey.
Fixes #45091. See #44467.

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


git-svn-id: http://core.svn.wordpress.org/trunk@44299 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-01-08 08:48:48 +00:00
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