Add support for configuration./file_driver objects (#3775)

This commit is contained in:
Aleksander Machniak 2014-10-14 07:37:14 -04:00
parent 232b458be4
commit 6c8d7d4000
2 changed files with 35 additions and 5 deletions

View file

@ -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))

View file

@ -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();