From 07a02852efacc49cf0c1cf0662471106abf12e59 Mon Sep 17 00:00:00 2001 From: ryan Date: Thu, 21 Sep 2006 21:05:38 +0000 Subject: [PATCH] Make sure query vars are set before use. Props Alex King. fixes #3154 git-svn-id: http://svn.automattic.com/wordpress/trunk@4205 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/query.php | 47 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/wp-includes/query.php b/wp-includes/query.php index 298390e32..a528943d9 100644 --- a/wp-includes/query.php +++ b/wp-includes/query.php @@ -329,6 +329,44 @@ class WP_Query { function parse_query_vars() { $this->parse_query(''); } + + function fill_query_vars($array) { + $keys = array( + 'error' + , 'm' + , 'p' + , 'subpost' + , 'subpost_id' + , 'attachment' + , 'attachment_id' + , 'name' + , 'hour' + , 'static' + , 'pagename' + , 'page_id' + , 'second' + , 'minute' + , 'hour' + , 'day' + , 'monthnum' + , 'year' + , 'w' + , 'category_name' + , 'author_name' + , 'feed' + , 'tb' + , 'paged' + , 'comments_popup' + , 'preview' + ); + + foreach ($keys as $key) { + if ( !isset($array[$key])) + $array[$key] = ''; + } + + return $array; + } // Parse a query string and set query type booleans. function parse_query ($query) { @@ -341,7 +379,9 @@ class WP_Query { $this->query = $query; $this->query_vars = $qv; } - + + $qv = $this->fill_query_vars($qv); + if ( ! empty($qv['robots']) ) { $this->is_robots = true; return; @@ -530,6 +570,8 @@ class WP_Query { // Shorthand. $q = &$this->query_vars; + + $q = $this->fill_query_vars($q); // First let's clear some variables $distinct = ''; @@ -540,6 +582,7 @@ class WP_Query { $where = ''; $limits = ''; $join = ''; + $search = ''; if ( !isset($q['post_type']) ) $q['post_type'] = 'post'; @@ -909,12 +952,12 @@ class WP_Query { } if (($q['what_to_show'] == 'posts')) { - $q['offset'] = abs(intval($q['offset'])); if ( empty($q['offset']) ) { $pgstrt = ''; $pgstrt = (intval($page) -1) * $q['posts_per_page'] . ', '; $limits = 'LIMIT '.$pgstrt.$q['posts_per_page']; } else { // we're ignoring $page and using 'offset' + $q['offset'] = abs(intval($q['offset'])); $pgstrt = $q['offset'] . ', '; $limits = 'LIMIT ' . $pgstrt . $q['posts_per_page']; }