summaryrefslogtreecommitdiff
path: root/plugins/kolab_config/kolab_config.php
diff options
context:
space:
mode:
authorAleksander Machniak (Kolab Systems) <machniak@kolabsys.com>2011-10-13 07:38:10 (GMT)
committerAleksander Machniak (Kolab Systems) <machniak@kolabsys.com>2011-10-13 07:38:10 (GMT)
commit4c2b83859ec63ae8c5a9708410beb57f3aa50847 (patch)
treece9ba79e1f768a34e4382a05664d944e009a186e /plugins/kolab_config/kolab_config.php
parent7bfb9079d5a18daa3f9a26f3c15de901b10adf18 (diff)
downloadroundcubemail-plugins-kolab-4c2b83859ec63ae8c5a9708410beb57f3aa50847.tar.gz
Plugin that implements KEP 16: Storage of dictionary entries.
Created simple classes for basic XML configuration objects and configuration folder.
Diffstat (limited to 'plugins/kolab_config/kolab_config.php')
-rw-r--r--plugins/kolab_config/kolab_config.php135
1 files changed, 135 insertions, 0 deletions
diff --git a/plugins/kolab_config/kolab_config.php b/plugins/kolab_config/kolab_config.php
new file mode 100644
index 0000000..03aa386
--- /dev/null
+++ b/plugins/kolab_config/kolab_config.php
@@ -0,0 +1,135 @@
+<?php
+
+/**
+ * Kolab configuration storage.
+ *
+ * Plugin to use Kolab server as a configuration storage. Provides an API to handle
+ * configuration according to http://wiki.kolab.org/KEP:9.
+ *
+ * Copyright (C) 2011, Kolab Systems AG
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2
+ * as published by the Free Software Foundation.
+ *
+ * @author Machniak Aleksander <machniak@kolabsys.com>
+ *
+ */
+class kolab_config extends rcube_plugin
+{
+ public $task = 'utils';
+
+ private $config;
+ private $enabled;
+
+ /**
+ * Required startup method of a Roundcube plugin
+ */
+ public function init()
+ {
+ $rcmail = rcmail::get_instance();
+
+ // Register spellchecker dictionary handlers
+ if (strtolower($rcmail->config->get('spellcheck_dictionary')) != 'shared') {
+ $this->add_hook('spell_dictionary_save', array($this, 'dictionary_save'));
+ $this->add_hook('spell_dictionary_get', array($this, 'dictionary_get'));
+ }
+/*
+ // Register addressbook saved searches handlers
+ $this->add_hook('saved_search_create', array($this, 'saved_search_create'));
+ $this->add_hook('saved_search_delete', array($this, 'saved_search_delete'));
+ $this->add_hook('saved_search_list', array($this, 'saved_search_list'));
+ $this->add_hook('saved_search_get', array($this, 'saved_search_get'));
+*/
+ }
+
+ /**
+ * Initializes config object and dependencies
+ */
+ private function load()
+ {
+ if ($this->config)
+ return;
+
+ $this->require_plugin('kolab_folders');
+
+ // load dependencies
+ require_once 'Horde/Util.php';
+ require_once 'Horde/Kolab/Format.php';
+ require_once 'Horde/Kolab/Format/XML.php';
+ require_once $this->home . '/lib/configuration.php';
+ require_once $this->home . '/lib/kolab_configuration.php';
+
+ String::setDefaultCharset('UTF-8');
+
+ $this->config = new kolab_configuration();
+
+ // check if configuration folder exist
+ if (strlen($this->config->dir)) {
+ $this->enabled = true;
+ }
+ }
+
+ /**
+ * Saves spellcheck dictionary.
+ *
+ * @param array $args Hook arguments
+ *
+ * @return array Hook arguments
+ */
+ public function dictionary_save($args)
+ {
+ $this->load();
+
+ if (!$this->enabled) {
+ return $args;
+ }
+
+ $lang = $args['language'];
+ $dict = $this->dict;
+
+ $dict['type'] = 'dictionary';
+ $dict['language'] = $args['language'];
+ $dict['e'] = $args['dictionary'];
+
+ if (empty($dict['e'])) {
+ // Delete the object
+ $this->config->del($dict);
+ }
+ else {
+ // Update the object
+ $this->config->set($dict);
+ }
+
+ $args['abort'] = true;
+
+ return $args;
+ }
+
+ /**
+ * Returns spellcheck dictionary.
+ *
+ * @param array $args Hook arguments
+ *
+ * @return array Hook arguments
+ */
+ public function dictionary_get($args)
+ {
+ $this->load();
+
+ if (!$this->enabled) {
+ return $args;
+ }
+
+ $lang = $args['language'];
+ $this->dict = $this->config->get('dictionary.'.$lang);
+
+ if (!empty($this->dict)) {
+ $args['dictionary'] = $this->dict['e'];
+ }
+
+ $args['abort'] = true;
+
+ return $args;
+ }
+}