WordPress.org

Make WordPress Core

Ticket #30613: 30613.diff

File 30613.diff, 17.9 KB (added by pento, 6 years ago)
  • src/wp-admin/customize.php

     
    303303                }
    304304        }
    305305
     306        $settings = wp_json_encode( $settings );
     307        if ( false === $settings ) {
     308                $settings = "[]";
     309        }
     310
    306311        ?>
    307312        <script type="text/javascript">
    308                 var _wpCustomizeSettings = <?php echo wp_json_encode( $settings ); ?>;
     313                var _wpCustomizeSettings = <?php echo $settings; ?>;
    309314        </script>
    310315</div>
    311316</body>
  • src/wp-admin/includes/ajax-actions.php

     
    289289                );
    290290        }
    291291
    292         wp_die( wp_json_encode( $return ) );
     292        $return = wp_json_encode( $return );
     293        if ( false === $return ) {
     294                $return = "[]";
     295        }
     296
     297        wp_die( $return );
    293298}
    294299
    295300/**
     
    13731378
    13741379                $markup = ob_get_clean();
    13751380
    1376                 echo wp_json_encode(array(
     1381                $json = wp_json_encode( array(
    13771382                        'replace-id' => $type . '-' . $item->name,
    13781383                        'markup' => $markup,
    1379                 ));
     1384                ) );
     1385                if ( false === $json ) {
     1386                        $json = "[]";
     1387                }
     1388
     1389                echo $json;
    13801390        }
    13811391
    13821392        wp_die();
     
    14021412        if ( ! isset( $results ) )
    14031413                wp_die( 0 );
    14041414
    1405         echo wp_json_encode( $results );
     1415        $results = wp_json_encode( $results );
     1416        if ( false === $results ) {
     1417                $results = "[]";
     1418        }
     1419
     1420        echo $results;
    14061421        echo "\n";
    14071422
    14081423        wp_die();
     
    19061921                case 'save' :
    19071922                        $msg = wp_save_image($attachment_id);
    19081923                        $msg = wp_json_encode($msg);
     1924                        if ( false === $msg ) {
     1925                                $msg = "{}";
     1926                        }
    19091927                        wp_die( $msg );
    19101928                        break;
    19111929                case 'scale' :
  • src/wp-admin/includes/class-wp-list-table.php

     
    10811081                        $response['total_pages_i18n'] = number_format_i18n( $this->_pagination_args['total_pages'] );
    10821082                }
    10831083
    1084                 die( wp_json_encode( $response ) );
     1084                $response = wp_json_encode( $response );
     1085                if ( false === $response ) {
     1086                        $response = "[]";
     1087                }
     1088
     1089                die( $response );
    10851090        }
    10861091
    10871092        /**
     
    10981103                        )
    10991104                );
    11001105
    1101                 printf( "<script type='text/javascript'>list_args = %s;</script>\n", wp_json_encode( $args ) );
     1106                $args = wp_json_encode( $args );
     1107                if ( false === $args ) {
     1108                        $args = "[]";
     1109                }
     1110
     1111                printf( "<script type='text/javascript'>list_args = %s;</script>\n", $args );
    11021112        }
    11031113}
  • src/wp-admin/includes/class-wp-themes-list-table.php

     
    276276                        'total_pages' => ! empty( $this->_pagination_args['total_pages'] ) ? $this->_pagination_args['total_pages'] : 1,
    277277                );
    278278
    279                 if ( is_array( $extra_args ) )
     279                if ( is_array( $extra_args ) ) {
    280280                        $args = array_merge( $args, $extra_args );
     281                }
    281282
    282                 printf( "<script type='text/javascript'>var theme_list_args = %s;</script>\n", wp_json_encode( $args ) );
     283                $args = wp_json_encode( $args );
     284                if ( false === $args ) {
     285                        $args = "[]";
     286                }
     287
     288                printf( "<script type='text/javascript'>var theme_list_args = %s;</script>\n", $args );
    283289                parent::_js_vars();
    284290        }
    285291}
  • src/wp-admin/includes/media.php

     
    18321832$large_size_w = absint( get_option('large_size_w') );
    18331833if( !$large_size_w )
    18341834        $large_size_w = 1024;
     1835
     1836$plupload_init = wp_json_encode( $plupload_init );
     1837if ( false === $plupload_init ) {
     1838        $plupload_init = "[]";
     1839}
    18351840?>
    18361841var resize_height = <?php echo $large_size_h; ?>, resize_width = <?php echo $large_size_w; ?>,
    1837 wpUploaderInit = <?php echo wp_json_encode( $plupload_init ); ?>;
     1842wpUploaderInit = <?php echo $plupload_init; ?>;
    18381843</script>
    18391844
    18401845<div id="plupload-upload-ui" class="hide-if-no-js">
  • src/wp-admin/includes/misc.php

     
    616616                <?php
    617617                wp_nonce_field( 'save-color-scheme', 'color-nonce', false );
    618618                foreach ( $_wp_admin_css_colors as $color => $color_info ) :
    619 
     619                        $icon_colors = wp_json_encode( array( 'icons' => $color_info->icon_colors ) );
     620                        if ( false === $icon_colors ) {
     621                                $icon_colors = "[]";
     622                        }
    620623                        ?>
    621624                        <div class="color-option <?php echo ( $color == $current_color ) ? 'selected' : ''; ?>">
    622625                                <input name="admin_color" id="admin_color_<?php echo esc_attr( $color ); ?>" type="radio" value="<?php echo esc_attr( $color ); ?>" class="tog" <?php checked( $color, $current_color ); ?> />
    623626                                <input type="hidden" class="css_url" value="<?php echo esc_url( $color_info->url ); ?>" />
    624                                 <input type="hidden" class="icon_colors" value="<?php echo esc_attr( wp_json_encode( array( 'icons' => $color_info->icon_colors ) ) ); ?>" />
     627                                <input type="hidden" class="icon_colors" value="<?php echo esc_attr( $icon_colors ); ?>" />
    625628                                <label for="admin_color_<?php echo esc_attr( $color ); ?>"><?php echo esc_html( $color_info->name ); ?></label>
    626629                                <table class="color-palette">
    627630                                        <tr>
     
    665668                $icon_colors = array( 'base' => '#999', 'focus' => '#2ea2cc', 'current' => '#fff' );
    666669        }
    667670
    668         echo '<script type="text/javascript">var _wpColorScheme = ' . wp_json_encode( array( 'icons' => $icon_colors ) ) . ";</script>\n";
     671        $icon_colors = wp_json_encode( array( 'icons' => $icon_colors ) );
     672        if ( false === $icon_colors ) {
     673                $icon_colors = "[]";
     674        }
     675
     676        echo "<script type='text/javascript'>var _wpColorScheme = $icon_colors;</script>\n";
    669677}
    670678add_action( 'admin_head', 'wp_color_scheme_settings' );
    671679
  • src/wp-admin/includes/nav-menu.php

     
    1 <?php
     1\<?php
    22
    33/**
    44 * Create HTML list of nav menu input items.
     
    356356                                if ( 'markup' == $response_format ) {
    357357                                        echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( get_post( $object_id ) ) ), 0, (object) $args );
    358358                                } elseif ( 'json' == $response_format ) {
    359                                         echo wp_json_encode(
     359                                        $json = wp_json_encode(
    360360                                                array(
    361361                                                        'ID' => $object_id,
    362362                                                        'post_title' => get_the_title( $object_id ),
    363363                                                        'post_type' => get_post_type( $object_id ),
    364364                                                )
    365365                                        );
    366                                         echo "\n";
     366
     367                                        if ( false === $json ) {
     368                                                $json = "[]";
     369                                        }
     370
     371                                        echo "$json\n";
    367372                                }
    368373                        }
    369374                } elseif ( taxonomy_exists( $object_type ) ) {
     
    373378                                        echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( get_term( $object_id, $object_type ) ) ), 0, (object) $args );
    374379                                } elseif ( 'json' == $response_format ) {
    375380                                        $post_obj = get_term( $object_id, $object_type );
    376                                         echo wp_json_encode(
     381                                        $json = wp_json_encode(
    377382                                                array(
    378383                                                        'ID' => $object_id,
    379384                                                        'post_title' => $post_obj->name,
    380385                                                        'post_type' => $object_type,
    381386                                                )
    382387                                        );
    383                                         echo "\n";
     388
     389                                        if ( false === $json ) {
     390                                                $json = "[]";
     391                                        }
     392
     393                                        echo "$json\n";
    384394                                }
    385395                        }
    386396
     
    401411                                        $var_by_ref = get_the_ID();
    402412                                        echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( get_post( $var_by_ref ) ) ), 0, (object) $args );
    403413                                } elseif ( 'json' == $response_format ) {
    404                                         echo wp_json_encode(
     414                                        $json = wp_json_encode(
    405415                                                array(
    406416                                                        'ID' => get_the_ID(),
    407417                                                        'post_title' => get_the_title(),
    408418                                                        'post_type' => get_post_type(),
    409419                                                )
    410420                                        );
    411                                         echo "\n";
     421
     422                                        if ( false === $json ) {
     423                                                $json = "[]";
     424                                        }
     425
     426                                        echo "$json\n";
    412427                                }
    413428                        }
    414429                } elseif ( 'taxonomy' == $matches[1] ) {
     
    422437                                if ( 'markup' == $response_format ) {
    423438                                        echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( $term ) ), 0, (object) $args );
    424439                                } elseif ( 'json' == $response_format ) {
    425                                         echo wp_json_encode(
     440                                        $json = wp_json_encode(
    426441                                                array(
    427442                                                        'ID' => $term->term_id,
    428443                                                        'post_title' => $term->name,
    429444                                                        'post_type' => $matches[2],
    430445                                                )
    431446                                        );
    432                                         echo "\n";
     447
     448                                        if ( false === $json ) {
     449                                                $json = "[]";
     450                                        }
     451
     452                                        echo "$json\n";
    433453                                }
    434454                        }
    435455                }
  • src/wp-admin/includes/template.php

     
    19581958         * @param array  $args Arguments to be passed to the pointer JS (see wp-pointer.js).
    19591959         */
    19601960        private static function print_js( $pointer_id, $selector, $args ) {
    1961                 if ( empty( $pointer_id ) || empty( $selector ) || empty( $args ) || empty( $args['content'] ) )
     1961                if ( empty( $pointer_id ) || empty( $selector ) || empty( $args ) || empty( $args['content'] ) ) {
    19621962                        return;
     1963                }
    19631964
     1965                $options = wp_json_encode( $args );
     1966                if ( false === $options ) {
     1967                        $options = "false";
     1968                }
     1969
    19641970                ?>
    19651971                <script type="text/javascript">
    19661972                //<![CDATA[
    19671973                (function($){
    1968                         var options = <?php echo wp_json_encode( $args ); ?>, setup;
     1974                        var options = <?php echo $options; ?>, setup;
    19691975
    1970                         if ( ! options )
     1976                        if ( ! options ) {
    19711977                                return;
     1978                        }
    19721979
    19731980                        options = $.extend( options, {
    19741981                                close: function() {
  • src/wp-admin/options-general.php

     
    2626 * @since 3.5.0
    2727 */
    2828function options_general_add_js() {
     29        $home_url = wp_json_encode( get_home_url() );
     30        if ( false === $home_url ) {
     31                $home_url = "''";
     32        }
    2933?>
    3034<script type="text/javascript">
    3135//<![CDATA[
    3236        jQuery(document).ready(function($){
    3337                var $siteName = $( '#wp-admin-bar-site-name' ).children( 'a' ).first(),
    34                         homeURL = ( <?php echo wp_json_encode( get_home_url() ); ?> || '' ).replace( /^(https?:\/\/)?(www\.)?/, '' );
     38                        homeURL = ( <?php echo $home_url; ?> || '' ).replace( /^(https?:\/\/)?(www\.)?/, '' );
    3539
    3640                $( '#blogname' ).on( 'input', function() {
    3741                        var title = $.trim( $( this ).val() ) || homeURL;
  • src/wp-includes/class-wp-customize-manager.php

     
    528528                        $settings['activeControls'][ $id ] = $control->active();
    529529                }
    530530
     531                $settings = wp_json_encode( $settings );
     532                if ( false === $settings ) {
     533                        $settings = "[]";
     534                }
     535
    531536                ?>
    532537                <script type="text/javascript">
    533                         var _wpCustomizeSettings = <?php echo wp_json_encode( $settings ); ?>;
     538                        var _wpCustomizeSettings = <?php echo $settings; ?>;
    534539                </script>
    535540                <?php
    536541        }
  • src/wp-includes/class-wp-customize-widgets.php

     
    739739                        unset( $registered_widget['callback'] ); // may not be JSON-serializeable
    740740                }
    741741
     742                $settings = wp_json_encode( $settings );
     743                if ( false === $settings ) {
     744                        $settings = "[]";
     745                }
     746
    742747                $wp_scripts->add_data(
    743748                        'customize-widgets',
    744749                        'data',
    745                         sprintf( 'var _wpCustomizeWidgetsSettings = %s;', wp_json_encode( $settings ) )
     750                        sprintf( 'var _wpCustomizeWidgetsSettings = %s;', $settings )
    746751                );
    747752        }
    748753
     
    10551060                        unset( $registered_widget['callback'] ); // may not be JSON-serializeable
    10561061                }
    10571062
     1063                $settings = wp_json_encode( $settings );
     1064                if ( false === $settings ) {
     1065                        $settings = "[]";
     1066                }
     1067
    10581068                ?>
    10591069                <script type="text/javascript">
    1060                         var _wpWidgetCustomizerPreviewSettings = <?php echo wp_json_encode( $settings ); ?>;
     1070                        var _wpWidgetCustomizerPreviewSettings = <?php echo $settings; ?>;
    10611071                </script>
    10621072                <?php
    10631073        }
  • src/wp-includes/class-wp-editor.php

     
    518518                                );
    519519
    520520                                if ( ! empty( $mce_external_plugins ) ) {
    521                                         self::$first_init['external_plugins'] = wp_json_encode( $mce_external_plugins );
     521                                        $mce_external_plugins_json = wp_json_encode( $mce_external_plugins );
     522                                        if ( false === $mce_external_plugins_json ) {
     523                                                $mce_external_plugins_json = "[]";
     524                                        }
     525
     526                                        self::$first_init['external_plugins'] = $mce_external_plugins_json;
    522527                                }
    523528
    524529                                $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
     
    10411046                        $mce_translation['_dir'] = 'rtl';
    10421047                }
    10431048
     1049                $mce_translation = wp_json_encode( $mce_translation );
     1050                if ( false === $mce_translation ) {
     1051                        $mce_translation = "[]";
     1052                }
     1053
    10441054                if ( $json_only ) {
    1045                         return wp_json_encode( $mce_translation );
     1055                        return $mce_translation;
    10461056                }
    10471057
    10481058                $baseurl = self::$baseurl ? self::$baseurl : includes_url( 'js/tinymce' );
    10491059
    1050                 return "tinymce.addI18n( '$mce_locale', " . wp_json_encode( $mce_translation ) . ");\n" .
     1060                return "tinymce.addI18n( '$mce_locale', $mce_translation );\n" .
    10511061                        "tinymce.ScriptLoader.markDone( '$baseurl/langs/$mce_locale.js' );\n";
    10521062        }
    10531063
  • src/wp-includes/class.wp-scripts.php

     
    181181                        $l10n[$key] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8');
    182182                }
    183183
    184                 $script = "var $object_name = " . wp_json_encode( $l10n ) . ';';
     184                $json = wp_json_encode( $l10n );
     185                if ( false === $json ) {
     186                        $json = "[]";
     187                }
    185188
     189                $script = "var $object_name = $json;";
     190
    186191                if ( !empty($after) )
    187192                        $script .= "\n$after;";
    188193
  • src/wp-includes/functions.php

     
    27812781 */
    27822782function wp_send_json( $response ) {
    27832783        @header( 'Content-Type: application/json; charset=' . get_option( 'blog_charset' ) );
    2784         echo wp_json_encode( $response );
    2785         if ( defined( 'DOING_AJAX' ) && DOING_AJAX )
     2784
     2785        $json = wp_json_encode( $response );
     2786        if ( false === $json ) {
     2787                $json = "false";
     2788        }
     2789
     2790        echo $json;
     2791
     2792        if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
    27862793                wp_die();
    2787         else
     2794        } else {
    27882795                die;
     2796        }
    27892797}
    27902798
    27912799/**
  • src/wp-includes/media.php

     
    13601360        $safe_type = esc_attr( $atts['type'] );
    13611361        $safe_style = esc_attr( $atts['style'] );
    13621362
     1363        $data_json = wp_json_encode( $data );
     1364        if ( false === $data_json ) {
     1365                $data_json = "[]";
     1366        }
     1367
    13631368        ob_start();
    13641369
    13651370        if ( 1 === $instance ) {
     
    13931398        }
    13941399        ?></ol>
    13951400        </noscript>
    1396         <script type="application/json" class="wp-playlist-script"><?php echo wp_json_encode( $data ) ?></script>
     1401        <script type="application/json" class="wp-playlist-script"><?php echo $data_json; ?></script>
    13971402</div>
    13981403        <?php
    13991404        return ob_get_clean();
     
    25752580                'limitExceeded' => is_multisite() && ! is_upload_space_available()
    25762581        );
    25772582
    2578         $script = 'var _wpPluploadSettings = ' . wp_json_encode( $settings ) . ';';
     2583        $settings = wp_json_encode( $settings );
     2584        if ( false === $settings ) {
     2585                $settings = "[]";
     2586        }
    25792587
     2588        $script = "var _wpPluploadSettings = $settings;";
     2589
    25802590        if ( $data )
    25812591                $script = "$data\n$script";
    25822592
  • src/wp-includes/theme.php

     
    19551955                ),
    19561956        );
    19571957
    1958         $script = 'var _wpCustomizeLoaderSettings = ' . wp_json_encode( $settings ) . ';';
     1958        $settings = wp_json_encode( $settings );
     1959        if ( false === $settings ) {
     1960                $settings = "[]";
     1961        }
     1962        $script = "var _wpCustomizeLoaderSettings = $settings;";
    19591963
    19601964        $data = $wp_scripts->get_data( 'customize-loader', 'data' );
    19611965        if ( $data )
  • src/wp-includes/update.php

     
    9393                'multisite_enabled' => $multisite_enabled,
    9494        );
    9595
     96        $json = wp_json_encode( $translations );
     97        if ( false === $json ) {
     98                $json = "[]";
     99        }
     100
    96101        $post_body = array(
    97                 'translations' => wp_json_encode( $translations ),
     102                'translations' => $json,
    98103        );
    99104
    100105        if ( is_array( $extra_stats ) )
     
    277282                        'plugins'      => wp_json_encode( $to_send ),
    278283                        'translations' => wp_json_encode( $translations ),
    279284                        'locale'       => wp_json_encode( $locales ),
    280                         'all'          => wp_json_encode( true ),
     285                        'all'          => "true",
    281286                ),
    282287                'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' )
    283288        );
     
    286291                $options['body']['update_stats'] = wp_json_encode( $extra_stats );
    287292        }
    288293
     294        // Make sure wp_json_encode() was able to encode everything
     295        foreach ( $options['body'] as &$item ) {
     296                if ( false === $item ) {
     297                        $item = "[]";
     298                }
     299        }
     300        unset( $item );
     301
    289302        $url = $http_url = 'http://api.wordpress.org/plugins/update-check/1.1/';
    290303        if ( $ssl = wp_http_supports( array( 'ssl' ) ) )
    291304                $url = set_url_scheme( $url, 'https' );
     
    448461                $options['body']['update_stats'] = wp_json_encode( $extra_stats );
    449462        }
    450463
     464        // Make sure wp_json_encode() was able to encode everything
     465        foreach ( $options['body'] as &$item ) {
     466                if ( false === $item ) {
     467                        $item = "[]";
     468                }
     469        }
     470        unset( $item );
     471
    451472        $url = $http_url = 'http://api.wordpress.org/themes/update-check/1.1/';
    452473        if ( $ssl = wp_http_supports( array( 'ssl' ) ) )
    453474                $url = set_url_scheme( $url, 'https' );