PluginProbe
Gutenberg / 14.8.4
Gutenberg v14.8.4
23.9.1 23.9.0 23.8.0 23.7.2 23.7.1 23.7.0 23.6.1 23.6.2 23.6.0 23.5.3 23.5.2 23.5.1 23.5.0 23.4.0 23.3.2 23.3.1 23.3.0 23.2.0 23.2.1 23.2.2 23.1.1 23.1.0 23.0.1 12.6.0 7.4.0 All 402 releases
gutenberg / lib / experimental / kses.php

kses.php in Gutenberg 14.8.4, at lib/experimental/kses.php

67 lines 2.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Temporary compatibility shims for kses rules present in Gutenberg.
4 *
5 * The functions in this file should not be backported to core.
6 *
7 * @package gutenberg
8 */
9
10 /**
11 * Sanitizes global styles user content removing unsafe rules.
12 *
13 * This function is identical to the core version, but called the
14 * Gutenberg version of the theme JSON class (`WP_Theme_JSON_Gutenberg`).
15 *
16 * This function should not be backported to core.
17 *
18 * @since 5.9.0
19 *
20 * @param string $data Post content to filter.
21 * @return string Filtered post content with unsafe rules removed.
22 */
23 function gutenberg_filter_global_styles_post( $data ) {
24 $decoded_data = json_decode( wp_unslash( $data ), true );
25 $json_decoding_error = json_last_error();
26 if (
27 JSON_ERROR_NONE === $json_decoding_error &&
28 is_array( $decoded_data ) &&
29 isset( $decoded_data['isGlobalStylesUserThemeJSON'] ) &&
30 $decoded_data['isGlobalStylesUserThemeJSON']
31 ) {
32 unset( $decoded_data['isGlobalStylesUserThemeJSON'] );
33
34 $data_to_encode = WP_Theme_JSON_Gutenberg::remove_insecure_properties( $decoded_data );
35
36 $data_to_encode['isGlobalStylesUserThemeJSON'] = true;
37 return wp_slash( wp_json_encode( $data_to_encode ) );
38 }
39 return $data;
40 }
41
42 /**
43 * Override core's kses_init_filters hooks for global styles,
44 * and use Gutenberg's version instead. This ensures that
45 * Gutenberg's `remove_insecure_properties` function can be called.
46 *
47 * The hooks are only set if they are already added, which ensures
48 * that global styles is only filtered for users without the `unfiltered_html`
49 * capability.
50 *
51 * This function should not be backported to core.
52 */
53 function gutenberg_override_core_kses_init_filters() {
54 if ( has_filter( 'content_save_pre', 'wp_filter_global_styles_post' ) ) {
55 remove_filter( 'content_save_pre', 'wp_filter_global_styles_post', 9 );
56 add_filter( 'content_save_pre', 'gutenberg_filter_global_styles_post', 9 );
57 }
58
59 if ( has_filter( 'content_filtered_save_pre', 'wp_filter_global_styles_post' ) ) {
60 remove_filter( 'content_filtered_save_pre', 'wp_filter_global_styles_post', 9 );
61 add_filter( 'content_filtered_save_pre', 'gutenberg_filter_global_styles_post', 9 );
62 }
63
64 }
65 add_action( 'init', 'gutenberg_override_core_kses_init_filters' );
66 add_action( 'set_current_user', 'gutenberg_override_core_kses_init_filters' );
67