Commit Graph

14749 Commits

Author SHA1 Message Date
Andrew Nacin
8aa72f6993 4.1-alpha-29743. (Bumping to permanently sync the revision number with https://develop.svn.wordpress.org.)
git-svn-id: http://core.svn.wordpress.org/trunk@29743 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-23 20:52:36 +00:00
Andrew Nacin
18a864457f 4.1-alpha-29742. (Bumping to permanently sync the revision number with https://develop.svn.wordpress.org.)
git-svn-id: http://core.svn.wordpress.org/trunk@29742 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-23 20:52:35 +00:00
Andrew Nacin
ec5cb92186 4.1-alpha-29741. (Bumping to permanently sync the revision number with https://develop.svn.wordpress.org.)
git-svn-id: http://core.svn.wordpress.org/trunk@29741 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-23 20:52:34 +00:00
Andrew Nacin
21b6fc1e77 4.1-alpha-29740. (Bumping to permanently sync the revision number with https://develop.svn.wordpress.org.)
git-svn-id: http://core.svn.wordpress.org/trunk@29740 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-23 20:51:44 +00:00
Andrew Nacin
5187b32c2f 4.1-alpha-29739. (Bumping to permanently sync the revision number with https://develop.svn.wordpress.org.)
git-svn-id: http://core.svn.wordpress.org/trunk@29739 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-23 20:51:43 +00:00
Andrew Ozz
4dfe796cd2 TinyMCE: update to 4.1.6+. Adds support for cache-busting when auto-loading JS and CSS. Change the tests to run in /build. Changelog: https://github.com/tinymce/tinymce/blob/master/changelog.txt.
Fixes #30079
Built from https://develop.svn.wordpress.org/trunk@29994


git-svn-id: http://core.svn.wordpress.org/trunk@29735 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-23 02:08:20 +00:00
Boone Gorges
46c1c60e8d Generate fewer default posts in wp_list_authors() tests.
Saves about 7 seconds when running the suite.

See #30017.
Built from https://develop.svn.wordpress.org/trunk@29992


git-svn-id: http://core.svn.wordpress.org/trunk@29734 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-23 01:15:20 +00:00
Andrew Ozz
34ea8f9a5d Script-loader: remove 'heartbeat' dependency for post.js and inline-edit-post.js, fix dependencies for autosave.js. Fixes #30008
Built from https://develop.svn.wordpress.org/trunk@29989


git-svn-id: http://core.svn.wordpress.org/trunk@29731 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-22 03:41:18 +00:00
Andrew Ozz
965e783fd8 Twenty Fifteen: better editor-style.css: slightly smaller fonts, make the body margins relative, fix dependency on the mce-item-table class for tables. Props iamtakashi, fixes #29986
Built from https://develop.svn.wordpress.org/trunk@29987


git-svn-id: http://core.svn.wordpress.org/trunk@29729 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-22 02:40:17 +00:00
Andrew Ozz
4c81e264e8 TinyMCE: update the default styles: make the font size larger and make it the same size in tables. Fixes #30038
Built from https://develop.svn.wordpress.org/trunk@29986


git-svn-id: http://core.svn.wordpress.org/trunk@29728 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-21 23:06:18 +00:00
John Blackbourn
e2ff1da654 Update the docs for wp_remote_retrieve_response_code(). See #28887.
Built from https://develop.svn.wordpress.org/trunk@29985


git-svn-id: http://core.svn.wordpress.org/trunk@29727 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-21 21:13:18 +00:00
John Blackbourn
ae7cb843a0 Avoid double path separators in load_theme_textdomain(). Fixes #29122. Props bradyvercher
Built from https://develop.svn.wordpress.org/trunk@29984


git-svn-id: http://core.svn.wordpress.org/trunk@29726 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-21 17:58:18 +00:00
Andrew Ozz
ecdc8d3baf Admin menu:
- Fix scrolling the pinned menu with a mouse wheel.
- Fix pinning when the menu is only slightly taller than the viewport.
- Disable pinning on IE8, updating CSS top makes it jump when scrolling with a mouse wheel.
See #29806
Built from https://develop.svn.wordpress.org/trunk@29978


git-svn-id: http://core.svn.wordpress.org/trunk@29724 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-21 06:12:20 +00:00
Dion Hulse
2e30f3d891 HTTP API: Support both the 'limit_response_size' and 'stream' parameters at the same time, allowing a partial file download.
Fixes #26726

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


git-svn-id: http://core.svn.wordpress.org/trunk@29714 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-20 07:32:21 +00:00
Boone Gorges
304802d70d Use the comment API rather than direct SQL queries in comments_template().
`comments_template()` is used by most themes to display a post's comments. It
shows all comments that have been approved, and also shows all pending comments
by the current visitor (as determined by the comment cookies). However, the
comments API previously had no way of querying for "all comments that are
either approved, or are unapproved but written by foo@example.com". The
workaround was a direct SQL query: uncached, not subject to the same filters as
other comment queries, and just generally icky.

The new `include_unapproved` parameter for `WP_Comment_Query` accepts an array
of user IDs or email addresses. Pending comments associated with users in this
array will be included in query results, regardless of the value of the 'status'
parameter. In `comments_template()`, we leap from direct SQL queries to
`get_comments()` plus `include_unapproved', striving to put right what once
went wrong.

Props boonebgorges, simonwheatley, hardy101, jesin.
Fixes #19623.
Built from https://develop.svn.wordpress.org/trunk@29965


git-svn-id: http://core.svn.wordpress.org/trunk@29712 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-19 19:39:20 +00:00
Boone Gorges
b137059656 Make orderby=meta_value compatible with meta_query when relation=OR.
Passing orderby=meta_value and meta_key=foo to WP_Query should require that
each matched post have a meta value with the key 'foo'. To make this
requirement compatible with meta_query params that have the relation OR, we
nest the meta_query param, and join it using AND to a meta_query clause
generated from the meta_key/meta_compare/meta_type query vars.

Fixes #25538.
Built from https://develop.svn.wordpress.org/trunk@29964


git-svn-id: http://core.svn.wordpress.org/trunk@29711 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-19 18:54:19 +00:00
Sergey Biryukov
2c809dc24e Live-update site title in toolbar when changing the corresponding field in General Settings.
props celloexpressions, avryl.
fixes #28682.
Built from https://develop.svn.wordpress.org/trunk@29963


git-svn-id: http://core.svn.wordpress.org/trunk@29710 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-19 09:13:20 +00:00
Sergey Biryukov
0eb758720a Move password hint text to a function. Add 'password_hint' filter.
props convissor.
fixes #21243.
Built from https://develop.svn.wordpress.org/trunk@29962


git-svn-id: http://core.svn.wordpress.org/trunk@29709 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-18 20:21:18 +00:00
Sergey Biryukov
15a1e0731e Use proper functions for escaped translations.
pros jcastaneda.
fixes #30012.
Built from https://develop.svn.wordpress.org/trunk@29961


git-svn-id: http://core.svn.wordpress.org/trunk@29708 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-18 20:11:18 +00:00
Sergey Biryukov
beca5ad5a3 wp_add_inline_style():
* Change the `wp-inline-style-$handle` class added in [29956] to `$handle-inline-css` for consistency with existing patterns.
* Add the ID attribute when concatenation is enabled as well.

props georgestephanis.
see #30032.
Built from https://develop.svn.wordpress.org/trunk@29958


git-svn-id: http://core.svn.wordpress.org/trunk@29705 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-18 19:04:20 +00:00
Sergey Biryukov
26c8088a97 Add ID attribute to style element from wp_add_inline_style().
props westonruter.
fixes #30032.
Built from https://develop.svn.wordpress.org/trunk@29956


git-svn-id: http://core.svn.wordpress.org/trunk@29703 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-18 17:58:19 +00:00
Boone Gorges
09e1239ad6 Remove redundant table alias check in WP_Meta_Query.
Also adds documentation for 'meta_query_find_compatible_table_alias' filter.

See #24093.
Built from https://develop.svn.wordpress.org/trunk@29953


git-svn-id: http://core.svn.wordpress.org/trunk@29701 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-18 02:22:19 +00:00
Dominik Schilling
67c8d7f847 Customizer: Extract content markup for panels to its own method, WP_Customize_Panel::render_content().
This allows to override the behavior of a panel, or even to completely replace its contents with something other than controls or sections.

props celloexpressions.
fixes #29324.
Built from https://develop.svn.wordpress.org/trunk@29950


git-svn-id: http://core.svn.wordpress.org/trunk@29699 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-17 21:25:19 +00:00
Dominik Schilling
bc982b39c1 Customizer: Introduce customize_preview_$setting->type action to handle multiple settings of the same type.
props celloexpressions.
fixes #29165.
Built from https://develop.svn.wordpress.org/trunk@29948


git-svn-id: http://core.svn.wordpress.org/trunk@29697 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-17 21:21:19 +00:00
Boone Gorges
43fb0af4f1 Invalidate cache for child terms when parent term is deleted.
Props socki03.
Fixes #29911.
Built from https://develop.svn.wordpress.org/trunk@29945


git-svn-id: http://core.svn.wordpress.org/trunk@29695 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-17 20:59:20 +00:00
Boone Gorges
4ca2996eff Bail from cleaning meta query clause when it's not an array.
Later isset() checks on string values were causing notices on PHP < 5.4.

Props jorbin.
See #29642.
Built from https://develop.svn.wordpress.org/trunk@29941


git-svn-id: http://core.svn.wordpress.org/trunk@29692 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-17 20:25:19 +00:00
Boone Gorges
9345e9ffa5 Overhaul SQL generating logic in WP_Meta_Query to avoid unnecessary table joins.
The logic used to generate clause SQL in `WP_Meta_Query` is somewhat arcane,
stemming mostly from an ongoing effort to eliminate costly table joins when
they are not necessary. By systematizing the process of looking for shareable
joins - as was done in `WP_Tax_Query` [29902] - it becomes possible to simplify
the construction of SQL queries in `get_sql_for_clause()`. Moreover, the
simplified logic is actually considerably better at identifying shareable
joins, such that certain uses of `WP_Meta_Query` will see joins reduced by 50%
or more.

Includes integration tests for a representative cross-section of the query
clause combinations that result in shared table aliases.

Props boonebgorges, sc0ttkclark.
See #24093.
Built from https://develop.svn.wordpress.org/trunk@29940


git-svn-id: http://core.svn.wordpress.org/trunk@29691 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-17 20:21:18 +00:00
Scott Taylor
ea679e358e wp_schedule_single_event() should not prevent scheduling a future duplicate event. It should only reject an event as a duplicate if there is already a similar event scheduled within 10 minutes of the given timestamp.
Adds unit tests, fixes existing cron test.

Props tellyworth.

See [9181], #6966.
Fixes #28213.

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


git-svn-id: http://core.svn.wordpress.org/trunk@29690 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-17 19:17:18 +00:00
Boone Gorges
0f8e7d0e55 Add @since annotation for 'user_registered' support in 'date_query_valid_columns' documentation.
Props DrewAPicture.
Fixes #27283.
Built from https://develop.svn.wordpress.org/trunk@29938


git-svn-id: http://core.svn.wordpress.org/trunk@29689 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-17 03:51:20 +00:00
Boone Gorges
baff5f2b99 Better "inclusive" support for string values in WP_Date_Query.
The 'inclusive' parameter for WP_Date_Query determines whether non-precise
dates for 'before' and 'after' will be rounded up or down. Previously, this was
supported only when 'before' and 'after' were arrays; string-formatted dates
were run through strtotime(), which rounded them all down (inclusive in the
case of after, non-inclusive in the case of before). Now, we attempt to parse
formats that look like MySQL-formatted date strings, and apply inclusive logic
to them if we recognize them successfully.

Fixes #29908.
string values. Array values support the 'inclusive
Built from https://develop.svn.wordpress.org/trunk@29936


git-svn-id: http://core.svn.wordpress.org/trunk@29688 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-17 02:28:19 +00:00
Boone Gorges
6c6a285091 Comment/post author in/not_in for WP_Comment_Query.
Props nofearinc, chriscct7.
Fixes #29885.
Built from https://develop.svn.wordpress.org/trunk@29935


git-svn-id: http://core.svn.wordpress.org/trunk@29687 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-17 01:58:18 +00:00
Boone Gorges
bde2c97aee Support date_query by user_registered in WP_User_Query.
Props ChriCo, nacin.
Fixes #27283.
Built from https://develop.svn.wordpress.org/trunk@29934


git-svn-id: http://core.svn.wordpress.org/trunk@29686 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-17 01:37:18 +00:00
Boone Gorges
fcc82fd671 Use table aliases for columns in SQL generated by WP_Date_Query.
The use of non-aliased column names (eg 'post_date' instead of 'wp_posts.post_date')
in WP_Date_Query causes SQL notices and other failures when queries involve
table joins, such as date_query combined with tax_query or meta_query. This
changeset modifies WP_Date_Query::validate_column() to add the table alias when
it can be detected from the column name (ie, in the case of core columns).

A side effect of this change is that it is now possible to use WP_Date_Query
to build WHERE clauses across multiple tables, though there is currently no
core support for the automatic generation of the necessary JOIN clauses. See

Props ew_holmes, wonderboymusic, neoxx, Viper007Bond, boonebgorges.
Fixes #25775.
Built from https://develop.svn.wordpress.org/trunk@29933


git-svn-id: http://core.svn.wordpress.org/trunk@29685 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-17 01:20:21 +00:00
Boone Gorges
50f1b45594 Add expectedIncorrectUsage flags for unit tests that generate invalid dates.
Since [29925], passing an invalid date to WP_Date_Query will generate a
_doing_it_wrong() notice. The current changeset adds the
`@expectedIncorrectUsage` flag to those existing unit tests that generate
invalid dates, such as those that test canonical redirect and is_404()
conditionals.

Fixes #25834.
Built from https://develop.svn.wordpress.org/trunk@29932


git-svn-id: http://core.svn.wordpress.org/trunk@29684 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-17 00:41:18 +00:00
Boone Gorges
3949a8b6cc Remove invalid continue calls from WP_Tax_Query::get_sql_for_clause().
This was leftover code from the previous implementation, which used a `foreach()`
loop. See [29901].

Props nofearinc.
See #29738, #29718.
Built from https://develop.svn.wordpress.org/trunk@29931


git-svn-id: http://core.svn.wordpress.org/trunk@29683 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-16 22:07:20 +00:00
Boone Gorges
cac92b2876 Throw notices when invalid date values are passed to WP_Date_Query.
`_doing_it_wrong()` notices are now generated when passing out-of-range values
(`month=13`) or invalid dates (`2014-02-29`).

Includes unit tests.

Props ChriCo.
Fixes #25834.
Built from https://develop.svn.wordpress.org/trunk@29925


git-svn-id: http://core.svn.wordpress.org/trunk@29677 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-16 20:12:18 +00:00
Boone Gorges
838444446b Introduce nested query support to WP_Date_Query.
This enhancement makes it possible to filter post, comment, and other queries
by date in ways that are arbitrarily complex, using mixed AND and OR relations.

Includes unit tests for the new syntax. In a few places, the existing unit
tests were slightly too strict (such as when checking the exact syntax of a SQL
string); these existing tests have been narrowed.

Props boonebgorges.
Fixes #29822.
Built from https://develop.svn.wordpress.org/trunk@29923


git-svn-id: http://core.svn.wordpress.org/trunk@29675 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-16 19:34:17 +00:00
Dominik Schilling
d79cc63828 Update jQuery UI to 1.11.2.
Changelog: http://jqueryui.com/changelog/1.11.2/

see #29833.
Built from https://develop.svn.wordpress.org/trunk@29920


git-svn-id: http://core.svn.wordpress.org/trunk@29672 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-16 19:02:38 +00:00
Scott Taylor
fb019893f9 In wp.Uploader, when uploader:ready is triggered, set ready to true on the instance. This allows media workflows to check for an existing uploaded instance when opening.
Without this check, workflows might wait for `uploader:ready`, which could already have been fired. This would result in an unresponsive editor dropzone.

Fixes #29689.

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


git-svn-id: http://core.svn.wordpress.org/trunk@29669 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-16 05:54:18 +00:00
Scott Taylor
84a26a78a8 Cache get_term_by() calls:
* Add a helper function, `wp_get_last_changed()`, to retrieve a last-modified timestamp by cache group
* When caching a term, also make cache entries for slug and name via `slug:{$term_id}` and `name:{$term_id}` keys in the `$taxonomy:$last_changed` bucket that reference the term_id
* In `clean_term_cache()` and `update_term_cache()`, respect `$_wp_suspend_cache_invalidation`
* Original term cache entries maintain BC

Adds unit tests.

Props wonderboymusic, tollmanz, boonebgorges.
Fixes #21760.

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


git-svn-id: http://core.svn.wordpress.org/trunk@29668 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-16 04:45:17 +00:00
Scott Taylor
72d12b514d Add a 6th (!) attribute to wp_get_attachment_link() to allow aria-describedby to be added to gallery output.
Props joedolson, DrewAPicture, rianrietveld.
Fixes #27402.

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


git-svn-id: http://core.svn.wordpress.org/trunk@29667 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-16 04:28:17 +00:00
Boone Gorges
1470990892 Check that search value is scalar before parsing.
Prevents PHP notices when non-scalar values are passed.

Includes unit tests.

Props tivnet.
Fixes #29736.
Built from https://develop.svn.wordpress.org/trunk@29912


git-svn-id: http://core.svn.wordpress.org/trunk@29666 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-16 03:32:20 +00:00
Andrew Ozz
6de7c43ab3 Twenty Fifteen, editor-style.css: revert the font-size back to 19px and margin back to 83px, merge the two body selectors (don't seem needed), remove redundant rtl rules and fix body.rtl selector. See #29799
Built from https://develop.svn.wordpress.org/trunk@29911


git-svn-id: http://core.svn.wordpress.org/trunk@29665 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-16 00:27:19 +00:00
Dominik Schilling
bf16aac8e1 Comments: Don't print an empty HTML markup when comment_reply_link() returns no link.
props obenland.
fixes #29895.
Built from https://develop.svn.wordpress.org/trunk@29908


git-svn-id: http://core.svn.wordpress.org/trunk@29662 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-15 21:56:19 +00:00
Dominik Schilling
b89c915ed6 Customizer: Don't trigger a change event if two unchanged object values are equal, second pass.
Make Underscore.js a dependency for `customize-base` and use `_.isEqual()` to compare the values.
(Underscore.js was already enqueued via wp-util.js for Widgets.)

props westonruter.
fixes #26061.
Built from https://develop.svn.wordpress.org/trunk@29907


git-svn-id: http://core.svn.wordpress.org/trunk@29661 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-15 18:26:17 +00:00
Dominik Schilling
4020eacd8b Customizer: Only POST dirty settings to preview to improve performance.
props westonruter.
fixes #29983.
Built from https://develop.svn.wordpress.org/trunk@29905


git-svn-id: http://core.svn.wordpress.org/trunk@29660 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-15 17:50:18 +00:00
Dominik Schilling
61819a36ea Customizer: Change instances of "Theme Customizer" to just "Customizer", as the Customizer isn't necessarily theme-specific.
Also capitalize "Customizer".
See also https://make.wordpress.org/core/2014/07/08/customizer-improvements-in-4-0/.

props studionashvegas, tareq1988.
fixes #29947.
Built from https://develop.svn.wordpress.org/trunk@29903


git-svn-id: http://core.svn.wordpress.org/trunk@29658 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-15 17:21:19 +00:00
Boone Gorges
af6beda45b Avoid redundant table joins in WP_Tax_Query.
IN clauses that are connected by OR require only a single table join. To avoid
extraneous joins, keep track of generated table aliases, and let sibling
clauses piggy-back on those aliases when possible.

Introduces WP_Tax_Query::sanitize_relation() to reduce some repeated code.

Adds unit tests to verify the JOIN consolidation, and integration tests for
cases where JOINS are being combined.

Props boonebgorges, otto42, jakub.tyrcha.
Fixes #18105.
Built from https://develop.svn.wordpress.org/trunk@29902


git-svn-id: http://core.svn.wordpress.org/trunk@29657 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-15 16:40:18 +00:00
Boone Gorges
295f5fc9de Support nested tax query syntax in redirect_canonical().
The proper place to look for a list of queried terms is in the flat
queried_terms array, not in tax_query->queries.

See #29738.
Built from https://develop.svn.wordpress.org/trunk@29901


git-svn-id: http://core.svn.wordpress.org/trunk@29656 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-15 15:43:19 +00:00
Boone Gorges
09fbcfc1ad Support 'EXISTS' and 'NOT EXISTS' in WP_Tax_Query.
These new values for the 'operator' parameter make it possible to filter items
that have no term from a given taxonomy, or any term from a given taxonomy.

Includes unit tests.

Fixes #29181.
Built from https://develop.svn.wordpress.org/trunk@29896


git-svn-id: http://core.svn.wordpress.org/trunk@29651 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-15 00:54:21 +00:00