summaryrefslogtreecommitdiff
path: root/plugins/kolab_addressbook/kolab_addressbook.php
diff options
context:
space:
mode:
authorthomasb <thomasb@208e9e7b-5314-0410-a742-e7e81cd9613c>2010-10-15 17:10:08 +0000
committerthomasb <thomasb@208e9e7b-5314-0410-a742-e7e81cd9613c>2010-10-15 17:10:08 +0000
commiteb21692fc7602de5f66f72951d4677322da74350 (patch)
tree4434056cedca32a805b558291c6472962be88054 /plugins/kolab_addressbook/kolab_addressbook.php
parent27aac995fd8d929a0231fc8ed2d20612c48f4fb4 (diff)
First scaffolding for the Kolab address book including lib for general access to Kolab backend
git-svn-id: https://svn.roundcube.net/trunk@4097 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'plugins/kolab_addressbook/kolab_addressbook.php')
-rw-r--r--plugins/kolab_addressbook/kolab_addressbook.php75
1 files changed, 75 insertions, 0 deletions
diff --git a/plugins/kolab_addressbook/kolab_addressbook.php b/plugins/kolab_addressbook/kolab_addressbook.php
new file mode 100644
index 000000000..0e29c2ebb
--- /dev/null
+++ b/plugins/kolab_addressbook/kolab_addressbook.php
@@ -0,0 +1,75 @@
+<?php
+
+require_once(dirname(__FILE__) . '/rcube_kolab_contacts.php');
+
+/**
+ * Kolab address book
+ *
+ * Sample plugin to add a new address book source with data from Kolab storage
+ *
+ * This is work-in-progress for the Roundcube+Kolab integration.
+ * The library part is to be moved into a separate PEAR package or plugin
+ * that this and other Kolab-related plugins will depend on.
+ *
+ * @author Thomas Bruederli <roundcube@gmail.com>
+ *
+ */
+class kolab_addressbook extends rcube_plugin
+{
+ private $abook_id = 'kolab';
+
+ /**
+ * Required startup method of a Roundcube plugin
+ */
+ public function init()
+ {
+ $this->add_hook('addressbooks_list', array($this, 'address_sources'));
+ $this->add_hook('addressbook_get', array($this, 'get_address_book'));
+
+ // use this address book for autocompletion queries
+ // (maybe this should be configurable by the user?)
+ $config = rcmail::get_instance()->config;
+ $sources = (array) $config->get('autocomplete_addressbooks', array('sql'));
+ if (!in_array($this->abook_id, $sources)) {
+ $sources[] = $this->abook_id;
+ $config->set('autocomplete_addressbooks', $sources);
+ }
+ }
+
+ /**
+ * Handler for the addressbooks_list hook.
+ *
+ * This will add all instances of available Kolab-based address books
+ * to the list of address sources of Roundcube.
+ *
+ * @param array Hash array with hook parameters
+ * @return array Hash array with modified hook parameters
+ */
+ public function address_sources($p)
+ {
+ // could be changed to a factory call
+ $abook = new rcube_kolab_contacts;
+
+ // maybe here we add more than one item.
+ $p['sources'][$this->abook_id] = array(
+ 'id' => $this->abook_id,
+ 'name' => 'Kolab',
+ 'readonly' => $abook->readonly,
+ 'groups' => $abook->groups,
+ );
+ return $p;
+ }
+
+ /**
+ *
+ */
+ public function get_address_book($p)
+ {
+ if ($p['id'] === $this->abook_id) {
+ $p['instance'] = new rcube_kolab_contacts;
+ }
+
+ return $p;
+ }
+
+}