WordPress/wp-includes
Felix Arntz 21f18c2d30 Multisite: Initialize a user's roles correctly when setting them up for a different site.
While it has always been possible to initialize a user's roles and capabilities for another site than the current one in a multisite, the actual roles available were not switched prior to this change, possibly causing invalid roles to show up or actually valid capabilities not being available.

In order to fix this bug in a clean way, relevant parts of the `WP_User` class have been refactored. The ID of the site for which capabilities are currently initialized are now stored in a private property `WP_User::$site_id`. The `WP_User::for_blog( $blog_id )` and `WP_User::_init_caps( $cap_key )` methods have been deprecated in favor of `WP_User::for_site( $site_id )`. In addition, a new method `WP_User::get_site_id()` has been introduced to retrieve the site ID for which the user's capabilities are currently initialized.

Props ryanduff, jeremyfelt, flixos90.
Fixes #36961.

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


git-svn-id: http://core.svn.wordpress.org/trunk@41459 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-09-27 21:10:45 +00:00
..
ID3 Media: update the `getID3` library to version `1.9.14` to avoid fatal errors in PHP7. 2017-07-31 19:50:45 +00:00
IXR
Requests
SimplePie
Text
certificates
css Accessibility: Update and standardize the admin `screen-reader-text` CSS class. 2017-09-27 17:27:45 +00:00
customize Accessibility: CodeMirror editing areas minor improvements. 2017-09-24 16:00:46 +00:00
fonts
images
js TinyMCE: update to 4.6.7, changelog: https://www.tinymce.com/docs/changelog/#version467september182017. 2017-09-26 21:15:47 +00:00
pomo
random_compat
rest-api I18N: Add translator comments for placeholders in `WP_REST_Controller` strings. 2017-09-25 10:27:43 +00:00
theme-compat Embeds: Introduce `embed_thumbnail_id` filter for thumbnail image ID in the embed template. 2017-09-22 17:35:48 +00:00
widgets Widgets: Introduce Gallery widget for displaying image galleries. 2017-09-25 06:28:45 +00:00
admin-bar.php Toolbar: Add `View User` and `Edit User` links to the admin toolbar to ease navigation between a user's archives and the user editing screen. 2017-07-26 16:45:44 +00:00
atomlib.php
author-template.php Editor: Add CodeMirror-powered code editor with syntax highlighting, linting, and auto-completion. 2017-09-13 06:08:47 +00:00
bookmark-template.php
bookmark.php
cache.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
canonical.php Canonical: Check first before attempting to include a 'path' value in the URL in `strip_fragment_from_url()`. 2017-08-16 21:11:43 +00:00
capabilities.php Docs: Clarify descriptions and parameter types for various user capability checking functions. 2017-08-29 16:43:47 +00:00
category-template.php General: Fix more instances of inconsistent parameters passed to various filters, plus fix some filter docs. 2017-08-03 16:13:44 +00:00
category.php I18N: Merge similar strings in `_deprecated_argument()` calls. 2017-01-29 11:50:41 +00:00
class-IXR.php
class-feed.php
class-http.php Docs: Change `$args` to `$r` in the DocBlock for `http_api_debug` filter to match the variable name. 2017-09-22 09:33:47 +00:00
class-json.php
class-oembed.php Embeds: Documentation alignment following [41615]. 2017-09-27 13:27:44 +00:00
class-phpass.php
class-phpmailer.php Update PHPMailer to 5.2.22. 2017-01-11 01:23:41 +00:00
class-pop3.php
class-requests.php
class-simplepie.php
class-smtp.php Update PHPMailer to 5.2.22. 2017-01-11 01:23:41 +00:00
class-snoopy.php
class-walker-category-dropdown.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-walker-category.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-walker-comment.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-walker-nav-menu.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-walker-page-dropdown.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-walker-page.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-admin-bar.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-ajax-response.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-comment-query.php Introduce `paged` argument to `WP_Comment_Query`. 2017-08-21 15:35:46 +00:00
class-wp-comment.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-customize-control.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-customize-manager.php Customize: Dismiss all autosaved auto-drafts for user and not just the one suggested when dismissing restoration notification. 2017-09-26 20:33:46 +00:00
class-wp-customize-nav-menus.php Docs: Remove "in in", "this this", and "containing containing" dittography from inline comments. 2017-09-09 13:19:45 +00:00
class-wp-customize-panel.php Accessibility: CodeMirror editing areas minor improvements. 2017-09-24 16:00:46 +00:00
class-wp-customize-section.php Customize: Add notifications API to sections and panels. 2017-09-19 05:40:44 +00:00
class-wp-customize-setting.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-customize-widgets.php Customize: Introduce `settings_previewed` arg and getter on `WP_Customize_Manager` which controls whether `WP_Customize_Setting::preview()` should be called on settings. 2017-08-02 05:35:41 +00:00
class-wp-dependency.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-editor.php Editor: In `_WP_Editors::wp_link_query`, allow filtering empty results. 2017-09-08 14:03:44 +00:00
class-wp-embed.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-error.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-feed-cache-transient.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-feed-cache.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-hook.php Docs: Use correct order of arguments in the DocBlock for `WP_Hook::has_filter()`. 2017-09-21 10:00:48 +00:00
class-wp-http-cookie.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-http-curl.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-http-encoding.php
class-wp-http-ixr-client.php
class-wp-http-proxy.php
class-wp-http-requests-hooks.php Docs: Remove superfluous `@package WordPress` and `@subpackage` notations used outside of file headers in a variety of core files. 2017-07-01 16:58:42 +00:00
class-wp-http-requests-response.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-http-response.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-http-streams.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-image-editor-gd.php Media: Rename several attachment related parameters from `$post_id` to `$attachment_id` for clarity, and improve related 2017-08-22 11:12:44 +00:00
class-wp-image-editor-imagick.php Media: Rename several attachment related parameters from `$post_id` to `$attachment_id` for clarity, and improve related 2017-08-22 11:12:44 +00:00
class-wp-image-editor.php Media: Rename several attachment related parameters from `$post_id` to `$attachment_id` for clarity, and improve related 2017-08-22 11:12:44 +00:00
class-wp-list-util.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-locale-switcher.php General: Improve terminology used when referring to installations of WordPress and its extensions. 2017-08-22 11:52:48 +00:00
class-wp-locale.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-matchesmapregex.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-meta-query.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-metadata-lazyloader.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-network-query.php Docs: Fix various filter documentation. 2017-08-03 14:34:44 +00:00
class-wp-network.php Multisite: Introduce `get_main_site_id()`. 2017-09-15 11:15:52 +00:00
class-wp-oembed-controller.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-post-type.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-post.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-query.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-rewrite.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-role.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-roles.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-session-tokens.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-simplepie-file.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-simplepie-sanitize-kses.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-site-query.php Multisite: More specificity for the `get_sites()` documentation. 2017-09-04 11:17:43 +00:00
class-wp-site.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-tax-query.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-taxonomy.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-term-query.php Taxonomy: Force a `DISTINCT` term query when result count matters. 2017-09-13 14:48:45 +00:00
class-wp-term.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-text-diff-renderer-inline.php
class-wp-text-diff-renderer-table.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-theme.php Themes: Adjust translated string after [41601]. 2017-09-27 08:38:45 +00:00
class-wp-user-meta-session-tokens.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-user-query.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-user.php Multisite: Initialize a user's roles correctly when setting them up for a different site. 2017-09-27 21:10:45 +00:00
class-wp-walker.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-widget-factory.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-widget.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class-wp-xmlrpc-server.php I18N: Merge two similar "Cannot set parent term" error strings. 2017-09-22 22:08:46 +00:00
class-wp.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class.wp-dependencies.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class.wp-scripts.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
class.wp-styles.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
comment-template.php Docs: Clarify that `get_comments_number()` can return either a numeric string (for compatibility reasons) or 0 if the post doesn't exist. 2017-08-20 20:13:47 +00:00
comment.php Allow metadata to be updated via `wp_update_comment()`. 2017-07-01 13:36:41 +00:00
compat.php General: Move the `__autoload()` compat function into its own file to prevent deprecated notices being thrown by the compiler in PHP 7.2. 2017-07-28 01:15:52 +00:00
cron.php Docs: Use third-person singular verbs in the summaries for `wp_unschedule_hook()` and `wp_clear_scheduled_hook()`. 2017-06-30 04:54:41 +00:00
date.php Docs: Remove `@access` notations from method DocBlocks in wp-includes/* classes. 2017-07-27 00:41:44 +00:00
default-constants.php General: Improve terminology used when referring to installations of WordPress and its extensions. 2017-08-22 11:52:48 +00:00
default-filters.php Users: Introduce the concept of a large site in order to speed up the Users screen when there are many users. 2017-09-27 13:04:47 +00:00
default-widgets.php Widgets: Introduce Gallery widget for displaying image galleries. 2017-09-25 06:28:45 +00:00
deprecated.php Retire Press This and extract it to a plugin. First run. 2017-09-24 14:22:54 +00:00
embed-template.php
embed.php Accessibility: Update and standardize the admin `screen-reader-text` CSS class. 2017-09-27 17:27:45 +00:00
feed-atom-comments.php
feed-atom.php
feed-rdf.php
feed-rss.php
feed-rss2-comments.php
feed-rss2.php
feed.php Feeds: Don't override the Content-Type header inside fetc_feed() 2017-01-05 03:06:42 +00:00
formatting.php Emoji: Invert value returned by UN test for accuracy. 2017-09-17 22:52:47 +00:00
functions.php Users: There is not, in fact, 12345 users on every WordPress installation. 2017-09-27 13:07:46 +00:00
functions.wp-scripts.php
functions.wp-styles.php
general-template.php Customize: Introduce extensible code editor Customizer control for CodeMirror. 2017-09-21 23:04:45 +00:00
http.php Docs: Add `@access private` entries for `_get_component_from_parsed_url_array()` and `_wp_translate_php_url_constant_to_key()`. 2017-09-22 22:00:47 +00:00
kses.php Docs: Adjust notation for the `$context` parameter in the DocBlocks for the `wp_kses_allowed_html()` function and its associated `wp_kses_allowed_html` filter. 2017-06-25 22:16:40 +00:00
l10n.php General: Improve terminology used when referring to installations of WordPress and its extensions. 2017-08-22 11:52:48 +00:00
link-template.php Posts, Post Types: Pass the `order` parameter to `get_{$adjacent}_post_sort` filter. 2017-09-24 23:01:44 +00:00
load.php Docs: Add a `@global` entry for `$wp_filter` in `wp_start_object_cache()`. 2017-07-01 22:13:41 +00:00
locale.php
media-template.php Media: Set correct value for "Link Rel" field in Image Details modal. 2017-08-31 11:17:45 +00:00
media.php Media: Rename "Insert Media" window title to "Add Media" for consistency with the "Add Media" button. 2017-09-16 11:03:45 +00:00
meta.php Options/Meta: Document valid types for registration. 2017-05-10 06:10:43 +00:00
ms-blogs.php Multisite: Initialize a user's roles correctly when setting them up for a different site. 2017-09-27 21:10:45 +00:00
ms-default-constants.php
ms-default-filters.php Multisite: Fix filter hooks for the updating network count functions. 2017-05-09 17:15:43 +00:00
ms-deprecated.php General: Improve terminology used when referring to installations of WordPress and its extensions. 2017-08-22 11:52:48 +00:00
ms-files.php
ms-functions.php Options, Meta APIs: Require a confirmation link in an email to be clicked when a user attempts to change the network 2017-09-27 14:17:45 +00:00
ms-load.php Multisite: Introduce `get_main_site_id()`. 2017-09-15 11:15:52 +00:00
ms-settings.php
nav-menu-template.php Menus: Make sure `current-menu-parent` and `current-menu-ancestor` classes are properly set for parent items of post type archive submenu items. 2017-07-05 21:31:44 +00:00
nav-menu.php Map nav menu locations on theme switch 2017-08-09 21:04:47 +00:00
option.php Multisite: Remove references to `$wpdb->siteid` and use `get_current_network_id()` instead. 2017-08-12 13:11:43 +00:00
pluggable-deprecated.php
pluggable.php Login and Registration: Pass the user session token to the `set_auth_cookie` and `set_logged_in_cookie` filters. 2017-09-10 21:09:45 +00:00
plugin.php Add `wp.hooks` - JavaScript actions and filters. 2017-09-12 12:54:45 +00:00
post-formats.php Docs: Improve the return description for `get_post_format_slugs()` to note that the array contains slugs as both keys and values. 2017-08-20 20:03:54 +00:00
post-template.php I18N: Allow for post custom field name in `the_meta()` to be translated, e.g. to insert a non-breaking space before the colon. 2017-09-24 11:28:46 +00:00
post-thumbnail-template.php Post Thumbnails: Pass post ID to `post_thumbnail_size` filter. 2017-08-18 18:19:44 +00:00
post.php Docs: Remove "since since" and "one one" dittography from inline comments. 2017-09-09 13:53:42 +00:00
query.php Docs: Remove some more top-level `@aacess` tags from function DocBlocks. 2017-07-27 08:19:43 +00:00
registration-functions.php
registration.php
rest-api.php REST API: Always call `rest_get_server()` instead of accessing the `$wp_rest_server` global. 2017-08-10 01:38:43 +00:00
revision.php
rewrite.php
rss-functions.php
rss.php
script-loader.php Plugins: Improve error messages on plugins screen. 2017-09-27 08:46:45 +00:00
session.php
shortcodes.php Docs: Fix a typo in the DocBlock description for `add_shortcode()` introduced in [41281]. 2017-08-20 20:38:42 +00:00
spl-autoload-compat.php General: Move the `__autoload()` compat function into its own file to prevent deprecated notices being thrown by the compiler in PHP 7.2. 2017-07-28 01:15:52 +00:00
taxonomy.php Taxonomy: Introduce a `back_to_items` taxonomy label. 2017-09-27 14:39:45 +00:00
template-loader.php
template.php Docs: Don't reference non-existent hooks inline in the DocBlock descriptions for the following template functions: 2017-06-29 16:05:41 +00:00
theme.php Customize: Extend changesets to support autosave revisions with restoration notifications, and introduce a new default linear history mode for saved changesets (with a filter for opt-in to changeset branching). 2017-09-26 07:38:45 +00:00
update.php Users: Introduce the concept of a large site in order to speed up the Users screen when there are many users. 2017-09-27 13:04:47 +00:00
user.php Docs: Correct description for `insert_user_meta` filter. 2017-09-22 13:14:45 +00:00
vars.php General: Introduce a `wp_is_mobile` filter for controlling whether a request should be treated as coming from a mobile device. 2017-06-15 12:05:42 +00:00
version.php Multisite: Initialize a user's roles correctly when setting them up for a different site. 2017-09-27 21:10:45 +00:00
widgets.php Widgets: Merge orphaned widgets on theme switch 2017-09-25 16:19:46 +00:00
wlwmanifest.xml
wp-db.php Database: Hardening to bring `wpdb::prepare()` inline with documentation. 2017-09-19 17:56:45 +00:00
wp-diff.php