Index: includes/common.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/common.inc,v
retrieving revision 1.990
diff -u -p -r1.990 common.inc
--- includes/common.inc 16 Sep 2009 15:28:00 -0000 1.990
+++ includes/common.inc 16 Sep 2009 16:50:14 -0000
@@ -317,6 +317,48 @@ function drupal_get_feeds($delimiter = "
*/
/**
+ * Process a request query string array to remove unwanted elements.
+ *
+ * @param $query
+ * The array to be processed. Defaults to $_GET.
+ * @param $exclude
+ * The array filled with keys to be excluded. Use parent[child] to exclude
+ * nested items. Defaults to array_merge(array('q'), array_keys($_COOKIE)).
+ * @param $parent
+ * Internal. Should not be passed, only used in recursive calls.
+ * @return
+ * An urlencoded string which can be appended to/as the URL query string.
+ */
+function drupal_get_query_string($query = NULL, $exclude = NULL, $parent = '') {
+ $params = array();
+ if (!isset($query)) {
+ $query = $_GET;
+ }
+ if (!isset($exclude)) {
+ $exclude = array_merge(array('q'), array_keys($_COOKIE));
+ }
+
+ foreach ($query as $key => $value) {
+ $string_key = $key;
+ if ($parent) {
+ $string_key = $parent . '[' . $key . ']';
+ }
+ if (in_array($string_key, $exclude)) {
+ continue;
+ }
+
+ if (is_array($value)) {
+ $params[$key] = drupal_get_query_string($value, $exclude, $key);
+ }
+ else {
+ $params[$key] = $value;
+ }
+ }
+
+ return $params;
+}
+
+/**
* Parse an array into a valid urlencoded query string.
*
* @param $query
@@ -329,7 +371,7 @@ function drupal_get_feeds($delimiter = "
* @return
* An urlencoded string which can be appended to/as the URL query string.
*/
-function drupal_query_string_encode($query, $exclude = array(), $parent = '') {
+function drupal_query_string_encode(array $query, $exclude = array(), $parent = '') {
$params = array();
foreach ($query as $key => $value) {
@@ -345,6 +387,9 @@ function drupal_query_string_encode($que
if (is_array($value)) {
$params[] = drupal_query_string_encode($value, $exclude, $key);
}
+ elseif (is_null($value)) {
+ $params[] = $key;
+ }
else {
$params[] = $key . '=' . rawurlencode($value);
}
@@ -365,7 +410,7 @@ function drupal_query_string_encode($que
*/
function drupal_get_destination() {
if (isset($_REQUEST['destination'])) {
- return 'destination=' . urlencode($_REQUEST['destination']);
+ return array('destination' => $_REQUEST['destination']);
}
else {
// Use $_GET here to retrieve the original path in source form.
@@ -374,7 +419,7 @@ function drupal_get_destination() {
if ($query != '') {
$path .= '?' . $query;
}
- return 'destination=' . urlencode($path);
+ return array('destination' => $path);
}
}
@@ -417,7 +462,7 @@ function drupal_get_destination() {
* supported.
* @see drupal_get_destination()
*/
-function drupal_goto($path = '', $query = NULL, $fragment = NULL, $http_response_code = 302) {
+function drupal_goto($path = '', array $query = array(), $fragment = NULL, $http_response_code = 302) {
if (isset($_REQUEST['destination'])) {
extract(parse_url(urldecode($_REQUEST['destination'])));
@@ -2179,7 +2224,7 @@ function url($path = NULL, array $option
// Merge in defaults.
$options += array(
'fragment' => '',
- 'query' => '',
+ 'query' => array(),
'absolute' => FALSE,
'alias' => FALSE,
'https' => FALSE,
@@ -2197,12 +2242,12 @@ function url($path = NULL, array $option
if (function_exists('language_url_rewrite')) {
language_url_rewrite($path, $options);
}
+ if ($options['query']) {
+ $options['query'] = drupal_query_string_encode($options['query']);
+ }
if ($options['fragment']) {
$options['fragment'] = '#' . $options['fragment'];
}
- if (is_array($options['query'])) {
- $options['query'] = drupal_query_string_encode($options['query']);
- }
if ($options['external']) {
// Split off the fragment.
@@ -2278,15 +2323,15 @@ function url($path = NULL, array $option
}
else {
// Without Clean URLs.
- $variables = array();
+ $query = array();
if (!empty($path)) {
- $variables[] = 'q=' . $path;
+ $query[] = 'q=' . $path;
}
if (!empty($options['query'])) {
- $variables[] = $options['query'];
+ $query[] = $options['query'];
}
- if ($query = join('&', $variables)) {
- return $base . $script . '?' . $query . $options['fragment'];
+ if ($query) {
+ return $base . $script . '?' . implode('&', $query) . $options['fragment'];
}
else {
return $base . $options['fragment'];
Index: includes/form.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/form.inc,v
retrieving revision 1.372
diff -u -p -r1.372 form.inc
--- includes/form.inc 11 Sep 2009 04:09:26 -0000 1.372
+++ includes/form.inc 16 Sep 2009 00:33:59 -0000
@@ -2940,7 +2940,7 @@ function batch_process($redirect = NULL,
// Set the batch number in the session to guarantee that it will stay alive.
$_SESSION['batches'][$batch['id']] = TRUE;
- drupal_goto($batch['url'], 'op=start&id=' . $batch['id']);
+ drupal_goto($batch['url'], array('op' => 'start', 'id' => $batch['id']));
}
else {
// Non-progressive execution: bypass the whole progressbar workflow
Index: includes/pager.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/pager.inc,v
retrieving revision 1.71
diff -u -p -r1.71 pager.inc
--- includes/pager.inc 26 Aug 2009 04:58:23 -0000 1.71
+++ includes/pager.inc 16 Sep 2009 15:36:47 -0000
@@ -248,11 +248,11 @@ function pager_query($query, $limit = 10
* except for those pertaining to paging.
*/
function pager_get_querystring() {
- static $string = NULL;
- if (!isset($string)) {
- $string = drupal_query_string_encode($_REQUEST, array_merge(array('q', 'page'), array_keys($_COOKIE)));
+ static $query = NULL;
+ if (!isset($query)) {
+ $query = drupal_get_query_string($_REQUEST, array_merge(array('q', 'page'), array_keys($_COOKIE)));
}
- return $string;
+ return $query;
}
/**
@@ -535,11 +535,11 @@ function theme_pager_link($text, $page_n
$query = array();
if (count($parameters)) {
- $query[] = drupal_query_string_encode($parameters, array());
+ $query = drupal_get_query_string($parameters, array());
}
$querystring = pager_get_querystring();
- if ($querystring != '') {
- $query[] = $querystring;
+ if ($querystring) {
+ $query = array_merge($query, $querystring);
}
// Set each pager link title
@@ -561,7 +561,7 @@ function theme_pager_link($text, $page_n
}
}
- return l($text, $_GET['q'], array('attributes' => $attributes, 'query' => count($query) ? implode('&', $query) : NULL));
+ return l($text, $_GET['q'], array('attributes' => $attributes, 'query' => $query));
}
/**
Index: includes/tablesort.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/tablesort.inc,v
retrieving revision 1.53
diff -u -p -r1.53 tablesort.inc
--- includes/tablesort.inc 26 Aug 2009 04:58:23 -0000 1.53
+++ includes/tablesort.inc 16 Sep 2009 15:37:43 -0000
@@ -94,7 +94,7 @@ class TableSort extends SelectQueryExten
* except for those pertaining to table sorting.
*/
protected function getQueryString() {
- return drupal_query_string_encode($_REQUEST, array_merge(array('q', 'sort', 'order'), array_keys($_COOKIE)));
+ return tablesort_get_querystring();
}
/**
@@ -205,11 +205,8 @@ function tablesort_header($cell, $header
$ts['sort'] = 'asc';
$image = '';
}
-
- if (!empty($ts['query_string'])) {
- $ts['query_string'] = '&' . $ts['query_string'];
- }
- $cell['data'] = l($cell['data'] . $image, $_GET['q'], array('attributes' => array('title' => $title), 'query' => 'sort=' . $ts['sort'] . '&order=' . urlencode($cell['data']) . $ts['query_string'], 'html' => TRUE));
+ // @todo $ts['query_string']...
+ $cell['data'] = l($cell['data'] . $image, $_GET['q'], array('attributes' => array('title' => $title), 'query' => array('sort' => $ts['sort'], 'order' => $cell['data'], $ts['query_string']), 'html' => TRUE));
unset($cell['field'], $cell['sort']);
}
@@ -252,7 +249,7 @@ function tablesort_cell($cell, $header,
* except for those pertaining to table sorting.
*/
function tablesort_get_querystring() {
- return drupal_query_string_encode($_REQUEST, array_merge(array('q', 'sort', 'order'), array_keys($_COOKIE)));
+ return drupal_get_query_string($_REQUEST, array_merge(array('q', 'sort', 'order'), array_keys($_COOKIE)));
}
/**
Index: modules/aggregator/aggregator.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.test,v
retrieving revision 1.31
diff -u -p -r1.31 aggregator.test
--- modules/aggregator/aggregator.test 24 Aug 2009 17:11:42 -0000 1.31
+++ modules/aggregator/aggregator.test 16 Sep 2009 00:15:06 -0000
@@ -56,7 +56,7 @@ class AggregatorTestCase extends DrupalW
$feed_name = $this->randomName(10);
if (!$feed_url) {
$feed_url = url('rss.xml', array(
- 'query' => 'feed=' . $feed_name,
+ 'query' => array('feed' => $feed_name),
'absolute' => TRUE,
));
}
Index: modules/book/book.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/book/book.module,v
retrieving revision 1.513
diff -u -p -r1.513 book.module
--- modules/book/book.module 10 Sep 2009 12:33:43 -0000 1.513
+++ modules/book/book.module 16 Sep 2009 00:15:06 -0000
@@ -73,7 +73,7 @@ function book_node_view_link($node, $bui
$links['book_add_child'] = array(
'title' => t('Add child page'),
'href' => 'node/add/' . str_replace('_', '-', $child_type),
- 'query' => 'parent=' . $node->book['mlid'],
+ 'query' => array('parent' => $node->book['mlid']),
);
}
Index: modules/comment/comment.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/comment/comment.module,v
retrieving revision 1.769
diff -u -p -r1.769 comment.module
--- modules/comment/comment.module 11 Sep 2009 13:37:52 -0000 1.769
+++ modules/comment/comment.module 16 Sep 2009 16:40:10 -0000
@@ -445,7 +445,7 @@ function comment_new_page_count($num_com
}
if ($pageno >= 1) {
- $pagenum = "page=" . intval($pageno);
+ $pagenum = array('page' => intval($pageno));
}
return $pagenum;
@@ -2149,10 +2149,10 @@ function theme_comment_post_forbidden($n
// We cannot use drupal_get_destination() because these links
// sometimes appear on /node and taxonomy listing pages.
if (variable_get('comment_form_location_' . $node->type, COMMENT_FORM_BELOW) == COMMENT_FORM_SEPARATE_PAGE) {
- $destination = 'destination=' . rawurlencode("comment/reply/$node->nid#comment-form");
+ $destination = array('destination', "comment/reply/$node->nid#comment-form");
}
else {
- $destination = 'destination=' . rawurlencode("node/$node->nid#comment-form");
+ $destination = array('destination', "node/$node->nid#comment-form");
}
if (variable_get('user_register', 1)) {
Index: modules/comment/comment.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/comment/comment.test,v
retrieving revision 1.44
diff -u -p -r1.44 comment.test
--- modules/comment/comment.test 21 Aug 2009 14:27:44 -0000 1.44
+++ modules/comment/comment.test 16 Sep 2009 00:15:06 -0000
@@ -308,7 +308,7 @@ class CommentInterfaceTest extends Comme
$this->setCommentsPerPage(2);
$comment_new_page = $this->postComment($this->node, $this->randomName(), $this->randomName(), TRUE);
$this->assertTrue($this->commentExists($comment_new_page), t('Page one exists. %s'));
- $this->drupalGet('node/' . $this->node->nid, array('query' => 'page=1'));
+ $this->drupalGet('node/' . $this->node->nid, array('query' => array('page' => 1)));
$this->assertTrue($this->commentExists($reply, TRUE), t('Page two exists. %s'));
$this->setCommentsPerPage(50);
@@ -588,13 +588,13 @@ class CommentPagerTest extends CommentHe
$this->assertFalse($this->commentExists($comments[2]), t('Comment 3 does not appear on page 1.'));
// Check the second page.
- $this->drupalGet('node/' . $node->nid, array('query' => 'page=1'));
+ $this->drupalGet('node/' . $node->nid, array('query' => array('page' => 1)));
$this->assertTrue($this->commentExists($comments[1]), t('Comment 2 appears on page 2.'));
$this->assertFalse($this->commentExists($comments[0]), t('Comment 1 does not appear on page 2.'));
$this->assertFalse($this->commentExists($comments[2]), t('Comment 3 does not appear on page 2.'));
// Check the third page.
- $this->drupalGet('node/' . $node->nid, array('query' => 'page=2'));
+ $this->drupalGet('node/' . $node->nid, array('query' => array('page' => 2)));
$this->assertTrue($this->commentExists($comments[2]), t('Comment 3 appears on page 3.'));
$this->assertFalse($this->commentExists($comments[0]), t('Comment 1 does not appear on page 3.'));
$this->assertFalse($this->commentExists($comments[1]), t('Comment 2 does not appear on page 3.'));
@@ -608,21 +608,21 @@ class CommentPagerTest extends CommentHe
$this->setCommentsPerPage(2);
// We are still in flat view - the replies should not be on the first page,
// even though they are replies to the oldest comment.
- $this->drupalGet('node/' . $node->nid, array('query' => 'page=0'));
+ $this->drupalGet('node/' . $node->nid, array('query' => array('page' => 0)));
$this->assertFalse($this->commentExists($reply, TRUE), t('In flat mode, reply does not appear on page 1.'));
// If we switch to threaded mode, the replies on the oldest comment
// should be bumped to the first page and comment 6 should be bumped
// to the second page.
$this->setCommentSettings('comment_default_mode', COMMENT_MODE_THREADED, t('Switched to threaded mode.'));
- $this->drupalGet('node/' . $node->nid, array('query' => 'page=0'));
+ $this->drupalGet('node/' . $node->nid, array('query' => array('page' => 0)));
$this->assertTrue($this->commentExists($reply, TRUE), t('In threaded mode, reply appears on page 1.'));
$this->assertFalse($this->commentExists($comments[1]), t('In threaded mode, comment 2 has been bumped off of page 1.'));
// If (# replies > # comments per page) in threaded expanded view,
// the overage should be bumped.
$reply2 = $this->postComment(NULL, $this->randomName(), $this->randomName(), FALSE, TRUE);
- $this->drupalGet('node/' . $node->nid, array('query' => 'page=0'));
+ $this->drupalGet('node/' . $node->nid, array('query' => array('page' => 0)));
$this->assertFalse($this->commentExists($reply2, TRUE), t('In threaded mode where # replies > # comments per page, the newest reply does not appear on page 1.'));
$this->drupalLogout();
Index: modules/contact/contact.pages.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/contact/contact.pages.inc,v
retrieving revision 1.23
diff -u -p -r1.23 contact.pages.inc
--- modules/contact/contact.pages.inc 20 Jul 2009 18:51:33 -0000 1.23
+++ modules/contact/contact.pages.inc 16 Sep 2009 00:15:06 -0000
@@ -155,7 +155,7 @@ function contact_personal_page($account)
global $user;
if (!valid_email_address($user->mail)) {
- $output = t('You need to provide a valid e-mail address to contact other users. Please update your user information and try again.', array('@url' => url("user/$user->uid/edit", array('query' => 'destination=' . drupal_get_destination()))));
+ $output = t('You need to provide a valid e-mail address to contact other users. Please update your user information and try again.', array('@url' => url("user/$user->uid/edit", array('query' => drupal_get_destination()))));
}
elseif (!flood_is_allowed('contact', variable_get('contact_hourly_threshold', 3)) && !user_access('administer site-wide contact form')) {
$output = t("You cannot send more than %number messages per hour. Please try again later.", array('%number' => variable_get('contact_hourly_threshold', 3)));
Index: modules/field_ui/field_ui.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/field_ui/field_ui.admin.inc,v
retrieving revision 1.13
diff -u -p -r1.13 field_ui.admin.inc
--- modules/field_ui/field_ui.admin.inc 10 Sep 2009 22:31:58 -0000 1.13
+++ modules/field_ui/field_ui.admin.inc 16 Sep 2009 18:05:04 -0000
@@ -538,7 +538,8 @@ function field_ui_field_overview_form_su
}
if ($destinations) {
- $destinations[] = urldecode(substr(drupal_get_destination(), 12));
+ $destination = drupal_get_destination();
+ $destinations[] = urldecode(substr($destination['destination'], 12));
unset($_REQUEST['destination']);
$form_state['redirect'] = field_ui_get_destinations($destinations);
}
Index: modules/node/node.pages.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.pages.inc,v
retrieving revision 1.79
diff -u -p -r1.79 node.pages.inc
--- modules/node/node.pages.inc 5 Sep 2009 15:05:03 -0000 1.79
+++ modules/node/node.pages.inc 16 Sep 2009 18:07:49 -0000
@@ -300,7 +300,7 @@ function node_form(&$form_state, $node)
* Button submit function: handle the 'Delete' button on the node form.
*/
function node_form_delete_submit($form, &$form_state) {
- $destination = '';
+ $destination = array();
if (isset($_REQUEST['destination'])) {
$destination = drupal_get_destination();
unset($_REQUEST['destination']);
Index: modules/openid/tests/openid_test.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/openid/tests/openid_test.module,v
retrieving revision 1.3
diff -u -p -r1.3 openid_test.module
--- modules/openid/tests/openid_test.module 10 Jun 2009 20:13:20 -0000 1.3
+++ modules/openid/tests/openid_test.module 16 Sep 2009 00:15:06 -0000
@@ -229,5 +229,5 @@ function _openid_test_endpoint_authentic
// Put the signed message into the query string of a URL supplied by the
// Relying Party, and redirect the user.
drupal_set_header('Content-Type', 'text/plain');
- header('Location: ' . url($_REQUEST['openid_return_to'], array('query' => http_build_query($response, '', '&'), 'external' => TRUE)));
+ header('Location: ' . url($_REQUEST['openid_return_to'], array('query' => $response, 'external' => TRUE)));
}
Index: modules/search/search.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/search/search.test,v
retrieving revision 1.35
diff -u -p -r1.35 search.test
--- modules/search/search.test 11 Sep 2009 15:39:48 -0000 1.35
+++ modules/search/search.test 16 Sep 2009 00:15:06 -0000
@@ -499,7 +499,7 @@ class SearchCommentTestCase extends Drup
// Invoke search index update.
$this->drupalLogout();
- $this->drupalGet($GLOBALS['base_url'] . '/cron.php', array('external' => TRUE, 'query' => 'cron_key=' . variable_get('cron_key', 'drupal')));
+ $this->drupalGet($GLOBALS['base_url'] . '/cron.php', array('external' => TRUE, 'query' => array('cron_key' => variable_get('cron_key', 'drupal'))));
// Search for $title.
$edit = array(
@@ -521,7 +521,7 @@ class SearchCommentTestCase extends Drup
// Invoke search index update.
$this->drupalLogout();
- $this->drupalGet($GLOBALS['base_url'] . '/cron.php', array('external' => TRUE, 'query' => 'cron_key=' . variable_get('cron_key', 'drupal')));
+ $this->drupalGet($GLOBALS['base_url'] . '/cron.php', array('external' => TRUE, 'query' => array('cron_key' => variable_get('cron_key', 'drupal'))));
// Search for $title.
$this->drupalPost('', $edit, t('Search'));
Index: modules/simpletest/drupal_web_test_case.php
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/drupal_web_test_case.php,v
retrieving revision 1.148
diff -u -p -r1.148 drupal_web_test_case.php
--- modules/simpletest/drupal_web_test_case.php 14 Sep 2009 19:05:06 -0000 1.148
+++ modules/simpletest/drupal_web_test_case.php 16 Sep 2009 00:15:06 -0000
@@ -1003,7 +1003,7 @@ class DrupalWebTestCase extends DrupalTe
// Make a request to the logout page, and redirect to the user page, the
// idea being if you were properly logged out you should be seeing a login
// screen.
- $this->drupalGet('user/logout', array('query' => 'destination=user'));
+ $this->drupalGet('user/logout', array('query' => array('destination' => 'user')));
$pass = $this->assertField('name', t('Username field found.'), t('Logout'));
$pass = $pass && $this->assertField('pass', t('Password field found.'), t('Logout'));
@@ -1804,7 +1804,7 @@ class DrupalWebTestCase extends DrupalTe
$path = substr($path, $n);
}
if (isset($parts['query'])) {
- $options['query'] = $parts['query'];
+ parse_str($parts['query'], $options['query']);
}
$path = url($path, $options);
}
Index: modules/simpletest/tests/browser_test.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/browser_test.module,v
retrieving revision 1.1
diff -u -p -r1.1 browser_test.module
--- modules/simpletest/tests/browser_test.module 17 Aug 2009 06:08:47 -0000 1.1
+++ modules/simpletest/tests/browser_test.module 16 Sep 2009 00:15:06 -0000
@@ -60,7 +60,7 @@ function browser_test_print_post_form_su
function browser_test_refresh_meta() {
if (!isset($_GET['refresh'])) {
- $url = url('browser_test/refresh/meta', array('absolute' => TRUE, 'query' => 'refresh=true'));
+ $url = url('browser_test/refresh/meta', array('absolute' => TRUE, 'query' => array('refresh' => 'true')));
drupal_add_html_head('');
return '';
}
@@ -70,7 +70,7 @@ function browser_test_refresh_meta() {
function browser_test_refresh_header() {
if (!isset($_GET['refresh'])) {
- $url = url('browser_test/refresh/header', array('absolute' => TRUE, 'query' => 'refresh=true'));
+ $url = url('browser_test/refresh/header', array('absolute' => TRUE, 'query' => array('refresh' => 'true')));
drupal_set_header('Location', $url);
return '';
}
Index: modules/simpletest/tests/common.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/common.test,v
retrieving revision 1.72
diff -u -p -r1.72 common.test
--- modules/simpletest/tests/common.test 16 Sep 2009 15:28:00 -0000 1.72
+++ modules/simpletest/tests/common.test 16 Sep 2009 18:11:09 -0000
@@ -53,8 +53,8 @@ class CommonLUnitTest extends DrupalUnit
$this->assertTrue(url('node', array('absolute' => $absolute)) == $base . '?q=node', t('Creation of @absolute internal url with clean urls @clean_urls.', array('@absolute' => $absolute_string, '@clean_urls' => $clean_urls)));
$this->assertTrue(url('node', array('fragment' => 'foo', 'absolute' => $absolute)) == $base . '?q=node#foo', t('Creation of @absolute internal url with fragment option with clean urls @clean_urls.', array('@absolute' => $absolute_string, '@clean_urls' => $clean_urls)));
- $this->assertTrue(url('node', array('query' => 'foo', 'absolute' => $absolute)) == $base . '?q=node&foo', t('Creation of @absolute internal url with query option with clean urls @clean_urls.', array('@absolute' => $absolute_string, '@clean_urls' => $clean_urls)));
- $this->assertTrue(url('node', array('query' => 'foo', 'fragment' => 'bar', 'absolute' => $absolute)) == $base . '?q=node&foo#bar', t('Creation of @absolute internal url with query and fragment option with clean urls @clean_urls.', array('@absolute' => $absolute_string, '@clean_urls' => $clean_urls)));
+ $this->assertTrue(url('node', array('query' => array('foo' => NULL), 'absolute' => $absolute)) == $base . '?q=node&foo', t('Creation of @absolute internal url with query option with clean urls @clean_urls.', array('@absolute' => $absolute_string, '@clean_urls' => $clean_urls)));
+ $this->assertTrue(url('node', array('query' => array('foo' => NULL), 'fragment' => 'bar', 'absolute' => $absolute)) == $base . '?q=node&foo#bar', t('Creation of @absolute internal url with query and fragment option with clean urls @clean_urls.', array('@absolute' => $absolute_string, '@clean_urls' => $clean_urls)));
$this->assertTrue(url('', array('absolute' => $absolute)) == $base, t('Creation of @absolute internal url using front with clean urls @clean_urls.', array('@absolute' => $absolute_string, '@clean_urls' => $clean_urls)));
// Run tests again with clean urls enabled.
@@ -63,8 +63,8 @@ class CommonLUnitTest extends DrupalUnit
$this->assertTrue(url('node', array('absolute' => $absolute)) == $base . 'node', t('Creation of @absolute internal url with clean urls @clean_urls.', array('@absolute' => $absolute_string, '@clean_urls' => $clean_urls)));
$this->assertTrue(url('node', array('fragment' => 'foo', 'absolute' => $absolute)) == $base . 'node#foo', t('Creation of @absolute internal url with fragment option with clean urls @clean_urls.', array('@absolute' => $absolute_string, '@clean_urls' => $clean_urls)));
- $this->assertTrue(url('node', array('query' => 'foo', 'absolute' => $absolute)) == $base . 'node?foo', t('Creation of @absolute internal url with query option with clean urls @clean_urls.', array('@absolute' => $absolute_string, '@clean_urls' => $clean_urls)));
- $this->assertTrue(url('node', array('query' => 'foo', 'fragment' => 'bar', 'absolute' => $absolute)) == $base . 'node?foo#bar', t('Creation of @absolute internal url with query and fragment option with clean urls @clean_urls.', array('@absolute' => $absolute_string, '@clean_urls' => $clean_urls)));
+ $this->assertTrue(url('node', array('query' => array('foo' => NULL), 'absolute' => $absolute)) == $base . 'node?foo', t('Creation of @absolute internal url with query option with clean urls @clean_urls.', array('@absolute' => $absolute_string, '@clean_urls' => $clean_urls)));
+ $this->assertTrue(url('node', array('query' => array('foo' => NULL), 'fragment' => 'bar', 'absolute' => $absolute)) == $base . 'node?foo#bar', t('Creation of @absolute internal url with query and fragment option with clean urls @clean_urls.', array('@absolute' => $absolute_string, '@clean_urls' => $clean_urls)));
$this->assertTrue(url('', array('absolute' => $absolute)) == $base, t('Creation of @absolute internal url using front with clean urls @clean_urls', array('@absolute' => $absolute_string, '@clean_urls' => $clean_urls)));
}
}
@@ -261,12 +261,12 @@ class UrlTestCase extends DrupalWebtestC
$test_url = 'http://www.drupal.org/?' . $query;
// The external URL contains a query.
- $result_url = url($test_url, array('query' => $query2));
+ $result_url = url($test_url, array('query' => array($query2 => NULL)));
$this->assertEqual($test_url . '&' . $query2, $result_url, t("External URL with a query passed in the path paramater. url('http://drupal.org/?param1', array('query' => 'param2'));"));
// The external URL does not contain a query.
$test_url = 'http://www.drupal.org';
- $result_url = url($test_url, array('query' => $query2));
+ $result_url = url($test_url, array('query' => array($query2 => NULL)));
$this->assertEqual($test_url . '?' . $query2, $result_url, t("External URL without a query passed in the path paramater. url('http://drupal.org', array('query' => 'param2'));"));
}
@@ -553,7 +553,7 @@ class DrupalHTTPRequestTestCase extends
function testDrupalGetDestination() {
$query = $this->randomName(10);
- $url = url('system-test/destination', array('absolute' => TRUE, 'query' => $query));
+ $url = url('system-test/destination', array('absolute' => TRUE, 'query' => array('destination' => $query)));
$this->drupalGet($url);
$this->assertText($query, t('The query passed to the page is correctly represented by drupal_get_detination().'));
}
Index: modules/simpletest/tests/form.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/form.test,v
retrieving revision 1.14
diff -u -p -r1.14 form.test
--- modules/simpletest/tests/form.test 13 Jul 2009 21:51:41 -0000 1.14
+++ modules/simpletest/tests/form.test 16 Sep 2009 00:15:06 -0000
@@ -430,10 +430,10 @@ class FormsFormStorageTestCase extends D
$user = $this->drupalCreateUser(array('access content'));
$this->drupalLogin($user);
- $this->drupalPost('form_test/form-storage', array('title' => 'new', 'value' => 'value_is_set'), 'Continue', array('query' => 'cache=1'));
+ $this->drupalPost('form_test/form-storage', array('title' => 'new', 'value' => 'value_is_set'), 'Continue', array('query' => array('cache' => 1)));
$this->assertText('Form constructions: 1', t('The form has been constructed one time till now.'));
- $this->drupalPost(NULL, array(), 'Save', array('query' => 'cache=1'));
+ $this->drupalPost(NULL, array(), 'Save', array('query' => array('cache' => 1)));
$this->assertText('Form constructions: 2', t('The form has been constructed two times till now.'));
$this->assertText('Title: new', t('The form storage has stored the values.'));
}
Index: modules/simpletest/tests/system_test.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/system_test.module,v
retrieving revision 1.15
diff -u -p -r1.15 system_test.module
--- modules/simpletest/tests/system_test.module 17 Aug 2009 20:32:30 -0000 1.15
+++ modules/simpletest/tests/system_test.module 16 Sep 2009 18:10:10 -0000
@@ -116,7 +116,8 @@ function system_test_redirect_invalid_sc
}
function system_test_destination() {
- return 'The destination: ' . drupal_get_destination();
+ $destination = drupal_get_destination();
+ return 'The destination: ' . $destination['destination'];
}
/**
Index: modules/statistics/statistics.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/statistics/statistics.admin.inc,v
retrieving revision 1.32
diff -u -p -r1.32 statistics.admin.inc
--- modules/statistics/statistics.admin.inc 29 Aug 2009 03:32:46 -0000 1.32
+++ modules/statistics/statistics.admin.inc 16 Sep 2009 00:15:06 -0000
@@ -130,9 +130,9 @@ function statistics_top_visitors() {
$result = $query->execute();
$rows = array();
+ $destination = drupal_get_destination();
foreach ($result as $account) {
- $qs = drupal_get_destination();
- $ban_link = $account->iid ? l(t('unblock IP address'), "admin/config/people/ip-blocking/delete/$account->iid", array('query' => $qs)) : l(t('block IP address'), "admin/config/people/ip-blocking/$account->hostname", array('query' => $qs));
+ $ban_link = $account->iid ? l(t('unblock IP address'), "admin/config/people/ip-blocking/delete/$account->iid", array('query' => $destination)) : l(t('block IP address'), "admin/config/people/ip-blocking/$account->hostname", array('query' => $destination));
$rows[] = array($account->hits, ($account->uid ? theme('username', $account) : $account->hostname), format_interval(round($account->total / 1000)), (user_access('block IP addresses') && !$account->uid) ? $ban_link : '');
}
Index: modules/system/system.install
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.install,v
retrieving revision 1.385
diff -u -p -r1.385 system.install
--- modules/system/system.install 10 Sep 2009 06:38:20 -0000 1.385
+++ modules/system/system.install 16 Sep 2009 00:15:06 -0000
@@ -183,7 +183,7 @@ function system_requirements($phase) {
}
$description .= ' ' . $t('You can run cron manually.', array('@cron' => url('admin/reports/status/run-cron')));
- $description .= '
' . $t('To run cron from outside the site, go to !cron', array('!cron' => url($base_url . '/cron.php', array('external' => TRUE, 'query' => 'cron_key=' . variable_get('cron_key', 'drupal')))));
+ $description .= '
' . $t('To run cron from outside the site, go to !cron', array('!cron' => url($base_url . '/cron.php', array('external' => TRUE, 'query' => array('cron_key' => variable_get('cron_key', 'drupal'))))));
$requirements['cron'] = array(
'title' => $t('Cron maintenance tasks'),
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.790
diff -u -p -r1.790 system.module
--- modules/system/system.module 15 Sep 2009 17:10:39 -0000 1.790
+++ modules/system/system.module 16 Sep 2009 18:13:00 -0000
@@ -2310,7 +2310,7 @@ function system_admin_compact_mode() {
function system_admin_compact_page($mode = 'off') {
global $user;
user_save($user, array('admin_compact_mode' => ($mode == 'on')));
- drupal_goto(drupal_get_destination());
+ drupal_goto($_GET['q'], drupal_get_destination());
}
/**
Index: modules/system/system.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.test,v
retrieving revision 1.75
diff -u -p -r1.75 system.test
--- modules/system/system.test 1 Sep 2009 16:50:12 -0000 1.75
+++ modules/system/system.test 16 Sep 2009 00:15:06 -0000
@@ -379,12 +379,12 @@ class CronRunTestCase extends DrupalWebT
// Run cron anonymously with a random cron key.
$key = $this->randomName(16);
- $this->drupalGet($base_url . '/cron.php', array('external' => TRUE, 'query' => 'cron_key=' . $key));
+ $this->drupalGet($base_url . '/cron.php', array('external' => TRUE, 'query' => array('cron_key' => $key)));
$this->assertResponse(403);
// Run cron anonymously with the valid cron key.
$key = variable_get('cron_key', 'drupal');
- $this->drupalGet($base_url . '/cron.php', array('external' => TRUE, 'query' => 'cron_key=' . $key));
+ $this->drupalGet($base_url . '/cron.php', array('external' => TRUE, 'query' => array('cron_key' => $key)));
$this->assertResponse(200);
// Execute cron directly.
Index: modules/translation/translation.pages.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/translation/translation.pages.inc,v
retrieving revision 1.8
diff -u -p -r1.8 translation.pages.inc
--- modules/translation/translation.pages.inc 29 Jul 2009 06:39:35 -0000 1.8
+++ modules/translation/translation.pages.inc 16 Sep 2009 00:15:06 -0000
@@ -47,7 +47,7 @@ function translation_node_overview($node
// No such translation in the set yet: help user to create it.
$title = t('n/a');
if (node_access('create', $node)) {
- $options[] = l(t('add translation'), 'node/add/' . str_replace('_', '-', $node->type), array('query' => "translation=$node->nid&language=$language->language"));
+ $options[] = l(t('add translation'), 'node/add/' . str_replace('_', '-', $node->type), array('query' => array('translation' => $node->nid, 'language' => $language->language)));
}
$status = t('Not translated');
}
Index: modules/user/user.pages.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.pages.inc,v
retrieving revision 1.51
diff -u -p -r1.51 user.pages.inc
--- modules/user/user.pages.inc 10 Sep 2009 12:33:46 -0000 1.51
+++ modules/user/user.pages.inc 16 Sep 2009 17:59:55 -0000
@@ -284,14 +284,13 @@ function user_profile_form_submit($form,
cache_clear_all();
drupal_set_message(t('The changes have been saved.'));
- return;
}
/**
* Submit function for the 'Cancel account' button on the user edit form.
*/
function user_edit_cancel_submit($form, &$form_state) {
- $destination = '';
+ $destination = array();
if (isset($_REQUEST['destination'])) {
$destination = drupal_get_destination();
unset($_REQUEST['destination']);