Index: views_savedsearches.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/views_savedsearches/views_savedsearches.module,v
retrieving revision 1.4
diff -u -p -r1.4 views_savedsearches.module
--- views_savedsearches.module	27 Jan 2009 08:57:08 -0000	1.4
+++ views_savedsearches.module	31 May 2009 19:35:07 -0000
@@ -163,24 +163,10 @@ function views_savedsearches_save_search
     '#value' => t('Save this search'),
   );
 
-  // Make sure we redirect the user to the current view after he has saved the
-  // current search. Without this, he would be redirected to the default view,
-  // i.e. without any exposed filters configured.
-  $form['#redirect'] = array(
-    $_GET['q'],
-    '',
+  $form['view_path'] = array(
+    '#value' => $view->get_path(),
+    '#type' => 'hidden',
   );
-  $params = $_GET;
-  unset($params['q']);
-  foreach($params as $k => $v) {
-    if (!empty($k) && !empty($v)) {
-      $query[] = $k .'='. $v;
-    }
-    else {
-      $query[]= $v;
-    }
-  }
-  $form['#redirect'][1] = implode('&', $query);
 
   return $form;
 }
@@ -214,6 +200,13 @@ function views_savedsearches_save_search
   views_savedsearches_save($saved_search);
 
   drupal_set_message(t("Your %name search was saved!", array('%name' => $saved_search->name)));
+  
+  $query = _views_savedsearches_filters_to_params(unserialize($saved_search->filters));
+
+  // Make sure we redirect the user to the current view after he has saved the
+  // current search. Without this, he would be redirected to the default view,
+  // i.e. without any exposed filters configured.
+  drupal_goto($form_state['values']['view_path'], $query);
 }
 
 /**
@@ -461,11 +454,25 @@ function _views_savedsearches_filters_to
     foreach ($filters as $filter_name => $filter_value) {
       // Distinction between multiple-value filters and single-value filters.
       if (is_array($filter_value)) {
-        foreach ($filter_value as $value) {
+        foreach ($filter_value as $key => $value) {
           if (strlen($query) > 0) {
             $query .= '&';
           }
-          $query .= drupal_urlencode($filter_name) . drupal_urlencode('[]') .'='. drupal_urlencode($value);
+          if (!is_array($value)) {
+            $query .= drupal_urlencode($filter_name) . drupal_urlencode('[]') .'='. drupal_urlencode($value);
+          }
+          else {
+            // Date-style parameter, like date_filter[value][date]=2009-05-11 in the URL encoded
+            $arr = drupal_urlencode('['. $key .']');
+            $open = drupal_urlencode('[');
+            $close = drupal_urlencode(']');
+            foreach ($value as $k => $v) {
+              if (strlen($query) > 0) {
+                $query .= '&';
+              }
+              $query .= $filter_name . $arr . $open . $k . $close . '=' . $v;
+            }
+          }
         }
       }
       else {
