Make WordPress Core

Ticket #18954: 18954.patch

File 18954.patch, 3.5 KB (added by A5hleyRich, 10 years ago)
  • src/wp-admin/includes/misc.php

    diff --git src/wp-admin/includes/misc.php src/wp-admin/includes/misc.php
    index 367611b..b6f7f12 100644
    function wp_doc_link_parse( $content ) { 
    365365 */
    366366function set_screen_options() {
    367367
    368         if ( isset($_POST['wp_screen_options']) && is_array($_POST['wp_screen_options']) ) {
     368        if ( isset( $_POST['wp_screen_options'] ) && is_array( $_POST['wp_screen_options'] ) ) {
    369369                check_admin_referer( 'screen-options-nonce', 'screenoptionnonce' );
    370370
    371                 if ( !$user = wp_get_current_user() )
     371                if ( ! $user = wp_get_current_user() ) {
    372372                        return;
     373                }
     374
    373375                $option = $_POST['wp_screen_options']['option'];
    374                 $value = $_POST['wp_screen_options']['value'];
     376                $value  = (int) $_POST['wp_screen_options']['value'];
    375377
    376                 if ( $option != sanitize_key( $option ) )
     378                if ( $option != sanitize_key( $option ) ) {
     379                        return;
     380                }
     381                if ( $value < 1 || $value > 999 ) {
    377382                        return;
     383                }
    378384
    379                 $map_option = $option;
    380                 $type = str_replace('edit_', '', $map_option);
    381                 $type = str_replace('_per_page', '', $type);
    382                 if ( in_array( $type, get_taxonomies() ) )
    383                         $map_option = 'edit_tags_per_page';
    384                 elseif ( in_array( $type, get_post_types() ) )
    385                         $map_option = 'edit_per_page';
    386                 else
    387                         $option = str_replace('-', '_', $option);
    388 
    389                 switch ( $map_option ) {
    390                         case 'edit_per_page':
    391                         case 'users_per_page':
    392                         case 'edit_comments_per_page':
    393                         case 'upload_per_page':
    394                         case 'edit_tags_per_page':
    395                         case 'plugins_per_page':
    396                         // Network admin
    397                         case 'sites_network_per_page':
    398                         case 'users_network_per_page':
    399                         case 'site_users_network_per_page':
    400                         case 'plugins_network_per_page':
    401                         case 'themes_network_per_page':
    402                         case 'site_themes_network_per_page':
    403                                 $value = (int) $value;
    404                                 if ( $value < 1 || $value > 999 )
    405                                         return;
    406                                 break;
    407                         default:
    408 
    409                                 /**
    410                                  * Filter a screen option value before it is set.
    411                                  *
    412                                  * The filter can also be used to modify non-standard [items]_per_page
    413                                  * settings. See the parent function for a full list of standard options.
    414                                  *
    415                                  * Returning false to the filter will skip saving the current option.
    416                                  *
    417                                  * @since 2.8.0
    418                                  *
    419                                  * @see set_screen_options()
    420                                  *
    421                                  * @param bool|int $value  Screen option value. Default false to skip.
    422                                  * @param string   $option The option name.
    423                                  * @param int      $value  The number of rows to use.
    424                                  */
    425                                 $value = apply_filters( 'set-screen-option', false, $option, $value );
    426 
    427                                 if ( false === $value )
    428                                         return;
    429                                 break;
     385                $option = str_replace( '-', '_', $option );
     386
     387                /**
     388                 * Filter a screen option value before it is set.
     389                 *
     390                 * Returning false to the filter will skip saving the current option.
     391                 *
     392                 * @since 2.8.0
     393                 *
     394                 * @see   set_screen_options()
     395                 *
     396                 * @param bool|int $value  Screen option value. Default false to skip.
     397                 * @param string   $option The option name.
     398                 * @param int      $value  The number of rows to use.
     399                 */
     400                $filtered = apply_filters( 'set-screen-option', false, $option, $value );
     401
     402                // Check for null to handle filters that return nothing
     403                if ( null !== $filtered ) {
     404                        $value = $filtered;
     405                }
     406                if ( false === $value ) {
     407                        return;
    430408                }
    431409
    432                 update_user_meta($user->ID, $option, $value);
    433                 wp_safe_redirect( remove_query_arg( array('pagenum', 'apage', 'paged'), wp_get_referer() ) );
     410                update_user_meta( $user->ID, $option, $value );
     411                wp_safe_redirect( remove_query_arg( array( 'pagenum', 'apage', 'paged' ), wp_get_referer() ) );
    434412                exit;
    435413        }
    436414}