Commit Graph

31 Commits

Author SHA1 Message Date
Ryan Boren a6c8efadb9 Change all core API to expect unslashed rather than slashed arguments.
The exceptions to this are update_post_meta() and add_post_meta() which are often used by plugins in POST handlers and will continue accepting slashed data for now.

Introduce wp_upate_post_meta() and wp_add_post_meta() as unslashed alternatives to update_post_meta() and add_post_meta(). These functions could become methods in WP_Post so don't use them too heavily yet.

Remove all escape() calls from wp_xmlrpc_server. Now that core expects unslashed data this is no longer needed.

Remove addslashes(), addslashes_gpc(), add_magic_quotes() calls on data being prepared for handoff to core functions that until now expected slashed data. Adding slashes in no longer necessary.

Introduce wp_unslash() and use to it remove slashes from GPCS data before using it in core API. Almost every instance of stripslashes() in core should now be wp_unslash(). In the future (a release or three) when GPCS is no longer slashed, wp_unslash() will stop stripping slashes and simply return what is passed. At this point wp_unslash() calls can be removed from core.

Introduce wp_slash() for slashing GPCS data. This will also turn into a noop once GPCS is no longer slashed. wp_slash() should almost never be used. It is mainly of use in unit tests.

Plugins should use wp_unslash() on data being passed to core API.

Plugins should no longer slash data being passed to core. So when you get_post() and then wp_insert_post() the post data from get_post() no longer needs addslashes(). Most plugins were not bothering with this. They will magically start doing the right thing. Unfortunately, those few souls who did it properly will now have to avoid calling addslashes() for 3.6 and newer.

Use wp_kses_post() and wp_kses_data(), which expect unslashed data, instead of wp_filter_post_kses() and wp_filter_kses(), which expect slashed data. Filters are no longer passed slashed data.

Remove many no longer necessary calls to $wpdb->escape() and esc_sql().

In wp_get_referer() and wp_get_original_referer(), return unslashed data.

Remove old stripslashes() calls from WP_Widget::update() handlers. These haven't been necessary since WP_Widget.

Switch several queries over to prepare().

Expect something to break.

Props alexkingorg
see #21767


git-svn-id: https://develop.svn.wordpress.org/trunk@23416 602fd350-edb4-49c9-b593-d223f7449a82
2013-02-14 22:51:06 +00:00
Ryan Boren 6d8bce688f Pinking shears
git-svn-id: https://develop.svn.wordpress.org/trunk@22634 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-17 15:11:29 +00:00
Andrew Nacin da07593046 Ensure a method is compatible with its parent. props kurtpayne, fixes #22265.
git-svn-id: https://develop.svn.wordpress.org/trunk@22448 602fd350-edb4-49c9-b593-d223f7449a82
2012-11-07 21:59:20 +00:00
Ryan Boren 0b39b920c1 phpdoc for Customizer classes and methods. Props bananastalktome. see #21303
git-svn-id: https://develop.svn.wordpress.org/trunk@21354 602fd350-edb4-49c9-b593-d223f7449a82
2012-07-26 21:45:33 +00:00
Andrew Nacin 04fc3508d3 Theme Customizer: Remove background_image_thumb when saving settings. fixes #20871.
This prevents the background_image and background_image_thumb settings from getting out of sync.
In 3.5 we can consider using background-size on Appearance > Background, eliminating _thumb.



git-svn-id: https://develop.svn.wordpress.org/trunk@21053 602fd350-edb4-49c9-b593-d223f7449a82
2012-06-11 20:49:45 +00:00
Ryan Boren a24c284403 * Introduce remove_header_image(), reset_header_image(), set_header_image(), and get_header_image_data() for Custom_Image_Header.
* Handle all set/get of header theme mod through these methods.
* Use these methods in the customizer.

Props kovshenin, nacin, SergeyBiryukov, koopersmith.
fixes #20871


git-svn-id: https://develop.svn.wordpress.org/trunk@21037 602fd350-edb4-49c9-b593-d223f7449a82
2012-06-10 00:32:19 +00:00
Daryl Koopersmith 771ca21787 Theme Customizer: Ensure that JS color controls always use real color values, even if the server-side value is a hex value without a hash. fixes #20448, see #19910.
Adds WP_Customize_Setting->sanitize_js_callback and 'customize_sanitize_js_$settingID' filter, to filter values before they're passed to JS using WP_Customize_Setting->js_value().

Adds support for regular hex colors to the color picker.

Changes color methods:
* sanitize_hex_color() accepts 3 and 6 digit hex colors (with hashes) and the empty string.
* sanitize_hex_color_no_hash() accepts 3 and 6 digit hex colors (without hashes) and the empty string.
* maybe_hash_hex_color() ensures that a hex color has a hash, and otherwise leaves the value untouched.


git-svn-id: https://develop.svn.wordpress.org/trunk@20936 602fd350-edb4-49c9-b593-d223f7449a82
2012-05-26 18:44:31 +00:00
Daryl Koopersmith 621e3c1fc6 Theme Customizer: Properly escape customize settings when sending values to JS. Add WP_Customize_Setting->js_value(). fixes #20687, see #19910.
git-svn-id: https://develop.svn.wordpress.org/trunk@20809 602fd350-edb4-49c9-b593-d223f7449a82
2012-05-16 20:59:02 +00:00
Ryan Boren 7e4b88ad24 Add filters for the default to get_option() and get_site_option(). Provide default overrides in the customizer. Props Otto42. see #20448
git-svn-id: https://develop.svn.wordpress.org/trunk@20783 602fd350-edb4-49c9-b593-d223f7449a82
2012-05-14 16:45:32 +00:00
Daryl Koopersmith 3540b301af Theme Customizer: Migrate to an ajax-based solution for refreshing the preview and saving. see #20507, #19910.
* Use ajax-based saving, add saving indicator.
* Use ajax-based refreshing instead of form targets.
* Instead of using hidden inputs with prefixed names to track the canonical data, use the values stored in wp.customize. Encode the values as JSON before sending to avoid bugs with ids that contain square brackets (PHP mangles POST values with nested brackets).
* Use wp.customize.Previewer solely for the purpose of previewing; move the postMessage connection with the parent frame and other unrelated code snippets into the 'ready' handler.


git-svn-id: https://develop.svn.wordpress.org/trunk@20645 602fd350-edb4-49c9-b593-d223f7449a82
2012-04-30 15:46:17 +00:00
Daryl Koopersmith dfd80ddc57 Theme Customizer: For clarity, wp.customize.Setting.method to wp.customize.Setting.transport. Add WP_Customize_Setting->transport to allow setting the transport method via PHP. see #19910.
git-svn-id: https://develop.svn.wordpress.org/trunk@20585 602fd350-edb4-49c9-b593-d223f7449a82
2012-04-25 16:04:51 +00:00
Daryl Koopersmith 26bba58bdb Theme Customizer: Properly pass arguments by reference to WP_Customize_Setting->multidimensional(). see #19910, [20136], #20163.
This is necessary for WP_Customize_Setting->multidimensional_replace() to work properly on multidimensional arrays (which was, as the name indicates, the point of the function in the first place).

git-svn-id: https://develop.svn.wordpress.org/trunk@20300 602fd350-edb4-49c9-b593-d223f7449a82
2012-03-28 09:27:26 +00:00
Daryl Koopersmith 2ca07cdf2a Create WP_Customize_Control to separate the process of rendering a control from fetching, previewing, and saving its values. see #19910.
Many-to-many mapping between settings and controls.
* Settings and controls have been separated in both the PHP (WP_Customize_Setting, WP_Customize_Control) and the JS (wp.customize.Setting, wp.customize.Control).
* While most settings are tied to a single control, some require multiple controls. The 'header_textcolor' control is a good example: to hide the header text, header_textcolor is set to 'blank'.

Add 'Display Header Text' control.

A handful of miscellaneous bugfixes along the way.

Notes:
* Controls should be separated out a bit more; juggling type-specific arguments in the switch statement is rather inelegant.
* Page dropdowns are currently inactive and need to be re-linked.

git-svn-id: https://develop.svn.wordpress.org/trunk@20295 602fd350-edb4-49c9-b593-d223f7449a82
2012-03-28 04:14:09 +00:00
Daryl Koopersmith d8513a5ebb Theme Customizer: Add 'choose image' functionality to image controls. Rough first pass, using header images as an example. see #19910.
git-svn-id: https://develop.svn.wordpress.org/trunk@20290 602fd350-edb4-49c9-b593-d223f7449a82
2012-03-25 21:18:32 +00:00
Daryl Koopersmith e0773710ec Theme Customizer: First pass at image controls. Use header_image as the initial case. Add a 'removed' control param for upload/image controls to map 'removed' to a value other than the empty string. see #19910.
git-svn-id: https://develop.svn.wordpress.org/trunk@20278 602fd350-edb4-49c9-b593-d223f7449a82
2012-03-24 04:35:13 +00:00
Daryl Koopersmith b0f973d884 Theme Customizer: Add WP_Customizer_Setting->control_params, and wp.customize.Control.params to allow settings to pass arbitrary parameters to controls. Add the 'context' parameter to wp.customize.UploadControl. see #19910.
git-svn-id: https://develop.svn.wordpress.org/trunk@20276 602fd350-edb4-49c9-b593-d223f7449a82
2012-03-24 01:02:29 +00:00
Daryl Koopersmith 95ab797033 Theme Customizer: Add background repeat, position, and attachment settings. Change visibility parameter to accept a string or array( , ). see #19910.
git-svn-id: https://develop.svn.wordpress.org/trunk@20263 602fd350-edb4-49c9-b593-d223f7449a82
2012-03-22 08:07:44 +00:00
Daryl Koopersmith f28d57454f Theme Customizer: Only show uploader 'remove' links when there is an image to remove. see #19910.
git-svn-id: https://develop.svn.wordpress.org/trunk@20261 602fd350-edb4-49c9-b593-d223f7449a82
2012-03-22 07:30:44 +00:00
Daryl Koopersmith 7dc476bd8b Theme Customizer: Add a WP_Customize_Setting->visibility parameter to show/hide a control based upon the value of another control. Also shifts rendering the setting wrapper element into WP_Customize_Setting->render() and adds WP_Customize_Setting->render_content(). see #19910.
git-svn-id: https://develop.svn.wordpress.org/trunk@20260 602fd350-edb4-49c9-b593-d223f7449a82
2012-03-22 07:17:26 +00:00
Daryl Koopersmith 999b57a813 Theme Customizer: Make dropdown-pages a native customize control. see #19910.
While the customize_render_control- action has been removed, we could still accomplish this with the customize_render_setting action. That said, in this case, avoiding native integration was a matter of minor semantics that ended in the same result.

git-svn-id: https://develop.svn.wordpress.org/trunk@20254 602fd350-edb4-49c9-b593-d223f7449a82
2012-03-22 04:14:26 +00:00
Daryl Koopersmith ca4b8f3eac Theme Customizer: Numerous API refinements and bugfixes. Add a theme_supports check for header_textcolor. see #19910.
* prepare_controls() now removes any settings and sections that return false for check_capabilities().
* Added maybe_render() methods to both settings and sections that call the protected render() methods.
* Stop firing front-end preview functionality when rendering the controls.
* Merged the WP_Customize_Setting->_render_type() method into WP_Customize_Setting->render().
* Removed the 'customize_render_control-' hook; use 'customize_render_setting' instead.
* Added a  property to sections and settings so they no longer rely on the  global. Hooray for dependency injection.
* Shifted calls to WP_Customize_Setting->enqueue() to the 'customize_controls_enqueue_scripts' action.
* Added a theme_supports check for the header_textcolor setting.

git-svn-id: https://develop.svn.wordpress.org/trunk@20248 602fd350-edb4-49c9-b593-d223f7449a82
2012-03-21 22:55:43 +00:00
Daryl Koopersmith c6043b2fa2 Theme Customizer: Improve WP_Customize_Setting->check_capabilities(). Add support for arrays in WP_Customize_Setting->capability and WP_Customize_Setting->theme_supports. Don't bail when WP_Customize_Setting->capability is empty. see #19910.
git-svn-id: https://develop.svn.wordpress.org/trunk@20232 602fd350-edb4-49c9-b593-d223f7449a82
2012-03-21 04:59:57 +00:00
Daryl Koopersmith 2ab537f0b5 Theme Customizer: Improve sidebar CSS. Display most elements inline, refine padding/line-heights. see #19910.
git-svn-id: https://develop.svn.wordpress.org/trunk@20181 602fd350-edb4-49c9-b593-d223f7449a82
2012-03-15 05:30:11 +00:00
Daryl Koopersmith d254551dd7 Theme Customizer: First pass for upload controls, using background image as an example. Add a wrapper for Plupload that allows for custom upload UIs. see #19910.
wp.Uploader is a wrapper that provides a simple way to upload an attachment (using the wp_ajax_upload_attachment handler). It is intentionally decoupled from the UI. When an upload succeeds, it will receive the attachment information (id, url, meta, etc) as a JSON response. If the upload fails, the wrapper handles both WordPress and plupload errors through a single handler.

As todos, we should add drag classes for the uploader dropzone and account for the rough 100mb filesize limit in most browsers. The UI for the customizer upload controls could be improved as well.

git-svn-id: https://develop.svn.wordpress.org/trunk@20179 602fd350-edb4-49c9-b593-d223f7449a82
2012-03-15 04:14:05 +00:00
Jon Cave a6135e9995 Remove call-time pass by reference as it causes a compile time fatal error in PHP 5.4. See #20163.
git-svn-id: https://develop.svn.wordpress.org/trunk@20136 602fd350-edb4-49c9-b593-d223f7449a82
2012-03-07 16:32:11 +00:00
Daryl Koopersmith 2ae706140a Theme Customizer: Color picker markup/CSS improvements. Part 1. see #19910.
git-svn-id: https://develop.svn.wordpress.org/trunk@20130 602fd350-edb4-49c9-b593-d223f7449a82
2012-03-06 23:55:16 +00:00
Daryl Koopersmith 21e5a2e69e Theme Customizer: Add a Control object to better encapsulate different UI elements and make it easy to switch between hard refreshes and postMessage. see #19910.
git-svn-id: https://develop.svn.wordpress.org/trunk@20128 602fd350-edb4-49c9-b593-d223f7449a82
2012-03-06 22:48:07 +00:00
Daryl Koopersmith c7769fabfd Theme Customizer: Add working color pickers. First pass. see #19910.
git-svn-id: https://develop.svn.wordpress.org/trunk@20120 602fd350-edb4-49c9-b593-d223f7449a82
2012-03-06 02:03:50 +00:00
Daryl Koopersmith 233c465de2 Theme Customizer: Strip slashes when sanitizing previewed values. see #19910.
git-svn-id: https://develop.svn.wordpress.org/trunk@20028 602fd350-edb4-49c9-b593-d223f7449a82
2012-02-28 21:21:16 +00:00
Ryan Boren 89e9bcc1d6 Pinking shears 6-20000
git-svn-id: https://develop.svn.wordpress.org/trunk@20000 602fd350-edb4-49c9-b593-d223f7449a82
2012-02-27 19:46:52 +00:00
Daryl Koopersmith 9f29c06954 Introduce new theme customizer to replace theme preview. Rough first pass. props koopersmith, ocean90. see #19910.
Merges in http://plugins.svn.wordpress.org/gandalf/branches/dev/ rev 510148.

git-svn-id: https://develop.svn.wordpress.org/trunk@19995 602fd350-edb4-49c9-b593-d223f7449a82
2012-02-25 04:12:43 +00:00