Commit Graph

36523 Commits

Author SHA1 Message Date
John Blackbourn 6ba598cc34 Build/Test tools: Remove occurrences of `create_function()` in unit tests.
Props desrosj

See #37082

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


git-svn-id: http://core.svn.wordpress.org/trunk@40299 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-07 13:38:41 +00:00
Felix Arntz ce6153d52a Multisite: Partially revert [40295].
[40295] removed the restriction of a minimum amount of characters for new site names, which could cause unexpected behavior. That changeset is reverted here with the exception of the removal of the `is_super_admin()` check, which can safely be omitted. A new filter for the minimum site name length will be introduced later to be able to modify that behavior.

See #39676, #37616.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40298 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-07 13:15:42 +00:00
Felix Arntz 00e8704288 Multisite: Introduce a `setup_network` capability for setting up multisite.
`setup_network` is a new meta capability that brings more granular control over the permissions to setup a multisite environment. In a non-multisite environment it falls back to `manage_options` while in a multisite it falls back to `manage_network_options`. The introduction of this capability furthermore allows replacing an `is_super_admin()` check.

Props ashokkumar24 for the original patch.
Fixes #39206. See #37616.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40297 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-07 12:53:45 +00:00
Pascal Birchler 72c19648bc Load: Only load `PasswordHash` class when needed.
This reverts [38371] which loaded `class-phpass.php` early in `wp-settings.php` and in turn caused backward compatibility problems.

Props DavidAnderson, ketuchetan.
Fixes #39445.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40294 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-06 18:01:42 +00:00
James Nylen 5584f22d53 Media: Add filters to allow overriding slow media queries.
There are a couple of queries that do a full table scan of attachment posts to support features of the media library.  Pending a more complete solution, allow overriding these queries via filters.

Props sboisvert, jnylen0.
See #31071.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40289 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-06 03:57:45 +00:00
Weston Ruter 19d960e257 Customize: Fix HTTPS navigation of site in preview on IE11.
Accounts for HTTPS links (port 443) where [40318] only accounted for HTTP links (port 80). Addresses issue in IE11 where the default port number is unexpectedly included on `link.host` for links dynamically created by scripts.

Props mattwiebe.
Amends [40318], [38890].
See #38409.
Fixes #40198.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40288 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-06 00:32:44 +00:00
Weston Ruter 162785c65f Customize: Fix reversal of nav menu item's `type` and `object` properties for page stub added in customizer.
Amends [38906].
See #38164.
Fixes #40277.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40287 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-05 23:29:42 +00:00
Weston Ruter 5f771393a3 Customize: Use `is_header_video_active()` as `active_callback` for `external_header_video` control instead of `is_front_page()`.
Use the same `active_callback` as was supplied previously for the `header_video` control in [39240] where this instance was missed.

Amends [39240].
Props pratikshrestha.
See #38738.
Fixes #40308.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40286 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-05 23:10:42 +00:00
James Nylen 99b13790c2 REST API: Allow fetching multiple users at once via the `slug` parameter.
This matches similar changes previously made for posts (#38579) and terms (#40027).

Props curdin, MatheusGimenez.
Fixes #40213.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40285 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-05 22:25:43 +00:00
James Nylen 1979815aef REST API: Update description string of terms endpoint `slug` parameter.
As a follow-up to [40376], and for consistency with the posts endpoint, we should indicate in the description that the `slug` filter parameter can accept multiple values.

See #40027.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40284 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-05 21:08:43 +00:00
James Nylen 9f2d94b211 REST API: Allow fetching multiple terms at once via the `slug` parameter.
This matches a similar change previously made for posts (#38579) and an upcoming change for users (#40213).

Props wonderboymusic, MatheusGimenez, curdin.
Fixes #40027.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40283 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-05 20:25:46 +00:00
Felix Arntz a212ed8e25 Multisite: Fix `wp_get_sites()` to return an unlimited amount of sites when passing a falsy `limit` argument.
Props iandunn for the original patch.
Fixes #39879. See #35791.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40279 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-05 02:18:43 +00:00
Felix Arntz 58b810e9eb Multisite: Add `$network_id` parameter to `get_user_count()`.
The `get_user_count()` function returns the number of active users on a network, which is stored in a `user_count` network option. Since `get_network_option()` supports retrieving options from other networks than the current one, `get_user_count()` can now make use of that feature.

Fixes #37866.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40278 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-05 02:18:00 +00:00
Felix Arntz 924e31583c Multisite: Support the `$network_id` parameter of `get_blog_count()`.
The `get_blog_count()` function used to support an `$id` parameter for the network ID prior to WordPress 3.1. This parameter has not been used since the introduction of `get_site_option()` and was later deprecated in [25113]. With `get_network_option()` however it is possible to support the parameter again, now properly renamed as `$network_id`.

A unit test has for the parameter has been added as well. Another unit test in the same class was adjusted to work properly with multiple networks existing.

Fixes #37865.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40277 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-05 02:17:18 +00:00
Pascal Birchler e1a08e199a Customize: User `get_user_locale()` in customizer body class.
Otherwise CSS specific to the site's locale would be applied, even though the customizer is displayed in the user's locale.

See #29783.
Fixes #40271.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40275 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-05 02:16:02 +00:00
Adam Silverstein 789f141045 REST API: JS Client - Enable connecting to multiple endpoints.
Enable connecting to multiple wp-api `endpoints`. Calling `wp.api.init` with a new `apiRoot` will parse the new endpoint's schema and store a new set of models and collections. A collection of connected endpoints is stored in `wp.api.endpoints`.

Props lucasstark.
Fixes #39683.


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


git-svn-id: http://core.svn.wordpress.org/trunk@40271 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-02 19:41:41 +00:00
Sergey Biryukov 41666b5e0c Mail: Use correct capitalization for PHPMailer methods in `wp_mail()`.
Props Soean, reidbusi.
Fixes #39702.
Built from https://develop.svn.wordpress.org/trunk@40363


git-svn-id: http://core.svn.wordpress.org/trunk@40270 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-01 14:34:43 +00:00
Sergey Biryukov 33dc58fe70 I18N: Remove an extra slash between `.mo` file path and name in `load_muplugin_textdomain()`.
Props nsundberg.
Fixes #39168.
Built from https://develop.svn.wordpress.org/trunk@40362


git-svn-id: http://core.svn.wordpress.org/trunk@40269 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-01 14:26:40 +00:00
Sergey Biryukov f884d7973b Posts, Post Types: Introduce `post_date_column_status` filter for post status text in list tables' Date column.
Props pbearne.
Fixes #39545.
Built from https://develop.svn.wordpress.org/trunk@40361


git-svn-id: http://core.svn.wordpress.org/trunk@40268 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-01 14:07:44 +00:00
Sergey Biryukov 2b48ca580e Embeds: Change the `embed_autourls` option filter from `default_option_*` to `pre_option_*` to avoid a DB query.
The option was removed from core in [21998], but still might be used by plugins.

Props dlh.
Fixes #38924.
Built from https://develop.svn.wordpress.org/trunk@40360


git-svn-id: http://core.svn.wordpress.org/trunk@40267 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-01 13:56:43 +00:00
Andrea Fercia 822b8afb50 Accessibility: Improve the Media Library inline uploader accessibility.
For better accessibility, expandable panels should be placed immediately after
the control that expands them. This change moves the Media Library inline
uploader up, right after the "Add New" button, also introducing consistency with
the Plugin and Theme uploaders.
Adds a proper ARIA role on the button and an `aria-expanded` attribute to give
better feedback to assistive technologies users about the uploader's expanded state.
Improves the focus handling when closing the uploader, improves the focus style
and color contrast ratio of the uploader "close" button.

Props mantismamita, karmatosed, adamsilverstein, afercia.
Fixes #37188.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40266 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-31 17:38:43 +00:00
Andrea Fercia 9c360b1ab8 Administration: Fix minor misalignments caused by the `button-link` CSS class.
After [40059] the CSS class `button-link` uses `text-align: left` by default.
This change now requires to limit as much as possible the use of `button-link`
to controls that should really look like links and to explicitly set
`text-align: center` in a few other cases.

Fixes #39983.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40265 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-31 16:51:45 +00:00
Andrea Fercia 35d8daf000 Quick/Bulk Edit: Fix the Tag suggestions position on the Bulk Edit textarea.
Always passes the complete `position` object to the jQuery autocomplete widget.
Also checks if an autocomplete instance already exists on the Bulk Edit textarea.

Props davidbenton.
Fixes #40242.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40264 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-31 16:35:45 +00:00
Sergey Biryukov 32e80d00c1 Press This: Reorder post format icon styles for consistency with `get_post_format_strings()`.
See #40304.
Built from https://develop.svn.wordpress.org/trunk@40356


git-svn-id: http://core.svn.wordpress.org/trunk@40263 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-31 08:22:48 +00:00
Sergey Biryukov 3c86148c14 Press This: Add missing icons for Chat and Status post formats.
Props menakas, ejner69.
Fixes #40304.
Built from https://develop.svn.wordpress.org/trunk@40355


git-svn-id: http://core.svn.wordpress.org/trunk@40262 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-31 08:19:48 +00:00
Boone Gorges 7102240efe Invalidate term query caches when setting or deleting term relationships.
Prior to 4.7, term relationships - as set by `wp_set_object_terms()` or
`wp_remove_object_terms()` - did not affect the term query cache. The
introduction of the 'object_ids' parameter in 4.7 means that the query
cache must be aware of object-term relationships. As such, the
'last_changed' incrementor is now invalidated when term relationships
are modified.

This bug only reared its head when delaying term counting, because term
counting performs its own term query cache invalidation.

Props mboynes.
Fixes #40306.
Built from https://develop.svn.wordpress.org/trunk@40353


git-svn-id: http://core.svn.wordpress.org/trunk@40260 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-30 16:51:47 +00:00
Jeremy Felt 3d4f2f2fea Multisite: Correct documentation for site status change hooks.
Props johnbillion.
Fixes #40287.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40259 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-30 04:36:43 +00:00
Jeremy Felt fa3dc867e7 Multisite: Add `deleted_blog` action after site has been deleted.
Props pauldewouters, johnjamesjacoby.
Fixes #25584.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40258 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-30 04:31:44 +00:00
James Nylen 977c5f85e3 Tests: Remove a couple of invalid error assertions.
A couple of REST API tests had an assertion `assertNotInstanceOf( 'WP_Error', $response );` which will never be true.

Since these assertions are invalid, and also made redundant by the response status check, we can just remove them.

Props dlh.
Fixes #40270.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40257 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-29 17:06:44 +00:00
Sergey Biryukov e8c4b8c8e7 Docs: Add an entry for `$pagenow` global in `WP_Customize_Manager::setup_theme()`.
Props mt8.biz.
Fixes #40297.
Built from https://develop.svn.wordpress.org/trunk@40349


git-svn-id: http://core.svn.wordpress.org/trunk@40256 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-29 11:41:46 +00:00
Sergey Biryukov 633ce094a1 Taxonomy: Fix typo in `$aria_checked` variable name in `Walker_Category_Checklist::start_el()`.
Props dhanendran.
Fixes #40295.
Built from https://develop.svn.wordpress.org/trunk@40348


git-svn-id: http://core.svn.wordpress.org/trunk@40255 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-29 11:22:47 +00:00
Jeremy Felt 1c6111f3bb Multisite: Remove unused `site-lookup` global cache group.
The `site-lookup` group was introduced in WPMU, but never actually used in WordPress core.

Props johnjamesjacoby.
Fixes #38725.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40254 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-28 21:08:47 +00:00
Jeremy Felt 0e7e0aa4bc Multisite: Respect `$_wp_suspend_cache_invalidation` when clearing network and site caches.
Props johnjamesjacoby.
Fixes #40028.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40253 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-28 19:36:49 +00:00
Jeremy Felt 6530f5f5f2 Multisite: Allow falsy properties to be cached in `site-details`.
In previous iterations of `WP_Site`, there was concern that not all properties would be available when storing a site's details in cache. When introduced in [37918], an `ms_loaded` check was added to address this concern. Any properties that are still `false` after `ms_loaded` really are `false` and can be cached as such.

Props flixos90.
Fixes #40247.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40251 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-28 02:32:44 +00:00
Jeremy Felt fa5f2d1fa2 Tests: Add missing global cache groups.
Add `useremail`, `userslugs`, `networks`, `sites`, and `site-details` as global cache groups when added with unit tests. This aligns the list with the core default.

Fixes #40283.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40250 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-28 01:46:45 +00:00
Jeremy Felt b61ddd8035 Tests: Clarify zero path segment tests for `get_network_by_path()`.
The set of assertions in this data provider intend to test a 0 path segment configuration rather than the use of paths.

Fixes #37217.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40249 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-28 01:25:48 +00:00
Jeremy Felt 94dbb2e8d8 Tests: Consolidate logic used to skip API fixture generation.
This checks for `is_multisite()` and the minimum PHP version in the same block and removes two `echo` statements previously used to indicate generation had been skipped.

Fixes #40041.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40248 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-27 21:05:44 +00:00
Jeremy Felt f940beae2b Multisite: Add `lang_id` support to `WP_Site_Query`.
Sites can now be queried by `lang_id`, `lang__in`, and `lang__not_in`.

Props ocean90.
Fixes #40196.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40247 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-27 19:48:52 +00:00
Jeremy Felt 36aa674859 Tests: Use utf8mb4 max index length when creating keys.
In [31349], core `varchar` column key lengths were changed from 255 to 191 to support the 767 byte index size limit on standard utf8mb4 MySQL installs. This changes the DB schema tests to match.

Props caseypatrickdriscoll, clarinetlord.
Fixes #35958.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40246 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-27 19:34:53 +00:00
Pascal Birchler db5a65eb5e Themes: Fix incorrect annotation for `__clear_multi_author_cache()` function.
Props flixos90.
See #40063.
Fixes #40262.


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


git-svn-id: http://core.svn.wordpress.org/trunk@40241 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-25 15:47:42 +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
Weston Ruter 8256ecfecb Customize: Improve i18n for strings in hidden widget area notices.
Amends [40312].
Props westonruter, ocean90, swissspidy, SergeyBiryukov, michelleweber for copywriting.
See #33567, #33052.
Fixes #39087.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40237 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-24 22:03:42 +00:00
Pascal Birchler 0d42f8549c REST API: Use `get_gmt_from_date()` when preparing a draft post for response.
This prevents wrong dates when dealing with DST, see [40115] and [40284].

Props nerrad.
Fixes #40136.
Built from https://develop.svn.wordpress.org/trunk@40324


git-svn-id: http://core.svn.wordpress.org/trunk@40231 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-24 17:32:46 +00:00
John Blackbourn 37a638ae8a Users: Don't push the current user's role to the top of the list in `wp_dropdown_roles()`.
This brings consistency to the order in which roles are displayed in the `Roles` dropdown when editing users.

Props bor0

Fixes #40162

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


git-svn-id: http://core.svn.wordpress.org/trunk@40230 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-24 14:53:46 +00:00
Sergey Biryukov 6e5e29c5bf Docs: Correct default value in `@param` entry for the `$num_words` parameter of `wp_trim_words` filter.
Props redrambles.
Fixes #40248.
Built from https://develop.svn.wordpress.org/trunk@40322


git-svn-id: http://core.svn.wordpress.org/trunk@40229 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-24 00:58:41 +00:00
John Blackbourn 3a4b5afa49 Login and Registration: Avoid a potentially incorrect value for the cookie hash on multisite installations that don't have a value in the `siteurl` network option.
This reverts [38619].

See #34084

Fixes #39497

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


git-svn-id: http://core.svn.wordpress.org/trunk@40227 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-23 19:01:42 +00:00
Weston Ruter e78707aad4 Customize: Prevent client-side validation from being cleared when no corresponding server-side validation is present.
See #36944.
Fixes #39770.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40226 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-23 18:12:44 +00:00
Weston Ruter 5aec57b209 Customize: Fix navigation of site in preview on IE11.
Addresses issue in IE11 where the default port number of `:80` is unexpectedly included on `link.host` for links dynamically created by scripts.

Props westonruter, afercia for testing.
See #38409.
Fixes #40198.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40225 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-23 17:25:43 +00:00
Felix Arntz 6b5169739f Multisite: Add further unit tests for `get_blog_details()`.
These tests verify that the returned site object is iterable and contains the expected properties.

See #40228, #40180.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40224 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-23 17:14:43 +00:00
Weston Ruter c78f903a7b Customize: Fix selective refresh when customizing the 404 template.
Overrides the 404 status during partial refresh requests to serve back 200 so that the request is not deemed a failure and invoke the fallback behavior (full refresh).

See #27355.
Fixes #40018.

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


git-svn-id: http://core.svn.wordpress.org/trunk@40223 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-23 16:57:43 +00:00