diff --git a/wp-includes/formatting.php b/wp-includes/formatting.php index 4e32f0afc..adf95cfb9 100644 --- a/wp-includes/formatting.php +++ b/wp-includes/formatting.php @@ -1188,4 +1188,11 @@ function sanitize_option($option, $value) { // Remember to call stripslashes! return $value; } +function wp_parse_str( $string, &$array ) { + parse_str( $string, $array ); + if ( get_magic_quotes_gpc() ) + $array = stripslashes_deep( $array ); // parse_str() adds slashes if magicquotes is on. See: http://php.net/parse_str + $array = apply_filters( 'wp_parse_str', $array ); +} + ?> diff --git a/wp-includes/functions.php b/wp-includes/functions.php index 6df88d3cc..2740e127d 100644 --- a/wp-includes/functions.php +++ b/wp-includes/functions.php @@ -604,9 +604,7 @@ function add_query_arg() { $query = $uri; } - parse_str($query, $qs); - if ( get_magic_quotes_gpc() ) - $qs = stripslashes_deep($qs); // parse_str() adds slashes if magicquotes is on. See: http://php.net/parse_str + wp_parse_str($query, $qs); $qs = urlencode_deep($qs); if ( is_array(func_get_arg(0)) ) { $kayvees = func_get_arg(0); @@ -1288,20 +1286,15 @@ function smilies_init() { } function wp_parse_args( $args, $defaults = '' ) { - if ( is_array( $args ) ) { + if ( is_array( $args ) ) $r =& $args; - } else { - parse_str( $args, $r ); - if ( get_magic_quotes_gpc() ) { - $r = stripslashes_deep( $r ); - } - } + else + wp_parse_str( $args, $r ); - if ( is_array( $defaults ) ) { + if ( is_array( $defaults ) ) return array_merge( $defaults, $r ); - } else { + else return $r; - } } function wp_maybe_load_widgets() { @@ -1324,4 +1317,4 @@ function wp_ob_end_flush_all() while ( @ob_end_flush() ); } -?> \ No newline at end of file +?> diff --git a/wp-includes/general-template.php b/wp-includes/general-template.php index 1eaf14e33..92f6f9322 100644 --- a/wp-includes/general-template.php +++ b/wp-includes/general-template.php @@ -968,27 +968,24 @@ function language_attributes() { echo $output; } -function paginate_links( $arg = '' ) { - if ( is_array($arg) ) - $a = &$arg; - else - parse_str($arg, $a); +function paginate_links( $args = '' ) { + $defaults = array( + 'base' => '%_%', // http://example.com/all_posts.php%_% : %_% is replaced by format (below) + 'format' => '?page=%#%', // ?page=%#% : %#% is replaced by the page number + 'total' => 1, + 'current' => 0, + 'show_all' => false, + 'prev_next' => true, + 'prev_text' => __('« Previous'), + 'next_text' => __('Next »'), + 'end_size' => 1, // How many numbers on either end including the end + 'mid_size' => 2, // How many numbers to either side of current not including current + 'type' => 'plain', + 'add_args' => false // array of query args to aadd + ); - // Defaults - $base = '%_%'; // http://example.com/all_posts.php%_% : %_% is replaced by format (below) - $format = '?page=%#%'; // ?page=%#% : %#% is replaced by the page number - $total = 1; - $current = 0; - $show_all = false; - $prev_next = true; - $prev_text = __('« Previous'); - $next_text = __('Next »'); - $end_size = 1; // How many numbers on either end including the end - $mid_size = 2; // How many numbers to either side of current not including current - $type = 'plain'; - $add_args = false; // array of query args to aadd - - extract($a); + $args = wp_parse_args( $args, $defaults ); + extract($args, EXTR_SKIP); // Who knows what else people pass in $args $total = (int) $total;