Branch 'dev/kolab3' - 3 commits - plugins/libkolab

Thomas Brüderli bruederli at kolabsys.com
Wed May 16 14:18:12 CEST 2012


 plugins/libkolab/lib/kolab_format.php                  |   34 +++++++++++++++++
 plugins/libkolab/lib/kolab_format_contact.php          |    7 ++-
 plugins/libkolab/lib/kolab_format_distributionlist.php |    7 ++-
 plugins/libkolab/lib/kolab_format_event.php            |    7 ++-
 plugins/libkolab/lib/kolab_storage_cache.php           |    3 +
 plugins/libkolab/lib/kolab_storage_folder.php          |    4 +-
 6 files changed, 51 insertions(+), 11 deletions(-)

New commits:
commit e7ea756cdb81f45dd3dc0cb99a42f0c735ab440c
Merge: e379aaa 3428a64
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Wed May 16 14:16:38 2012 +0200

    Merge branch 'dev/kolab3' of ssh://git.kolabsys.com/git/roundcube into dev/kolab3



commit e379aaafc12202f5314c7e8f7295148b721a9948
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Wed May 16 14:16:29 2012 +0200

    Code cleanup: define private members and default DB values; set kolab_format reference to new objects

diff --git a/plugins/libkolab/lib/kolab_storage_cache.php b/plugins/libkolab/lib/kolab_storage_cache.php
index 4c822f6..be94bb8 100644
--- a/plugins/libkolab/lib/kolab_storage_cache.php
+++ b/plugins/libkolab/lib/kolab_storage_cache.php
@@ -29,6 +29,7 @@ class kolab_storage_cache
     private $folder;
     private $uid2msg;
     private $objects;
+    private $index = array();
     private $resource_uri;
     private $enabled = true;
     private $synched = false;
@@ -422,7 +423,7 @@ class kolab_storage_cache
     private function _serialize($object)
     {
         $bincols = array_flip($this->binary_cols);
-        $sql_data = array('dtstart' => null, 'dtend' => null, 'xml' => '');
+        $sql_data = array('dtstart' => null, 'dtend' => null, 'xml' => '', 'tags' => '', 'words' => '');
 
         // set type specific values
         if ($this->folder->type == 'event') {
diff --git a/plugins/libkolab/lib/kolab_storage_folder.php b/plugins/libkolab/lib/kolab_storage_folder.php
index 7ae1a1e..6c4b401 100644
--- a/plugins/libkolab/lib/kolab_storage_folder.php
+++ b/plugins/libkolab/lib/kolab_storage_folder.php
@@ -271,7 +271,8 @@ class kolab_storage_folder
     {
         if (!$type) $type = $this->type;
 
-        // TODO: synchronize cache first?
+        // synchronize cache first
+        $this->cache->synchronize();
 
         return $this->cache->count(array(array('type','=',$type)));
     }
@@ -625,6 +626,7 @@ class kolab_storage_folder
         $format->set($object);
         $xml = $format->write();
         $object['uid'] = $format->uid;  // get read UID from format
+        $object['_formatobj'] = $format;
 
         if (!$format->is_valid() || empty($object['uid'])) {
             return false;


commit 5cc7fc616fee050806d015d1b13fe67e1a5945d8
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Wed May 16 14:15:05 2012 +0200

    Better process of writing Kolab objects: don't use isValid() but check kolabformat::error() after writing. Fixes #769

diff --git a/plugins/libkolab/lib/kolab_format.php b/plugins/libkolab/lib/kolab_format.php
index 4c8e363..a7b1e48 100644
--- a/plugins/libkolab/lib/kolab_format.php
+++ b/plugins/libkolab/lib/kolab_format.php
@@ -159,6 +159,40 @@ abstract class kolab_format
     }
 
     /**
+     * Check for format errors after calling kolabformat::write*()
+     *
+     * @return boolean True if there were errors, False if OK
+     */
+    protected function format_errors()
+    {
+        $ret = $log = false;
+        switch (kolabformat::error()) {
+            case kolabformat.NoError:
+                $ret = false;
+                break;
+            case kolabformat.Warning:
+                $ret = false;
+                $log = "Warning";
+                break;
+            default:
+                $ret = true;
+                $log = "Error";
+        }
+
+        if ($log) {
+            raise_error(array(
+                'code' => 660,
+                'type' => 'php',
+                'file' => __FILE__,
+                'line' => __LINE__,
+                'message' => "kolabformat write $log: " . kolabformat::errorMessage(),
+            ), true);
+        }
+
+        return $ret;
+    }
+
+    /**
      * Save the last generated UID to the object properties.
      * Should be called after kolabformat::writeXXXX();
      */
diff --git a/plugins/libkolab/lib/kolab_format_contact.php b/plugins/libkolab/lib/kolab_format_contact.php
index 1f20e3e..d6da235 100644
--- a/plugins/libkolab/lib/kolab_format_contact.php
+++ b/plugins/libkolab/lib/kolab_format_contact.php
@@ -132,11 +132,12 @@ class kolab_format_contact extends kolab_format
     public function write()
     {
         $this->init();
+        $this->xmldata = kolabformat::writeContact($this->obj);
 
-        if ($this->obj->isValid()) {
-            $this->xmldata = kolabformat::writeContact($this->obj);
+        if (!parent::format_errors())
             parent::update_uid();
-        }
+        else
+            $this->xmldata = null;
 
         return $this->xmldata;
     }
diff --git a/plugins/libkolab/lib/kolab_format_distributionlist.php b/plugins/libkolab/lib/kolab_format_distributionlist.php
index b8d2208..592387e 100644
--- a/plugins/libkolab/lib/kolab_format_distributionlist.php
+++ b/plugins/libkolab/lib/kolab_format_distributionlist.php
@@ -51,11 +51,12 @@ class kolab_format_distributionlist extends kolab_format
     public function write()
     {
         $this->init();
+        $this->xmldata = kolabformat::writeDistlist($this->obj);
 
-        if ($this->obj->isValid()) {
-            $this->xmldata = kolabformat::writeDistlist($this->obj);
+        if (!parent::format_errors())
             parent::update_uid();
-        }
+        else
+            $this->xmldata = null;
 
         return $this->xmldata;
     }
diff --git a/plugins/libkolab/lib/kolab_format_event.php b/plugins/libkolab/lib/kolab_format_event.php
index 42c323c..c2c0ddf 100644
--- a/plugins/libkolab/lib/kolab_format_event.php
+++ b/plugins/libkolab/lib/kolab_format_event.php
@@ -116,11 +116,12 @@ class kolab_format_event extends kolab_format
     public function write()
     {
         $this->init();
+        $this->xmldata = kolabformat::writeEvent($this->obj);
 
-        if ($this->obj->isValid()) {
-            $this->xmldata = kolabformat::writeEvent($this->obj);
+        if (!parent::format_errors())
             parent::update_uid();
-        }
+        else
+            $this->xmldata = null;
 
         return $this->xmldata;
     }





More information about the commits mailing list