From 4cf42fde05ff891f6961ba60dbb1c2e4c91c39c6 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Tue, 20 Mar 2012 18:47:24 -0400
Subject: [PATCH] Add support for read-only address book records

---
 program/include/rcube_session.php |   44 +++++++++++++++++++++++++++-----------------
 1 files changed, 27 insertions(+), 17 deletions(-)

diff --git a/program/include/rcube_session.php b/program/include/rcube_session.php
index e8bd9d0..5ec9f33 100644
--- a/program/include/rcube_session.php
+++ b/program/include/rcube_session.php
@@ -7,7 +7,10 @@
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2011, The Roundcube Dev Team                       |
  | Copyright (C) 2011, Kolab Systems AG                                  |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | Licensed under the GNU General Public License version 3 or            |
+ | any later version with exceptions for skins & plugins.                |
+ | See the README file for a full license statement.                     |
  |                                                                       |
  | PURPOSE:                                                              |
  |   Provide database supported session management                       |
@@ -325,27 +328,19 @@
 
 
   /**
-   * Cleanup session data before saving
-   */
-  public function cleanup()
-  {
-    // current compose information is stored in $_SESSION['compose'], move it to $_SESSION['compose_data_<ID>']
-    if ($compose_id = $_SESSION['compose']['id']) {
-      $_SESSION['compose_data_'.$compose_id] = $_SESSION['compose'];
-      $this->remove('compose');
-    }
-  }
-
-
-  /**
    * Register additional garbage collector functions
    *
    * @param mixed Callback function
    */
-  public function register_gc_handler($func_name)
+  public function register_gc_handler($func)
   {
-    if ($func_name && !in_array($func_name, $this->gc_handlers))
-      $this->gc_handlers[] = $func_name;
+    foreach ($this->gc_handlers as $handler) {
+      if ($handler == $func) {
+        return;
+      }
+    }
+
+    $this->gc_handlers[] = $func;
   }
 
 
@@ -394,6 +389,21 @@
 
 
   /**
+   * Re-read session data from storage backend
+   */
+  public function reload()
+  {
+    if ($this->key && $this->memcache)
+      $data = $this->mc_read($this->key);
+    else if ($this->key)
+      $data = $this->db_read($this->key);
+
+    if ($data)
+     session_decode($data);
+  }
+
+
+  /**
    * Serialize session data
    */
   private function serialize($vars)

--
Gitblit v1.9.1