From 70c31118264e447699d4ed628f45b7853799423d Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Wed, 27 Jul 2011 09:42:15 -0400
Subject: [PATCH] - Fix fallback to default source (#1488009)

---
 program/steps/addressbook/save.inc |   11 ++++++-----
 program/steps/addressbook/func.inc |   10 +++-------
 2 files changed, 9 insertions(+), 12 deletions(-)

diff --git a/program/steps/addressbook/func.inc b/program/steps/addressbook/func.inc
index b74b45f..6635d13 100644
--- a/program/steps/addressbook/func.inc
+++ b/program/steps/addressbook/func.inc
@@ -100,7 +100,7 @@
 }
 
 // instantiate a contacts object according to the given source
-function rcmail_contact_source($source=null, $init_env=false)
+function rcmail_contact_source($source=null, $init_env=false, $writable=false)
 {
     global $RCMAIL, $OUTPUT, $CONFIG, $CONTACT_COLTYPES;
 
@@ -108,12 +108,8 @@
         $source = get_input_value('_source', RCUBE_INPUT_GPC);
     }
 
-    if (!strlen($source)) {
-        return null;
-    }
-
     // Get object
-    $CONTACTS = $RCMAIL->get_address_book($source);
+    $CONTACTS = $RCMAIL->get_address_book($source, $writable);
     $CONTACTS->set_pagesize($CONFIG['pagesize']);
 
     // set list properties and session vars
@@ -163,7 +159,7 @@
 function rcmail_set_sourcename($abook)
 {
     global $OUTPUT;
-    
+
     // get address book name (for display)
     if ($abook && $_SESSION['addressbooks_count'] > 1) {
         $name = $abook->get_name();
diff --git a/program/steps/addressbook/save.inc b/program/steps/addressbook/save.inc
index d5d4537..599c2f6 100644
--- a/program/steps/addressbook/save.inc
+++ b/program/steps/addressbook/save.inc
@@ -19,10 +19,9 @@
 
 */
 
-$CONTACTS = rcmail_contact_source(null, true);
+$CONTACTS = rcmail_contact_source(null, true, true);
 $cid      = get_input_value('_cid', RCUBE_INPUT_POST);
 $return_action = empty($cid) ? 'add' : 'edit';
-
 
 // Source changed, display the form again
 if (!empty($_GET['_reload'])) {
@@ -220,6 +219,11 @@
 // insert a new contact
 else {
   $source = get_input_value('_source', RCUBE_INPUT_GPC);
+  // Name of the addressbook already selected on the list
+  $orig_source = get_input_value('_orig_source', RCUBE_INPUT_GPC);
+
+  if (!strlen($source))
+    $source = $orig_source;
 
   // show notice if existing contacts with same e-mail are found
   $existing = false;
@@ -253,9 +257,6 @@
         $CONTACTS->add_to_group($gid, $plugin['ids']);
       }
     }
-
-    // Name of the addressbook already selected on the list
-    $orig_source = get_input_value('_orig_source', RCUBE_INPUT_GPC);
 
     if ((string)$source === (string)$orig_source) {
       // add contact row or jump to the page where it should appear

--
Gitblit v1.9.1