summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2012-04-13 10:46:51 +0000
committeralecpl <alec@alec.pl>2012-04-13 10:46:51 +0000
commit0d5240e15d581f9d6da411f44584b56051161573 (patch)
treef9f7e1060d55be1ea0002a18d3169129bc464169
parentce216f0905925a9f6fe50c04d613b9057477cb17 (diff)
- Import contacts to default addressbook
-rw-r--r--plugins/vcard_attachments/package.xml2
-rw-r--r--plugins/vcard_attachments/vcard_attachments.php27
2 files changed, 28 insertions, 1 deletions
diff --git a/plugins/vcard_attachments/package.xml b/plugins/vcard_attachments/package.xml
index 06d043ffd..cf94ef378 100644
--- a/plugins/vcard_attachments/package.xml
+++ b/plugins/vcard_attachments/package.xml
@@ -34,6 +34,8 @@
- Fixed doble urlencoding of vcard identifier
- Fixed encoding when default charset is different than vcard charset
- Improved vcards import to work as addressbook::import procedure (with validation and autofix)
+- Support IDNA
+- Import contacts to default addressbook
</notes>
<contents>
<dir baseinstalldir="/" name="/">
diff --git a/plugins/vcard_attachments/vcard_attachments.php b/plugins/vcard_attachments/vcard_attachments.php
index c9f843f2b..1400cd581 100644
--- a/plugins/vcard_attachments/vcard_attachments.php
+++ b/plugins/vcard_attachments/vcard_attachments.php
@@ -128,7 +128,7 @@ class vcard_attachments extends rcube_plugin
if ($part && ($vcards = rcube_vcard::import($part))
&& ($vcard = $vcards[$index]) && $vcard->displayname && $vcard->email
) {
- $CONTACTS = $rcmail->get_address_book(null, true);
+ $CONTACTS = $this->get_address_book();
$email = $vcard->email[0];
$contact = $vcard->get_assoc();
$valid = true;
@@ -195,4 +195,29 @@ class vcard_attachments extends rcube_plugin
)
);
}
+
+ /**
+ * Getter for default (writable) addressbook
+ */
+ private function get_address_book()
+ {
+ if ($this->abook) {
+ return $this->abook;
+ }
+
+ $rcmail = rcmail::get_instance();
+ $abook = $rcmail->config->get('default_addressbook');
+
+ // Get configured addressbook
+ $CONTACTS = $rcmail->get_address_book($abook, true);
+
+ // Get first writeable addressbook if the configured doesn't exist
+ // This can happen when user deleted the addressbook (e.g. Kolab folder)
+ if ($abook === null || $abook === '' || !is_object($CONTACTS)) {
+ $source = reset($rcmail->get_address_sources(true));
+ $CONTACTS = $rcmail->get_address_book($source['id'], true);
+ }
+
+ return $this->abook = $CONTACTS;
+ }
}