plugins/libkolab

Thomas Brüderli bruederli at kolabsys.com
Tue Feb 3 16:30:19 CET 2015


 plugins/libkolab/lib/kolab_storage_cache.php |   37 +++++++++++++++++----------
 1 file changed, 24 insertions(+), 13 deletions(-)

New commits:
commit 948a68136dc7e101036dee6ace927803adb31220
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Tue Feb 3 16:30:02 2015 +0100

    Handle possible errors from kolab_storage::get_folder() access (#4378)

diff --git a/plugins/libkolab/lib/kolab_storage_cache.php b/plugins/libkolab/lib/kolab_storage_cache.php
index 134631e..f0eeb1a 100644
--- a/plugins/libkolab/lib/kolab_storage_cache.php
+++ b/plugins/libkolab/lib/kolab_storage_cache.php
@@ -271,7 +271,12 @@ class kolab_storage_cache
     {
         // delegate to another cache instance
         if ($foldername && $foldername != $this->folder->name) {
-            return kolab_storage::get_folder($foldername)->cache->get($msguid, $type);
+            $success = false;
+            if ($targetfolder = kolab_storage::get_folder($foldername)) {
+                $success = $targetfolder->cache->get($msguid, $type);
+                $this->error = $targetfolder->cache->get_error();
+            }
+            return $success;
         }
 
         // load object if not in memory
@@ -320,8 +325,11 @@ class kolab_storage_cache
 
         // delegate to another cache instance
         if ($foldername && $foldername != $this->folder->name) {
-            kolab_storage::get_folder($foldername)->cache->set($msguid, $object);
-            return;
+          if ($targetfolder = kolab_storage::get_folder($foldername)) {
+              $targetfolder->cache->set($msguid, $object);
+              $this->error = $targetfolder->cache->get_error();
+          }
+          return;
         }
 
         // remove old entry
@@ -474,17 +482,20 @@ class kolab_storage_cache
             return;
         }
 
-        $target = kolab_storage::get_folder($new_folder);
-
-        // resolve new message UID in target folder
-        $this->db->query(
-            "UPDATE `{$this->folders_table}` SET `resource` = ? ".
-            "WHERE `resource` = ?",
-            $target->get_resource_uri(),
-            $this->resource_uri
-        );
+        if ($target = kolab_storage::get_folder($new_folder)) {
+            // resolve new message UID in target folder
+            $this->db->query(
+                "UPDATE `{$this->folders_table}` SET `resource` = ? ".
+                "WHERE `resource` = ?",
+                $target->get_resource_uri(),
+                $this->resource_uri
+            );
 
-        $this->check_error();
+            $this->check_error();
+        }
+        else {
+            $this->error = kolab_storage::ERROR_IMAP_CONN;
+        }
     }
 
     /**




More information about the commits mailing list