From 0d5240e15d581f9d6da411f44584b56051161573 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Fri, 13 Apr 2012 06:46:51 -0400
Subject: [PATCH] - Import contacts to default addressbook

---
 plugins/vcard_attachments/vcard_attachments.php |   27 ++++++++++++++++++++++++++-
 plugins/vcard_attachments/package.xml           |    2 ++
 2 files changed, 28 insertions(+), 1 deletions(-)

diff --git a/plugins/vcard_attachments/package.xml b/plugins/vcard_attachments/package.xml
index 06d043f..cf94ef3 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 c9f843f..1400cd5 100644
--- a/plugins/vcard_attachments/vcard_attachments.php
+++ b/plugins/vcard_attachments/vcard_attachments.php
@@ -128,7 +128,7 @@
         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 @@
             )
         );
     }
+
+    /**
+     * 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;
+    }
 }

--
Gitblit v1.9.1