diff --git a/plugins/libkolab/lib/kolab_format.php b/plugins/libkolab/lib/kolab_format.php index 3a0133a9..8c6b1d45 100644 --- a/plugins/libkolab/lib/kolab_format.php +++ b/plugins/libkolab/lib/kolab_format.php @@ -174,7 +174,7 @@ abstract class kolab_format if (!self::supports($version)) return PEAR::raiseError("No support for Kolab format version " . $version); - $type = preg_replace('/configuration\.[a-z.]+$/', 'configuration', $type); + $type = preg_replace('/configuration\.[a-z._]+$/', 'configuration', $type); $suffix = preg_replace('/[^a-z]+/', '', $type); $classname = 'kolab_format_' . $suffix; if (class_exists($classname)) diff --git a/plugins/libkolab/lib/kolab_format_configuration.php b/plugins/libkolab/lib/kolab_format_configuration.php index 4506ed3c..24bc8de4 100644 --- a/plugins/libkolab/lib/kolab_format_configuration.php +++ b/plugins/libkolab/lib/kolab_format_configuration.php @@ -32,12 +32,14 @@ class kolab_format_configuration extends kolab_format protected $write_func = 'writeConfiguration'; private $type_map = array( - 'category' => Configuration::TypeCategoryColor, - 'dictionary' => Configuration::TypeDictionary, - 'relation' => Configuration::TypeRelation, - 'snippet' => Configuration::TypeSnippet, + 'category' => Configuration::TypeCategoryColor, + 'dictionary' => Configuration::TypeDictionary, + 'file_driver' => Configuration::TypeFileDriver, + 'relation' => Configuration::TypeRelation, + 'snippet' => Configuration::TypeSnippet, ); + private $driver_settings_fields = array('host', 'port', 'username', 'password'); /** * Set properties to the kolabformat object @@ -63,6 +65,21 @@ class kolab_format_configuration extends kolab_format $this->obj = new Configuration($categories); break; + case 'file_driver': + $driver = new FileDriver($object['driver'], $object['title']); + + $driver->setEnabled((bool) $object['enabled']); + + foreach ($this->driver_settings_fields as $field) { + $value = $object[$field]; + if ($value !== null) { + $driver->{'set' . ucfirst($field)}($value); + } + } + + $this->obj = new Configuration($driver); + break; + case 'relation': $relation = new Relation(strval($object['name']), strval($object['category'])); @@ -157,6 +174,19 @@ class kolab_format_configuration extends kolab_format // TODO: implement this break; + case 'file_driver': + $driver = $this->obj->file_driver(); + + $object['driver'] = $driver->driver(); + $object['title'] = $driver->title(); + $object['enabled'] = $driver->enabled(); + + foreach ($this->driver_settings_fields as $field) { + $object[$field] = $driver->{$field}(); + } + + break; + case 'relation': $relation = $this->obj->relation();