? logintoboggan_support_queries.patch
Index: logintoboggan.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/logintoboggan/logintoboggan.module,v
retrieving revision 1.7.2.60
diff -u -p -r1.7.2.60 logintoboggan.module
--- logintoboggan.module	17 Dec 2006 19:11:26 -0000	1.7.2.60
+++ logintoboggan.module	24 Jan 2007 15:46:33 -0000
@@ -279,10 +279,10 @@ function logintoboggan_user_register_sub
   }
 
   //redirect to the appropriate page.
-  if ($redirect != '') {
-    return $redirect;
+  if (!empty($redirect)) {
+    return array('path' => $redirect, 'query');
   } else {
-    return;
+    return array('path', 'query');
   }
 }
 
@@ -799,7 +799,8 @@ function logintoboggan_validate_email($u
             drupal_goto('');
           }
           else {
-            drupal_goto(logintoboggan_process_login($account, $redirect));
+            list($path, $query) = logintoboggan_process_login($account, $redirect);
+            drupal_goto($path, $query);
           }     
           break;
         // Admin validation.
@@ -839,6 +840,7 @@ function logintoboggan_validate_email($u
 function logintoboggan_process_login($account, $redirect = ''){
   global $user;
   $user = $account;
+  $return = array('path', 'query');
 
   watchdog('user', t('Session opened for %name.', array('%name' => theme('placeholder', $user->name))));
 
@@ -851,11 +853,16 @@ function logintoboggan_process_login($ac
   $edit = array();
   user_module_invoke('login', $edit, $user);
 
-  if ($redirect != '') {
-    return $redirect;
+  if (!empty($redirect)) {
+    list($path, $query) = explode('?', $redirect);
+    $return['query'] = $query;
+    $return['path'] = $path;
+  }
+  else {
+    $return['path'] = 'user/'. $user->uid;
   }
 
-  return 'user/'. $user->uid;
+  return $return;
 }
 
 function logintoboggan_eml_validate_url($account){
