diff --git a/plugins/libkolab/lib/kolab_format.php b/plugins/libkolab/lib/kolab_format.php index 4c8e363b..a7b1e487 100644 --- a/plugins/libkolab/lib/kolab_format.php +++ b/plugins/libkolab/lib/kolab_format.php @@ -158,6 +158,40 @@ abstract class kolab_format return $vec; } + /** + * 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 1f20e3e1..d6da2352 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 b8d22085..592387e2 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 42c323c3..c2c0ddf6 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; }