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