Compare commits

...

184 Commits
6.3 ... 4.0.29

Author SHA1 Message Date
Sergey Biryukov
e39418f195 Tag 4.0.29
Built from https://develop.svn.wordpress.org/tags/4.0.29@46952


git-svn-id: http://core.svn.wordpress.org/tags/4.0.29@46751 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-12-12 23:03:17 +00:00
Sergey Biryukov
5e48e39d47 WordPress 4.0.29
Built from https://develop.svn.wordpress.org/branches/4.0@46933


git-svn-id: http://core.svn.wordpress.org/branches/4.0@46733 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-12-12 20:34:14 +00:00
Sergey Biryukov
473123ae0b Update wp_kses_bad_protocol() to recognize : on uri attributes,
`wp_kses_bad_protocol()` makes sure to validate that uri attributes don’t contain invalid/or not allowed protocols. While this works fine in most cases, there’s a risk that by using the colon html5 named entity, one is able to bypass this function.

Brings r46895 to the 4.0 branch.

Props: xknown, nickdaugherty, peterwilsoncc.
Built from https://develop.svn.wordpress.org/branches/4.0@46908


git-svn-id: http://core.svn.wordpress.org/branches/4.0@46708 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-12-12 18:38:14 +00:00
desrosj
143bfc02d6 WordPress 4.0.28.
Built from https://develop.svn.wordpress.org/branches/4.0@46520


git-svn-id: http://core.svn.wordpress.org/branches/4.0@46317 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-10-14 20:17:14 +00:00
whyisjake
8a02054f7e Backporting several bug fixes.
- Query: Remove the static query property.
- HTTP API: Protect against hex interpretation.
- Filesystem API: Prevent directory travelersals when creating new folders.
- Administration: Ensure that admin referer nonce is valid.
- REST API: Send a Vary: Origin header on GET requests.
- Customizer: Properly sanitize background images.

Backports [46474], [46475], [46476], [46477], [46478], [46483], [46485] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@46502


git-svn-id: http://core.svn.wordpress.org/branches/4.0@46299 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-10-14 19:20:15 +00:00
desrosj
d6d162d67c WordPress 4.0.27.
Built from https://develop.svn.wordpress.org/branches/4.0@46034


git-svn-id: http://core.svn.wordpress.org/branches/4.0@45846 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-04 22:02:42 +00:00
desrosj
371474fb28 Fix for URL sanitization in wp_kses_bad_protocol_once().
Merges [45997] to the 4.0 branch.

Props irsdl, sstoqnov, whyisjake.
Built from https://develop.svn.wordpress.org/branches/4.0@46015


git-svn-id: http://core.svn.wordpress.org/branches/4.0@45826 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-04 21:43:04 +00:00
Sergey Biryukov
72bc032631 Improve URL validation in wp_validate_redirect().
Merges [45971] to the 4.0 branch.
Props vortfu, whyisjake, peterwilsoncc.
Built from https://develop.svn.wordpress.org/branches/4.0@45985


git-svn-id: http://core.svn.wordpress.org/branches/4.0@45796 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-04 17:16:13 +00:00
whyisjake
0bbd6c270b Remove _convert_urlencoded_to_entities() from the get_the_content() callback.
Merges [45937] to the 4.0 branch.

Props vortfu, whyisjake, peterwilsoncc

Built from https://develop.svn.wordpress.org/branches/4.0@45963


git-svn-id: http://core.svn.wordpress.org/branches/4.0@45774 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-04 16:46:14 +00:00
Sergey Biryukov
701d78e235 Escape the output in wp_ajax_upload_attachment().
Merges [45936] to the 4.0 branch.
Props whyisjake, sstoqnov.
Built from https://develop.svn.wordpress.org/branches/4.0@45960


git-svn-id: http://core.svn.wordpress.org/branches/4.0@45771 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-04 16:42:14 +00:00
John Blackbourn
442e49eb39 Build/Test tools: Fix the Travis CI build for the 4.0 branch.
Among other fixes, this backports [29860], [29869], [29954], [30160], [30530].

Fixes #46646

Built from https://develop.svn.wordpress.org/branches/4.0@45013


git-svn-id: http://core.svn.wordpress.org/branches/4.0@44822 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-03-26 00:46:20 +00:00
Gary Pendergast
b91cab4db7 WordPress 4.0.26
Built from https://develop.svn.wordpress.org/branches/4.0@44886


git-svn-id: http://core.svn.wordpress.org/branches/4.0@44717 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-03-13 01:56:17 +00:00
Sergey Biryukov
33938f5991 Comments: Improve comment content filtering.
Merges [44842] to the 4.0 branch.
Built from https://develop.svn.wordpress.org/branches/4.0@44854


git-svn-id: http://core.svn.wordpress.org/branches/4.0@44686 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-03-12 22:49:14 +00:00
Jeremy Felt
0ac92b3c2e Bump 4.0 branch to version 4.0.25.
Built from https://develop.svn.wordpress.org/branches/4.0@44087


git-svn-id: http://core.svn.wordpress.org/branches/4.0@43917 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-13 02:16:07 +00:00
Gary Pendergast
837af88a27 Editor: Remove unwanted fields before saving posts.
The `meta_input`, `file`, and `guid` fields are not intended to be updated through user input.

Merges [44047] to the 4.0 branch.


Built from https://develop.svn.wordpress.org/branches/4.0@44070


git-svn-id: http://core.svn.wordpress.org/branches/4.0@43900 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-13 01:57:13 +00:00
Peter Wilson
c19efc0288 Multisite: Validate activation links.
Merges [44048] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@44069


git-svn-id: http://core.svn.wordpress.org/branches/4.0@43899 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-13 01:56:13 +00:00
iandunn
4b02fb050d KSES: Make the URI attributes DRY.
This commit introduces the `wp_kses_uri_attributes` function and filter. The function centralizes the list of attributes, in order to prevent inconsistency, and the filter provides a way for plugins to customize the attributes.

Merges [44014] and [44017] to the `4.0` branch.

Built from https://develop.svn.wordpress.org/branches/4.0@44044


git-svn-id: http://core.svn.wordpress.org/branches/4.0@43874 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-13 01:19:13 +00:00
Peter Wilson
82c3aff4a6 Multisite: Improve messaging for previously activated users.
Ensure activation of a site is not attempted multiple times and users are shown the correct message if they follow the link a second time.

Merges [44021] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@44037


git-svn-id: http://core.svn.wordpress.org/branches/4.0@43867 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-13 01:01:13 +00:00
Gary Pendergast
a887beaab6 KSES: Conditionally remove the <form> element from $allowedposttags.
To avoid backwards compatibility issues, `<form>` is re-added if a custom filter has added the `<input>` or `<select>` elements to `$allowedposttags`.

Merges [43994] to the 4.0 branch.


Built from https://develop.svn.wordpress.org/branches/4.0@44015


git-svn-id: http://core.svn.wordpress.org/branches/4.0@43845 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-12 23:55:15 +00:00
Jeremy Felt
4bf1e12be7 Media: Improve verification of MIME file types.
Merges [43988] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@44009


git-svn-id: http://core.svn.wordpress.org/branches/4.0@43839 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-12 23:43:14 +00:00
Aaron Campbell
e0669df10b Bump 4.0 branch to version 4.0.24
Built from https://develop.svn.wordpress.org/branches/4.0@43416


git-svn-id: http://core.svn.wordpress.org/branches/4.0@43244 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-07-05 16:13:59 +00:00
John Blackbourn
5d0d03c979 Media: Limit thumbnail file deletions to the same directory as the original file.
Merges [43393] into the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@43402


git-svn-id: http://core.svn.wordpress.org/branches/4.0@43230 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-07-05 15:11:16 +00:00
Aaron Campbell
47734f66c8 Bump 4.0 branch to version 4.0.23
Built from https://develop.svn.wordpress.org/branches/4.0@42942


git-svn-id: http://core.svn.wordpress.org/branches/4.0@42772 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-04-03 20:32:10 +00:00
Dominik Schilling
b7ad4d7fe4 Template: Make sure the version string is correctly escaped for use in attributes.
Merge of [42893] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@42926


git-svn-id: http://core.svn.wordpress.org/branches/4.0@42756 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-04-03 16:11:09 +00:00
Dominik Schilling
dd263fc53e Login: Use wp_safe_redirect() when redirecting the login page if forced to use HTTPS.
Merge of [42892] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@42904


git-svn-id: http://core.svn.wordpress.org/branches/4.0@42734 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-04-03 15:34:12 +00:00
Sergey Biryukov
5a8e43f8cd General: Update copyright year to 2018 in license.txt.
Props rachelbaker.
Merges [42424] to the 4.0 branch.
Fixes #43007.
Built from https://develop.svn.wordpress.org/branches/4.0@42561


git-svn-id: http://core.svn.wordpress.org/branches/4.0@42390 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-01-23 11:30:13 +00:00
Dion Hulse
31b12793ea Bump the 4.0 branch to 4.0.22.
Built from https://develop.svn.wordpress.org/branches/4.0@42503


git-svn-id: http://core.svn.wordpress.org/branches/4.0@42332 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-01-16 21:46:19 +00:00
Dion Hulse
d6fc54f0f0 External Libraries: Remove unnecessary / obsoleted MediaElement.js files.
Merges [42478] to the 4.0 branch.
Fixes #42720 for 4.0.

Built from https://develop.svn.wordpress.org/branches/4.0@42486


git-svn-id: http://core.svn.wordpress.org/branches/4.0@42315 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-01-16 08:14:22 +00:00
Dion Hulse
c5ccc7cdfa Upgrade: When deleting old files, if deletion fails attempt to empty the file instead.
Props joemcgill, dd32.
Merges [42434] to the 4.0 branch.
Fixes #42963 for 4.0.

Built from https://develop.svn.wordpress.org/branches/4.0@42474


git-svn-id: http://core.svn.wordpress.org/branches/4.0@42303 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-01-16 06:58:39 +00:00
John Blackbourn
dcff9fb48a Bump 4.0 branch to version 4.0.21.
Built from https://develop.svn.wordpress.org/branches/4.0@42325


git-svn-id: http://core.svn.wordpress.org/branches/4.0@42154 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-11-29 19:03:19 +00:00
John Blackbourn
80aef7ba67 Hardening: Remove the ability to upload JavaScript files for users who do not have the unfiltered_html capability.
Merges [42261] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@42303


git-svn-id: http://core.svn.wordpress.org/branches/4.0@42132 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-11-29 16:40:35 +00:00
John Blackbourn
a44ccc633f Hardening: Ensure the attributes of enclosures are correctly escaped in RSS and Atom feeds.
Merges [42260] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@42302


git-svn-id: http://core.svn.wordpress.org/branches/4.0@42131 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-11-29 16:40:18 +00:00
John Blackbourn
5532a29f59 Hardening: Add escaping to the language attributes used on html elements.
Merges [42259] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@42301


git-svn-id: http://core.svn.wordpress.org/branches/4.0@42130 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-11-29 16:39:05 +00:00
John Blackbourn
c2be27457f Hardening: Use a properly generated hash for the newbloguser key instead of a determinate substring.
Merges [42258] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@42300


git-svn-id: http://core.svn.wordpress.org/branches/4.0@42129 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-11-29 16:38:47 +00:00
Dion Hulse
6105b0dedb WPDB: Check that AUTH_SALT is not empty, Fix a PHP notice when AUTH_SALT is undefined.
Props jsonfry, mkomar, pento.
Merges [42119] and [42120] to the 4.0 branch.
Fixes #42431 and #42401 for 4.0.

Built from https://develop.svn.wordpress.org/branches/4.0@42238


git-svn-id: http://core.svn.wordpress.org/branches/4.0@42067 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-11-27 01:14:18 +00:00
John Blackbourn
0c9b121594 General: Remove the version number from the readme file in the 4.0 branch.
See #42386

Built from https://develop.svn.wordpress.org/branches/4.0@42096


git-svn-id: http://core.svn.wordpress.org/branches/4.0@41925 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-10-31 18:02:19 +00:00
Gary Pendergast
a9c82ac560 Bump 4.0 branch to version 4.0.20.
Built from https://develop.svn.wordpress.org/branches/4.0@42077


git-svn-id: http://core.svn.wordpress.org/branches/4.0@41906 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-10-31 13:44:19 +00:00
Gary Pendergast
907fe8136e Database: Restore numbered placeholders in wpdb::prepare().
[41496] removed support for numbered placeholders in queries send through `wpdb::prepare()`, which, despite being undocumented, were quite commonly used.

This change restores support for numbered placeholders (as well as a subset of placeholder formatting), while also adding extra checks to ensure the correct number of arguments are being passed to `wpdb::prepare()`, given the number of placeholders.

Merges [41662], [42056] to the 4.0 branch.
See #41925.


Built from https://develop.svn.wordpress.org/branches/4.0@42065


git-svn-id: http://core.svn.wordpress.org/branches/4.0@41894 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-10-31 12:55:20 +00:00
Dominik Schilling
03aec8b402 Users: Use correct escaping function for URLs.
Merge of [41522] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@41531


git-svn-id: http://core.svn.wordpress.org/branches/4.0@41364 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-09-19 21:39:43 +00:00
Aaron Campbell
42af396f21 Bump 4.0 branch to version 4.0.19.
Built from https://develop.svn.wordpress.org/branches/4.0@41518


git-svn-id: http://core.svn.wordpress.org/branches/4.0@41351 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-09-19 20:10:20 +00:00
Aaron Campbell
f10a53cf41 Database: Hardening to bring wpdb::prepare() inline with documentation.
`wpdb::prepare()` supports %s, %d, and %F as placeholders in the query string. Any other non-escaped % will be escaped.

Merges [41496] to 4.0 branch.


Built from https://develop.svn.wordpress.org/branches/4.0@41505


git-svn-id: http://core.svn.wordpress.org/branches/4.0@41338 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-09-19 18:42:19 +00:00
Aaron Campbell
a133648403 Database: Don’t trigger _doing_it_wrong() for null values in wpdb::prepare().
While `wpdb::prepare()` does not support null values (see #12819) they still appear in the wild like in the WordPress Importer and other plugins.

Merges [41483] to 4.0 branch.


Built from https://develop.svn.wordpress.org/branches/4.0@41492


git-svn-id: http://core.svn.wordpress.org/branches/4.0@41325 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-09-19 16:26:35 +00:00
Aaron Campbell
f80bd53e4b Database: Hardening for wpdb::prepare()
Previously if you passed an array of values for placeholders, additional values could be passed as well. Now additional values will be ignored.

Merges [41470] to 4.0 branch.


Built from https://develop.svn.wordpress.org/branches/4.0@41479


git-svn-id: http://core.svn.wordpress.org/branches/4.0@41312 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-09-19 15:04:19 +00:00
John Blackbourn
d29f744559 Filesystem API: Ensure filenames are valid before attempting to unzip them to ensure malformed file paths don't cause issues.
Merges [41457] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@41466


git-svn-id: http://core.svn.wordpress.org/branches/4.0@41299 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-09-19 14:44:37 +00:00
John Blackbourn
9f5d4f74be General: Add missing URL-encoding and add extra hardening to plugin and template names when they're displayed in the admin area.
Merges [41434] with changes to the 4.0 branch.

See #13377

Built from https://develop.svn.wordpress.org/branches/4.0@41447


git-svn-id: http://core.svn.wordpress.org/branches/4.0@41280 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-09-19 13:42:20 +00:00
Dominik Schilling
4c6018f7ea TinyMCE: Improve the previews for shortcodes.
Merge of [41395] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@41443


git-svn-id: http://core.svn.wordpress.org/branches/4.0@41276 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-09-19 12:45:12 +00:00
Dominik Schilling
ed1fb81c47 Users: Provide a fallback for incorrect HTTP referrers.
Merge of [41398] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@41425


git-svn-id: http://core.svn.wordpress.org/branches/4.0@41258 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-09-19 11:15:17 +00:00
Dominik Schilling
5fc965b084 Editor: Prevent adding javascript: and data: URLs through the inline link dialog.
Merge of [41393] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@41408


git-svn-id: http://core.svn.wordpress.org/branches/4.0@41241 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-09-19 10:20:09 +00:00
Aaron Campbell
395d3d7bfc Bump 4.0 branch to version 4.0.18.
Built from https://develop.svn.wordpress.org/branches/4.0@40755


git-svn-id: http://core.svn.wordpress.org/branches/4.0@40613 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-16 21:53:42 +00:00
Pascal Birchler
8f69071d2d Media: Simplify upload error message construction.
Merges [40736] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@40744


git-svn-id: http://core.svn.wordpress.org/branches/4.0@40602 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-16 18:05:18 +00:00
Aaron Campbell
f27c1f06fe Add nonce for updating file system credentials.
Merges [40723] to 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@40731


git-svn-id: http://core.svn.wordpress.org/branches/4.0@40589 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-16 14:57:18 +00:00
Dominik Schilling
89a35259c0 Customize: Ignore invalid customization sessions.
Merge of [40704] to the 4.0 branch.
Built from https://develop.svn.wordpress.org/branches/4.0@40712


git-svn-id: http://core.svn.wordpress.org/branches/4.0@40575 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-16 12:20:43 +00:00
Pascal Birchler
f7259c14e2 Adjust post meta checks
Merges [40692] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@40700


git-svn-id: http://core.svn.wordpress.org/branches/4.0@40563 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-16 08:53:37 +00:00
Pascal Birchler
f35de85c64 Whitelist post arguments in XML-RPC
Merges [40677] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@40685


git-svn-id: http://core.svn.wordpress.org/branches/4.0@40548 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-16 08:27:19 +00:00
Pascal Birchler
7b33a67b95 Bump 4.0 branch to version 4.0.17.
Built from https://develop.svn.wordpress.org/branches/4.0@40494


git-svn-id: http://core.svn.wordpress.org/branches/4.0@40370 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-20 16:27:43 +00:00
Pascal Birchler
47b7dedef6 Fix broken audio/video functions when sanitizing ID3 data
This fixes a bug where running `wp_kses_post_deep()` on all the ID3
tag data corrupted blob data.

See #40075, #40085.

Merges [40400] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@40467


git-svn-id: http://core.svn.wordpress.org/branches/4.0@40343 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-04-17 13:31:19 +00:00
James Nylen
a40fe1c493 Bump 4.0 branch to version 4.0.16.
Built from https://develop.svn.wordpress.org/branches/4.0@40209


git-svn-id: http://core.svn.wordpress.org/branches/4.0@40148 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-06 16:39:19 +00:00
Aaron Campbell
cd7144b8cd Strip control characters before validating redirect.
Merges [40183] to 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@40191


git-svn-id: http://core.svn.wordpress.org/branches/4.0@40130 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-06 13:45:44 +00:00
Aaron Campbell
acbd361baf Plugins: Add file check to plugin deletions.
Merges [40169] to 4.0 branch.


Built from https://develop.svn.wordpress.org/branches/4.0@40177


git-svn-id: http://core.svn.wordpress.org/branches/4.0@40116 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-06 13:04:19 +00:00
Dominik Schilling
706528048b Embeds: URL encode YouTube video IDs for broader compatibility.
Merge of [40160] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@40168


git-svn-id: http://core.svn.wordpress.org/branches/4.0@40107 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-06 12:08:43 +00:00
Jeremy Felt
58440ac942 Validate video and audio metadata.
Merge of [40148] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@40156


git-svn-id: http://core.svn.wordpress.org/branches/4.0@40095 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-03-06 08:11:19 +00:00
Aaron Campbell
25e87a205e Bump 4.0 branch to version 4.0.15.
Built from https://develop.svn.wordpress.org/branches/4.0@40003


git-svn-id: http://core.svn.wordpress.org/branches/4.0@39940 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-26 18:28:20 +00:00
John Blackbourn
18c516254c Posts, Post Types: When using Excerpt mode on the Posts list table, ensure the excerpt output matches what was manually entered into the Excerpt field.
Merges [39956] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@39986


git-svn-id: http://core.svn.wordpress.org/branches/4.0@39923 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-26 14:19:18 +00:00
Dominik Schilling
6c9f0e2e0f Press This: Do not show Categories & Tags UI for users who cannot assign terms to posts anyways.
Merge of [39968] to the 4.0 branch.
Built from https://develop.svn.wordpress.org/branches/4.0@39978


git-svn-id: http://core.svn.wordpress.org/branches/4.0@39915 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-26 14:14:44 +00:00
Dominik Schilling
98590a9c90 Query: Ensure that queries work correctly with post type names with special characters.
Merge of [39952] to the 4.0 branch.
Built from https://develop.svn.wordpress.org/branches/4.0@39963


git-svn-id: http://core.svn.wordpress.org/branches/4.0@39900 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-26 13:52:45 +00:00
Aaron Campbell
39566256f7 Bump 4.0 branch to version 4.0.14.
Built from https://develop.svn.wordpress.org/branches/4.0@39867


git-svn-id: http://core.svn.wordpress.org/branches/4.0@39804 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 16:59:18 +00:00
Joe McGill
b236cbe16d Media: Fix exif_imagetype check in wp_get_image_mime
This is a follow up to [39831].

Merges [39850] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@39858


git-svn-id: http://core.svn.wordpress.org/branches/4.0@39795 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 16:44:41 +00:00
Joe McGill
d94f5603fa Media: Improve image filetype checking.
This adds a new function `wp_get_image_mime()` which is used by
`wp_check_filetype_and_ext()` to validate image files using
`exif_imagetype()` if available instead of `getimagesize()`.

`getimagesize()` is less performant than `exif_imagetype()` and is
dependent on GD. If `exif_imagetype()` is not available, it falls back to
`getimagesize()` as before.

If `wp_check_filetype_and_ext()` can't validate the filetype, we now return
`false` for ext/MIME values.

Merges [39831] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@39839


git-svn-id: http://core.svn.wordpress.org/branches/4.0@39777 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 13:19:18 +00:00
Dominik Schilling
5fcb58d0cb Updates: Translate plugin data on the Updates screen.
Merge of [39808] to the 4.0 branch.
Built from https://develop.svn.wordpress.org/branches/4.0@39827


git-svn-id: http://core.svn.wordpress.org/branches/4.0@39765 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 11:43:08 +00:00
Dominik Schilling
d8e0c202c5 Themes: Fix markup for theme name fallbacks.
Merge of [39807] to the 4.0 branch.
Built from https://develop.svn.wordpress.org/branches/4.0@39816


git-svn-id: http://core.svn.wordpress.org/branches/4.0@39754 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 11:12:39 +00:00
Jeremy Felt
af786324a1 Multisite: Use wp_rand() in signup key creation.
Merges [39795] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@39803


git-svn-id: http://core.svn.wordpress.org/branches/4.0@39741 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 05:36:18 +00:00
Dion Hulse
d04147c2d3 Update PHPMailer to 5.2.22.
The full list of changes is available here:
https://github.com/PHPMailer/PHPMailer/compare/v5.2.21...v5.2.22

Merges [39759] to the 4.0 branch.
Fixes #37210 for 4.0.

Built from https://develop.svn.wordpress.org/branches/4.0@39791


git-svn-id: http://core.svn.wordpress.org/branches/4.0@39729 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 05:26:18 +00:00
Jeremy Felt
dbfc89db8e Mail: Disable wp-mail.php when mailserver_url is mail.example.com.
Merges [39772] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@39780


git-svn-id: http://core.svn.wordpress.org/branches/4.0@39718 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 05:20:08 +00:00
Aaron Campbell
0f8124cdc6 Add nonce for widget accessibility mode.
Props vortfu.

See #23328.

Merges [39765] to 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@39768


git-svn-id: http://core.svn.wordpress.org/branches/4.0@39706 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 01:51:19 +00:00
Dion Hulse
918f720050 Mail: Upgrade PHPMailer to 5.2.21.
Merges [39645], [36083], [33142], [33124], [29783] to the 4.0 branch.
See #37210.

Built from https://develop.svn.wordpress.org/branches/4.0@39728


git-svn-id: http://core.svn.wordpress.org/branches/4.0@39668 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-06 22:06:41 +00:00
Joe McGill
e21c149861 Media: Improved media titles when created from filename.
Preserves spaces and generally creates more accurate, cleaner titles from filenames of uploaded media.

Merge of [38615] to the 4.0 branch.

Fixes #37989.

Built from https://develop.svn.wordpress.org/branches/4.0@39716


git-svn-id: http://core.svn.wordpress.org/branches/4.0@39656 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-06 22:01:43 +00:00
Dion Hulse
600bd299c2 General: Update copyright year to 2017 in license.txt.
Props Nikschavan.
Merges [39659] to the 4.0 branch.
Fixes #39433.

Built from https://develop.svn.wordpress.org/branches/4.0@39704


git-svn-id: http://core.svn.wordpress.org/branches/4.0@39644 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-06 21:55:13 +00:00
Jeremy Felt
b79f440e16 Bump 4.0 branch to 4.0.13.
Built from https://develop.svn.wordpress.org/branches/4.0@38555


git-svn-id: http://core.svn.wordpress.org/branches/4.0@38498 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-09-07 15:01:17 +00:00
Jeremy Felt
8edc8406ec Media: Sanitize upload filename.
Merge of [38538] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@38545


git-svn-id: http://core.svn.wordpress.org/branches/4.0@38488 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-09-07 14:00:19 +00:00
Pascal Birchler
2ec2662e9e Upgrade/Install: Sanitize file name in File_Upload_Upgrader.
Merge of [38524] to the 4.0 branch.
Built from https://develop.svn.wordpress.org/branches/4.0@38531


git-svn-id: http://core.svn.wordpress.org/branches/4.0@38472 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-09-06 18:00:20 +00:00
Boone Gorges
7f457eaddd Bump 4.0 branch to 4.0.12.
Built from https://develop.svn.wordpress.org/branches/4.0@37833


git-svn-id: http://core.svn.wordpress.org/branches/4.0@37798 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-06-21 16:42:17 +00:00
Joe McGill
a6b669c65d Media: Improve handling of extensionless filenames.
Merge of [37756] to the 4.0 branch.

See #37111.
Built from https://develop.svn.wordpress.org/branches/4.0@37819


git-svn-id: http://core.svn.wordpress.org/branches/4.0@37784 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-06-21 14:58:18 +00:00
Nikolay Bachiyski
8197793447 Admin: escape URL-encoded permalinks
Merge of [37801] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@37817


git-svn-id: http://core.svn.wordpress.org/branches/4.0@37782 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-06-21 14:57:16 +00:00
Rachel Baker
e16790e7e2 Revisions: Change the capability needed to view revision diffs to edit_post.
Merge of [37779] to the 4.0 branch.
Built from https://develop.svn.wordpress.org/branches/4.0@37802


git-svn-id: http://core.svn.wordpress.org/branches/4.0@37767 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-06-21 14:47:17 +00:00
Nikolay Bachiyski
4c2ff51802 Admin: Escape attachment name in case it contains special characters
Merge of [37774] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@37792


git-svn-id: http://core.svn.wordpress.org/branches/4.0@37757 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-06-21 14:27:49 +00:00
Boone Gorges
01e2cb3978 Taxonomy: More specific cap check when processing category data on post save.
Ports [37691] to the 4.0 branch.

Props dlh.
Fixes #36379.
Built from https://develop.svn.wordpress.org/branches/4.0@37782


git-svn-id: http://core.svn.wordpress.org/branches/4.0@37747 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-06-21 14:23:16 +00:00
Dominik Schilling
d8fcaf9d61 Customize: Make sure that preview and return URLs are URLs.
Merge of [37527] to the 4.0 branch.
Built from https://develop.svn.wordpress.org/branches/4.0@37775


git-svn-id: http://core.svn.wordpress.org/branches/4.0@37740 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-06-21 14:21:10 +00:00
Jeremy Felt
2a56c9cbff Admin: Allow for the consistent filtering of auth_redirect_scheme
Merge of [37651] to the 4.0 branch.

See #37047.

Built from https://develop.svn.wordpress.org/branches/4.0@37763


git-svn-id: http://core.svn.wordpress.org/branches/4.0@37728 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-06-21 14:13:39 +00:00
Dominik Schilling
7277742a5d Bump 4.0 branch to 4.0.11.
Built from https://develop.svn.wordpress.org/branches/4.0@37389


git-svn-id: http://core.svn.wordpress.org/branches/4.0@37355 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-05-06 18:15:17 +00:00
Nikolay Bachiyski
909877540e External Libraries: Update plupload from upstream
Built from https://develop.svn.wordpress.org/branches/4.0@37377


git-svn-id: http://core.svn.wordpress.org/branches/4.0@37343 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-05-06 17:56:30 +00:00
Nikolay Bachiyski
217fe37a0f Taxonomies: make sure taxonomy functions work correctly with taxonomy names with special characters
The codex says that taxonomy names "should only contain lowercase letters and the underscore character", but that's not enforced. It's too late to enforce it, since some plugins haven't been following it and the official phpdoc doesn't mention this restriction.

Merge of [37133] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@37139


git-svn-id: http://core.svn.wordpress.org/branches/4.0@37106 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-03-30 17:36:16 +00:00
Jeremy Felt
3291a9819a Multisite: Improve escaping in network settings.
Merge of [37124] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@37129


git-svn-id: http://core.svn.wordpress.org/branches/4.0@37096 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-03-30 16:05:36 +00:00
Dominik Schilling
84ad22efe9 HTTP: Improve detection of valid IP addresses.
Merge of [37115] to the 4.0 branch.
Built from https://develop.svn.wordpress.org/branches/4.0@37120


git-svn-id: http://core.svn.wordpress.org/branches/4.0@37087 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-03-30 15:52:49 +00:00
Dominik Schilling
869f687c65 Multisite: Validate new email address confirmations.
Merge of [37103] to the 4.0 branch.
Built from https://develop.svn.wordpress.org/branches/4.0@37108


git-svn-id: http://core.svn.wordpress.org/branches/4.0@37075 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-03-30 14:51:03 +00:00
Nikolay Bachiyski
8f0764e4ba Snoopy: use escapeshellarg instead of escapeshellcmd
We are escaping arguments, not commands, so we'd better use the semantically correct function, even though they are similar.

Merges [37094] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@37099


git-svn-id: http://core.svn.wordpress.org/branches/4.0@37066 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-03-30 14:11:17 +00:00
Dominik Schilling
20c5220229 Bump 4.0 branch to 4.0.10.
Built from https://develop.svn.wordpress.org/branches/4.0@36459


git-svn-id: http://core.svn.wordpress.org/branches/4.0@36426 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-02-02 17:29:36 +00:00
Dominik Schilling
dfc561cd61 Better validation of the URL used in HTTP redirects.
Merges [36444] to the 4.0 branch.
Built from https://develop.svn.wordpress.org/branches/4.0@36451


git-svn-id: http://core.svn.wordpress.org/branches/4.0@36418 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-02-02 17:01:06 +00:00
Dominik Schilling
90961ce059 HTTP: 0.1.2.3 is not a valid IP.
Merges [36435] to the 4.0 branch.
Built from https://develop.svn.wordpress.org/branches/4.0@36440


git-svn-id: http://core.svn.wordpress.org/branches/4.0@36407 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-02-02 13:04:58 +00:00
Dominik Schilling
2fdd2703ed Bump 4.0 branch to 4.0.9.
Built from https://develop.svn.wordpress.org/branches/4.0@36200


git-svn-id: http://core.svn.wordpress.org/branches/4.0@36167 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-01-06 18:50:38 +00:00
Aaron Jorbin
126b1f3caf Theme: Escape error messages
[36185] for 4.0 branch

Built from https://develop.svn.wordpress.org/branches/4.0@36190


git-svn-id: http://core.svn.wordpress.org/branches/4.0@36157 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-01-06 17:27:17 +00:00
Dion Hulse
3d3c9ab179 Background Updates: Remove the 7am/7pm background update check.
This changeset is a more basic version of [36180], clearing the extra now redundant schedule.
As the functionality for this was introduced in 3.9, [28129] has been backported to 3.7/3.8, allowing the API TTL to be respected by those versions.

See #27772.
Fixes #35323.

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


git-svn-id: http://core.svn.wordpress.org/branches/4.0@36151 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-01-06 13:24:33 +00:00
Dion Hulse
c84e59ec6d Update Akismet externals
git-svn-id: http://core.svn.wordpress.org/branches/4.0@35107 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-10-13 17:19:01 +00:00
Helen Hou-Sandí
7fd9eac86a Finish bumping the 4.0 branch to 4.0.8.
Built from https://develop.svn.wordpress.org/branches/4.0@34193


git-svn-id: http://core.svn.wordpress.org/branches/4.0@34161 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-15 14:51:53 +00:00
Helen Hou-Sandí
2cb538bcd1 Bump 4.0 branch to 4.0.8.
Built from https://develop.svn.wordpress.org/branches/4.0@34184


git-svn-id: http://core.svn.wordpress.org/branches/4.0@34152 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-15 14:29:25 +00:00
Dominik Schilling
b81cdd60a3 XMLRPC: Don't allow private posts to be sticky.
Merge of [33325], [33612], and [34135] to the 4.0 branch.

See #20662.
Built from https://develop.svn.wordpress.org/branches/4.0@34154


git-svn-id: http://core.svn.wordpress.org/branches/4.0@34122 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-14 23:01:37 +00:00
Nikolay Bachiyski
536f3b6517 Shortcodes: don't allow unclosed HTML elements in attributes
Merges [34134] for 4.0 branch

Built from https://develop.svn.wordpress.org/branches/4.0@34147


git-svn-id: http://core.svn.wordpress.org/branches/4.0@34115 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-14 22:49:17 +00:00
Nikolay Bachiyski
2a0ec142b2 List tables: escape user e-mails
Merges [34133] for 4.0 branch

Built from https://develop.svn.wordpress.org/branches/4.0@34140


git-svn-id: http://core.svn.wordpress.org/branches/4.0@34108 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-14 22:43:17 +00:00
Gary Pendergast
21c8cc7e5a WPDB: get_table_from_query() didn't find table names with hyphens in them.
Merge of [33718] to the 4.0 branch.

Props dustinbolton, pento.

See #33470.


Built from https://develop.svn.wordpress.org/branches/4.0@33994


git-svn-id: http://core.svn.wordpress.org/branches/4.0@33963 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-10 07:05:17 +00:00
Gary Pendergast
4379874534 Capabilities: Fall back to the edit_posts capability for orphaned comments.
Merge of the `capabilities.php` part of [33614] to the 4.0 branch.

Props pento, dd32.

See #33154.


Built from https://develop.svn.wordpress.org/branches/4.0@33974


git-svn-id: http://core.svn.wordpress.org/branches/4.0@33943 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-09 06:10:38 +00:00
Dominik Schilling
a782df35d7 Bump 4.0 branch to version 4.0.7.
Built from https://develop.svn.wordpress.org/branches/4.0@33575


git-svn-id: http://core.svn.wordpress.org/branches/4.0@33542 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-08-04 11:52:35 +00:00
Dion Hulse
b5a80e84fe Fix do_shortcode('<[shortcode]') edge case.
Props miqrogroove.

Merges [33499] to the 4.0 branch.
See #33116.

Built from https://develop.svn.wordpress.org/branches/4.0@33565


git-svn-id: http://core.svn.wordpress.org/branches/4.0@33532 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-08-04 07:18:33 +00:00
Dominik Schilling
e8797fc7d0 Comments: IDs are integers.
Merge of [33555] to the 4.0 branch.
Built from https://develop.svn.wordpress.org/branches/4.0@33558


git-svn-id: http://core.svn.wordpress.org/branches/4.0@33525 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-08-04 04:59:53 +00:00
Dominik Schilling
acd70d39a4 Themes: Fix some broken links in the legacy theme preview.
Merge of [33549] to the 4.0 branch.
Built from https://develop.svn.wordpress.org/branches/4.0@33551


git-svn-id: http://core.svn.wordpress.org/branches/4.0@33518 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-08-04 04:57:43 +00:00
Dominik Schilling
53957f2276 Heartbeat: Ensure post locks are released.
Merge of [33542] to the 4.0 branch.
Built from https://develop.svn.wordpress.org/branches/4.0@33545


git-svn-id: http://core.svn.wordpress.org/branches/4.0@33512 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-08-04 04:55:53 +00:00
Dominik Schilling
9e21a4aaf5 Customizer: Use hash_equals() for widgets.
Merge of [33535] to the 4.0 branch.
Built from https://develop.svn.wordpress.org/branches/4.0@33538


git-svn-id: http://core.svn.wordpress.org/branches/4.0@33505 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-08-04 04:53:08 +00:00
Dominik Schilling
30df27a0c7 Nav menus: Consistent titles in widgets.
Merge of [33529] to the 4.0 branch.
Built from https://develop.svn.wordpress.org/branches/4.0@33531


git-svn-id: http://core.svn.wordpress.org/branches/4.0@33498 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-08-03 20:58:37 +00:00
Andrew Ozz
5b23ca5d93 Backport r33469 and r33470 to 4.0.
See #33106.
Built from https://develop.svn.wordpress.org/branches/4.0@33522


git-svn-id: http://core.svn.wordpress.org/branches/4.0@33489 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-31 01:44:36 +00:00
Gary Pendergast
b3356b6f77 Bump 4.0 branch to version 4.0.6.
Built from https://develop.svn.wordpress.org/branches/4.0@33397


git-svn-id: http://core.svn.wordpress.org/branches/4.0@33365 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-23 11:07:33 +00:00
Gary Pendergast
60eb789f93 Shortcodes: Improve the reliablity of shortcodes inside HTML tags.
Merge of [33359] to the 4.0 branch.

Props miqrogroove.

See #15694.


Built from https://develop.svn.wordpress.org/branches/4.0@33381


git-svn-id: http://core.svn.wordpress.org/branches/4.0@33352 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-23 04:50:37 +00:00
Gary Pendergast
5d196f2b09 Capabilities: When creating an auto-draft, ensure that the current user still has permission to do so.
Merge of [33357] to the 4.0 branch.


Built from https://develop.svn.wordpress.org/branches/4.0@33376


git-svn-id: http://core.svn.wordpress.org/branches/4.0@33347 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-23 04:01:36 +00:00
Dominik Schilling
9e426bbb49 4.0.5 version bumps.
Built from https://develop.svn.wordpress.org/branches/4.0@32436


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32406 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-06 23:28:36 +00:00
Michael Adams
cfd130d33a Upgrade: $wpdb->get_col_length() sanity check: bail on unexpected return value.
Merges [32429] for the 4.0 branch.

See #32165.

Built from https://develop.svn.wordpress.org/branches/4.0@32432


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32402 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-06 23:13:58 +00:00
Michael Adams
551057bb68 Upgrade: Ensure unintelligible DB schemas don't result in content loss.
Merge of [32417] to the 4.0 branch.

See #32165.

Props ocean90.

Built from https://develop.svn.wordpress.org/branches/4.0@32420


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32390 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-06 21:52:03 +00:00
John Blackbourn
6dbcbfae60 WPDB: Allow queries to reference tables in the dbname.tablename format, and allow table names to contain any valid character, rather than just ASCII.
Merge of [32368] to the 4.0 branch.

Props pento, willstedt for the initial patch.

See #32090.

Built from https://develop.svn.wordpress.org/branches/4.0@32413


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32383 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-06 21:04:34 +00:00
Aaron Jorbin
a820c920f9 When upgrading WordPress remove genericons example.html files
[32385] for 4.0 branch

Props @dd32, @boonebgorges, @johnjamesjacoby, @drewapicture, @jorbin


Built from https://develop.svn.wordpress.org/branches/4.0@32404


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32374 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-06 20:05:33 +00:00
Dominik Schilling
c9168e3a54 WPDB: When sanity checking query character sets, there's no need to check queries that don't return user data.
Merges [32374] to the 4.0 branch.

props pento.
see #32104.
Built from https://develop.svn.wordpress.org/branches/4.0@32403


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32373 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-06 20:04:38 +00:00
Helen Hou-Sandí
69de48fd72 The UTF-8 regex can occasionally fail on very low memory machines. Reduce the amount of memory it uses.
Merges [32375] to the 4.0 branch.

props pento.
See #32204.

Built from https://develop.svn.wordpress.org/branches/4.0@32397


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32367 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-06 19:43:37 +00:00
Michael Adams
7e35f92679 WPDB: When checking that a string can be sent to MySQL, we shouldn't use mb_convert_encoding(), as it behaves differently to MySQL's character encoding conversion.
Merge of [32364] to the 4.0 branch.

Props mdawaffe, pento, nbachiyski, jorbin, johnjamesjacoby, jeremyfelt.

See #32165.

Built from https://develop.svn.wordpress.org/branches/4.0@32388


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32358 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-06 19:09:39 +00:00
Andrew Ozz
d6df175451 TinyMCE: work-around a bug in the tags matching regex.
For 4.0.
Built from https://develop.svn.wordpress.org/branches/4.0@32372


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32342 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-06 05:34:38 +00:00
Gary Pendergast
4fe0310d7a 4.0:
- WPDB: Sanity check that any strings being stored in the DB are not too long to store correctly.
- When upgrading, remove any suspicious comments.


Built from https://develop.svn.wordpress.org/branches/4.0@32313


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32284 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-27 17:17:37 +00:00
Gary Pendergast
4b6fa85282 4.0 branch is now 4.0.4.
Built from https://develop.svn.wordpress.org/branches/4.0@32302


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32273 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-27 14:11:37 +00:00
Helen Hou-Sandí
8254664893 The 4.0 branch is now 4.0.3.
Built from https://develop.svn.wordpress.org/branches/4.0@32283


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32254 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-23 21:35:37 +00:00
Gary Pendergast
488576e125 WPDB: When sanity checking a string by sending it to MySQL for conversion checks, the incorrect data structure was being returned from wpdb::strip_invalid_text(), causing all write queries to fail for some character sets when the query contained non-ASCII characters.
Merge of [32261] to the 4.0 branch.

See #32051.


Built from https://develop.svn.wordpress.org/branches/4.0@32272


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32243 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-23 11:44:39 +00:00
Gary Pendergast
e20485b9cb WPDB: When deciding if a query needs extra sanity checking based on collation, return early when we can. Merges [32232] and [32233] to the 4.0 branch.
See #32029.


Built from https://develop.svn.wordpress.org/branches/4.0@32235


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32209 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-21 06:19:40 +00:00
Gary Pendergast
530a462ba1 Fix some wpdb::check_safe_collation() calls missed in [32181].
Built from https://develop.svn.wordpress.org/branches/4.0@32225


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32199 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-20 19:06:42 +00:00
Gary Pendergast
d4d995bb8e Bump 4.0 branch to 4.0.2.
Built from https://develop.svn.wordpress.org/branches/4.0@32219


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32193 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-20 17:40:10 +00:00
Gary Pendergast
7c0efb9bd2 4.0: Update about.php.
Built from https://develop.svn.wordpress.org/branches/4.0@32218


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32192 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-20 17:39:35 +00:00
Gary Pendergast
26e7a95cf3 Ensure post titles are correctly escaped on the Dashboard. Merge of [32175] to the 4.0 branch.
Props helen, ocean90, dd32, pento.


Built from https://develop.svn.wordpress.org/branches/4.0@32203


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32176 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-20 13:36:34 +00:00
Gary Pendergast
2af7429643 In Multisite, prevent plugins from unintentionally switching sites. Merge of [32173] to the 4.0 branch.
Props mdawaffe, pento.


Built from https://develop.svn.wordpress.org/branches/4.0@32199


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32172 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-20 13:20:36 +00:00
Gary Pendergast
c5dbb01a4c Update the Plupload Flash file to the latest version. Merge of [32168] to the 4.0 branch.
Props azaozz.


Built from https://develop.svn.wordpress.org/branches/4.0@32197


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32170 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-20 13:04:35 +00:00
Gary Pendergast
766a6f6fa1 Remove some old backwards compatibility code from TinyMCE. Merge of [32166] to the 4.0 branch.
Props azaozz.


Built from https://develop.svn.wordpress.org/branches/4.0@32193


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32166 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-20 12:49:33 +00:00
Gary Pendergast
3170d00fa6 Clean up some edge cases in sanitize_sql_orderby(). Merge of [32164] to the 4.0 branch.
Props vortfu, dd32.


Built from https://develop.svn.wordpress.org/branches/4.0@32189


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32162 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-20 12:32:39 +00:00
Gary Pendergast
55be6d3e44 wpdb::$checking_collation was incorrectly marked as protected instead of private in [32181].
Built from https://develop.svn.wordpress.org/branches/4.0@32184


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32157 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-20 11:21:35 +00:00
Gary Pendergast
548201e950 Merge the query sanity checks from #21212 to the 4.0 branch.
Props pento, nacin, mdawaffe, DrewAPicture.


Built from https://develop.svn.wordpress.org/branches/4.0@32181


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32154 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-20 10:54:40 +00:00
Gary Pendergast
d114ee8600 4.0: Bump package.json, readme.html and license.txt.
Built from https://develop.svn.wordpress.org/branches/4.0@32154


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32129 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-20 03:36:39 +00:00
Gary Pendergast
285af6e86c The 4.0 branch is now 4.0.2-alpha.
Built from https://develop.svn.wordpress.org/branches/4.0@32153


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32128 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-20 03:34:41 +00:00
Gary Pendergast
be559a4584 Backport the PHPUnit test fixes from [31622] to the 4.0 branch.
Props boonebgorges.

See #31537.

Built from https://develop.svn.wordpress.org/branches/4.0@32148


git-svn-id: http://core.svn.wordpress.org/branches/4.0@32126 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-19 07:43:42 +00:00
Andrew Nacin
3e79a92b69 Update Akismet external in trunk to 3.1.
git-svn-id: http://core.svn.wordpress.org/branches/4.0@31771 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-03-16 02:08:52 +00:00
Andrew Nacin
e34cfb7c73 Undo changes to the 4.0 branch caused by clean-css 2.2.8 (branch) versus 2.2.16 (trunk).
git-svn-id: http://core.svn.wordpress.org/branches/4.0@30472 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 17:41:01 +00:00
Andrew Nacin
d9f6f1c2ea 4.0.1 version bumps.
Built from https://develop.svn.wordpress.org/branches/4.0@30475


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30466 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 16:32:32 +00:00
Andrew Nacin
39c7ff2304 Prevent high resource usage when hashing large passwords. props mdawaffe, pento
Merges [30466] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@30467


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30458 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 16:05:39 +00:00
Andrew Nacin
6e658f81cf Validate image data.
Merges [30458] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@30462


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30453 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 15:53:38 +00:00
Andrew Nacin
d9cd72430f Anchor texturize to shortcodes to improve regex efficiency.
For the 4.0 branch; see [30449] for trunk.

props miqrogroove.
see #29557 for segfault issues.

Built from https://develop.svn.wordpress.org/branches/4.0@30450


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30444 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 14:30:37 +00:00
Andrew Nacin
be45cc1d6a Better validation of the URL used in core HTTP requests.
Merges [30443] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@30444


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30439 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 14:01:52 +00:00
Andrew Nacin
45ca5407f0 Press This: Ensure the error message is printed. props johnbillion
Merges [30438] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@30439


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30434 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 13:58:56 +00:00
Andrew Nacin
50a4318776 TinyMCE: Verify HTML in captions. props azaozz
Merges [30435] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@30436


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30431 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 13:50:41 +00:00
Andrew Nacin
65ac1b9a84 Invalidate password keys when a user's email changes.
Merges [30430] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@30431


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30426 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 13:40:53 +00:00
Andrew Nacin
5fcfb73bf6 Fix typo in style filter. props miqrogroove
Merges [30425] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@30426


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30421 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 13:16:29 +00:00
Andrew Nacin
dd9f42a1f6 Playlists are video by default. props duck_
Merges [30422] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@30423


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30418 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 13:12:31 +00:00
Andrew Nacin
133bfe6a23 Form validation for password resets.
Merges [30417] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@30418


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30413 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 12:23:33 +00:00
Andrew Nacin
432912f7e9 Use hash_equals() for old md5 hashes.
Merges [30412] to the 4.0 branch.

Built from https://develop.svn.wordpress.org/branches/4.0@30413


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30408 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 12:02:35 +00:00
Andrew Nacin
8e04e41e42 Revert [28948] for the 4.0 branch, which caused a regression.
see #29573 for 4.0. see #28350.

Built from https://develop.svn.wordpress.org/branches/4.0@30410


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30405 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 11:12:37 +00:00
Andrew Nacin
3a108f5bce Media Grid: Don't attempt to delete an attachment that can't be deleted.
Merges [29755] to the 4.0 branch.

props wonderboymusic.
fixes #29597.

Built from https://develop.svn.wordpress.org/branches/4.0@30409


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30404 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 11:09:32 +00:00
Andrew Nacin
e2cf18d5b9 Don't display Edit links for attachments user cannot edit.
Merges [29723] to the 4.0 branch.

props skaeser.
fixes #29596.

Built from https://develop.svn.wordpress.org/branches/4.0@30408


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30403 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 11:07:36 +00:00
Andrew Nacin
94f0e4dfb6 Media Grid: when the modal is open, don't respond to arrow keys when <textarea> has focus.
Merges [29777] (and [30378]) to the 4.0 branch.

Props ryelle, adamsilverstein.
Fixes #29725.

Built from https://develop.svn.wordpress.org/branches/4.0@30407


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30402 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 11:06:29 +00:00
Andrew Nacin
3f256ab656 TinyMCE: fix image captions regexp when wpautop is disabled in wp_editor().
Merges [29730] to the 4.0 branch.

props azaozz.
fixes #29592.

Built from https://develop.svn.wordpress.org/branches/4.0@30406


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30401 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 11:00:51 +00:00
Andrew Nacin
0e76113043 In get_adjacent_post(), $excluded_terms should check term_id rather than term_taxonomy_id.
Merges [30263] (and [30264] [30401]) to the 4.0 branch.

props boonebgorges.
fixes #29663, see #22112.

Built from https://develop.svn.wordpress.org/branches/4.0@30405


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30400 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-20 10:59:35 +00:00
Andrew Nacin
59ae9aa3a7 Media Frames: Set the box-sizing CSS property to border-box for checkboxes and radio buttons.
Merges [29727] to the 4.0 branch.

props mlteal.
fixes #29493.

Built from https://develop.svn.wordpress.org/branches/4.0@30262


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30262 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-06 13:24:42 +00:00
Andrew Nacin
4f14d9f7f8 In wp_audio|video_shortcode(), make sure that autoplay and loop are booleans. Passing 'false' to them will force them to be active, which is bad.
Merges [30185] to the 4.0 branch.

props wonderboymusic.
fixes #29825.

Built from https://develop.svn.wordpress.org/branches/4.0@30261


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30261 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-06 08:23:29 +00:00
Andrew Nacin
eec6b41e3d Create correct permalinks for child posts of hierarchical post types when default permalinks are used.
Merges [29765] to the 4.0 branch.

props loushou.
fixes #29615.

Built from https://develop.svn.wordpress.org/branches/4.0@30260


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30260 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-06 08:22:35 +00:00
Andrew Nacin
7be0716c9f Avoid PHP notices in media modal caused by orphaned attachments.
Merges [29724] to the 4.0 branch.

props SergeyBiryukov.
fixes #29566.

Built from https://develop.svn.wordpress.org/branches/4.0@30259


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30259 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-06 08:16:33 +00:00
Andrew Nacin
8930d00db0 Make sure the $parent argument of wp_insert_attachment() still works as expected after [28579].
Merges [29745] to the 4.0 branch.

props jesin, dikiy_forester.
fixes #29646.

Built from https://develop.svn.wordpress.org/branches/4.0@30258


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30258 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-06 08:15:30 +00:00
Andrew Nacin
5add2ed4b1 TinyMCE wpView: when pasting/inserting content before a view, add new paragraph above it and insert the content there.
Merges [29766] to the 4.0 branch.

props avryl.
fixes #29380.

Built from https://develop.svn.wordpress.org/branches/4.0@30257


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30257 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-06 08:13:29 +00:00
Andrew Nacin
c943b712b3 Editor expand: hide TinyMCE float panels and tooltips when scrolling.
Merges [29738] to the 4.0 branch.

props avryl.
see #29516.

Built from https://develop.svn.wordpress.org/branches/4.0@30256


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30256 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-06 08:12:34 +00:00
Andrew Nacin
b94cfff6ad Create new $wp_roles object in install_blog() to avoid protected _init() call
Merges [30242] to the 4.0 branch.

Our call to `$wp_roles->_init()` relied on the `__call()` method in `WP_Roles` to handle the link to the protected method. This works back to PHP 5.2.9, when a bug was fixed allowing access to protected methods through this exact approach.

`install_blog()` needs a fresh `$wp_roles` object after `populate_roles()` resets everything in its path. We can create this new object from scratch, effectively doing the same thing with the call to `_init()` via the constructor.

props jeremyfelt.
fixes #29692.

Built from https://develop.svn.wordpress.org/branches/4.0@30255


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30255 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-06 08:09:05 +00:00
Andrew Nacin
d7245bcacc Make sure we're on the media grid page before calling wp.media().
Merges [29725] to the 4.0 branch.

props azaozz.
fixes #29520.

Built from https://develop.svn.wordpress.org/branches/4.0@30254


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30254 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-06 08:08:35 +00:00
Andrew Nacin
2db717b03b Revert [28610] in order to avoid infinite redirect loops on reverse proxies which proxy from HTTPS to HTTP.
Merges [30090] to the 4.0 branch.

fixes #28610.

Built from https://develop.svn.wordpress.org/branches/4.0@30253


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30253 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-06 07:16:39 +00:00
Andrew Nacin
f904bbceb5 Upgrade MediaElement to 2.15.1.
Merges [29733] to the 4.0 branch.

Changes from 2.15.0:
https://github.com/johndyer/mediaelement/compare/2.15.0...2.15.1

Continues to revert upstream commit b7f82b4 to restore the status quo for Chromium support.

props wonderboymusic.
fixes #29620.

Built from https://develop.svn.wordpress.org/branches/4.0@30252


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30252 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-06 07:11:31 +00:00
Andrew Nacin
b2217fa712 Editor-expand: reset the editor height after the window is resized.
Merges [29886] to the 4.0 branch.

props azaozz.
fixes #29952.

Built from https://develop.svn.wordpress.org/branches/4.0@30251


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30251 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-06 07:07:30 +00:00
Andrew Nacin
e2c870f41b Quicktags: move focusing the editor after inserting content to the end of the code blocks.
Merges [29884] to the 4.0 branch.

Fixes a bug in Chrome where both the textarea and the window may auto-scroll to unexpected position on clicking a Quicktags button.

props azaozz, avryl.
fixes #29944.

Built from https://develop.svn.wordpress.org/branches/4.0@30250


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30250 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-06 07:03:32 +00:00
Andrew Nacin
aaec5126c6 Plugin search: Wrap results in a form to fix pagination's paged input field.
Merges [29829] to the 4.0 branch.

props jesin, ocean90.
fixes #18724.

Built from https://develop.svn.wordpress.org/branches/4.0@30249


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30249 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-06 07:01:34 +00:00
Andrew Nacin
bab3933829 The 4.0 branch is 4.0.1-alpha.
Built from https://develop.svn.wordpress.org/branches/4.0@30248


git-svn-id: http://core.svn.wordpress.org/branches/4.0@30248 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-11-06 06:49:37 +00:00
Andrew Nacin
4edbc74e65 Add safeguards for when ext/hash is not compiled with PHP.
Merges [29751] to the 4.0 branch.

fixes #29518.

Built from https://develop.svn.wordpress.org/branches/4.0@29761


git-svn-id: http://core.svn.wordpress.org/branches/4.0@29533 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-09-23 18:14:39 +00:00
Andrew Nacin
b3f1257a69 Branch 4.0.
Built from https://develop.svn.wordpress.org/@29710

git-svn-id: http://core.svn.wordpress.org/branches/4.0@29484 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-09-04 16:09:30 +00:00
138 changed files with 5552 additions and 1916 deletions

View File

@@ -1,6 +1,6 @@
WordPress - Web publishing software
Copyright 2014 by the contributors
Copyright 2018 by the contributors
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@@ -9,7 +9,6 @@
<body>
<h1 id="logo">
<a href="https://wordpress.org/"><img alt="WordPress" src="wp-admin/images/wordpress-logo.png" /></a>
<br /> Version 4.0
</h1>
<p style="text-align: center">Semantic Personal Publishing Platform</p>

View File

@@ -18,6 +18,50 @@ if ( !is_multisite() ) {
die();
}
$valid_error_codes = array( 'already_active', 'blog_taken' );
list( $activate_path ) = explode( '?', wp_unslash( $_SERVER['REQUEST_URI'] ) );
$activate_cookie = 'wp-activate-' . COOKIEHASH;
$key = '';
$result = null;
if ( isset( $_GET['key'] ) && isset( $_POST['key'] ) && $_GET['key'] !== $_POST['key'] ) {
wp_die( __( 'A key value mismatch has been detected. Please follow the link provided in your activation email.' ), __( 'An error occurred during the activation' ), 400 );
} elseif ( ! empty( $_GET['key'] ) ) {
$key = $_GET['key'];
} elseif ( ! empty( $_POST['key'] ) ) {
$key = $_POST['key'];
}
if ( $key ) {
$redirect_url = remove_query_arg( 'key' );
if ( $redirect_url !== remove_query_arg( false ) ) {
setcookie( $activate_cookie, $key, 0, $activate_path, COOKIE_DOMAIN, is_ssl(), true );
wp_safe_redirect( $redirect_url );
exit;
} else {
$result = wpmu_activate_signup( $key );
}
}
if ( $result === null && isset( $_COOKIE[ $activate_cookie ] ) ) {
$key = $_COOKIE[ $activate_cookie ];
$result = wpmu_activate_signup( $key );
setcookie( $activate_cookie, ' ', time() - YEAR_IN_SECONDS, $activate_path, COOKIE_DOMAIN, is_ssl(), true );
}
if ( $result === null || ( is_wp_error( $result ) && 'invalid_key' === $result->get_error_code() ) ) {
status_header( 404 );
} elseif ( is_wp_error( $result ) ) {
$error_code = $result->get_error_code();
if ( ! in_array( $error_code, $valid_error_codes ) ) {
status_header( 400 );
}
}
if ( is_object( $wp_object_cache ) )
$wp_object_cache->cache_enabled = false;
@@ -63,12 +107,13 @@ function wpmu_activate_stylesheet() {
<?php
}
add_action( 'wp_head', 'wpmu_activate_stylesheet' );
add_action( 'wp_head', 'wp_sensitive_page_meta' );
get_header();
?>
<div id="content" class="widecolumn">
<?php if ( empty($_GET['key']) && empty($_POST['key']) ) { ?>
<?php if ( ! $key ) { ?>
<h2><?php _e('Activation Key Required') ?></h2>
<form name="activateform" id="activateform" method="post" action="<?php echo network_site_url('wp-activate.php'); ?>">
@@ -82,28 +127,25 @@ get_header();
</form>
<?php } else {
$key = !empty($_GET['key']) ? $_GET['key'] : $_POST['key'];
$result = wpmu_activate_signup( $key );
if ( is_wp_error($result) ) {
if ( 'already_active' == $result->get_error_code() || 'blog_taken' == $result->get_error_code() ) {
$signup = $result->get_error_data();
?>
<h2><?php _e('Your account is now active!'); ?></h2>
<?php
echo '<p class="lead-in">';
if ( $signup->domain . $signup->path == '' ) {
printf( __('Your account has been activated. You may now <a href="%1$s">log in</a> to the site using your chosen username of &#8220;%2$s&#8221;. Please check your email inbox at %3$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can <a href="%4$s">reset your password</a>.'), network_site_url( 'wp-login.php', 'login' ), $signup->user_login, $signup->user_email, wp_lostpassword_url() );
} else {
printf( __('Your site at <a href="%1$s">%2$s</a> is active. You may now log in to your site using your chosen username of &#8220;%3$s&#8221;. Please check your email inbox at %4$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can <a href="%5$s">reset your password</a>.'), 'http://' . $signup->domain, $signup->domain, $signup->user_login, $signup->user_email, wp_lostpassword_url() );
}
echo '</p>';
if ( is_wp_error( $result ) && in_array( $result->get_error_code(), $valid_error_codes ) ) {
$signup = $result->get_error_data();
?>
<h2><?php _e('Your account is now active!'); ?></h2>
<?php
echo '<p class="lead-in">';
if ( $signup->domain . $signup->path == '' ) {
printf( __('Your account has been activated. You may now <a href="%1$s">log in</a> to the site using your chosen username of &#8220;%2$s&#8221;. Please check your email inbox at %3$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can <a href="%4$s">reset your password</a>.'), network_site_url( 'wp-login.php', 'login' ), $signup->user_login, $signup->user_email, wp_lostpassword_url() );
} else {
?>
<h2><?php _e('An error occurred during the activation'); ?></h2>
<?php
echo '<p>'.$result->get_error_message().'</p>';
printf( __('Your site at <a href="%1$s">%2$s</a> is active. You may now log in to your site using your chosen username of &#8220;%3$s&#8221;. Please check your email inbox at %4$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can <a href="%5$s">reset your password</a>.'), 'http://' . $signup->domain, $signup->domain, $signup->user_login, $signup->user_email, wp_lostpassword_url() );
}
echo '</p>';
} elseif ( $result === null || is_wp_error( $result ) ) {
?>
<h2><?php _e('An error occurred during the activation'); ?></h2>
<?php if ( is_wp_error( $result ) ) {
echo '<p>' . $result->get_error_message() . '</p>';
} ?>
<?php
} else {
$url = isset( $result['blog_id'] ) ? get_blogaddress_by_id( (int) $result['blog_id'] ) : '';
$user = get_userdata( (int) $result['user_id'] );

View File

@@ -41,6 +41,195 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
</a>
</h2>
<div class="changelog point-releases">
<h3><?php echo _n( 'Maintenance and Security Release', 'Maintenance and Security Releases', 28 ); ?></h3>
<p>
<?php
printf(
/* translators: %s: WordPress version number */
__( '<strong>Version %s</strong> addressed one security issue.' ),
'4.0.29'
);
?>
<?php
printf(
/* translators: %s: HelpHub URL */
__( 'For more information, see <a href="%s">the release notes</a>.' ),
sprintf(
/* translators: %s: WordPress version */
esc_url( __( 'https://wordpress.org/support/wordpress-version/version-%s/' ) ),
sanitize_title( '4.0.29' )
)
);
?>
</p>
<p>
<?php
printf(
/* translators: %s: WordPress version number */
__( '<strong>Version %s</strong> addressed some security issues.' ),
'4.0.28'
);
?>
<?php
printf(
/* translators: %s: HelpHub URL */
__( 'For more information, see <a href="%s">the release notes</a>.' ),
sprintf(
/* translators: %s: WordPress version */
esc_url( __( 'https://wordpress.org/support/wordpress-version/version-%s/' ) ),
sanitize_title( '4.0.28' )
)
);
?>
</p>
<p>
<?php
printf(
/* translators: %s: WordPress version number */
__( '<strong>Version %s</strong> addressed some security issues.' ),
'4.0.27'
);
?>
<?php
printf(
/* translators: %s: HelpHub URL */
__( 'For more information, see <a href="%s">the release notes</a>.' ),
sprintf(
/* translators: %s: WordPress version */
esc_url( __( 'https://wordpress.org/support/wordpress-version/version-%s/' ) ),
sanitize_title( '4.0.27' )
)
);
?>
</p>
<p>
<?php
printf(
/* translators: %s: WordPress version number */
__( '<strong>Version %s</strong> addressed a security issue.' ),
'4.0.26'
);
?>
<?php
printf(
/* translators: %s: HelpHub URL */
__( 'For more information, see <a href="%s">the release notes</a>.' ),
sprintf(
/* translators: %s: WordPress version */
esc_url( __( 'https://wordpress.org/support/wordpress-version/version-%s/' ) ),
sanitize_title( '4.0.26' )
)
);
?>
</p>
<p>
<?php
/* translators: %s: WordPress version number */
printf( __( '<strong>Version %s</strong> addressed some security issues.' ), '4.0.25' );
?>
<?php
/* translators: %s: Codex URL */
printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.0.25' );
?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 1 ), '4.0.24' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.0.24' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 2 ), '4.0.23' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.0.23' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 1 ), '4.0.22' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.0.22' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 4 ), '4.0.21' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.0.21' ); ?>
</p>
<p><?php printf( __( '<strong>Version %s</strong> addressed one security issue.' ), '4.0.20' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.0.20' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 8 ), '4.0.19' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.0.19' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 5 ), '4.0.18' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.0.18' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed %2$s bug.',
'<strong>Version %1$s</strong> addressed %2$s bugs.', 1 ), '4.0.17', number_format_i18n( 1 ) ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.0.17' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 5 ), '4.0.16' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.0.16' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 3 ), '4.0.15' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.0.15' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 8 ), '4.0.14' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.0.14' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 2 ), '4.0.13' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.0.13' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 9 ), '4.0.12' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.0.12' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 6 ), '4.0.11' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.0.11' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 2 ), '4.0.10' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.0.10' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 1 ), '4.0.9' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.0.9' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
'<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.', 2 ), '4.0.8', number_format_i18n( 2 ) ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.0.8' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
'<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.', 2 ), '4.0.7', number_format_i18n( 2 ) ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.0.7' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 2 ), '4.0.6' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.0.6' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
'<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.', 3 ), '4.0.5', number_format_i18n( 3 ) ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.0.5' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 1 ), '4.0.4' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.0.4' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed %2$s bug.',
'<strong>Version %1$s</strong> addressed %2$s bugs.', 1 ), '4.0.3', number_format_i18n( 1 ) ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.0.3' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue.',
'<strong>Version %1$s</strong> addressed some security issues.', 8 ), '4.0.2' ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.0.2' ); ?>
</p>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
'<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.', 23 ), '4.0.1', number_format_i18n( 23 ) ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.0.1' ); ?>
</p>
</div>
<div class="changelog">
<div class="about-overview">
<?php if ( ( $locale = get_locale() ) && 'en_' === substr( $locale, 0, 3 ) ) : ?>

View File

@@ -34,7 +34,7 @@ require_once( ABSPATH . 'wp-admin/includes/admin.php' );
/** Load Ajax Handlers for WordPress Core */
require_once( ABSPATH . 'wp-admin/includes/ajax-actions.php' );
@header( 'Content-Type: text/html; charset=' . get_option( 'blog_charset' ) );
@header( 'Content-Type: text/plain; charset=' . get_option( 'blog_charset' ) );
@header( 'X-Robots-Tag: noindex' );
send_nosniff_header();

View File

@@ -48,7 +48,7 @@ input[type=radio]:checked:before {
box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); }
.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled {
color: #d1cdc7 !important;
background: #db9825 !important;
background: #db9925 !important;
border-color: #bd831f !important;
text-shadow: none !important; }
.wp-core-ui .wp-ui-primary {
@@ -194,7 +194,7 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
background: #4796b3; }
#wpadminbar .quicklinks .menupop ul.ab-sub-secondary, #wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu {
background: #74b7ce; }
background: #74b6ce; }
#wpadminbar .ab-submenu .ab-item, #wpadminbar .quicklinks .menupop ul li a, #wpadminbar .quicklinks .menupop.hover ul li a, #wpadminbar-nojs .quicklinks .menupop:hover ul li a {
color: #e2ecf1; }
@@ -214,7 +214,7 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus {
color: #fff;
background: #6ebad4; }
background: #6eb9d4; }
#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder {
color: #fff;
@@ -234,8 +234,8 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
/* Admin Bar: my account */
#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img {
border-color: #6ebad4;
background-color: #6ebad4; }
border-color: #6eb9d4;
background-color: #6eb9d4; }
#wpadminbar #wp-admin-bar-user-info .display-name {
color: #fff; }
@@ -249,7 +249,7 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
/* Pointers */
.wp-pointer .wp-pointer-content h3 {
background-color: #096484;
border-color: #07536c; }
border-color: #07526c; }
.wp-pointer .wp-pointer-content h3:before {
color: #096484; }

File diff suppressed because one or more lines are too long

View File

@@ -48,7 +48,7 @@ input[type=radio]:checked:before {
box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); }
.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled {
color: #d1cdc7 !important;
background: #db9825 !important;
background: #db9925 !important;
border-color: #bd831f !important;
text-shadow: none !important; }
.wp-core-ui .wp-ui-primary {
@@ -194,7 +194,7 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
background: #4796b3; }
#wpadminbar .quicklinks .menupop ul.ab-sub-secondary, #wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu {
background: #74b7ce; }
background: #74b6ce; }
#wpadminbar .ab-submenu .ab-item, #wpadminbar .quicklinks .menupop ul li a, #wpadminbar .quicklinks .menupop.hover ul li a, #wpadminbar-nojs .quicklinks .menupop:hover ul li a {
color: #e2ecf1; }
@@ -214,7 +214,7 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus {
color: #fff;
background: #6ebad4; }
background: #6eb9d4; }
#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder {
color: #fff;
@@ -234,8 +234,8 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
/* Admin Bar: my account */
#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img {
border-color: #6ebad4;
background-color: #6ebad4; }
border-color: #6eb9d4;
background-color: #6eb9d4; }
#wpadminbar #wp-admin-bar-user-info .display-name {
color: #fff; }
@@ -249,7 +249,7 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
/* Pointers */
.wp-pointer .wp-pointer-content h3 {
background-color: #096484;
border-color: #07536c; }
border-color: #07526c; }
.wp-pointer .wp-pointer-content h3:before {
color: #096484; }

File diff suppressed because one or more lines are too long

View File

@@ -27,7 +27,7 @@ input[type=radio]:checked:before {
/* Core UI */
.wp-core-ui .button-primary {
background: #c7a589;
border-color: #b78a66;
border-color: #b78b66;
color: white;
-webkit-box-shadow: inset 0 1px 0 #e0cdbd, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #e0cdbd, 0 1px 0 rgba(0, 0, 0, 0.15); }
@@ -41,13 +41,13 @@ input[type=radio]:checked:before {
-webkit-box-shadow: inset 0 1px 0 #d7bfac, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
box-shadow: inset 0 1px 0 #d7bfac, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); }
.wp-core-ui .button-primary:active {
background: #b78a66;
background: #b78b66;
border-color: #ae7d55;
color: white;
-webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); }
.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled {
color: #d1cbc7 !important;
color: #d1ccc7 !important;
background: #ba906d !important;
border-color: #ae7d55 !important;
text-shadow: none !important; }
@@ -314,7 +314,7 @@ body.more-filters-opened .more-filters:hover:before, body.more-filters-opened .m
/* jQuery UI Slider */
.wp-slider .ui-slider-handle, .wp-slider .ui-slider-handle.ui-state-hover, .wp-slider .ui-slider-handle.focus {
background: #c7a589;
border-color: #b78a66;
border-color: #b78b66;
-webkit-box-shadow: inset 0 1px 0 #e0cdbd, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #e0cdbd, 0 1px 0 rgba(0, 0, 0, 0.15); }

File diff suppressed because one or more lines are too long

View File

@@ -27,7 +27,7 @@ input[type=radio]:checked:before {
/* Core UI */
.wp-core-ui .button-primary {
background: #c7a589;
border-color: #b78a66;
border-color: #b78b66;
color: white;
-webkit-box-shadow: inset 0 1px 0 #e0cdbd, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #e0cdbd, 0 1px 0 rgba(0, 0, 0, 0.15); }
@@ -41,13 +41,13 @@ input[type=radio]:checked:before {
-webkit-box-shadow: inset 0 1px 0 #d7bfac, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
box-shadow: inset 0 1px 0 #d7bfac, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); }
.wp-core-ui .button-primary:active {
background: #b78a66;
background: #b78b66;
border-color: #ae7d55;
color: white;
-webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); }
.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled {
color: #d1cbc7 !important;
color: #d1ccc7 !important;
background: #ba906d !important;
border-color: #ae7d55 !important;
text-shadow: none !important; }
@@ -314,7 +314,7 @@ body.more-filters-opened .more-filters:hover:before, body.more-filters-opened .m
/* jQuery UI Slider */
.wp-slider .ui-slider-handle, .wp-slider .ui-slider-handle.ui-state-hover, .wp-slider .ui-slider-handle.focus {
background: #c7a589;
border-color: #b78a66;
border-color: #b78b66;
-webkit-box-shadow: inset 0 1px 0 #e0cdbd, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #e0cdbd, 0 1px 0 rgba(0, 0, 0, 0.15); }

File diff suppressed because one or more lines are too long

View File

@@ -27,21 +27,21 @@ input[type=radio]:checked:before {
/* Core UI */
.wp-core-ui .button-primary {
background: #a3b745;
border-color: #839237;
border-color: #829237;
color: white;
-webkit-box-shadow: inset 0 1px 0 #c0cd7b, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #c0cd7b, 0 1px 0 rgba(0, 0, 0, 0.15); }
-webkit-box-shadow: inset 0 1px 0 #bfcd7b, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #bfcd7b, 0 1px 0 rgba(0, 0, 0, 0.15); }
.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus {
background: #93a43e;
border-color: #727f30;
color: white;
-webkit-box-shadow: inset 0 1px 0 #b7c669;
box-shadow: inset 0 1px 0 #b7c669; }
-webkit-box-shadow: inset 0 1px 0 #b6c669;
box-shadow: inset 0 1px 0 #b6c669; }
.wp-core-ui .button-primary:focus {
-webkit-box-shadow: inset 0 1px 0 #b7c669, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
box-shadow: inset 0 1px 0 #b7c669, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); }
-webkit-box-shadow: inset 0 1px 0 #b6c669, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
box-shadow: inset 0 1px 0 #b6c669, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); }
.wp-core-ui .button-primary:active {
background: #839237;
background: #829237;
border-color: #727f30;
color: white;
-webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
@@ -214,7 +214,7 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus {
color: #fff;
background: #624c84; }
background: #634c84; }
#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder {
color: #fff;
@@ -234,8 +234,8 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
/* Admin Bar: my account */
#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img {
border-color: #624c84;
background-color: #624c84; }
border-color: #634c84;
background-color: #634c84; }
#wpadminbar #wp-admin-bar-user-info .display-name {
color: #fff; }
@@ -314,9 +314,9 @@ body.more-filters-opened .more-filters:hover:before, body.more-filters-opened .m
/* jQuery UI Slider */
.wp-slider .ui-slider-handle, .wp-slider .ui-slider-handle.ui-state-hover, .wp-slider .ui-slider-handle.focus {
background: #a3b745;
border-color: #839237;
-webkit-box-shadow: inset 0 1px 0 #c0cd7b, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #c0cd7b, 0 1px 0 rgba(0, 0, 0, 0.15); }
border-color: #829237;
-webkit-box-shadow: inset 0 1px 0 #bfcd7b, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #bfcd7b, 0 1px 0 rgba(0, 0, 0, 0.15); }
/* Thickbox: Plugin information */
#sidemenu a.current {

File diff suppressed because one or more lines are too long

View File

@@ -27,21 +27,21 @@ input[type=radio]:checked:before {
/* Core UI */
.wp-core-ui .button-primary {
background: #a3b745;
border-color: #839237;
border-color: #829237;
color: white;
-webkit-box-shadow: inset 0 1px 0 #c0cd7b, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #c0cd7b, 0 1px 0 rgba(0, 0, 0, 0.15); }
-webkit-box-shadow: inset 0 1px 0 #bfcd7b, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #bfcd7b, 0 1px 0 rgba(0, 0, 0, 0.15); }
.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus {
background: #93a43e;
border-color: #727f30;
color: white;
-webkit-box-shadow: inset 0 1px 0 #b7c669;
box-shadow: inset 0 1px 0 #b7c669; }
-webkit-box-shadow: inset 0 1px 0 #b6c669;
box-shadow: inset 0 1px 0 #b6c669; }
.wp-core-ui .button-primary:focus {
-webkit-box-shadow: inset 0 1px 0 #b7c669, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
box-shadow: inset 0 1px 0 #b7c669, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); }
-webkit-box-shadow: inset 0 1px 0 #b6c669, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
box-shadow: inset 0 1px 0 #b6c669, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); }
.wp-core-ui .button-primary:active {
background: #839237;
background: #829237;
border-color: #727f30;
color: white;
-webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
@@ -214,7 +214,7 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus {
color: #fff;
background: #624c84; }
background: #634c84; }
#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder {
color: #fff;
@@ -234,8 +234,8 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
/* Admin Bar: my account */
#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img {
border-color: #624c84;
background-color: #624c84; }
border-color: #634c84;
background-color: #634c84; }
#wpadminbar #wp-admin-bar-user-info .display-name {
color: #fff; }
@@ -314,9 +314,9 @@ body.more-filters-opened .more-filters:hover:before, body.more-filters-opened .m
/* jQuery UI Slider */
.wp-slider .ui-slider-handle, .wp-slider .ui-slider-handle.ui-state-hover, .wp-slider .ui-slider-handle.focus {
background: #a3b745;
border-color: #839237;
-webkit-box-shadow: inset 0 1px 0 #c0cd7b, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #c0cd7b, 0 1px 0 rgba(0, 0, 0, 0.15); }
border-color: #829237;
-webkit-box-shadow: inset 0 1px 0 #bfcd7b, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #bfcd7b, 0 1px 0 rgba(0, 0, 0, 0.15); }
/* Thickbox: Plugin information */
#sidemenu a.current {

File diff suppressed because one or more lines are too long

View File

@@ -27,29 +27,29 @@ input[type=radio]:checked:before {
/* Core UI */
.wp-core-ui .button-primary {
background: #e14d43;
border-color: #d02a21;
border-color: #d02c21;
color: white;
-webkit-box-shadow: inset 0 1px 0 #ec8a85, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #ec8a85, 0 1px 0 rgba(0, 0, 0, 0.15); }
-webkit-box-shadow: inset 0 1px 0 #ec8b85, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #ec8b85, 0 1px 0 rgba(0, 0, 0, 0.15); }
.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus {
background: #dd362d;
border-color: #ba251e;
background: #dd382d;
border-color: #ba281e;
color: white;
-webkit-box-shadow: inset 0 1px 0 #e8756f;
box-shadow: inset 0 1px 0 #e8756f; }
-webkit-box-shadow: inset 0 1px 0 #e8776f;
box-shadow: inset 0 1px 0 #e8776f; }
.wp-core-ui .button-primary:focus {
-webkit-box-shadow: inset 0 1px 0 #e8756f, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
box-shadow: inset 0 1px 0 #e8756f, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); }
-webkit-box-shadow: inset 0 1px 0 #e8776f, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
box-shadow: inset 0 1px 0 #e8776f, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); }
.wp-core-ui .button-primary:active {
background: #d02a21;
border-color: #ba251e;
background: #d02c21;
border-color: #ba281e;
color: white;
-webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); }
.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled {
color: #d1c7c7 !important;
background: #d92c23 !important;
border-color: #ba251e !important;
color: #d1c8c7 !important;
background: #d92e23 !important;
border-color: #ba281e !important;
text-shadow: none !important; }
.wp-core-ui .wp-ui-primary {
color: #fff;
@@ -249,7 +249,7 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
/* Pointers */
.wp-pointer .wp-pointer-content h3 {
background-color: #e14d43;
border-color: #dd362d; }
border-color: #dd382d; }
.wp-pointer .wp-pointer-content h3:before {
color: #e14d43; }
@@ -314,9 +314,9 @@ body.more-filters-opened .more-filters:hover:before, body.more-filters-opened .m
/* jQuery UI Slider */
.wp-slider .ui-slider-handle, .wp-slider .ui-slider-handle.ui-state-hover, .wp-slider .ui-slider-handle.focus {
background: #e14d43;
border-color: #d02a21;
-webkit-box-shadow: inset 0 1px 0 #ec8a85, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #ec8a85, 0 1px 0 rgba(0, 0, 0, 0.15); }
border-color: #d02c21;
-webkit-box-shadow: inset 0 1px 0 #ec8b85, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #ec8b85, 0 1px 0 rgba(0, 0, 0, 0.15); }
/* Thickbox: Plugin information */
#sidemenu a.current {

File diff suppressed because one or more lines are too long

View File

@@ -27,29 +27,29 @@ input[type=radio]:checked:before {
/* Core UI */
.wp-core-ui .button-primary {
background: #e14d43;
border-color: #d02a21;
border-color: #d02c21;
color: white;
-webkit-box-shadow: inset 0 1px 0 #ec8a85, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #ec8a85, 0 1px 0 rgba(0, 0, 0, 0.15); }
-webkit-box-shadow: inset 0 1px 0 #ec8b85, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #ec8b85, 0 1px 0 rgba(0, 0, 0, 0.15); }
.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus {
background: #dd362d;
border-color: #ba251e;
background: #dd382d;
border-color: #ba281e;
color: white;
-webkit-box-shadow: inset 0 1px 0 #e8756f;
box-shadow: inset 0 1px 0 #e8756f; }
-webkit-box-shadow: inset 0 1px 0 #e8776f;
box-shadow: inset 0 1px 0 #e8776f; }
.wp-core-ui .button-primary:focus {
-webkit-box-shadow: inset 0 1px 0 #e8756f, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
box-shadow: inset 0 1px 0 #e8756f, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); }
-webkit-box-shadow: inset 0 1px 0 #e8776f, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
box-shadow: inset 0 1px 0 #e8776f, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); }
.wp-core-ui .button-primary:active {
background: #d02a21;
border-color: #ba251e;
background: #d02c21;
border-color: #ba281e;
color: white;
-webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); }
.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled {
color: #d1c7c7 !important;
background: #d92c23 !important;
border-color: #ba251e !important;
color: #d1c8c7 !important;
background: #d92e23 !important;
border-color: #ba281e !important;
text-shadow: none !important; }
.wp-core-ui .wp-ui-primary {
color: #fff;
@@ -249,7 +249,7 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
/* Pointers */
.wp-pointer .wp-pointer-content h3 {
background-color: #e14d43;
border-color: #dd362d; }
border-color: #dd382d; }
.wp-pointer .wp-pointer-content h3:before {
color: #e14d43; }
@@ -314,9 +314,9 @@ body.more-filters-opened .more-filters:hover:before, body.more-filters-opened .m
/* jQuery UI Slider */
.wp-slider .ui-slider-handle, .wp-slider .ui-slider-handle.ui-state-hover, .wp-slider .ui-slider-handle.focus {
background: #e14d43;
border-color: #d02a21;
-webkit-box-shadow: inset 0 1px 0 #ec8a85, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #ec8a85, 0 1px 0 rgba(0, 0, 0, 0.15); }
border-color: #d02c21;
-webkit-box-shadow: inset 0 1px 0 #ec8b85, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #ec8b85, 0 1px 0 rgba(0, 0, 0, 0.15); }
/* Thickbox: Plugin information */
#sidemenu a.current {

File diff suppressed because one or more lines are too long

View File

@@ -48,7 +48,7 @@ input[type=radio]:checked:before {
box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); }
.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled {
color: #c7d1c8 !important;
background: #86a988 !important;
background: #86a989 !important;
border-color: #719a74 !important;
text-shadow: none !important; }
.wp-core-ui .wp-ui-primary {
@@ -194,7 +194,7 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
background: #627c83; }
#wpadminbar .quicklinks .menupop ul.ab-sub-secondary, #wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu {
background: #8f9b9e; }
background: #8f9a9e; }
#wpadminbar .ab-submenu .ab-item, #wpadminbar .quicklinks .menupop ul li a, #wpadminbar .quicklinks .menupop.hover ul li a, #wpadminbar-nojs .quicklinks .menupop:hover ul li a {
color: #d5dddf; }
@@ -214,7 +214,7 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus {
color: #fff;
background: #879fa5; }
background: #879ea5; }
#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder {
color: #fff;
@@ -234,8 +234,8 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
/* Admin Bar: my account */
#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img {
border-color: #879fa5;
background-color: #879fa5; }
border-color: #879ea5;
background-color: #879ea5; }
#wpadminbar #wp-admin-bar-user-info .display-name {
color: #fff; }

File diff suppressed because one or more lines are too long

View File

@@ -48,7 +48,7 @@ input[type=radio]:checked:before {
box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); }
.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled {
color: #c7d1c8 !important;
background: #86a988 !important;
background: #86a989 !important;
border-color: #719a74 !important;
text-shadow: none !important; }
.wp-core-ui .wp-ui-primary {
@@ -194,7 +194,7 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
background: #627c83; }
#wpadminbar .quicklinks .menupop ul.ab-sub-secondary, #wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu {
background: #8f9b9e; }
background: #8f9a9e; }
#wpadminbar .ab-submenu .ab-item, #wpadminbar .quicklinks .menupop ul li a, #wpadminbar .quicklinks .menupop.hover ul li a, #wpadminbar-nojs .quicklinks .menupop:hover ul li a {
color: #d5dddf; }
@@ -214,7 +214,7 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus {
color: #fff;
background: #879fa5; }
background: #879ea5; }
#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder {
color: #fff;
@@ -234,8 +234,8 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
/* Admin Bar: my account */
#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img {
border-color: #879fa5;
background-color: #879fa5; }
border-color: #879ea5;
background-color: #879ea5; }
#wpadminbar #wp-admin-bar-user-info .display-name {
color: #fff; }

File diff suppressed because one or more lines are too long

View File

@@ -27,29 +27,29 @@ input[type=radio]:checked:before {
/* Core UI */
.wp-core-ui .button-primary {
background: #dd823b;
border-color: #c36822;
border-color: #c36922;
color: white;
-webkit-box-shadow: inset 0 1px 0 #e8ab7c, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #e8ab7c, 0 1px 0 rgba(0, 0, 0, 0.15); }
-webkit-box-shadow: inset 0 1px 0 #e8ac7c, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #e8ac7c, 0 1px 0 rgba(0, 0, 0, 0.15); }
.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus {
background: #d97326;
border-color: #ad5c1e;
background: #d97426;
border-color: #ad5d1e;
color: white;
-webkit-box-shadow: inset 0 1px 0 #e59d66;
box-shadow: inset 0 1px 0 #e59d66; }
-webkit-box-shadow: inset 0 1px 0 #e59e66;
box-shadow: inset 0 1px 0 #e59e66; }
.wp-core-ui .button-primary:focus {
-webkit-box-shadow: inset 0 1px 0 #e59d66, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
box-shadow: inset 0 1px 0 #e59d66, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); }
-webkit-box-shadow: inset 0 1px 0 #e59e66, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
box-shadow: inset 0 1px 0 #e59e66, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); }
.wp-core-ui .button-primary:active {
background: #c36822;
border-color: #ad5c1e;
background: #c36922;
border-color: #ad5d1e;
color: white;
-webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); }
.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled {
color: #d1cbc7 !important;
background: #cc6c23 !important;
border-color: #ad5c1e !important;
background: #cc6d23 !important;
border-color: #ad5d1e !important;
text-shadow: none !important; }
.wp-core-ui .wp-ui-primary {
color: #fff;
@@ -214,7 +214,7 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus {
color: #fff;
background: #d66460; }
background: #d66560; }
#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder {
color: #fff;
@@ -234,8 +234,8 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
/* Admin Bar: my account */
#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img {
border-color: #d66460;
background-color: #d66460; }
border-color: #d66560;
background-color: #d66560; }
#wpadminbar #wp-admin-bar-user-info .display-name {
color: #fff; }
@@ -249,7 +249,7 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
/* Pointers */
.wp-pointer .wp-pointer-content h3 {
background-color: #dd823b;
border-color: #d97326; }
border-color: #d97426; }
.wp-pointer .wp-pointer-content h3:before {
color: #dd823b; }
@@ -314,9 +314,9 @@ body.more-filters-opened .more-filters:hover:before, body.more-filters-opened .m
/* jQuery UI Slider */
.wp-slider .ui-slider-handle, .wp-slider .ui-slider-handle.ui-state-hover, .wp-slider .ui-slider-handle.focus {
background: #dd823b;
border-color: #c36822;
-webkit-box-shadow: inset 0 1px 0 #e8ab7c, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #e8ab7c, 0 1px 0 rgba(0, 0, 0, 0.15); }
border-color: #c36922;
-webkit-box-shadow: inset 0 1px 0 #e8ac7c, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #e8ac7c, 0 1px 0 rgba(0, 0, 0, 0.15); }
/* Thickbox: Plugin information */
#sidemenu a.current {

File diff suppressed because one or more lines are too long

View File

@@ -27,29 +27,29 @@ input[type=radio]:checked:before {
/* Core UI */
.wp-core-ui .button-primary {
background: #dd823b;
border-color: #c36822;
border-color: #c36922;
color: white;
-webkit-box-shadow: inset 0 1px 0 #e8ab7c, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #e8ab7c, 0 1px 0 rgba(0, 0, 0, 0.15); }
-webkit-box-shadow: inset 0 1px 0 #e8ac7c, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #e8ac7c, 0 1px 0 rgba(0, 0, 0, 0.15); }
.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus {
background: #d97326;
border-color: #ad5c1e;
background: #d97426;
border-color: #ad5d1e;
color: white;
-webkit-box-shadow: inset 0 1px 0 #e59d66;
box-shadow: inset 0 1px 0 #e59d66; }
-webkit-box-shadow: inset 0 1px 0 #e59e66;
box-shadow: inset 0 1px 0 #e59e66; }
.wp-core-ui .button-primary:focus {
-webkit-box-shadow: inset 0 1px 0 #e59d66, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
box-shadow: inset 0 1px 0 #e59d66, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); }
-webkit-box-shadow: inset 0 1px 0 #e59e66, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
box-shadow: inset 0 1px 0 #e59e66, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); }
.wp-core-ui .button-primary:active {
background: #c36822;
border-color: #ad5c1e;
background: #c36922;
border-color: #ad5d1e;
color: white;
-webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); }
.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled {
color: #d1cbc7 !important;
background: #cc6c23 !important;
border-color: #ad5c1e !important;
background: #cc6d23 !important;
border-color: #ad5d1e !important;
text-shadow: none !important; }
.wp-core-ui .wp-ui-primary {
color: #fff;
@@ -214,7 +214,7 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus {
color: #fff;
background: #d66460; }
background: #d66560; }
#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder {
color: #fff;
@@ -234,8 +234,8 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
/* Admin Bar: my account */
#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img {
border-color: #d66460;
background-color: #d66460; }
border-color: #d66560;
background-color: #d66560; }
#wpadminbar #wp-admin-bar-user-info .display-name {
color: #fff; }
@@ -249,7 +249,7 @@ ul#adminmenu a.wp-has-current-submenu:after, ul#adminmenu > li.current > a.curre
/* Pointers */
.wp-pointer .wp-pointer-content h3 {
background-color: #dd823b;
border-color: #d97326; }
border-color: #d97426; }
.wp-pointer .wp-pointer-content h3:before {
color: #dd823b; }
@@ -314,9 +314,9 @@ body.more-filters-opened .more-filters:hover:before, body.more-filters-opened .m
/* jQuery UI Slider */
.wp-slider .ui-slider-handle, .wp-slider .ui-slider-handle.ui-state-hover, .wp-slider .ui-slider-handle.focus {
background: #dd823b;
border-color: #c36822;
-webkit-box-shadow: inset 0 1px 0 #e8ab7c, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #e8ab7c, 0 1px 0 rgba(0, 0, 0, 0.15); }
border-color: #c36922;
-webkit-box-shadow: inset 0 1px 0 #e8ac7c, 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 1px 0 #e8ac7c, 0 1px 0 rgba(0, 0, 0, 0.15); }
/* Thickbox: Plugin information */
#sidemenu a.current {

File diff suppressed because one or more lines are too long

View File

@@ -18,9 +18,11 @@ if ( ! current_user_can( 'customize' ) ) {
wp_reset_vars( array( 'url', 'return' ) );
$url = wp_unslash( $url );
$url = esc_url_raw( $url );
$url = wp_validate_redirect( $url, home_url( '/' ) );
if ( $return ) {
$return = wp_unslash( $return );
$return = esc_url_raw( $return );
$return = wp_validate_redirect( $return );
}
if ( ! $return ) {
@@ -139,7 +141,7 @@ do_action( 'customize_controls_print_scripts' );
echo sprintf( __( 'You are previewing %s' ), '<strong class="theme-name">' . $wp_customize->theme()->display('Name') . '</strong>' );
} else {
/* translators: %s is the site/panel title in the Customize pane */
echo sprintf( __( 'You are customizing %s' ), '<strong class="theme-name site-title">' . get_bloginfo( 'name' ) . '</strong>' );
echo sprintf( __( 'You are customizing %s' ), '<strong class="theme-name site-title">' . get_bloginfo( 'name', 'display' ) . '</strong>' );
}
?></span>
</div>

View File

@@ -943,6 +943,8 @@ function wp_ajax_replyto_comment( $action ) {
if ( wp_create_nonce( 'unfiltered-html-comment' ) != $_POST['_wp_unfiltered_html_comment'] ) {
kses_remove_filters(); // start with a clean slate
kses_init_filters(); // set up the filters
remove_filter( 'pre_comment_content', 'wp_filter_post_kses' );
add_filter( 'pre_comment_content', 'wp_filter_kses' );
}
}
} else {
@@ -1529,10 +1531,12 @@ function wp_ajax_inline_save() {
$data['parent_id'] = $data['post_parent'];
// Status.
if ( isset($data['keep_private']) && 'private' == $data['keep_private'] )
if ( isset( $data['keep_private'] ) && 'private' == $data['keep_private'] ) {
$data['visibility'] = 'private';
$data['post_status'] = 'private';
else
} else {
$data['post_status'] = $data['_status'];
}
if ( empty($data['comment_status']) )
$data['comment_status'] = 'closed';
@@ -1833,7 +1837,11 @@ function wp_ajax_upload_attachment() {
$post_id = null;
}
$post_data = isset( $_REQUEST['post_data'] ) ? $_REQUEST['post_data'] : array();
$post_data = ! empty( $_REQUEST['post_data'] ) ? _wp_get_allowed_postdata( _wp_translate_postdata( false, (array) $_REQUEST['post_data'] ) ) : array();
if ( is_wp_error( $post_data ) ) {
wp_die( $post_data->get_error_message() );
}
// If the context is custom header or background, make sure the uploaded file is an image.
if ( isset( $post_data['context'] ) && in_array( $post_data['context'], array( 'custom-header', 'custom-background' ) ) ) {
@@ -1843,7 +1851,7 @@ function wp_ajax_upload_attachment() {
'success' => false,
'data' => array(
'message' => __( 'The uploaded file is not a valid image. Please try again.' ),
'filename' => $_FILES['async-upload']['name'],
'filename' => esc_html( $_FILES['async-upload']['name'] ),
)
) );
@@ -1858,7 +1866,7 @@ function wp_ajax_upload_attachment() {
'success' => false,
'data' => array(
'message' => $attachment_id->get_error_message(),
'filename' => $_FILES['async-upload']['name'],
'filename' => esc_html( $_FILES['async-upload']['name'] ),
)
) );
@@ -2539,7 +2547,7 @@ function wp_ajax_get_revision_diffs() {
if ( ! $post = get_post( (int) $_REQUEST['post_id'] ) )
wp_send_json_error();
if ( ! current_user_can( 'read_post', $post->ID ) )
if ( ! current_user_can( 'edit_post', $post->ID ) )
wp_send_json_error();
// Really just pre-loading the cache here.

View File

@@ -552,9 +552,9 @@ class WP_Comments_List_Table extends WP_List_Table {
if ( current_user_can( 'edit_post', $post->ID ) ) {
$post_link = "<a href='" . get_edit_post_link( $post->ID ) . "'>";
$post_link .= get_the_title( $post->ID ) . '</a>';
$post_link .= esc_html( get_the_title( $post->ID ) ) . '</a>';
} else {
$post_link = get_the_title( $post->ID );
$post_link = esc_html( get_the_title( $post->ID ) );
}
echo '<div class="response-links"><span class="post-com-count-wrapper">';

View File

@@ -221,7 +221,7 @@ class WP_MS_Users_List_Table extends WP_List_Table {
break;
case 'email':
echo "<td $attributes><a href='mailto:$user->user_email'>$user->user_email</a></td>";
echo "<td $attributes><a href='" . esc_url( "mailto:$user->user_email" ) . "'>$user->user_email</a></td>";
break;
case 'registered':

View File

@@ -273,7 +273,9 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
return;
}
if ( 'top' == $which ) { ?>
if ( 'top' == $which ) {
wp_referer_field();
?>
<div class="tablenav top">
<div class="alignleft actions">
<?php

View File

@@ -396,27 +396,27 @@ class WP_Plugins_List_Table extends WP_List_Table {
if ( $screen->in_admin( 'network' ) ) {
if ( $is_active ) {
if ( current_user_can( 'manage_network_plugins' ) )
$actions['deactivate'] = '<a href="' . wp_nonce_url('plugins.php?action=deactivate&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'deactivate-plugin_' . $plugin_file) . '" title="' . esc_attr__('Deactivate this plugin') . '">' . __('Network Deactivate') . '</a>';
$actions['deactivate'] = '<a href="' . wp_nonce_url('plugins.php?action=deactivate&amp;plugin=' . urlencode( $plugin_file ) . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'deactivate-plugin_' . $plugin_file) . '" title="' . esc_attr__('Deactivate this plugin') . '">' . __('Network Deactivate') . '</a>';
} else {
if ( current_user_can( 'manage_network_plugins' ) )
$actions['activate'] = '<a href="' . wp_nonce_url('plugins.php?action=activate&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'activate-plugin_' . $plugin_file) . '" title="' . esc_attr__('Activate this plugin for all sites in this network') . '" class="edit">' . __('Network Activate') . '</a>';
$actions['activate'] = '<a href="' . wp_nonce_url('plugins.php?action=activate&amp;plugin=' . urlencode( $plugin_file ) . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'activate-plugin_' . $plugin_file) . '" title="' . esc_attr__('Activate this plugin for all sites in this network') . '" class="edit">' . __('Network Activate') . '</a>';
if ( current_user_can( 'delete_plugins' ) && ! is_plugin_active( $plugin_file ) )
$actions['delete'] = '<a href="' . wp_nonce_url('plugins.php?action=delete-selected&amp;checked[]=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'bulk-plugins') . '" title="' . esc_attr__('Delete this plugin') . '" class="delete">' . __('Delete') . '</a>';
$actions['delete'] = '<a href="' . wp_nonce_url('plugins.php?action=delete-selected&amp;checked[]=' . urlencode( $plugin_file ) . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'bulk-plugins') . '" title="' . esc_attr__('Delete this plugin') . '" class="delete">' . __('Delete') . '</a>';
}
} else {
if ( $is_active ) {
$actions['deactivate'] = '<a href="' . wp_nonce_url('plugins.php?action=deactivate&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'deactivate-plugin_' . $plugin_file) . '" title="' . esc_attr__('Deactivate this plugin') . '">' . __('Deactivate') . '</a>';
$actions['deactivate'] = '<a href="' . wp_nonce_url('plugins.php?action=deactivate&amp;plugin=' . urlencode( $plugin_file ) . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'deactivate-plugin_' . $plugin_file) . '" title="' . esc_attr__('Deactivate this plugin') . '">' . __('Deactivate') . '</a>';
} else {
$actions['activate'] = '<a href="' . wp_nonce_url('plugins.php?action=activate&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'activate-plugin_' . $plugin_file) . '" title="' . esc_attr__('Activate this plugin') . '" class="edit">' . __('Activate') . '</a>';
$actions['activate'] = '<a href="' . wp_nonce_url('plugins.php?action=activate&amp;plugin=' . urlencode( $plugin_file ) . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'activate-plugin_' . $plugin_file) . '" title="' . esc_attr__('Activate this plugin') . '" class="edit">' . __('Activate') . '</a>';
if ( ! is_multisite() && current_user_can('delete_plugins') )
$actions['delete'] = '<a href="' . wp_nonce_url('plugins.php?action=delete-selected&amp;checked[]=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'bulk-plugins') . '" title="' . esc_attr__('Delete this plugin') . '" class="delete">' . __('Delete') . '</a>';
$actions['delete'] = '<a href="' . wp_nonce_url('plugins.php?action=delete-selected&amp;checked[]=' . urlencode( $plugin_file ) . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'bulk-plugins') . '" title="' . esc_attr__('Delete this plugin') . '" class="delete">' . __('Delete') . '</a>';
} // end if $is_active
} // end if $screen->in_admin( 'network' )
if ( ( ! is_multisite() || $screen->in_admin( 'network' ) ) && current_user_can('edit_plugins') && is_writable(WP_PLUGIN_DIR . '/' . $plugin_file) )
$actions['edit'] = '<a href="plugin-editor.php?file=' . $plugin_file . '" title="' . esc_attr__('Open this file in the Plugin Editor') . '" class="edit">' . __('Edit') . '</a>';
$actions['edit'] = '<a href="plugin-editor.php?file=' . urlencode( $plugin_file ) . '" title="' . esc_attr__('Open this file in the Plugin Editor') . '" class="edit">' . __('Edit') . '</a>';
} // end if $context
$prefix = $screen->in_admin( 'network' ) ? 'network_admin_' : '';

View File

@@ -652,8 +652,9 @@ class WP_Posts_List_Table extends WP_List_Table {
echo '<div class="locked-info"><span class="locked-avatar">' . $locked_avatar . '</span> <span class="locked-text">' . $locked_text . "</span></div>\n";
}
if ( ! $this->hierarchical_display && 'excerpt' == $mode && current_user_can( 'read_post', $post->ID ) )
the_excerpt();
if ( ! $this->hierarchical_display && 'excerpt' == $mode && current_user_can( 'read_post', $post->ID ) ) {
echo esc_html( get_the_excerpt() );
}
$actions = array();
if ( $can_edit_post && 'trash' != $post->post_status ) {

View File

@@ -1767,8 +1767,12 @@ class File_Upload_Upgrader {
if ( ! ( ( $uploads = wp_upload_dir() ) && false === $uploads['error'] ) )
wp_die( $uploads['error'] );
$this->filename = $_GET[$urlholder];
$this->filename = sanitize_file_name( $_GET[ $urlholder ] );
$this->package = $uploads['basedir'] . '/' . $this->filename;
if ( 0 !== strpos( realpath( $this->package ), realpath( $uploads['basedir'] ) ) ) {
wp_die( __( 'Please select a file' ) );
}
}
}

View File

@@ -419,7 +419,7 @@ class WP_Users_List_Table extends WP_List_Table {
$r .= "<td $attributes>$user_object->first_name $user_object->last_name</td>";
break;
case 'email':
$r .= "<td $attributes><a href='mailto:$email' title='" . esc_attr( sprintf( __( 'E-mail: %s' ), $email ) ) . "'>$email</a></td>";
$r .= "<td $attributes><a href='" . esc_url( "mailto:$email" ) . "' title='" . esc_attr( sprintf( __( 'E-mail: %s' ), $email ) ) . "'>$email</a></td>";
break;
case 'role':
$r .= "<td $attributes>$role_name</td>";

View File

@@ -416,6 +416,10 @@ function wp_network_dashboard_right_now() {
function wp_dashboard_quick_press( $error_msg = false ) {
global $post_ID;
if ( ! current_user_can( 'edit_posts' ) ) {
return;
}
/* Check if a new auto-draft (= no new post_ID) is needed or if the old can be used */
$last_post_id = (int) get_user_option( 'dashboard_quick_press_last_post_id' ); // Get the last post_ID
if ( $last_post_id ) {
@@ -518,7 +522,7 @@ function wp_dashboard_recent_drafts( $drafts = false ) {
function _wp_dashboard_recent_comments_row( &$comment, $show_date = true ) {
$GLOBALS['comment'] =& $comment;
$comment_post_title = strip_tags(get_the_title( $comment->comment_post_ID ));
$comment_post_title = _draft_or_post_title( $comment->comment_post_ID );
if ( current_user_can( 'edit_post', $comment->comment_post_ID ) ) {
$comment_post_url = get_edit_post_link( $comment->comment_post_ID );

View File

@@ -595,6 +595,10 @@ function _unzip_file_ziparchive($file, $to, $needed_dirs = array() ) {
if ( '__MACOSX/' === substr($info['name'], 0, 9) ) // Skip the OS X-created __MACOSX directory
continue;
if ( 0 !== validate_file( $info['name'] ) ) {
return new WP_Error( 'invalid_file_ziparchive', __( 'Could not extract file from archive.' ), $info['name'] );
}
$uncompressed_size += $info['size'];
if ( '/' == substr($info['name'], -1) ) // directory
@@ -748,6 +752,10 @@ function _unzip_file_pclzip($file, $to, $needed_dirs = array()) {
if ( '__MACOSX/' === substr($file['filename'], 0, 9) ) // Don't extract the OS X-created __MACOSX directory files
continue;
if ( 0 !== validate_file( $file['filename'] ) ) {
return new WP_Error( 'invalid_file_pclzip', __( 'Could not extract file from archive.' ), $file['filename'] );
}
if ( ! $wp_filesystem->put_contents( $to . $file['filename'], $file['content'], FS_CHMOD_FILE) )
return new WP_Error( 'copy_failed_pclzip', __( 'Could not copy file.' ), $file['filename'] );
}
@@ -975,14 +983,28 @@ function request_filesystem_credentials($form_post, $type = '', $error = false,
$credentials = get_option('ftp_credentials', array( 'hostname' => '', 'username' => ''));
$submitted_form = wp_unslash( $_POST );
// Verify nonce, or unset submitted form field values on failure
if ( ! isset( $_POST['_fs_nonce'] ) || ! wp_verify_nonce( $_POST['_fs_nonce'], 'filesystem-credentials' ) ) {
unset(
$submitted_form['hostname'],
$submitted_form['username'],
$submitted_form['password'],
$submitted_form['public_key'],
$submitted_form['private_key'],
$submitted_form['connection_type']
);
}
// If defined, set it to that, Else, If POST'd, set it to that, If not, Set it to whatever it previously was(saved details in option)
$credentials['hostname'] = defined('FTP_HOST') ? FTP_HOST : (!empty($_POST['hostname']) ? wp_unslash( $_POST['hostname'] ) : $credentials['hostname']);
$credentials['username'] = defined('FTP_USER') ? FTP_USER : (!empty($_POST['username']) ? wp_unslash( $_POST['username'] ) : $credentials['username']);
$credentials['password'] = defined('FTP_PASS') ? FTP_PASS : (!empty($_POST['password']) ? wp_unslash( $_POST['password'] ) : '');
$credentials['hostname'] = defined('FTP_HOST') ? FTP_HOST : (!empty($submitted_form['hostname']) ? $submitted_form['hostname'] : $credentials['hostname']);
$credentials['username'] = defined('FTP_USER') ? FTP_USER : (!empty($submitted_form['username']) ? $submitted_form['username'] : $credentials['username']);
$credentials['password'] = defined('FTP_PASS') ? FTP_PASS : (!empty($submitted_form['password']) ? $submitted_form['password'] : '');
// Check to see if we are setting the public/private keys for ssh
$credentials['public_key'] = defined('FTP_PUBKEY') ? FTP_PUBKEY : (!empty($_POST['public_key']) ? wp_unslash( $_POST['public_key'] ) : '');
$credentials['private_key'] = defined('FTP_PRIKEY') ? FTP_PRIKEY : (!empty($_POST['private_key']) ? wp_unslash( $_POST['private_key'] ) : '');
$credentials['public_key'] = defined('FTP_PUBKEY') ? FTP_PUBKEY : (!empty($submitted_form['public_key']) ? $submitted_form['public_key'] : '');
$credentials['private_key'] = defined('FTP_PRIKEY') ? FTP_PRIKEY : (!empty($submitted_form['private_key']) ? $submitted_form['private_key'] : '');
// Sanitize the hostname, Some people might pass in odd-data:
$credentials['hostname'] = preg_replace('|\w+://|', '', $credentials['hostname']); //Strip any schemes off
@@ -999,8 +1021,8 @@ function request_filesystem_credentials($form_post, $type = '', $error = false,
$credentials['connection_type'] = 'ssh';
else if ( (defined('FTP_SSL') && FTP_SSL) && 'ftpext' == $type ) //Only the FTP Extension understands SSL
$credentials['connection_type'] = 'ftps';
else if ( !empty($_POST['connection_type']) )
$credentials['connection_type'] = wp_unslash( $_POST['connection_type'] );
else if ( !empty($submitted_form['connection_type']) )
$credentials['connection_type'] = $submitted_form['connection_type'];
else if ( !isset($credentials['connection_type']) ) //All else fails (And it's not defaulted to something else saved), Default to FTP
$credentials['connection_type'] = 'ftp';
@@ -1138,11 +1160,14 @@ jQuery(function($){
<?php
foreach ( (array) $extra_fields as $field ) {
if ( isset( $_POST[ $field ] ) )
echo '<input type="hidden" name="' . esc_attr( $field ) . '" value="' . esc_attr( wp_unslash( $_POST[ $field ] ) ) . '" />';
if ( isset( $submitted_form[ $field ] ) )
echo '<input type="hidden" name="' . esc_attr( $field ) . '" value="' . esc_attr( $submitted_form[ $field ] ) . '" />';
}
submit_button( __( 'Proceed' ), 'button', 'upgrade' );
?>
<p class="request-filesystem-credentials-action-buttons">
<?php wp_nonce_field( 'filesystem-credentials', '_fs_nonce', false, true ); ?>
<?php submit_button( __( 'Proceed' ), 'button', 'upgrade', false ); ?>
</p>
</div>
</form>
<?php

View File

@@ -401,6 +401,12 @@ function wp_read_image_metadata( $file ) {
}
}
foreach ( $meta as &$value ) {
if ( is_string( $value ) ) {
$value = wp_kses_post( $value );
}
}
/**
* Filter the array of meta data read from an image's exif data.
*

View File

@@ -263,7 +263,7 @@ function media_handle_upload($file_id, $post_id, $post_data = array(), $override
$url = $file['url'];
$type = $file['type'];
$file = $file['file'];
$title = $name;
$title = sanitize_text_field( $name );
$content = '';
if ( preg_match( '#^audio#', $type ) ) {
@@ -2861,7 +2861,7 @@ function wp_add_id3_tag_data( &$metadata, $data ) {
if ( ! empty( $data[$version]['comments'] ) ) {
foreach ( $data[$version]['comments'] as $key => $list ) {
if ( ! empty( $list ) ) {
$metadata[$key] = reset( $list );
$metadata[$key] = wp_kses_post( reset( $list ) );
// Fix bug in byte stream analysis.
if ( 'terms_of_use' === $key && 0 === strpos( $metadata[$key], 'yright notice.' ) )
$metadata[$key] = 'Cop' . $metadata[$key];

View File

@@ -235,10 +235,15 @@ function install_plugins_favorites_form() {
function display_plugins_table() {
global $wp_list_table;
if ( current_filter() == 'install_plugins_favorites' && empty( $_GET['user'] ) && ! get_user_option( 'wporg_favorites' ) )
return;
if ( current_filter() == 'install_plugins_favorites' && empty( $_GET['user'] ) && ! get_user_option( 'wporg_favorites' ) ) {
return;
}
$wp_list_table->display();
?>
<form id="plugin-filter" action="" method="post">
<?php $wp_list_table->display(); ?>
</form>
<?php
}
add_action( 'install_plugins_search', 'display_plugins_table' );
add_action( 'install_plugins_popular', 'display_plugins_table' );

View File

@@ -165,9 +165,37 @@ function _wp_translate_postdata( $update = false, $post_data = null ) {
$post_data['post_date_gmt'] = get_gmt_from_date( $post_data['post_date'] );
}
if ( isset( $post_data['post_category'] ) ) {
$category_object = get_taxonomy( 'category' );
if ( ! current_user_can( $category_object->cap->assign_terms ) ) {
unset( $post_data['post_category'] );
}
}
return $post_data;
}
/**
* Returns only allowed post data fields
*
* @since 4.9.9
*
* @param array $post_data Array of post data. Defaults to the contents of $_POST.
* @return object|bool WP_Error on failure, true on success.
*/
function _wp_get_allowed_postdata( $post_data = null ) {
if ( empty( $post_data ) ) {
$post_data = $_POST;
}
// Pass through errors
if ( is_wp_error( $post_data ) ) {
return $post_data;
}
return array_diff_key( $post_data, array_flip( array( 'meta_input', 'file', 'guid' ) ) );
}
/**
* Update an existing post with values provided in $_POST.
*
@@ -177,6 +205,7 @@ function _wp_translate_postdata( $update = false, $post_data = null ) {
* @return int Post ID.
*/
function edit_post( $post_data = null ) {
global $wpdb;
if ( empty($post_data) )
$post_data = &$_POST;
@@ -233,6 +262,7 @@ function edit_post( $post_data = null ) {
$post_data = _wp_translate_postdata( true, $post_data );
if ( is_wp_error($post_data) )
wp_die( $post_data->get_error_message() );
$translated = _wp_get_allowed_postdata( $post_data );
// Post Formats
if ( isset( $post_data['post_format'] ) )
@@ -310,14 +340,26 @@ function edit_post( $post_data = null ) {
$attachment_data = isset( $post_data['attachments'][ $post_ID ] ) ? $post_data['attachments'][ $post_ID ] : array();
/** This filter is documented in wp-admin/includes/media.php */
$post_data = apply_filters( 'attachment_fields_to_save', $post_data, $attachment_data );
$translated = apply_filters( 'attachment_fields_to_save', $translated, $attachment_data );
}
add_meta( $post_ID );
update_post_meta( $post_ID, '_edit_last', get_current_user_id() );
wp_update_post( $post_data );
$success = wp_update_post( $translated );
// If the save failed, see if we can sanity check the main fields and try again
if ( ! $success && is_callable( array( $wpdb, 'strip_invalid_text_for_column' ) ) ) {
$fields = array( 'post_title', 'post_content', 'post_excerpt' );
foreach( $fields as $field ) {
if ( isset( $translated[ $field ] ) ) {
$translated[ $field ] = $wpdb->strip_invalid_text_for_column( $wpdb->posts, $field, $translated[ $field ] );
}
}
wp_update_post( $translated );
}
// Now that we have an ID we can fix any attachment anchor hrefs
_fix_attachment_links( $post_ID );
@@ -474,9 +516,9 @@ function bulk_edit_posts( $post_data = null ) {
unset( $post_data['tax_input']['category'] );
}
$post_data['post_ID'] = $post_ID;
$post_data['post_type'] = $post->post_type;
$post_data['post_mime_type'] = $post->post_mime_type;
$post_data['guid'] = $post->guid;
foreach ( array( 'comment_status', 'ping_status', 'post_author' ) as $field ) {
if ( ! isset( $post_data[ $field ] ) ) {
@@ -484,14 +526,12 @@ function bulk_edit_posts( $post_data = null ) {
}
}
$post_data['ID'] = $post_ID;
$post_data['post_ID'] = $post_ID;
$post_data = _wp_translate_postdata( true, $post_data );
if ( is_wp_error( $post_data ) ) {
$skipped[] = $post_ID;
continue;
}
$post_data = _wp_get_allowed_postdata( $post_data );
$updated[] = wp_update_post( $post_data );
@@ -502,8 +542,8 @@ function bulk_edit_posts( $post_data = null ) {
unstick_post( $post_ID );
}
if ( isset( $post_data['post_format'] ) )
set_post_format( $post_ID, $post_data['post_format'] );
if ( isset( $shared_post_data['post_format'] ) )
set_post_format( $post_ID, $shared_post_data['post_format'] );
}
return array( 'updated' => $updated, 'skipped' => $skipped, 'locked' => $locked );
@@ -679,9 +719,10 @@ function wp_write_post() {
$translated = _wp_translate_postdata( false );
if ( is_wp_error($translated) )
return $translated;
$translated = _wp_get_allowed_postdata( $translated );
// Create the post.
$post_ID = wp_insert_post( $_POST );
$post_ID = wp_insert_post( $translated );
if ( is_wp_error( $post_ID ) )
return $post_ID;
@@ -1200,27 +1241,33 @@ function get_sample_permalink_html( $id, $new_title = null, $new_slug = null ) {
}
if ( false === strpos( $permalink, '%postname%' ) && false === strpos( $permalink, '%pagename%' ) ) {
$return = '<strong>' . __('Permalink:') . "</strong>\n" . '<span id="sample-permalink" tabindex="-1">' . $permalink . "</span>\n";
$return = '<strong>' . __('Permalink:') . "</strong>\n" . '<span id="sample-permalink" tabindex="-1">' . esc_html( $permalink ) . "</span>\n";
if ( '' == get_option( 'permalink_structure' ) && current_user_can( 'manage_options' ) && !( 'page' == get_option('show_on_front') && $id == get_option('page_on_front') ) ) {
$return .= '<span id="change-permalinks"><a href="options-permalink.php" class="button button-small" target="_blank">' . __('Change Permalinks') . "</a></span>\n";
}
} else {
if ( function_exists( 'mb_strlen' ) && mb_strlen( $post_name ) > 30 ) {
$post_name_abridged = mb_substr( $post_name, 0, 14 ) . '&hellip;' . mb_substr( $post_name, -14 );
} elseif ( strlen( $post_name ) > 30 ) {
$post_name_abridged = substr( $post_name, 0, 14 ) . '&hellip;' . substr( $post_name, -14 );
if ( function_exists( 'mb_strlen' ) ) {
if ( mb_strlen( $post_name ) > 30 ) {
$post_name_abridged = mb_substr( $post_name, 0, 14 ) . '&hellip;' . mb_substr( $post_name, -14 );
} else {
$post_name_abridged = $post_name;
}
} else {
$post_name_abridged = $post_name;
if ( strlen( $post_name ) > 30 ) {
$post_name_abridged = substr( $post_name, 0, 14 ) . '&hellip;' . substr( $post_name, -14 );
} else {
$post_name_abridged = $post_name;
}
}
$post_name_html = '<span id="editable-post-name" title="' . $title . '">' . $post_name_abridged . '</span>';
$display_link = str_replace( array( '%pagename%', '%postname%' ), $post_name_html, $permalink );
$post_name_html = '<span id="editable-post-name" title="' . $title . '">' . esc_html( $post_name_abridged ) . '</span>';
$display_link = str_replace( array( '%pagename%', '%postname%' ), $post_name_html, esc_html( $permalink ) );
$return = '<strong>' . __( 'Permalink:' ) . "</strong>\n";
$return .= '<span id="sample-permalink" tabindex="-1">' . $display_link . "</span>\n";
$return .= '&lrm;'; // Fix bi-directional text display defect in RTL languages.
$return .= '<span id="edit-slug-buttons"><a href="#post_name" class="edit-slug button button-small hide-if-no-js" onclick="editPermalink(' . $id . '); return false;">' . __( 'Edit' ) . "</a></span>\n";
$return .= '<span id="editable-post-name-full">' . $post_name . "</span>\n";
$return .= '<span id="editable-post-name-full">' . esc_html( $post_name ) . "</span>\n";
}
if ( isset( $view_post ) ) {
@@ -1230,7 +1277,7 @@ function get_sample_permalink_html( $id, $new_title = null, $new_slug = null ) {
$preview_link = apply_filters( 'preview_post_link', add_query_arg( 'preview', 'true', $preview_link ), $post );
$return .= "<span id='view-post-btn'><a href='" . esc_url( $preview_link ) . "' class='button button-small' target='wp-preview-{$post->ID}'>$view_post</a></span>\n";
} else {
$return .= "<span id='view-post-btn'><a href='" . get_permalink( $post ) . "' class='button button-small'>$view_post</a></span>\n";
$return .= "<span id='view-post-btn'><a href='" . esc_url( get_permalink( $post ) ) . "' class='button button-small'>$view_post</a></span>\n";
}
}
@@ -1458,7 +1505,7 @@ function _admin_notice_post_locked() {
// Allow plugins to prevent some users overriding the post lock
if ( $override ) {
?>
<a class="button button-primary wp-tab-last" href="<?php echo esc_url( add_query_arg( 'get-post-lock', '1', get_edit_post_link( $post->ID, 'url' ) ) ); ?>"><?php _e('Take over'); ?></a>
<a class="button button-primary wp-tab-last" href="<?php echo esc_url( add_query_arg( 'get-post-lock', '1', wp_nonce_url( get_edit_post_link( $post->ID, 'url' ), 'lock-post_' . $post->ID ) ) ); ?>"><?php _e('Take over'); ?></a>
<?php
}
@@ -1520,6 +1567,7 @@ function wp_create_post_autosave( $post_data ) {
$post_data = _wp_translate_postdata( true, $post_data );
if ( is_wp_error( $post_data ) )
return $post_data;
$post_data = _wp_get_allowed_postdata( $post_data );
$post_author = get_current_user_id();

View File

@@ -449,7 +449,9 @@ final class WP_Screen {
switch ( $base ) {
case 'post' :
if ( isset( $_GET['post'] ) )
if ( isset( $_GET['post'] ) && isset( $_POST['post_ID'] ) && (int) $_GET['post'] !== (int) $_POST['post_ID'] )
wp_die( __( 'A post ID mismatch has been detected.' ), __( 'Sorry, you are not allowed to edit this item.' ), 400 );
elseif ( isset( $_GET['post'] ) )
$post_id = (int) $_GET['post'];
elseif ( isset( $_POST['post_ID'] ) )
$post_id = (int) $_POST['post_ID'];
@@ -969,7 +971,8 @@ final class WP_Screen {
switch ( $this->base ) {
case 'widgets':
$this->_screen_settings = '<p><a id="access-on" href="widgets.php?widgets-access=on">' . __('Enable accessibility mode') . '</a><a id="access-off" href="widgets.php?widgets-access=off">' . __('Disable accessibility mode') . "</a></p>\n";
$nonce = wp_create_nonce( 'widgets-access' );
$this->_screen_settings = '<p><a id="access-on" href="widgets.php?widgets-access=on&_wpnonce=' . urlencode( $nonce ) . '">' . __('Enable accessibility mode') . '</a><a id="access-off" href="widgets.php?widgets-access=off&_wpnonce=' . urlencode( $nonce ) . '">' . __('Disable accessibility mode') . "</a></p>\n";
break;
case 'post' :
$expand = '<div class="editor-expand hidden"><label for="editor-expand-toggle">';

View File

@@ -792,7 +792,7 @@ function page_template_dropdown( $default = '' ) {
ksort( $templates );
foreach ( array_keys( $templates ) as $template ) {
$selected = selected( $default, $templates[ $template ], false );
echo "\n\t<option value='" . $templates[ $template ] . "' $selected>$template</option>";
echo "\n\t<option value='" . esc_attr( $templates[ $template ] ) . "' $selected>" . esc_html( $template ) . "</option>";
}
}
@@ -1492,7 +1492,7 @@ function _draft_or_post_title( $post = 0 ) {
$title = get_the_title( $post );
if ( empty( $title ) )
$title = __( '(no title)' );
return $title;
return esc_html( $title );
}
/**

View File

@@ -659,6 +659,9 @@ $_old_files = array(
'wp-includes/js/tinymce/plugins/paste/editor_plugin_src.js',
'wp-includes/js/tinymce/plugins/paste/pastetext.htm',
'wp-includes/js/tinymce/langs/wp-langs.php',
// 4.9.2
'wp-includes/js/mediaelement/flashmediaelement.swf',
'wp-includes/js/mediaelement/silverlightmediaelement.xap',
);
/**
@@ -1008,9 +1011,16 @@ function update_core($from, $to) {
$old_file = $to . $old_file;
if ( !$wp_filesystem->exists($old_file) )
continue;
$wp_filesystem->delete($old_file, true);
// If the file isn't deleted, try writing an empty string to the file instead.
if ( ! $wp_filesystem->delete( $old_file, true ) && $wp_filesystem->is_file( $old_file ) ) {
$wp_filesystem->put_contents( $old_file, '' );
}
}
// Remove any Genericons example.html's from the filesystem
_upgrade_422_remove_genericons();
// Upgrade DB with separate request
/** This filter is documented in wp-admin/includes/update-core.php */
apply_filters( 'update_feedback', __( 'Upgrading database&#8230;' ) );
@@ -1149,3 +1159,67 @@ window.location = 'about.php?updated';
exit();
}
add_action( '_core_updated_successfully', '_redirect_to_about_wordpress' );
/**
* Cleans up Genericons example files.
*
* @since 4.2.2
*/
function _upgrade_422_remove_genericons() {
global $wp_theme_directories, $wp_filesystem;
// A list of the affected files using the filesystem absolute paths.
$affected_files = array();
// Themes
foreach ( $wp_theme_directories as $directory ) {
$affected_theme_files = _upgrade_422_find_genericons_files_in_folder( $directory );
$affected_files = array_merge( $affected_files, $affected_theme_files );
}
// Plugins
$affected_plugin_files = _upgrade_422_find_genericons_files_in_folder( WP_PLUGIN_DIR );
$affected_files = array_merge( $affected_files, $affected_plugin_files );
foreach ( $affected_files as $file ) {
$gen_dir = $wp_filesystem->find_folder( trailingslashit( dirname( $file ) ) );
if ( empty( $gen_dir ) ) {
continue;
}
// The path when the file is accessed via WP_Filesystem may differ in the case of FTP
$remote_file = $gen_dir . basename( $file );
if ( ! $wp_filesystem->exists( $remote_file ) ) {
continue;
}
if ( ! $wp_filesystem->delete( $remote_file, false, 'f' ) ) {
$wp_filesystem->put_contents( $remote_file, '' );
}
}
}
/**
* Recursively find Genericons example files in a given folder.
*
* @ignore
* @since 4.2.2
*
* @param string $directory Directory path. Expects trailingslashed.
* @return array
*/
function _upgrade_422_find_genericons_files_in_folder( $directory ) {
$directory = trailingslashit( $directory );
$files = array();
if ( file_exists( "{$directory}example.html" ) && false !== strpos( file_get_contents( "{$directory}example.html" ), '<title>Genericons</title>' ) ) {
$files[] = "{$directory}example.html";
}
foreach ( glob( $directory . '*', GLOB_ONLYDIR ) as $dir ) {
$files = array_merge( $files, _upgrade_422_find_genericons_files_in_folder( $dir ) );
}
return $files;
}

View File

@@ -440,6 +440,9 @@ function upgrade_all() {
if ( $wp_current_db_version < 29630 )
upgrade_400();
if ( $wp_current_db_version < 29632 )
upgrade_405();
maybe_disable_link_manager();
maybe_disable_automattic_widgets();
@@ -1326,6 +1329,62 @@ function upgrade_400() {
}
}
/**
* Execute changes made in WordPress 4.0.4.
*
* @since 4.0.4
*/
function upgrade_404() {
}
/**
* Execute changes made in WordPress 4.0.5.
*
* @since 4.0.5
*/
function upgrade_405() {
global $wp_current_db_version, $wpdb;
if ( $wp_current_db_version < 29632 ) {
$content_length = $wpdb->get_col_length( $wpdb->comments, 'comment_content' );
if ( is_wp_error( $content_length ) ) {
return;
}
if ( false === $content_length ) {
$content_length = array(
'type' => 'byte',
'length' => 65535,
);
} elseif ( ! is_array( $content_length ) ) {
$length = (int) $content_length > 0 ? (int) $content_length : 65535;
$content_length = array(
'type' => 'byte',
'length' => $length
);
}
if ( 'byte' !== $content_length['type'] || 0 === $content_length['length'] ) {
// Sites with malformed DB schemas are on their own.
return;
}
$allowed_length = intval( $content_length['length'] ) - 10;
$comments = $wpdb->get_results(
"SELECT `comment_ID` FROM `{$wpdb->comments}`
WHERE `comment_date_gmt` > '2015-04-26'
AND LENGTH( `comment_content` ) >= {$allowed_length}
AND ( `comment_content` LIKE '%<%' OR `comment_content` LIKE '%>%' )"
);
foreach ( $comments as $comment ) {
wp_delete_comment( $comment->comment_ID, true );
}
}
}
/**
* Execute network level changes
*

View File

@@ -1086,6 +1086,16 @@
}
});
// Ensure preview nonce is included with every customized request, to allow post data to be read.
$.ajaxPrefilter( function injectPreviewNonce( options ) {
if ( ! /wp_customize=on/.test( options.data ) ) {
return;
}
options.data += '&' + $.param({
customize_preview_nonce: api.settings.nonce.preview
});
});
// Refresh the nonces if the preview sends updated nonces over.
api.previewer.bind( 'nonce', function( nonce ) {
$.extend( this.nonce, nonce );

File diff suppressed because one or more lines are too long

View File

@@ -2,7 +2,7 @@
window.wp = window.wp || {};
jQuery( document ).ready( function($) {
jQuery( document ).ready( function( $ ) {
var $window = $( window ),
$document = $( document ),
$adminBar = $( '#wpadminbar' ),
@@ -148,6 +148,11 @@ jQuery( document ).ready( function($) {
// We need to wait for TinyMCE to initialize.
$document.on( 'tinymce-editor-init.editor-expand', function( event, editor ) {
var hideFloatPanels = _.debounce( function() {
! $( '.mce-floatpanel:hover' ).length && tinymce.ui.FloatPanel.hideAll();
$( '.mce-tooltip' ).hide();
}, 1000, true );
// Make sure it's the main editor.
if ( editor.id !== 'content' ) {
return;
@@ -224,6 +229,8 @@ jQuery( document ).ready( function($) {
// Adjust when switching editor modes.
function mceShow() {
$window.on( 'scroll.mce-float-panels', hideFloatPanels );
setTimeout( function() {
editor.execCommand( 'wpAutoResize' );
adjust();
@@ -231,6 +238,8 @@ jQuery( document ).ready( function($) {
}
function mceHide() {
$window.off( 'scroll.mce-float-panels' );
setTimeout( function() {
var top = $contentWrap.offset().top;
@@ -251,6 +260,8 @@ jQuery( document ).ready( function($) {
editor.on( 'hide', mceHide );
// Adjust when the editor resizes.
editor.on( 'setcontent wp-autoresize wp-toolbar-toggle', adjust );
$window.off( 'scroll.mce-float-panels' ).on( 'scroll.mce-float-panels', hideFloatPanels );
};
mceUnbind = function() {
@@ -258,6 +269,8 @@ jQuery( document ).ready( function($) {
editor.off( 'show', mceShow );
editor.off( 'hide', mceHide );
editor.off( 'setcontent wp-autoresize wp-toolbar-toggle', adjust );
$window.off( 'scroll.mce-float-panels' );
};
if ( $wrap.hasClass( 'wp-editor-expand' ) ) {
@@ -590,6 +603,12 @@ jQuery( document ).ready( function($) {
}
adjust();
}).on( 'wp-window-resized.editor-expand', function() {
if ( mceEditor && ! mceEditor.isHidden() ) {
mceEditor.execCommand( 'wpAutoResize' );
} else {
textEditorResize();
}
});
$textEditor.on( 'focus.editor-expand input.editor-expand propertychange.editor-expand', textEditorResize );

File diff suppressed because one or more lines are too long

View File

@@ -72,11 +72,15 @@ var findPosts;
};
$( document ).ready( function() {
var $mediaGridWrap = $( '#wp-media-grid' );
// Open up a manage media frame into the grid.
wp.media && wp.media({
frame: 'manage',
container: $('#wpbody-content > .wrap')
}).open();
if ( $mediaGridWrap.length && window.wp && window.wp.media ) {
window.wp.media({
frame: 'manage',
container: $mediaGridWrap
}).open();
}
$( '#find-posts-submit' ).click( function( event ) {
if ( ! $( '#find-posts-response input[type="radio"]:checked' ).length )

View File

@@ -1 +1 @@
var findPosts;!function(a){findPosts={open:function(b,c){var d=a(".ui-find-overlay");return 0===d.length&&(a("body").append('<div class="ui-find-overlay"></div>'),findPosts.overlay()),d.show(),b&&c&&a("#affected").attr("name",b).val(c),a("#find-posts").show(),a("#find-posts-input").focus().keyup(function(a){27==a.which&&findPosts.close()}),findPosts.send(),!1},close:function(){a("#find-posts-response").html(""),a("#find-posts").hide(),a(".ui-find-overlay").hide()},overlay:function(){a(".ui-find-overlay").on("click",function(){findPosts.close()})},send:function(){var b={ps:a("#find-posts-input").val(),action:"find_posts",_ajax_nonce:a("#_ajax_nonce").val()},c=a(".find-box-search .spinner");c.show(),a.ajax(ajaxurl,{type:"POST",data:b,dataType:"json"}).always(function(){c.hide()}).done(function(b){b.success||a("#find-posts-response").text(attachMediaBoxL10n.error),a("#find-posts-response").html(b.data)}).fail(function(){a("#find-posts-response").text(attachMediaBoxL10n.error)})}},a(document).ready(function(){wp.media&&wp.media({frame:"manage",container:a("#wpbody-content > .wrap")}).open(),a("#find-posts-submit").click(function(b){a('#find-posts-response input[type="radio"]:checked').length||b.preventDefault()}),a("#find-posts .find-box-search :input").keypress(function(a){return 13==a.which?(findPosts.send(),!1):void 0}),a("#find-posts-search").click(findPosts.send),a("#find-posts-close").click(findPosts.close),a("#doaction, #doaction2").click(function(b){a('select[name^="action"]').each(function(){"attach"===a(this).val()&&(b.preventDefault(),findPosts.open())})}),a(".find-box-inside").on("click","tr",function(){a(this).find(".found-radio input").prop("checked",!0)})})}(jQuery);
var findPosts;!function(a){findPosts={open:function(b,c){var d=a(".ui-find-overlay");return 0===d.length&&(a("body").append('<div class="ui-find-overlay"></div>'),findPosts.overlay()),d.show(),b&&c&&a("#affected").attr("name",b).val(c),a("#find-posts").show(),a("#find-posts-input").focus().keyup(function(a){27==a.which&&findPosts.close()}),findPosts.send(),!1},close:function(){a("#find-posts-response").html(""),a("#find-posts").hide(),a(".ui-find-overlay").hide()},overlay:function(){a(".ui-find-overlay").on("click",function(){findPosts.close()})},send:function(){var b={ps:a("#find-posts-input").val(),action:"find_posts",_ajax_nonce:a("#_ajax_nonce").val()},c=a(".find-box-search .spinner");c.show(),a.ajax(ajaxurl,{type:"POST",data:b,dataType:"json"}).always(function(){c.hide()}).done(function(b){b.success||a("#find-posts-response").text(attachMediaBoxL10n.error),a("#find-posts-response").html(b.data)}).fail(function(){a("#find-posts-response").text(attachMediaBoxL10n.error)})}},a(document).ready(function(){var b=a("#wp-media-grid");b.length&&window.wp&&window.wp.media&&window.wp.media({frame:"manage",container:b}).open(),a("#find-posts-submit").click(function(b){a('#find-posts-response input[type="radio"]:checked').length||b.preventDefault()}),a("#find-posts .find-box-search :input").keypress(function(a){return 13==a.which?(findPosts.send(),!1):void 0}),a("#find-posts-search").click(findPosts.send),a("#find-posts-close").click(findPosts.close),a("#doaction, #doaction2").click(function(b){a('select[name^="action"]').each(function(){"attach"===a(this).val()&&(b.preventDefault(),findPosts.open())})}),a(".find-box-inside").on("click","tr",function(){a(this).find(".found-radio input").prop("checked",!0)})})}(jQuery);

View File

@@ -453,14 +453,14 @@ var wpNavMenu;
if ( ! isPrimaryMenuItem ) {
thisLink = menuItem.find( '.menus-move-left' ),
thisLinkText = menus.outFrom.replace( '%s', prevItemNameLeft );
thisLink.prop( 'title', menus.moveOutFrom.replace( '%s', prevItemNameLeft ) ).html( thisLinkText ).css( 'display', 'inline' );
thisLink.prop( 'title', menus.moveOutFrom.replace( '%s', prevItemNameLeft ) ).text( thisLinkText ).css( 'display', 'inline' );
}
if ( 0 !== position ) {
if ( menuItem.find( '.menu-item-data-parent-id' ).val() !== menuItem.prev().find( '.menu-item-data-db-id' ).val() ) {
thisLink = menuItem.find( '.menus-move-right' ),
thisLinkText = menus.under.replace( '%s', prevItemNameRight );
thisLink.prop( 'title', menus.moveUnder.replace( '%s', prevItemNameRight ) ).html( thisLinkText ).css( 'display', 'inline' );
thisLink.prop( 'title', menus.moveUnder.replace( '%s', prevItemNameRight ) ).text( thisLinkText ).css( 'display', 'inline' );
}
}
@@ -482,7 +482,7 @@ var wpNavMenu;
title = menus.subMenuFocus.replace( '%1$s', itemName ).replace( '%2$d', itemPosition ).replace( '%3$s', parentItemName );
}
$this.prop('title', title).html( title );
$this.prop('title', title).text( title );
});
},

File diff suppressed because one or more lines are too long

View File

@@ -237,7 +237,7 @@ if ( isset( $_GET['updated'] ) ) {
<tr>
<th scope="row"><label for="first_comment_author"><?php _e( 'First Comment Author' ) ?></label></th>
<td>
<input type="text" size="40" name="first_comment_author" id="first_comment_author" value="<?php echo get_site_option('first_comment_author') ?>" />
<input type="text" size="40" name="first_comment_author" id="first_comment_author" value="<?php echo esc_attr( get_site_option('first_comment_author') ); ?>" />
<p class="description">
<?php _e( 'The author of the first comment on a new site.' ) ?>
</p>

View File

@@ -93,9 +93,9 @@ default:
wp_die( $error );
if ( ( ! empty( $_GET['networkwide'] ) && ! is_plugin_active_for_network($file) ) || ! is_plugin_active($file) )
activate_plugin($file, "plugin-editor.php?file=$file&phperror=1", ! empty( $_GET['networkwide'] ) ); // we'll override this later if the plugin can be included without fatal error
activate_plugin($file, "plugin-editor.php?file=" . urlencode( $file ) . "&phperror=1", ! empty( $_GET['networkwide'] ) ); // we'll override this later if the plugin can be included without fatal error
wp_redirect( self_admin_url("plugin-editor.php?file=$file&a=te&scrollto=$scrollto") );
wp_redirect( self_admin_url("plugin-editor.php?file=" . urlencode( $file ) . "&a=te&scrollto=$scrollto") );
exit;
}
@@ -181,14 +181,14 @@ default:
<big><?php
if ( is_plugin_active($plugin) ) {
if ( is_writeable($real_file) )
echo sprintf(__('Editing <strong>%s</strong> (active)'), $file);
echo sprintf(__('Editing <strong>%s</strong> (active)'), esc_html( $file ) );
else
echo sprintf(__('Browsing <strong>%s</strong> (active)'), $file);
echo sprintf(__('Browsing <strong>%s</strong> (active)'), esc_html( $file ) );
} else {
if ( is_writeable($real_file) )
echo sprintf(__('Editing <strong>%s</strong> (inactive)'), $file);
echo sprintf(__('Editing <strong>%s</strong> (inactive)'), esc_html( $file ) );
else
echo sprintf(__('Browsing <strong>%s</strong> (inactive)'), $file);
echo sprintf(__('Browsing <strong>%s</strong> (inactive)'), esc_html( $file ) );
}
?></big>
</div>
@@ -232,7 +232,7 @@ foreach ( $plugin_files as $plugin_file ) :
continue;
}
?>
<li<?php echo $file == $plugin_file ? ' class="highlight"' : ''; ?>><a href="plugin-editor.php?file=<?php echo urlencode( $plugin_file ) ?>&amp;plugin=<?php echo urlencode( $plugin ) ?>"><?php echo $plugin_file ?></a></li>
<li<?php echo $file == $plugin_file ? ' class="highlight"' : ''; ?>><a href="plugin-editor.php?file=<?php echo urlencode( $plugin_file ) ?>&amp;plugin=<?php echo urlencode( $plugin ) ?>"><?php echo esc_html( $plugin_file ); ?></a></li>
<?php endforeach; ?>
</ul>
</div>

View File

@@ -24,8 +24,27 @@ if ( is_multisite() && ! is_network_admin() ) {
$wp_list_table = _get_list_table('WP_Plugin_Install_List_Table');
$pagenum = $wp_list_table->get_pagenum();
if ( ! empty( $_REQUEST['_wp_http_referer'] ) ) {
$location = remove_query_arg( '_wp_http_referer', wp_unslash( $_SERVER['REQUEST_URI'] ) );
if ( ! empty( $_REQUEST['paged'] ) ) {
$location = add_query_arg( 'paged', (int) $_REQUEST['paged'], $location );
}
wp_redirect( $location );
exit;
}
$wp_list_table->prepare_items();
$total_pages = $wp_list_table->get_pagination_arg( 'total_pages' );
if ( $pagenum > $total_pages && $total_pages > 0 ) {
wp_redirect( add_query_arg( 'paged', $total_pages ) );
exit;
}
$title = __( 'Add Plugins' );
$parent_file = 'plugins.php';

View File

@@ -17,7 +17,7 @@ $pagenum = $wp_list_table->get_pagenum();
$action = $wp_list_table->current_action();
$plugin = isset($_REQUEST['plugin']) ? $_REQUEST['plugin'] : '';
$plugin = isset($_REQUEST['plugin']) ? wp_unslash( $_REQUEST['plugin'] ) : '';
$s = isset($_REQUEST['s']) ? urlencode($_REQUEST['s']) : '';
// Clean up request URI from temporary args for screen options/paging uri's to work as expected.
@@ -37,10 +37,10 @@ if ( $action ) {
check_admin_referer('activate-plugin_' . $plugin);
$result = activate_plugin($plugin, self_admin_url('plugins.php?error=true&plugin=' . $plugin), is_network_admin() );
$result = activate_plugin($plugin, self_admin_url('plugins.php?error=true&plugin=' . urlencode( $plugin ) ), is_network_admin() );
if ( is_wp_error( $result ) ) {
if ( 'unexpected_output' == $result->get_error_code() ) {
$redirect = self_admin_url('plugins.php?error=true&charsout=' . strlen($result->get_error_data()) . '&plugin=' . $plugin . "&plugin_status=$status&paged=$page&s=$s");
$redirect = self_admin_url('plugins.php?error=true&charsout=' . strlen($result->get_error_data()) . '&plugin=' . urlencode( $plugin ) . "&plugin_status=$status&paged=$page&s=$s");
wp_redirect(add_query_arg('_error_nonce', wp_create_nonce('plugin-activation-error_' . $plugin), $redirect));
exit;
} else {
@@ -67,7 +67,7 @@ if ( $action ) {
check_admin_referer('bulk-plugins');
$plugins = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array();
$plugins = isset( $_POST['checked'] ) ? (array) wp_unslash( $_POST['checked'] ) : array();
if ( is_network_admin() ) {
foreach ( $plugins as $i => $plugin ) {
@@ -107,9 +107,9 @@ if ( $action ) {
check_admin_referer( 'bulk-plugins' );
if ( isset( $_GET['plugins'] ) )
$plugins = explode( ',', $_GET['plugins'] );
$plugins = explode( ',', wp_unslash( $_GET['plugins'] ) );
elseif ( isset( $_POST['checked'] ) )
$plugins = (array) $_POST['checked'];
$plugins = (array) wp_unslash( $_POST['checked'] );
else
$plugins = array();
@@ -181,7 +181,7 @@ if ( $action ) {
check_admin_referer('bulk-plugins');
$plugins = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array();
$plugins = isset( $_POST['checked'] ) ? (array) wp_unslash( $_POST['checked'] ) : array();
// Do not deactivate plugins which are already deactivated.
if ( is_network_admin() ) {
$plugins = array_filter( $plugins, 'is_plugin_active_for_network' );
@@ -213,7 +213,7 @@ if ( $action ) {
check_admin_referer('bulk-plugins');
//$_POST = from the plugin form; $_GET = from the FTP details screen.
$plugins = isset( $_REQUEST['checked'] ) ? (array) $_REQUEST['checked'] : array();
$plugins = isset( $_REQUEST['checked'] ) ? (array) wp_unslash( $_REQUEST['checked'] ) : array();
if ( empty( $plugins ) ) {
wp_redirect( self_admin_url("plugins.php?plugin_status=$status&paged=$page&s=$s") );
exit;
@@ -225,6 +225,14 @@ if ( $action ) {
exit;
}
// Bail on all if any paths are invalid.
// validate_file() returns truthy for invalid files
$invalid_plugin_files = array_filter( $plugins, 'validate_file' );
if ( $invalid_plugin_files ) {
wp_redirect( self_admin_url("plugins.php?plugin_status=$status&paged=$page&s=$s") );
exit;
}
include(ABSPATH . 'wp-admin/update.php');
$parent_file = 'plugins.php';

View File

@@ -16,7 +16,9 @@ $submenu_file = 'edit.php';
wp_reset_vars( array( 'action' ) );
if ( isset( $_GET['post'] ) )
if ( isset( $_GET['post'] ) && isset( $_POST['post_ID'] ) && (int) $_GET['post'] !== (int) $_POST['post_ID'] )
wp_die( __( 'A post ID mismatch has been detected.' ), __( 'Sorry, you are not allowed to edit this item.' ), 400 );
elseif ( isset( $_GET['post'] ) )
$post_id = $post_ID = (int) $_GET['post'];
elseif ( isset( $_POST['post_ID'] ) )
$post_id = $post_ID = (int) $_POST['post_ID'];
@@ -82,6 +84,10 @@ function redirect_post($post_id = '') {
exit;
}
if ( isset( $_POST['post_type'] ) && $post && $post_type !== $_POST['post_type'] ) {
wp_die( __( 'A post type mismatch has been detected.' ), __( 'Sorry, you are not allowed to edit this item.' ), 400 );
}
if ( isset( $_POST['deletepost'] ) )
$action = 'delete';
elseif ( isset($_POST['wp-preview']) && 'dopreview' == $_POST['wp-preview'] )
@@ -113,8 +119,9 @@ case 'post-quickdraft-save':
if ( ! wp_verify_nonce( $nonce, 'add-post' ) )
$error_msg = __( 'Unable to submit this form, please refresh and try again.' );
if ( ! current_user_can( 'edit_posts' ) )
$error_msg = __( 'Oops, you don&#8217;t have access to add new drafts.' );
if ( ! current_user_can( 'edit_posts' ) ) {
exit;
}
if ( $error_msg )
return wp_dashboard_quick_press( $error_msg );
@@ -157,6 +164,7 @@ case 'edit':
wp_die( __( 'You can&#8217;t edit this item because it is in the Trash. Please restore it and try again.' ) );
if ( ! empty( $_GET['get-post-lock'] ) ) {
check_admin_referer( 'lock-post_' . $post_id );
wp_set_post_lock( $post_id );
wp_redirect( get_edit_post_link( $post_id, 'url' ) );
exit();
@@ -219,7 +227,7 @@ case 'editattachment':
// Update the thumbnail filename
$newmeta = wp_get_attachment_metadata( $post_id, true );
$newmeta['thumb'] = $_POST['thumb'];
$newmeta['thumb'] = wp_basename( $_POST['thumb'] );
wp_update_attachment_metadata( $post_id, $newmeta );

View File

@@ -32,8 +32,25 @@ function press_it() {
if ( !current_user_can('edit_post', $post_ID) )
wp_die(__('You are not allowed to edit this post.'));
$post['post_category'] = isset($_POST['post_category']) ? $_POST['post_category'] : '';
$post['tax_input'] = isset($_POST['tax_input']) ? $_POST['tax_input'] : '';
// Only accept categories if the user actually can assign
$category_tax = get_taxonomy( 'category' );
if ( current_user_can( $category_tax->cap->assign_terms ) ) {
$post['post_category'] = ( ! empty( $_POST['post_category'] ) ) ? $_POST['post_category'] : array();
}
// Only accept taxonomies if the user can actually assign
if ( ! empty( $_POST['tax_input'] ) ) {
$tax_input = $_POST['tax_input'];
foreach ( $tax_input as $tax => $_ti ) {
$tax_object = get_taxonomy( $tax );
if ( ! $tax_object || ! current_user_can( $tax_object->cap->assign_terms ) ) {
unset( $tax_input[ $tax ] );
}
}
$post['tax_input'] = $tax_input;
}
$post['post_title'] = isset($_POST['title']) ? $_POST['title'] : '';
$content = isset($_POST['content']) ? $_POST['content'] : '';
@@ -63,7 +80,7 @@ function press_it() {
// Error handling for media_sideload.
if ( is_wp_error($upload) ) {
wp_delete_post($post_ID);
wp_die($upload);
wp_die( esc_html( $upload->get_error_message() ) );
} else {
// Post formats.
if ( isset( $_POST['post_format'] ) ) {
@@ -523,75 +540,81 @@ $admin_body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace(
</div>
</div>
<?php $tax = get_taxonomy( 'category' ); ?>
<div id="categorydiv" class="postbox">
<div class="handlediv" title="<?php esc_attr_e( 'Click to toggle' ); ?>"><br /></div>
<h3 class="hndle"><?php _e('Categories') ?></h3>
<div class="inside">
<div id="taxonomy-category" class="categorydiv">
<?php
<ul id="category-tabs" class="category-tabs">
<li class="tabs"><a href="#category-all"><?php echo $tax->labels->all_items; ?></a></li>
<li class="hide-if-no-js"><a href="#category-pop"><?php _e( 'Most Used' ); ?></a></li>
</ul>
$tax = get_taxonomy( 'category' );
if ( current_user_can( $tax->cap->assign_terms ) ) :
?>
<div id="categorydiv" class="postbox">
<div class="handlediv" title="<?php esc_attr_e( 'Click to toggle' ); ?>"><br /></div>
<h3 class="hndle"><?php _e('Categories') ?></h3>
<div class="inside">
<div id="taxonomy-category" class="categorydiv">
<div id="category-pop" class="tabs-panel" style="display: none;">
<ul id="categorychecklist-pop" class="categorychecklist form-no-clear" >
<?php $popular_ids = wp_popular_terms_checklist( 'category' ); ?>
<ul id="category-tabs" class="category-tabs">
<li class="tabs"><a href="#category-all"><?php echo $tax->labels->all_items; ?></a></li>
<li class="hide-if-no-js"><a href="#category-pop"><?php _e( 'Most Used' ); ?></a></li>
</ul>
</div>
<div id="category-all" class="tabs-panel">
<ul id="categorychecklist" data-wp-lists="list:category" class="categorychecklist form-no-clear">
<?php wp_terms_checklist($post_ID, array( 'taxonomy' => 'category', 'popular_cats' => $popular_ids ) ) ?>
</ul>
</div>
<?php if ( !current_user_can($tax->cap->assign_terms) ) : ?>
<p><em><?php _e('You cannot modify this Taxonomy.'); ?></em></p>
<?php endif; ?>
<?php if ( current_user_can($tax->cap->edit_terms) ) : ?>
<div id="category-adder" class="wp-hidden-children">
<h4>
<a id="category-add-toggle" href="#category-add" class="hide-if-no-js">
<?php printf( __( '+ %s' ), $tax->labels->add_new_item ); ?>
</a>
</h4>
<p id="category-add" class="category-add wp-hidden-child">
<label class="screen-reader-text" for="newcategory"><?php echo $tax->labels->add_new_item; ?></label>
<input type="text" name="newcategory" id="newcategory" class="form-required form-input-tip" value="<?php echo esc_attr( $tax->labels->new_item_name ); ?>" aria-required="true"/>
<label class="screen-reader-text" for="newcategory_parent">
<?php echo $tax->labels->parent_item_colon; ?>
</label>
<?php wp_dropdown_categories( array( 'taxonomy' => 'category', 'hide_empty' => 0, 'name' => 'newcategory_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '&mdash; ' . $tax->labels->parent_item . ' &mdash;' ) ); ?>
<input type="button" id="category-add-submit" data-wp-lists="add:categorychecklist:category-add" class="button category-add-submit" value="<?php echo esc_attr( $tax->labels->add_new_item ); ?>" />
<?php wp_nonce_field( 'add-category', '_ajax_nonce-add-category', false ); ?>
<span id="category-ajax-response"></span>
</p>
<div id="category-pop" class="tabs-panel" style="display: none;">
<ul id="categorychecklist-pop" class="categorychecklist form-no-clear" >
<?php $popular_ids = wp_popular_terms_checklist( 'category' ); ?>
</ul>
</div>
<?php endif; ?>
</div>
</div>
</div>
<div id="tagsdiv-post_tag" class="postbox">
<div class="handlediv" title="<?php esc_attr_e( 'Click to toggle' ); ?>"><br /></div>
<h3><span><?php _e('Tags'); ?></span></h3>
<div class="inside">
<div class="tagsdiv" id="post_tag">
<div class="jaxtag">
<label class="screen-reader-text" for="newtag"><?php _e('Tags'); ?></label>
<input type="hidden" name="tax_input[post_tag]" class="the-tags" id="tax-input[post_tag]" value="" />
<div class="ajaxtag">
<input type="text" name="newtag[post_tag]" class="newtag form-input-tip" size="16" autocomplete="off" value="" />
<input type="button" class="button tagadd" value="<?php esc_attr_e('Add'); ?>" />
<div id="category-all" class="tabs-panel">
<ul id="categorychecklist" data-wp-lists="list:category" class="categorychecklist form-no-clear">
<?php wp_terms_checklist($post_ID, array( 'taxonomy' => 'category', 'popular_cats' => $popular_ids ) ) ?>
</ul>
</div>
<?php if ( current_user_can($tax->cap->edit_terms) ) : ?>
<div id="category-adder" class="wp-hidden-children">
<h4>
<a id="category-add-toggle" href="#category-add" class="hide-if-no-js">
<?php printf( __( '+ %s' ), $tax->labels->add_new_item ); ?>
</a>
</h4>
<p id="category-add" class="category-add wp-hidden-child">
<label class="screen-reader-text" for="newcategory"><?php echo $tax->labels->add_new_item; ?></label>
<input type="text" name="newcategory" id="newcategory" class="form-required form-input-tip" value="<?php echo esc_attr( $tax->labels->new_item_name ); ?>" aria-required="true"/>
<label class="screen-reader-text" for="newcategory_parent">
<?php echo $tax->labels->parent_item_colon; ?>
</label>
<?php wp_dropdown_categories( array( 'taxonomy' => 'category', 'hide_empty' => 0, 'name' => 'newcategory_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '&mdash; ' . $tax->labels->parent_item . ' &mdash;' ) ); ?>
<input type="button" id="category-add-submit" data-wp-lists="add:categorychecklist:category-add" class="button category-add-submit" value="<?php echo esc_attr( $tax->labels->add_new_item ); ?>" />
<?php wp_nonce_field( 'add-category', '_ajax_nonce-add-category', false ); ?>
<span id="category-ajax-response"></span>
</p>
</div>
</div>
<div class="tagchecklist"></div>
<?php endif; ?>
</div>
</div>
<p class="tagcloud-link"><a href="#titlediv" class="tagcloud-link" id="link-post_tag"><?php _e('Choose from the most used tags'); ?></a></p>
</div>
</div>
<?php endif;
$tax = get_taxonomy( 'post_tag' );
if ( current_user_can( $tax->cap->assign_terms ) ) :
?>
<div id="tagsdiv-post_tag" class="postbox">
<div class="handlediv" title="<?php esc_attr_e( 'Click to toggle' ); ?>"><br /></div>
<h3><span><?php _e('Tags'); ?></span></h3>
<div class="inside">
<div class="tagsdiv" id="post_tag">
<div class="jaxtag">
<label class="screen-reader-text" for="newtag"><?php _e('Tags'); ?></label>
<input type="hidden" name="tax_input[post_tag]" class="the-tags" id="tax-input[post_tag]" value="" />
<div class="ajaxtag">
<input type="text" name="newtag[post_tag]" class="newtag form-input-tip" size="16" autocomplete="off" value="" />
<input type="button" class="button tagadd" value="<?php esc_attr_e('Add'); ?>" />
</div>
</div>
<div class="tagchecklist"></div>
</div>
<p class="tagcloud-link"><a href="#titlediv" class="tagcloud-link" id="link-post_tag"><?php _e('Choose from the most used tags'); ?></a></p>
</div>
</div>
<?php endif; ?>
</div>
</div>
<div class="posting">

View File

@@ -63,7 +63,7 @@ default :
if ( ! $post = get_post( $revision->post_parent ) )
break;
if ( ! current_user_can( 'read_post', $revision->ID ) || ! current_user_can( 'read_post', $post->ID ) )
if ( ! current_user_can( 'read_post', $revision->ID ) || ! current_user_can( 'edit_post', $revision->post_parent ) )
break;
// Revisions disabled and we're not looking at an autosave

View File

@@ -68,7 +68,7 @@ if ( empty( $file ) ) {
$relative_file = 'style.css';
$file = $allowed_files['style.css'];
} else {
$relative_file = $file;
$relative_file = wp_unslash( $file );
$file = $theme->get_stylesheet_directory() . '/' . $relative_file;
}
@@ -125,10 +125,12 @@ default:
<div id="message" class="updated"><p><?php _e( 'File edited successfully.' ) ?></p></div>
<?php endif;
$description = get_file_description( $file );
$file_description = get_file_description( $relative_file );
$file_show = array_search( $file, array_filter( $allowed_files ) );
if ( $description != $file_show )
$description .= ' <span>(' . $file_show . ')</span>';
$description = esc_html( $file_description );
if ( $file_description != $file_show ) {
$description .= ' <span>(' . esc_html( $file_show ) . ')</span>';
}
?>
<div class="wrap">
<h2><?php echo esc_html( $title ); ?></h2>
@@ -177,9 +179,9 @@ if ( $allowed_files ) :
if ( 'style.css' == $filename )
echo "\t</ul>\n\t<h3>" . _x( 'Styles', 'Theme stylesheets in theme editor' ) . "</h3>\n\t<ul>\n";
$file_description = get_file_description( $absolute_filename );
$file_description = esc_html( get_file_description( $filename ) );
if ( $file_description != basename( $filename ) )
$file_description .= '<br /><span class="nonessential">(' . $filename . ')</span>';
$file_description .= '<br /><span class="nonessential">(' . esc_html( $filename ) . ')</span>';
if ( $absolute_filename == $file )
$file_description = '<span class="highlight">' . $file_description . '</span>';

View File

@@ -240,6 +240,8 @@ function list_plugin_updates() {
<tbody class="plugins">
<?php
foreach ( (array) $plugins as $plugin_file => $plugin_data) {
$plugin_data = (object) _get_plugin_data_markup_translate( $plugin_file, (array) $plugin_data, false, true );
$info = plugins_api('plugin_information', array('slug' => $plugin_data->update->slug ));
// Get plugin compat for running version of WordPress.
if ( isset($info->tested) && version_compare($info->tested, $cur_wp_version, '>=') ) {

View File

@@ -57,7 +57,7 @@ if ( 'grid' === $mode ) {
require_once( ABSPATH . 'wp-admin/admin-header.php' );
?>
<div class="wrap">
<div class="wrap" id="wp-media-grid">
<h2>
<?php
echo esc_html( $title );

View File

@@ -98,7 +98,7 @@ if ( is_multisite()
// Execute confirmed email change. See send_confirmation_on_profile_email().
if ( is_multisite() && IS_PROFILE_PAGE && isset( $_GET[ 'newuseremail' ] ) && $current_user->ID ) {
$new_email = get_option( $current_user->ID . '_new_email' );
if ( $new_email[ 'hash' ] == $_GET[ 'newuseremail' ] ) {
if ( $new_email && hash_equals( $new_email[ 'hash' ], $_GET[ 'newuseremail' ] ) ) {
$user = new stdClass;
$user->ID = $current_user->ID;
$user->user_email = esc_html( trim( $new_email[ 'newemail' ] ) );
@@ -109,7 +109,8 @@ if ( is_multisite() && IS_PROFILE_PAGE && isset( $_GET[ 'newuseremail' ] ) && $c
wp_redirect( add_query_arg( array('updated' => 'true'), self_admin_url( 'profile.php' ) ) );
die();
}
} elseif ( is_multisite() && IS_PROFILE_PAGE && !empty( $_GET['dismiss'] ) && $current_user->ID . '_new_email' == $_GET['dismiss'] ) {
} elseif ( is_multisite() && IS_PROFILE_PAGE && !empty( $_GET['dismiss'] ) && $current_user->ID . '_new_email' === $_GET['dismiss'] ) {
check_admin_referer( 'dismiss-' . $current_user->ID . '_new_email' );
delete_option( $current_user->ID . '_new_email' );
wp_redirect( add_query_arg( array('updated' => 'true'), self_admin_url( 'profile.php' ) ) );
die();
@@ -201,7 +202,7 @@ include(ABSPATH . 'wp-admin/admin-header.php');
<p><strong><?php _e('User updated.') ?></strong></p>
<?php endif; ?>
<?php if ( $wp_http_referer && !IS_PROFILE_PAGE ) : ?>
<p><a href="<?php echo esc_url( $wp_http_referer ); ?>"><?php _e('&larr; Back to Users'); ?></a></p>
<p><a href="<?php echo esc_url( wp_validate_redirect( esc_url_raw( $wp_http_referer ), self_admin_url( 'users.php' ) ) ); ?>"><?php _e('&larr; Back to Users'); ?></a></p>
<?php endif; ?>
</div>
<?php endif; ?>
@@ -406,7 +407,7 @@ if ( is_multisite() && is_network_admin() && ! IS_PROFILE_PAGE && current_user_c
$new_email = get_option( $current_user->ID . '_new_email' );
if ( $new_email && $new_email['newemail'] != $current_user->user_email && $profileuser->ID == $current_user->ID ) : ?>
<div class="updated inline">
<p><?php printf( __('There is a pending change of your e-mail to <code>%1$s</code>. <a href="%2$s">Cancel</a>'), $new_email['newemail'], esc_url( self_admin_url( 'profile.php?dismiss=' . $current_user->ID . '_new_email' ) ) ); ?></p>
<p><?php printf( __('There is a pending change of your e-mail to <code>%1$s</code>. <a href="%2$s">Cancel</a>'), esc_html( $new_email['newemail'] ), esc_url( wp_nonce_url( self_admin_url( 'profile.php?dismiss=' . $current_user->ID . '_new_email' ), 'dismiss-' . $current_user->ID . '_new_email' ) ) ); ?></p>
</div>
<?php endif; ?>
</td>

View File

@@ -72,7 +72,7 @@ if ( isset($_REQUEST['action']) && 'adduser' == $_REQUEST['action'] ) {
add_existing_user_to_blog( array( 'user_id' => $user_id, 'role' => $_REQUEST[ 'role' ] ) );
$redirect = add_query_arg( array('update' => 'addnoconfirmation'), 'user-new.php' );
} else {
$newuser_key = substr( md5( $user_id ), 0, 5 );
$newuser_key = wp_generate_password( 20, false );
add_option( 'new_user_' . $newuser_key, array( 'user_id' => $user_id, 'email' => $user_details->user_email, 'role' => $_REQUEST[ 'role' ] ) );
$roles = get_editable_roles();

View File

@@ -17,6 +17,8 @@ if ( ! current_user_can('edit_theme_options') )
$widgets_access = get_user_setting( 'widgets_access' );
if ( isset($_GET['widgets-access']) ) {
check_admin_referer( 'widgets-access' );
$widgets_access = 'on' == $_GET['widgets-access'] ? 'on' : 'off';
set_user_setting( 'widgets_access', $widgets_access );
}

View File

@@ -108,6 +108,8 @@ if ( $user->exists() ) {
) {
kses_remove_filters(); // start with a clean slate
kses_init_filters(); // set up the filters
remove_filter( 'pre_comment_content', 'wp_filter_post_kses' );
add_filter( 'pre_comment_content', 'wp_filter_kses' );
}
}
} else {

View File

@@ -360,10 +360,6 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
else
unset($redirect['port']);
if ( ! empty( $user_home['scheme'] ) && $user_home['scheme'] === 'https' ) {
$redirect['scheme'] = 'https';
}
// trailing /index.php
$redirect['path'] = preg_replace('|/' . preg_quote( $wp_rewrite->index, '|' ) . '/*?$|', '/', $redirect['path']);
@@ -421,7 +417,7 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
( strtolower($original['host']) != 'www.' . strtolower($redirect['host']) && 'www.' . strtolower($original['host']) != strtolower($redirect['host']) ) )
$redirect['host'] = $original['host'];
$compare_original = array( $original['scheme'], $original['host'], $original['path'] );
$compare_original = array( $original['host'], $original['path'] );
if ( !empty( $original['port'] ) )
$compare_original[] = $original['port'];
@@ -429,7 +425,7 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
if ( !empty( $original['query'] ) )
$compare_original[] = $original['query'];
$compare_redirect = array( $redirect['scheme'], $redirect['host'], $redirect['path'] );
$compare_redirect = array( $redirect['host'], $redirect['path'] );
if ( !empty( $redirect['port'] ) )
$compare_redirect[] = $redirect['port'];

View File

@@ -1114,8 +1114,10 @@ function map_meta_cap( $cap, $user_id ) {
case 'edit_post':
case 'edit_page':
$post = get_post( $args[0] );
if ( empty( $post ) )
if ( empty( $post ) ) {
$caps[] = 'do_not_allow';
break;
}
if ( 'revision' == $post->post_type ) {
$post = get_post( $post->post_parent );
@@ -1229,7 +1231,16 @@ function map_meta_cap( $cap, $user_id ) {
if ( empty( $comment ) )
break;
$post = get_post( $comment->comment_post_ID );
$caps = map_meta_cap( 'edit_post', $user_id, $post->ID );
/*
* If the post doesn't exist, we have an orphaned comment.
* Fall back to the edit_posts capability, instead.
*/
if ( $post ) {
$caps = map_meta_cap( 'edit_post', $user_id, $post->ID );
} else {
$caps = map_meta_cap( 'edit_posts', $user_id );
}
break;
case 'unfiltered_upload':
if ( defined('ALLOW_UNFILTERED_UPLOADS') && ALLOW_UNFILTERED_UPLOADS && ( !is_multisite() || is_super_admin( $user_id ) ) )
@@ -1371,21 +1382,25 @@ function current_user_can( $capability ) {
* @return bool
*/
function current_user_can_for_blog( $blog_id, $capability ) {
if ( is_multisite() )
switch_to_blog( $blog_id );
$switched = is_multisite() ? switch_to_blog( $blog_id ) : false;
$current_user = wp_get_current_user();
if ( empty( $current_user ) )
if ( empty( $current_user ) ) {
if ( $switched ) {
restore_current_blog();
}
return false;
}
$args = array_slice( func_get_args(), 2 );
$args = array_merge( array( $capability ), $args );
$can = call_user_func_array( array( $current_user, 'has_cap' ), $args );
if ( is_multisite() )
if ( $switched ) {
restore_current_blog();
}
return $can;
}

View File

@@ -214,6 +214,10 @@ class PasswordHash {
function HashPassword($password)
{
if ( strlen( $password ) > 4096 ) {
return '*';
}
$random = '';
if (CRYPT_BLOWFISH == 1 && !$this->portable_hashes) {
@@ -249,6 +253,10 @@ class PasswordHash {
function CheckPassword($password, $stored_hash)
{
if ( strlen( $password ) > 4096 ) {
return false;
}
$hash = $this->crypt_private($password, $stored_hash);
if ($hash[0] == '*')
$hash = crypt($password, $stored_hash);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -999,20 +999,23 @@ class Snoopy
if(!empty($this->user) || !empty($this->pass))
$headers[] = "Authorization: BASIC ".base64_encode($this->user.":".$this->pass);
for($curr_header = 0; $curr_header < count($headers); $curr_header++) {
$safer_header = strtr( $headers[$curr_header], "\"", " " );
$cmdline_params .= " -H \"".$safer_header."\"";
$headerfile = tempnam( $this->temp_dir, "sno" );
$cmdline_params = '-k -D ' . escapeshellarg( $headerfile );
foreach ( $headers as $header ) {
$cmdline_params .= ' -H ' . escapeshellarg( $header );
}
if(!empty($body))
$cmdline_params .= " -d \"$body\"";
if ( ! empty( $body ) ) {
$cmdline_params .= ' -d ' . escapeshellarg( $body );
}
if($this->read_timeout > 0)
$cmdline_params .= " -m ".$this->read_timeout;
if ( $this->read_timeout > 0 ) {
$cmdline_params .= ' -m ' . escapeshellarg( $this->read_timeout );
}
$headerfile = tempnam($this->temp_dir, "sno");
exec($this->curl_path." -k -D \"$headerfile\"".$cmdline_params." \"".escapeshellcmd($URI)."\"",$results,$return);
exec( $this->curl_path . ' ' . $cmdline_params . ' ' . escapeshellarg( $URI ), $results, $return );
if($return)
{

View File

@@ -166,6 +166,24 @@ final class WP_Customize_Manager {
$this->theme = wp_get_theme( isset( $_REQUEST['theme'] ) ? $_REQUEST['theme'] : null );
/*
* Clear incoming post data if the user lacks a CSRF token (nonce). Note that the customizer
* application will inject the customize_preview_nonce query parameter into all Ajax requests.
* For similar behavior elsewhere in WordPress, see rest_cookie_check_errors() which logs out
* a user when a valid nonce isn't present.
*/
$has_post_data_nonce = (
check_ajax_referer( 'preview-customize_' . $this->get_stylesheet(), 'nonce', false )
||
check_ajax_referer( 'save-customize_' . $this->get_stylesheet(), 'nonce', false )
||
check_ajax_referer( 'preview-customize_' . $this->get_stylesheet(), 'customize_preview_nonce', false )
);
if ( ! $has_post_data_nonce ) {
unset( $_POST['customized'] );
unset( $_REQUEST['customized'] );
}
if ( $this->is_theme_active() ) {
// Once the theme is loaded, we'll validate it.
add_action( 'after_setup_theme', array( $this, 'after_setup_theme' ) );

View File

@@ -1195,7 +1195,7 @@ final class WP_Customize_Widgets {
return null;
}
if ( $this->get_instance_hash_key( $decoded ) !== $value['instance_hash_key'] ) {
if ( ! hash_equals( $this->get_instance_hash_key( $decoded ), $value['instance_hash_key'] ) ) {
return null;
}

View File

@@ -116,12 +116,6 @@ final class _WP_Editors {
// A cookie (set when a user resizes the editor) overrides the height.
$cookie = (int) get_user_setting( 'ed_size' );
// Upgrade an old TinyMCE cookie if it is still around, and the new one isn't.
if ( ! $cookie && isset( $_COOKIE['TinyMCE_content_size'] ) ) {
parse_str( $_COOKIE['TinyMCE_content_size'], $cookie );
$cookie = $cookie['ch'];
}
if ( $cookie )
$set['editor_height'] = $cookie;
}

View File

@@ -60,7 +60,7 @@ class WP_Embed {
add_shortcode( 'embed', array( $this, 'shortcode' ) );
// Do the shortcode (only the [embed] one is registered)
$content = do_shortcode( $content );
$content = do_shortcode( $content, true );
// Put the original shortcodes back
$shortcode_tags = $orig_shortcode_tags;
@@ -326,7 +326,14 @@ class WP_Embed {
* @return string Potentially modified $content.
*/
public function autoembed( $content ) {
return preg_replace_callback( '|^\s*(https?://[^\s"]+)\s*$|im', array( $this, 'autoembed_callback' ), $content );
// Replace line breaks from all HTML elements with placeholders.
$content = wp_replace_in_html_tags( $content, array( "\n" => '<!-- wp-line-break -->' ) );
// Find URLs that are on their own line.
$content = preg_replace_callback( '|^\s*(https?://[^\s"]+)\s*$|im', array( $this, 'autoembed_callback' ), $content );
// Put the line breaks back.
return str_replace( '<!-- wp-line-break -->', "\n", $content );
}
/**

View File

@@ -216,7 +216,7 @@ final class WP_Theme implements ArrayAccess {
} elseif ( ! file_exists( $this->theme_root . '/' . $theme_file ) ) {
$this->headers['Name'] = $this->stylesheet;
if ( ! file_exists( $this->theme_root . '/' . $this->stylesheet ) )
$this->errors = new WP_Error( 'theme_not_found', sprintf( __( 'The theme directory "%s" does not exist.' ), $this->stylesheet ) );
$this->errors = new WP_Error( 'theme_not_found', sprintf( __( 'The theme directory "%s" does not exist.' ), esc_html( $this->stylesheet ) ) );
else
$this->errors = new WP_Error( 'theme_no_stylesheet', __( 'Stylesheet is missing.' ) );
$this->template = $this->stylesheet;
@@ -263,7 +263,7 @@ final class WP_Theme implements ArrayAccess {
$theme_root_template = $directories[ $this->template ]['theme_root'];
} else {
// Parent theme is missing.
$this->errors = new WP_Error( 'theme_no_parent', sprintf( __( 'The parent theme is missing. Please install the "%s" parent theme.' ), $this->template ) );
$this->errors = new WP_Error( 'theme_no_parent', sprintf( __( 'The parent theme is missing. Please install the "%s" parent theme.' ), esc_html( $this->template ) ) );
$this->cache_add( 'theme', array( 'headers' => $this->headers, 'errors' => $this->errors, 'stylesheet' => $this->stylesheet, 'template' => $this->template ) );
$this->parent = new WP_Theme( $this->template, $this->theme_root, $this );
return;
@@ -275,11 +275,11 @@ final class WP_Theme implements ArrayAccess {
// If we are a parent, then there is a problem. Only two generations allowed! Cancel things out.
if ( is_a( $_child, 'WP_Theme' ) && $_child->template == $this->stylesheet ) {
$_child->parent = null;
$_child->errors = new WP_Error( 'theme_parent_invalid', sprintf( __( 'The "%s" theme is not a valid parent theme.' ), $_child->template ) );
$_child->errors = new WP_Error( 'theme_parent_invalid', sprintf( __( 'The "%s" theme is not a valid parent theme.' ), esc_html( $_child->template ) ) );
$_child->cache_add( 'theme', array( 'headers' => $_child->headers, 'errors' => $_child->errors, 'stylesheet' => $_child->stylesheet, 'template' => $_child->template ) );
// The two themes actually reference each other with the Template header.
if ( $_child->stylesheet == $this->template ) {
$this->errors = new WP_Error( 'theme_parent_invalid', sprintf( __( 'The "%s" theme is not a valid parent theme.' ), $this->template ) );
$this->errors = new WP_Error( 'theme_parent_invalid', sprintf( __( 'The "%s" theme is not a valid parent theme.' ), esc_html( $this->template ) ) );
$this->cache_add( 'theme', array( 'headers' => $this->headers, 'errors' => $this->errors, 'stylesheet' => $this->stylesheet, 'template' => $this->template ) );
}
return;
@@ -654,8 +654,9 @@ final class WP_Theme implements ArrayAccess {
private function markup_header( $header, $value, $translate ) {
switch ( $header ) {
case 'Name' :
if ( empty( $value ) )
$value = $this->get_stylesheet();
if ( empty( $value ) ) {
$value = esc_html( $this->get_stylesheet() );
}
break;
case 'Description' :
$value = wptexturize( $value );

View File

@@ -320,6 +320,11 @@ class wp_xmlrpc_server extends IXR_Server {
if ( isset($meta['id']) ) {
$meta['id'] = (int) $meta['id'];
$pmeta = get_metadata_by_mid( 'post', $meta['id'] );
if ( ! $pmeta || $pmeta->post_id != $post_id ) {
continue;
}
if ( isset($meta['key']) ) {
$meta['key'] = wp_unslash( $meta['key'] );
if ( $meta['key'] !== $pmeta->meta_key )
@@ -1138,6 +1143,56 @@ class wp_xmlrpc_server extends IXR_Server {
return $count > 1;
}
private function _validate_boolean( $var ) {
if ( is_bool( $var ) ) {
return $var;
}
if ( is_string( $var ) && 'false' === strtolower( $var ) ) {
return false;
}
return (bool) $var;
}
/**
* Encapsulate the logic for sticking a post
* and determining if the user has permission to do so
*
* @since 4.3.0
* @access private
*
* @param array $post_data
* @param bool $update
* @return void|IXR_Error
*/
private function _toggle_sticky( $post_data, $update = false ) {
$post_type = get_post_type_object( $post_data['post_type'] );
// Private and password-protected posts cannot be stickied.
if ( 'private' === $post_data['post_status'] || ! empty( $post_data['post_password'] ) ) {
// Error if the client tried to stick the post, otherwise, silently unstick.
if ( ! empty( $post_data['sticky'] ) ) {
return new IXR_Error( 401, __( 'Sorry, you cannot stick a private post.' ) );
}
if ( $update ) {
unstick_post( $post_data['ID'] );
}
} elseif ( isset( $post_data['sticky'] ) ) {
if ( ! current_user_can( $post_type->cap->edit_others_posts ) ) {
return new IXR_Error( 401, __( 'Sorry, you are not allowed to stick this post.' ) );
}
$sticky = $this->_validate_boolean( $post_data['sticky'] );
if ( $sticky ) {
stick_post( $post_data['ID'] );
} else {
unstick_post( $post_data['ID'] );
}
}
}
/**
* Helper method for wp_newPost and wp_editPost, containing shared logic.
*
@@ -1148,10 +1203,31 @@ class wp_xmlrpc_server extends IXR_Server {
* @param array $content_struct Post data to insert.
*/
protected function _insert_post( $user, $content_struct ) {
$defaults = array( 'post_status' => 'draft', 'post_type' => 'post', 'post_author' => 0,
'post_password' => '', 'post_excerpt' => '', 'post_content' => '', 'post_title' => '' );
$defaults = array(
'post_status' => 'draft',
'post_type' => 'post',
'post_author' => null,
'post_password' => null,
'post_excerpt' => null,
'post_content' => null,
'post_title' => null,
'post_date' => null,
'post_date_gmt' => null,
'post_format' => null,
'post_name' => null,
'post_thumbnail' => null,
'post_parent' => null,
'ping_status' => null,
'comment_status' => null,
'custom_fields' => null,
'terms_names' => null,
'terms' => null,
'sticky' => null,
'enclosure' => null,
'ID' => null,
);
$post_data = wp_parse_args( $content_struct, $defaults );
$post_data = wp_parse_args( array_intersect_key( $content_struct, $defaults ), $defaults );
$post_type = get_post_type_object( $post_data['post_type'] );
if ( ! $post_type )
@@ -1230,20 +1306,9 @@ class wp_xmlrpc_server extends IXR_Server {
$post_ID = $post_data['ID'];
if ( $post_data['post_type'] == 'post' ) {
// Private and password-protected posts cannot be stickied.
if ( $post_data['post_status'] == 'private' || ! empty( $post_data['post_password'] ) ) {
// Error if the client tried to stick the post, otherwise, silently unstick.
if ( ! empty( $post_data['sticky'] ) )
return new IXR_Error( 401, __( 'Sorry, you cannot stick a private post.' ) );
if ( $update )
unstick_post( $post_ID );
} elseif ( isset( $post_data['sticky'] ) ) {
if ( ! current_user_can( $post_type->cap->edit_others_posts ) )
return new IXR_Error( 401, __( 'Sorry, you are not allowed to stick this post.' ) );
if ( $post_data['sticky'] )
stick_post( $post_ID );
else
unstick_post( $post_ID );
$error = $this->_toggle_sticky( $post_data, $update );
if ( $error ) {
return $error;
}
}
@@ -1343,9 +1408,6 @@ class wp_xmlrpc_server extends IXR_Server {
$post_data['tax_input'] = $terms;
unset( $post_data['terms'], $post_data['terms_names'] );
} else {
// do not allow direct submission of 'tax_input', clients must use 'terms' and/or 'terms_names'
unset( $post_data['tax_input'], $post_data['post_category'], $post_data['tags_input'] );
}
if ( isset( $post_data['post_format'] ) ) {
@@ -4617,10 +4679,12 @@ class wp_xmlrpc_server extends IXR_Server {
// Only posts can be sticky
if ( $post_type == 'post' && isset( $content_struct['sticky'] ) ) {
if ( $content_struct['sticky'] == true )
stick_post( $post_ID );
elseif ( $content_struct['sticky'] == false )
unstick_post( $post_ID );
$data = $postdata;
$data['sticky'] = $content_struct['sticky'];
$error = $this->_toggle_sticky( $data );
if ( $error ) {
return $error;
}
}
if ( isset($content_struct['custom_fields']) )
@@ -4902,11 +4966,12 @@ class wp_xmlrpc_server extends IXR_Server {
$tags_input = isset( $content_struct['mt_keywords'] ) ? $content_struct['mt_keywords'] : null;
if ( ('publish' == $post_status) ) {
if ( ( 'page' == $post_type ) && !current_user_can('publish_pages') )
return new IXR_Error(401, __('Sorry, you do not have the right to publish this page.'));
else if ( !current_user_can('publish_posts') )
return new IXR_Error(401, __('Sorry, you do not have the right to publish this post.'));
if ( 'publish' == $post_status || 'private' == $post_status ) {
if ( 'page' == $post_type && ! current_user_can( 'publish_pages' ) ) {
return new IXR_Error( 401, __( 'Sorry, you do not have the right to publish this page.' ) );
} elseif ( ! current_user_can( 'publish_posts' ) ) {
return new IXR_Error( 401, __( 'Sorry, you do not have the right to publish this post.' ) );
}
}
if ( $post_more )
@@ -4946,10 +5011,13 @@ class wp_xmlrpc_server extends IXR_Server {
// Only posts can be sticky
if ( $post_type == 'post' && isset( $content_struct['sticky'] ) ) {
if ( $content_struct['sticky'] == true )
stick_post( $post_ID );
elseif ( $content_struct['sticky'] == false )
unstick_post( $post_ID );
$data = $newpost;
$data['sticky'] = $content_struct['sticky'];
$data['post_type'] = 'post';
$error = $this->_toggle_sticky( $data, true );
if ( $error ) {
return $error;
}
}
if ( isset($content_struct['custom_fields']) )

View File

@@ -15,7 +15,7 @@ class WP {
* @access public
* @var array
*/
public $public_query_vars = array('m', 'p', 'posts', 'w', 'cat', 'withcomments', 'withoutcomments', 's', 'search', 'exact', 'sentence', 'calendar', 'page', 'paged', 'more', 'tb', 'pb', 'author', 'order', 'orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'tag', 'feed', 'author_name', 'static', 'pagename', 'page_id', 'error', 'comments_popup', 'attachment', 'attachment_id', 'subpost', 'subpost_id', 'preview', 'robots', 'taxonomy', 'term', 'cpage', 'post_type');
public $public_query_vars = array( 'm', 'p', 'posts', 'w', 'cat', 'withcomments', 'withoutcomments', 's', 'search', 'exact', 'sentence', 'calendar', 'page', 'paged', 'more', 'tb', 'pb', 'author', 'order', 'orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'tag', 'feed', 'author_name', 'pagename', 'page_id', 'error', 'comments_popup', 'attachment', 'attachment_id', 'subpost', 'subpost_id', 'preview', 'robots', 'taxonomy', 'term', 'cpage', 'post_type', 'embed' );
/**
* Private query variables.
@@ -265,6 +265,8 @@ class WP {
foreach ( $this->public_query_vars as $wpvar ) {
if ( isset( $this->extra_query_vars[$wpvar] ) )
$this->query_vars[$wpvar] = $this->extra_query_vars[$wpvar];
elseif ( isset( $_GET[ $wpvar ] ) && isset( $_POST[ $wpvar ] ) && $_GET[ $wpvar ] !== $_POST[ $wpvar ] )
wp_die( __( 'A variable mismatch has been detected.' ), __( 'Sorry, you are not allowed to view this item.' ), 400 );
elseif ( isset( $_POST[$wpvar] ) )
$this->query_vars[$wpvar] = $_POST[$wpvar];
elseif ( isset( $_GET[$wpvar] ) )

View File

@@ -13,23 +13,141 @@ if ( !function_exists('_') ) {
}
}
if ( !function_exists('mb_substr') ):
function mb_substr( $str, $start, $length=null, $encoding=null ) {
return _mb_substr($str, $start, $length, $encoding);
/**
* Returns whether PCRE/u (PCRE_UTF8 modifier) is available for use.
*
* @ignore
* @since 4.2.2
* @access private
*
* @param bool $set - Used for testing only
* null : default - get PCRE/u capability
* false : Used for testing - return false for future calls to this function
* 'reset': Used for testing - restore default behavior of this function
*/
function _wp_can_use_pcre_u( $set = null ) {
static $utf8_pcre = 'reset';
if ( null !== $set ) {
$utf8_pcre = $set;
}
if ( 'reset' === $utf8_pcre ) {
$utf8_pcre = @preg_match( '/^./u', 'a' );
}
return $utf8_pcre;
}
if ( ! function_exists( 'mb_substr' ) ) :
function mb_substr( $str, $start, $length = null, $encoding = null ) {
return _mb_substr( $str, $start, $length, $encoding );
}
endif;
function _mb_substr( $str, $start, $length=null, $encoding=null ) {
// the solution below, works only for utf-8, so in case of a different
// charset, just use built-in substr
$charset = get_option( 'blog_charset' );
if ( !in_array( $charset, array('utf8', 'utf-8', 'UTF8', 'UTF-8') ) ) {
return is_null( $length )? substr( $str, $start ) : substr( $str, $start, $length);
/*
* Only understands UTF-8 and 8bit. All other character sets will be treated as 8bit.
* For $encoding === UTF-8, the $str input is expected to be a valid UTF-8 byte sequence.
* The behavior of this function for invalid inputs is undefined.
*/
function _mb_substr( $str, $start, $length = null, $encoding = null ) {
if ( null === $encoding ) {
$encoding = get_option( 'blog_charset' );
}
// use the regex unicode support to separate the UTF-8 characters into an array
preg_match_all( '/./us', $str, $match );
$chars = is_null( $length )? array_slice( $match[0], $start ) : array_slice( $match[0], $start, $length );
return implode( '', $chars );
// The solution below works only for UTF-8,
// so in case of a different charset just use built-in substr()
if ( ! in_array( $encoding, array( 'utf8', 'utf-8', 'UTF8', 'UTF-8' ) ) ) {
return is_null( $length ) ? substr( $str, $start ) : substr( $str, $start, $length );
}
if ( _wp_can_use_pcre_u() ) {
// Use the regex unicode support to separate the UTF-8 characters into an array
preg_match_all( '/./us', $str, $match );
$chars = is_null( $length ) ? array_slice( $match[0], $start ) : array_slice( $match[0], $start, $length );
return implode( '', $chars );
}
$regex = '/(
[\x00-\x7F] # single-byte sequences 0xxxxxxx
| [\xC2-\xDF][\x80-\xBF] # double-byte sequences 110xxxxx 10xxxxxx
| \xE0[\xA0-\xBF][\x80-\xBF] # triple-byte sequences 1110xxxx 10xxxxxx * 2
| [\xE1-\xEC][\x80-\xBF]{2}
| \xED[\x80-\x9F][\x80-\xBF]
| [\xEE-\xEF][\x80-\xBF]{2}
| \xF0[\x90-\xBF][\x80-\xBF]{2} # four-byte sequences 11110xxx 10xxxxxx * 3
| [\xF1-\xF3][\x80-\xBF]{3}
| \xF4[\x80-\x8F][\x80-\xBF]{2}
)/x';
$chars = array( '' ); // Start with 1 element instead of 0 since the first thing we do is pop
do {
// We had some string left over from the last round, but we counted it in that last round.
array_pop( $chars );
// Split by UTF-8 character, limit to 1000 characters (last array element will contain the rest of the string)
$pieces = preg_split( $regex, $str, 1000, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY );
$chars = array_merge( $chars, $pieces );
} while ( count( $pieces ) > 1 && $str = array_pop( $pieces ) ); // If there's anything left over, repeat the loop.
return join( '', array_slice( $chars, $start, $length ) );
}
if ( ! function_exists( 'mb_strlen' ) ) :
function mb_strlen( $str, $encoding = null ) {
return _mb_strlen( $str, $encoding );
}
endif;
/*
* Only understands UTF-8 and 8bit. All other character sets will be treated as 8bit.
* For $encoding === UTF-8, the $str input is expected to be a valid UTF-8 byte sequence.
* The behavior of this function for invalid inputs is undefined.
*/
function _mb_strlen( $str, $encoding = null ) {
if ( null === $encoding ) {
$encoding = get_option( 'blog_charset' );
}
// The solution below works only for UTF-8,
// so in case of a different charset just use built-in strlen()
if ( ! in_array( $encoding, array( 'utf8', 'utf-8', 'UTF8', 'UTF-8' ) ) ) {
return strlen( $str );
}
if ( _wp_can_use_pcre_u() ) {
// Use the regex unicode support to separate the UTF-8 characters into an array
preg_match_all( '/./us', $str, $match );
return count( $match[0] );
}
$regex = '/(?:
[\x00-\x7F] # single-byte sequences 0xxxxxxx
| [\xC2-\xDF][\x80-\xBF] # double-byte sequences 110xxxxx 10xxxxxx
| \xE0[\xA0-\xBF][\x80-\xBF] # triple-byte sequences 1110xxxx 10xxxxxx * 2
| [\xE1-\xEC][\x80-\xBF]{2}
| \xED[\x80-\x9F][\x80-\xBF]
| [\xEE-\xEF][\x80-\xBF]{2}
| \xF0[\x90-\xBF][\x80-\xBF]{2} # four-byte sequences 11110xxx 10xxxxxx * 3
| [\xF1-\xF3][\x80-\xBF]{3}
| \xF4[\x80-\x8F][\x80-\xBF]{2}
)/x';
$count = 1; // Start at 1 instead of 0 since the first thing we do is decrement
do {
// We had some string left over from the last round, but we counted it in that last round.
$count--;
// Split by UTF-8 character, limit to 1000 characters (last array element will contain the rest of the string)
$pieces = preg_split( $regex, $str, 1000 );
// Increment
$count += count( $pieces );
} while ( $str = array_pop( $pieces ) ); // If there's anything left over, repeat the loop.
// Fencepost: preg_split() always returns one extra item in the array
return --$count;
}
if ( !function_exists('hash_hmac') ):

View File

@@ -7,6 +7,14 @@
box-sizing: content-box;
}
.media-frame input,
.media-frame select,
.media-frame textarea {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.media-modal,
.media-frame {
font-family: "Open Sans", sans-serif;
@@ -56,9 +64,6 @@
.media-frame select {
font-family: "Open Sans", sans-serif;
font-size: 12px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
border-width: 1px;
border-style: solid;
border-color: #dfdfdf;

File diff suppressed because one or more lines are too long

View File

@@ -7,6 +7,14 @@
box-sizing: content-box;
}
.media-frame input,
.media-frame select,
.media-frame textarea {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.media-modal,
.media-frame {
font-family: "Open Sans", sans-serif;
@@ -56,9 +64,6 @@
.media-frame select {
font-family: "Open Sans", sans-serif;
font-size: 12px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
border-width: 1px;
border-style: solid;
border-color: #dfdfdf;

File diff suppressed because one or more lines are too long

View File

@@ -1354,7 +1354,7 @@ class WP_Widget_Tag_Cloud extends WP_Widget {
?>
<p>
<label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:') ?></label>
<input type="text" class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" value="<?php echo $title; ?>" />
<input type="text" class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" value="<?php echo esc_attr( $title ); ?>" />
</p>
<p>
<label for="<?php echo $this->get_field_id('nav_menu'); ?>"><?php _e('Select Menu:'); ?></label>

View File

@@ -476,7 +476,7 @@ function rss_enclosure() {
*
* @param string $html_link_tag The HTML link tag with a URI and other attributes.
*/
echo apply_filters( 'rss_enclosure', '<enclosure url="' . trim( htmlspecialchars( $enclosure[0] ) ) . '" length="' . trim( $enclosure[1] ) . '" type="' . $type . '" />' . "\n" );
echo apply_filters( 'rss_enclosure', '<enclosure url="' . esc_url( trim( $enclosure[0] ) ) . '" length="' . absint( trim( $enclosure[1] ) ) . '" type="' . esc_attr( $type ) . '" />' . "\n" );
}
}
}
@@ -511,7 +511,7 @@ function atom_enclosure() {
*
* @param string $html_link_tag The HTML link tag with a URI and other attributes.
*/
echo apply_filters( 'atom_enclosure', '<link href="' . trim( htmlspecialchars( $enclosure[0] ) ) . '" rel="enclosure" length="' . trim( $enclosure[1] ) . '" type="' . trim( $enclosure[2] ) . '" />' . "\n" );
echo apply_filters( 'atom_enclosure', '<link href="' . esc_url( trim( $enclosure[0] ) ) . '" rel="enclosure" length="' . absint( trim( $enclosure[1] ) ) . '" type="' . esc_attr( trim( $enclosure[2] ) ) . '" />' . "\n" );
}
}
}

View File

@@ -28,7 +28,7 @@
* @return string The string replaced with html entities
*/
function wptexturize($text, $reset = false) {
global $wp_cockneyreplace;
global $wp_cockneyreplace, $shortcode_tags;
static $static_characters, $static_replacements, $dynamic_characters, $dynamic_replacements,
$default_no_texturize_tags, $default_no_texturize_shortcodes, $run_texturize = true;
@@ -205,21 +205,34 @@ function wptexturize($text, $reset = false) {
// Look for shortcodes and HTML elements.
$tagnames = array_keys( $shortcode_tags );
$tagregexp = join( '|', array_map( 'preg_quote', $tagnames ) );
$tagregexp = "(?:$tagregexp)(?![\\w-])"; // Excerpt of get_shortcode_regex().
$comment_regex =
'!' // Start of comment, after the <.
. '(?:' // Unroll the loop: Consume everything until --> is found.
. '-(?!->)' // Dash not followed by end of comment.
. '[^\-]*+' // Consume non-dashes.
. ')*+' // Loop possessively.
. '-->'; // End of comment.
$regex = '/(' // Capture the entire match.
. '<' // Find start of element.
. '(?(?=!--)' // Is this a comment?
. '.+?--\s*>' // Find end of comment
. $comment_regex // Find end of comment
. '|'
. '[^>]+>' // Find end of element
. ')'
. '|'
. '\[' // Find start of shortcode.
. '\[?' // Shortcodes may begin with [[
. '[\/\[]?' // Shortcodes may begin with [/ or [[
. $tagregexp // Only match registered shortcodes, because performance.
. '(?:'
. '[^\[\]<>]' // Shortcodes do not contain other shortcodes.
. '[^\[\]<>]+' // Shortcodes do not contain other shortcodes. Quantifier critical.
. '|'
. '<[^>]+>' // HTML elements permitted. Prevents matching ] before >.
. ')++'
. '<[^\[\]>]*>' // HTML elements permitted. Prevents matching ] before >.
. ')*+' // Possessive critical.
. '\]' // Find end of shortcode.
. '\]?' // Shortcodes may end with ]]
. ')/s';
@@ -241,12 +254,12 @@ function wptexturize($text, $reset = false) {
continue;
} elseif ( '[' === $first && 1 === preg_match( '/^\[(?:[^\[\]<>]|<[^>]+>)++\]$/', $curl ) ) {
} elseif ( '[' === $first && 1 === preg_match( '/^\[\/?' . $tagregexp . '(?:[^\[\]<>]+|<[^\[\]>]*>)*+\]$/', $curl ) ) {
// This is a shortcode delimiter.
_wptexturize_pushpop_element( $curl, $no_texturize_shortcodes_stack, $no_texturize_shortcodes );
} elseif ( '[' === $first && 1 === preg_match( '/^\[\[?(?:[^\[\]<>]|<[^>]+>)++\]\]?$/', $curl ) ) {
} elseif ( '[' === $first && 1 === preg_match( '/^\[[\/\[]?' . $tagregexp . '(?:[^\[\]<>]+|<[^\[\]>]*>)*+\]\]?$/', $curl ) ) {
// This is an escaped shortcode delimiter.
// Do not texturize.
@@ -392,6 +405,9 @@ function wpautop($pee, $br = true) {
$pee = preg_replace('!(</' . $allblocks . '>)!', "$1\n\n", $pee);
$pee = str_replace(array("\r\n", "\r"), "\n", $pee); // cross-platform newlines
// Find newlines in all elements and add placeholders.
$pee = wp_replace_in_html_tags( $pee, array( "\n" => " <!-- wpnl --> " ) );
if ( strpos( $pee, '<option' ) !== false ) {
// no P/BR around option
$pee = preg_replace( '|\s*<option|', '<option', $pee );
@@ -443,9 +459,109 @@ function wpautop($pee, $br = true) {
if ( !empty($pre_tags) )
$pee = str_replace(array_keys($pre_tags), array_values($pre_tags), $pee);
// Restore newlines in all elements.
$pee = str_replace( " <!-- wpnl --> ", "\n", $pee );
return $pee;
}
/**
* Separate HTML elements and comments from the text.
*
* @since 4.2.4
*
* @param string $input The text which has to be formatted.
* @return array The formatted text.
*/
function wp_html_split( $input ) {
static $regex;
if ( ! isset( $regex ) ) {
$comments =
'!' // Start of comment, after the <.
. '(?:' // Unroll the loop: Consume everything until --> is found.
. '-(?!->)' // Dash not followed by end of comment.
. '[^\-]*+' // Consume non-dashes.
. ')*+' // Loop possessively.
. '(?:-->)?'; // End of comment. If not found, match all input.
$cdata =
'!\[CDATA\[' // Start of comment, after the <.
. '[^\]]*+' // Consume non-].
. '(?:' // Unroll the loop: Consume everything until ]]> is found.
. '](?!]>)' // One ] not followed by end of comment.
. '[^\]]*+' // Consume non-].
. ')*+' // Loop possessively.
. '(?:]]>)?'; // End of comment. If not found, match all input.
$regex =
'/(' // Capture the entire match.
. '<' // Find start of element.
. '(?(?=!--)' // Is this a comment?
. $comments // Find end of comment.
. '|'
. '(?(?=!\[CDATA\[)' // Is this a comment?
. $cdata // Find end of comment.
. '|'
. '[^>]*>?' // Find end of element. If not found, match all input.
. ')'
. ')'
. ')/s';
}
return preg_split( $regex, $input, -1, PREG_SPLIT_DELIM_CAPTURE );
}
/**
* Replace characters or phrases within HTML elements only.
*
* @since 4.2.3
*
* @param string $haystack The text which has to be formatted.
* @param array $replace_pairs In the form array('from' => 'to', ...).
* @return string The formatted text.
*/
function wp_replace_in_html_tags( $haystack, $replace_pairs ) {
// Find all elements.
$textarr = wp_html_split( $haystack );
$changed = false;
// Optimize when searching for one item.
if ( 1 === count( $replace_pairs ) ) {
// Extract $needle and $replace.
foreach ( $replace_pairs as $needle => $replace );
// Loop through delimeters (elements) only.
for ( $i = 1, $c = count( $textarr ); $i < $c; $i += 2 ) {
if ( false !== strpos( $textarr[$i], $needle ) ) {
$textarr[$i] = str_replace( $needle, $replace, $textarr[$i] );
$changed = true;
}
}
} else {
// Extract all $needles.
$needles = array_keys( $replace_pairs );
// Loop through delimeters (elements) only.
for ( $i = 1, $c = count( $textarr ); $i < $c; $i += 2 ) {
foreach ( $needles as $needle ) {
if ( false !== strpos( $textarr[$i], $needle ) ) {
$textarr[$i] = strtr( $textarr[$i], $replace_pairs );
$changed = true;
// After one strtr() break out of the foreach loop and look at next element.
break;
}
}
}
}
if ( $changed ) {
$haystack = implode( $textarr );
}
return $haystack;
}
/**
* Newline preservation help function for wpautop
*
@@ -1034,7 +1150,8 @@ function remove_accents($string) {
* operating systems and special characters requiring special escaping
* to manipulate at the command line. Replaces spaces and consecutive
* dashes with a single dash. Trims period, dash and underscore from beginning
* and end of filename.
* and end of filename. It is not guaranteed that this function will return a
* filename that is allowed to be uploaded.
*
* @since 2.1.0
*
@@ -1059,6 +1176,14 @@ function sanitize_file_name( $filename ) {
$filename = preg_replace('/[\s-]+/', '-', $filename);
$filename = trim($filename, '.-_');
if ( false === strpos( $filename, '.' ) ) {
$mime_types = wp_get_mime_types();
$filetype = wp_check_filetype( 'test.' . $filename, $mime_types );
if ( $filetype['ext'] === $filename ) {
$filename = 'unnamed-file.' . $filetype['ext'];
}
}
// Split the filename into a base and extension[s]
$parts = explode('.', $filename);
@@ -1292,21 +1417,23 @@ function sanitize_title_with_dashes( $title, $raw_title = '', $context = 'displa
}
/**
* Ensures a string is a valid SQL order by clause.
* Ensures a string is a valid SQL 'order by' clause.
*
* Accepts one or more columns, with or without ASC/DESC, and also accepts
* RAND().
* Accepts one or more columns, with or without a sort order (ASC / DESC).
* e.g. 'column_1', 'column_1, column_2', 'column_1 ASC, column_2 DESC' etc.
*
* Also accepts 'RAND()'.
*
* @since 2.5.1
*
* @param string $orderby Order by string to be checked.
* @return string|bool Returns the order by clause if it is a match, false otherwise.
* @param string $orderby Order by clause to be validated.
* @return string|bool Returns $orderby if valid, false otherwise.
*/
function sanitize_sql_orderby( $orderby ){
preg_match('/^\s*([a-z0-9_]+(\s+(ASC|DESC))?(\s*,\s*|\s*$))+|^\s*RAND\(\s*\)\s*$/i', $orderby, $obmatches);
if ( !$obmatches )
return false;
return $orderby;
function sanitize_sql_orderby( $orderby ) {
if ( preg_match( '/^\s*(([a-z0-9_]+|`[a-z0-9_]+`)(\s+(ASC|DESC))?\s*(,\s*(?=[a-z0-9_`])|$))+$/i', $orderby ) || preg_match( '/^\s*RAND\(\s*\)\s*$/i', $orderby ) ) {
return $orderby;
}
return false;
}
/**

View File

@@ -1492,6 +1492,11 @@ function wp_mkdir_p( $target ) {
if ( file_exists( $target ) )
return @is_dir( $target );
// Do not allow path traversals.
if ( false !== strpos( $target, '../' ) || false !== strpos( $target, '..' . DIRECTORY_SEPARATOR ) ) {
return false;
}
// We need to find the permissions of the parent folder that exists and inherit that.
$target_parent = dirname( $target );
while ( '.' != $target_parent && ! is_dir( $target_parent ) ) {
@@ -1575,18 +1580,38 @@ function path_join( $base, $path ) {
/**
* Normalize a filesystem path.
*
* Replaces backslashes with forward slashes for Windows systems, and ensures
* no duplicate slashes exist.
* On windows systems, replaces backslashes with forward slashes
* and forces upper-case drive letters.
* Allows for two leading slashes for Windows network shares, but
* ensures that all other duplicate slashes are reduced to a single.
*
* @since 3.9.0
* @since 4.4.0 Ensures upper-case drive letters on Windows systems.
* @since 4.5.0 Allows for Windows network shares.
* @since 4.9.7 Allows for PHP file wrappers.
*
* @param string $path Path to normalize.
* @return string Normalized path.
*/
function wp_normalize_path( $path ) {
$wrapper = '';
if ( wp_is_stream( $path ) ) {
list( $wrapper, $path ) = explode( '://', $path, 2 );
$wrapper .= '://';
}
// Standardise all paths to use /
$path = str_replace( '\\', '/', $path );
$path = preg_replace( '|/+|','/', $path );
return $path;
// Replace multiple slashes down to a singular, allowing for network shares having two slashes.
$path = preg_replace( '|(?<=.)/+|', '/', $path );
// Windows paths should uppercase the drive letter
if ( ':' === substr( $path, 1, 1 ) ) {
$path = ucfirst( $path );
}
return $wrapper . $path;
}
/**
@@ -2068,7 +2093,7 @@ function wp_check_filetype( $filename, $mimes = null ) {
* If it's determined that the extension does not match the file's real type,
* then the "proper_filename" value will be set with a proper filename and extension.
*
* Currently this function only supports validating images known to getimagesize().
* Currently this function only supports renaming images validated via wp_get_image_mime().
*
* @since 3.0.0
*
@@ -2093,14 +2118,15 @@ function wp_check_filetype_and_ext( $file, $filename, $mimes = null ) {
return compact( 'ext', 'type', 'proper_filename' );
}
// We're able to validate images using GD
if ( $type && 0 === strpos( $type, 'image/' ) && function_exists('getimagesize') ) {
// Validate image types.
if ( $type && 0 === strpos( $type, 'image/' ) ) {
// Attempt to figure out what type of image it actually is
$imgstats = @getimagesize( $file );
$real_mime = wp_get_image_mime( $file );
// If getimagesize() knows what kind of image it really is and if the real MIME doesn't match the claimed MIME
if ( !empty($imgstats['mime']) && $imgstats['mime'] != $type ) {
if ( ! $real_mime ) {
$type = $ext = false;
} elseif ( $real_mime != $type ) {
/**
* Filter the list mapping image mime types to their respective extensions.
*
@@ -2117,10 +2143,10 @@ function wp_check_filetype_and_ext( $file, $filename, $mimes = null ) {
) );
// Replace whatever is after the last period in the filename with the correct extension
if ( ! empty( $mime_to_ext[ $imgstats['mime'] ] ) ) {
if ( ! empty( $mime_to_ext[ $real_mime ] ) ) {
$filename_parts = explode( '.', $filename );
array_pop( $filename_parts );
$filename_parts[] = $mime_to_ext[ $imgstats['mime'] ];
$filename_parts[] = $mime_to_ext[ $real_mime ];
$new_filename = implode( '.', $filename_parts );
if ( $new_filename != $filename ) {
@@ -2130,10 +2156,67 @@ function wp_check_filetype_and_ext( $file, $filename, $mimes = null ) {
$wp_filetype = wp_check_filetype( $new_filename, $mimes );
$ext = $wp_filetype['ext'];
$type = $wp_filetype['type'];
} else {
$type = $ext = false;
}
}
}
// Validate files that didn't get validated during previous checks.
if ( $type && ! $real_mime && extension_loaded( 'fileinfo' ) ) {
$finfo = finfo_open( FILEINFO_MIME_TYPE );
$real_mime = finfo_file( $finfo, $file );
finfo_close( $finfo );
// fileinfo often misidentifies obscure files as one of these types
$nonspecific_types = array(
'application/octet-stream',
'application/encrypted',
'application/CDFV2-encrypted',
'application/zip',
);
/*
* If $real_mime doesn't match the content type we're expecting from the file's extension,
* we need to do some additional vetting. Media types and those listed in $nonspecific_types are
* allowed some leeway, but anything else must exactly match the real content type.
*/
if ( in_array( $real_mime, $nonspecific_types, true ) ) {
// File is a non-specific binary type. That's ok if it's a type that generally tends to be binary.
if ( !in_array( substr( $type, 0, strcspn( $type, '/' ) ), array( 'application', 'video', 'audio' ) ) ) {
$type = $ext = false;
}
} elseif ( 0 === strpos( $real_mime, 'video/' ) || 0 === strpos( $real_mime, 'audio/' ) ) {
/*
* For these types, only the major type must match the real value.
* This means that common mismatches are forgiven: application/vnd.apple.numbers is often misidentified as application/zip,
* and some media files are commonly named with the wrong extension (.mov instead of .mp4)
*/
if ( substr( $real_mime, 0, strcspn( $real_mime, '/' ) ) !== substr( $type, 0, strcspn( $type, '/' ) ) ) {
$type = $ext = false;
}
} else {
if ( $type !== $real_mime ) {
/*
* Everything else including image/* and application/*:
* If the real content type doesn't match the file extension, assume it's dangerous.
*/
$type = $ext = false;
}
}
}
// The mime type must be allowed
if ( $type ) {
$allowed = get_allowed_mime_types();
if ( ! in_array( $type, $allowed ) ) {
$type = $ext = false;
}
}
/**
* Filter the "real" file type of the given file.
*
@@ -2149,6 +2232,38 @@ function wp_check_filetype_and_ext( $file, $filename, $mimes = null ) {
return apply_filters( 'wp_check_filetype_and_ext', compact( 'ext', 'type', 'proper_filename' ), $file, $filename, $mimes );
}
/**
* Returns the real mime type of an image file.
*
* This depends on exif_imagetype() or getimagesize() to determine real mime types.
*
* @since 4.7.1
*
* @param string $file Full path to the file.
* @return string|false The actual mime type or false if the type cannot be determined.
*/
function wp_get_image_mime( $file ) {
/*
* Use exif_imagetype() to check the mimetype if available or fall back to
* getimagesize() if exif isn't avaialbe. If either function throws an Exception
* we assume the file could not be validated.
*/
try {
if ( is_callable( 'exif_imagetype' ) ) {
$mime = image_type_to_mime_type( exif_imagetype( $file ) );
} elseif ( function_exists( 'getimagesize' ) ) {
$imagesize = getimagesize( $file );
$mime = ( isset( $imagesize['mime'] ) ) ? $imagesize['mime'] : false;
} else {
$mime = false;
}
} catch ( Exception $e ) {
$mime = false;
}
return $mime;
}
/**
* Retrieve list of mime types and file extensions.
*
@@ -2286,8 +2401,9 @@ function get_allowed_mime_types( $user = null ) {
if ( function_exists( 'current_user_can' ) )
$unfiltered = $user ? user_can( $user, 'unfiltered_html' ) : current_user_can( 'unfiltered_html' );
if ( empty( $unfiltered ) )
unset( $t['htm|html'] );
if ( empty( $unfiltered ) ) {
unset( $t['htm|html'], $t['js'] );
}
/**
* Filter list of allowed mime types and file extensions.
@@ -4628,3 +4744,29 @@ function wp_validate_boolean( $var ) {
return (bool) $var;
}
/**
* Deletes a file if its path is within the given directory.
*
* @since 4.9.7
*
* @param string $file Absolute path to the file to delete.
* @param string $directory Absolute path to a directory.
* @return bool True on success, false on failure.
*/
function wp_delete_file_from_directory( $file, $directory ) {
$real_file = realpath( wp_normalize_path( $file ) );
$real_directory = realpath( wp_normalize_path( $directory ) );
if ( false === $real_file || false === $real_directory || strpos( wp_normalize_path( $real_file ), trailingslashit( wp_normalize_path( $real_directory ) ) ) !== 0 ) {
return false;
}
/** This filter is documented in wp-admin/custom-header.php */
$delete = apply_filters( 'wp_delete_file', $file );
if ( ! empty( $delete ) ) {
@unlink( $delete );
}
return true;
}

View File

@@ -2231,6 +2231,24 @@ function wp_no_robots() {
echo "<meta name='robots' content='noindex,follow' />\n";
}
/**
* Display a noindex,noarchive meta tag and referrer origin-when-cross-origin meta tag.
*
* Outputs a noindex,noarchive meta tag that tells web robots not to index or cache the page content.
* Outputs a referrer origin-when-cross-origin meta tag that tells the browser not to send the full
* url as a referrer to other sites when cross-origin assets are loaded.
*
* Typical usage is as a wp_head callback. add_action( 'wp_head', 'wp_sensitive_page_meta' );
*
* @since 5.0.0
*/
function wp_sensitive_page_meta() {
?>
<meta name='robots' content='noindex,noarchive' />
<meta name='referrer' content='strict-origin-when-cross-origin' />
<?php
}
/**
* Whether the user should have a WYSIWIG editor.
*
@@ -2383,12 +2401,14 @@ function language_attributes($doctype = 'html') {
if ( function_exists( 'is_rtl' ) && is_rtl() )
$attributes[] = 'dir="rtl"';
if ( $lang = get_bloginfo('language') ) {
if ( get_option('html_type') == 'text/html' || $doctype == 'html' )
$attributes[] = "lang=\"$lang\"";
if ( $lang = get_bloginfo( 'language' ) ) {
if ( get_option( 'html_type' ) == 'text/html' || $doctype == 'html' ) {
$attributes[] = 'lang="' . esc_attr( $lang ) . '"';
}
if ( get_option('html_type') != 'text/html' || $doctype == 'xhtml' )
$attributes[] = "xml:lang=\"$lang\"";
if ( get_option( 'html_type' ) != 'text/html' || $doctype == 'xhtml' ) {
$attributes[] = 'xml:lang="' . esc_attr( $lang ) . '"';
}
}
$output = implode(' ', $attributes);
@@ -2851,25 +2871,25 @@ function get_the_generator( $type = '' ) {
switch ( $type ) {
case 'html':
$gen = '<meta name="generator" content="WordPress ' . get_bloginfo( 'version' ) . '">';
$gen = '<meta name="generator" content="WordPress ' . esc_attr( get_bloginfo( 'version' ) ) . '">';
break;
case 'xhtml':
$gen = '<meta name="generator" content="WordPress ' . get_bloginfo( 'version' ) . '" />';
$gen = '<meta name="generator" content="WordPress ' . esc_attr( get_bloginfo( 'version' ) ) . '" />';
break;
case 'atom':
$gen = '<generator uri="http://wordpress.org/" version="' . get_bloginfo_rss( 'version' ) . '">WordPress</generator>';
$gen = '<generator uri="https://wordpress.org/" version="' . esc_attr( get_bloginfo_rss( 'version' ) ) . '">WordPress</generator>';
break;
case 'rss2':
$gen = '<generator>http://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) . '</generator>';
$gen = '<generator>' . esc_url_raw( 'https://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) ) . '</generator>';
break;
case 'rdf':
$gen = '<admin:generatorAgent rdf:resource="http://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) . '" />';
$gen = '<admin:generatorAgent rdf:resource="' . esc_url_raw( 'https://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) ) . '" />';
break;
case 'comment':
$gen = '<!-- generator="WordPress/' . get_bloginfo( 'version' ) . '" -->';
$gen = '<!-- generator="WordPress/' . esc_attr( get_bloginfo( 'version' ) ) . '" -->';
break;
case 'export':
$gen = '<!-- generator="WordPress/' . get_bloginfo_rss('version') . '" created="'. date('Y-m-d H:i') . '" -->';
$gen = '<!-- generator="WordPress/' . esc_attr( get_bloginfo_rss( 'version' ) ) . '" created="' . date( 'Y-m-d H:i' ) . '" -->';
break;
}

View File

@@ -444,8 +444,9 @@ function send_origin_headers() {
* @return mixed URL or false on failure.
*/
function wp_http_validate_url( $url ) {
$original_url = $url;
$url = wp_kses_bad_protocol( $url, array( 'http', 'https' ) );
if ( ! $url )
if ( ! $url || strtolower( $url ) !== strtolower( $original_url ) )
return false;
$parsed_url = @parse_url( $url );
@@ -455,7 +456,7 @@ function wp_http_validate_url( $url ) {
if ( isset( $parsed_url['user'] ) || isset( $parsed_url['pass'] ) )
return false;
if ( false !== strpos( $parsed_url['host'], ':' ) )
if ( false !== strpbrk( $parsed_url['host'], ':#?[]' ) )
return false;
$parsed_home = @parse_url( get_option( 'home' ) );
@@ -464,17 +465,17 @@ function wp_http_validate_url( $url ) {
if ( ! $same_host ) {
$host = trim( $parsed_url['host'], '.' );
if ( preg_match( '#^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$#', $host ) ) {
if ( preg_match( '#^(([1-9]?\d|1\d\d|25[0-5]|2[0-4]\d)\.){3}([1-9]?\d|1\d\d|25[0-5]|2[0-4]\d)$#', $host ) ) {
$ip = $host;
} else {
$ip = gethostbyname( $host );
if ( $ip === $host ) // Error condition for gethostbyname()
$ip = false;
if ( $ip === $host ) { // Error condition for gethostbyname()
return false;
}
}
if ( $ip ) {
$parts = array_map( 'intval', explode( '.', $ip ) );
if ( '127.0.0.1' === $ip
|| ( 10 === $parts[0] )
if ( 127 === $parts[0] || 10 === $parts[0] || 0 === $parts[0]
|| ( 172 === $parts[0] && 16 <= $parts[1] && 31 >= $parts[1] )
|| ( 192 === $parts[0] && 168 === $parts[1] )
) {

View File

@@ -128,6 +128,14 @@ window.wp = window.wp || {};
importStyles = this.type === 'video' || this.type === 'audio' || this.type === 'playlist';
if ( head || body.indexOf( '<script' ) !== -1 ) {
if ( body.indexOf( '[' ) !== -1 && body.indexOf( ']' ) !== -1 ) {
var shortcodesRegExp = new RegExp( '\\[\\/?(?:' + window.mceViewL10n.shortcodes.join( '|' ) + ')[^\\]]*?\\]', 'g' );
// Escape tags inside shortcode previews.
body = body.replace( shortcodesRegExp, function( match ) {
return match.replace( /</g, '&lt;' ).replace( />/g, '&gt;' );
} );
}
this.getNodes( function ( editor, node, content ) {
var dom = editor.dom,
styles = '',

File diff suppressed because one or more lines are too long

View File

@@ -577,10 +577,11 @@
return ( this.getCurrentIndex() - 1 ) > -1;
},
/**
* Respond to the keyboard events: right arrow, left arrow, escape.
* Respond to the keyboard events: right arrow, left arrow, except when
* focus is in a textarea or input field.
*/
keyEvent: function( event ) {
if ( 'INPUT' === event.target.tagName && ! ( event.target.readOnly || event.target.disabled ) ) {
if ( ( 'INPUT' === event.target.nodeName || 'TEXTAREA' === event.target.nodeName ) && ! ( event.target.readOnly || event.target.disabled ) ) {
return;
}

File diff suppressed because one or more lines are too long

View File

@@ -5850,7 +5850,7 @@
controller: this.controller,
priority: -60,
click: function() {
var model, changed = [], self = this,
var changed = [], removed = [], self = this,
selection = this.controller.state().get( 'selection' ),
library = this.controller.state().get( 'library' );
@@ -5869,22 +5869,28 @@
return;
}
while ( selection.length > 0 ) {
model = selection.at( 0 );
selection.each( function( model ) {
if ( ! model.get( 'nonces' )['delete'] ) {
removed.push( model );
return;
}
if ( media.view.settings.mediaTrash && 'trash' === model.get( 'status' ) ) {
model.set( 'status', 'inherit' );
changed.push( model.save() );
selection.remove( model );
removed.push( model );
} else if ( media.view.settings.mediaTrash ) {
model.set( 'status', 'trash' );
changed.push( model.save() );
selection.remove( model );
removed.push( model );
} else {
model.destroy();
}
}
} );
if ( changed.length ) {
selection.remove( removed );
$.when.apply( null, changed ).then( function() {
library._requery( true );
self.controller.trigger( 'selection:action:done' );

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More