From c719f3c1e06c00fa4723f2f1298b3c94a1bec7e7 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Fri, 20 Jun 2008 06:40:01 -0400
Subject: [PATCH] Store compose parameters in session and redirect to a unique URL

---
 program/include/rcmail.php |   22 +++++++++++++++++++++-
 1 files changed, 21 insertions(+), 1 deletions(-)

diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index 009ad04..7c12ef7 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -139,7 +139,7 @@
       $task = 'mail';
     
     $this->task = $task;
-    $this->comm_path = './?_task=' . $task;
+    $this->comm_path = $this->url(array('task' => $task));
     
     if ($this->output)
       $this->output->set_env('task', $task);
@@ -820,6 +820,26 @@
     return preg_replace('/\x00/', '', $pass);
   }
 
+
+  /**
+   * Build a valid URL to this instance of RoundCube
+   *
+   * @param mixed Either a string with the action or url parameters as key-value pairs
+   * @return string Valid application URL
+   */
+  public function url($p)
+  {
+    if (!is_array($p))
+      $p = array('action' => @func_get_arg(0));
+      
+    $url = $p['task'] ? './?_task=' . $p['task'] : $this->comm_path;
+    unset($p['task']);
+    
+    foreach ($p as $par => $val)
+      $url .= sprintf('&%s=%s', urlencode($par), urlencode($val));
+    
+    return $url;
+  }
 }
 
 

--
Gitblit v1.9.1