From 782d8593bd8cc511483e959519f84a389aee131f Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Sun, 14 Aug 2011 14:54:24 -0400
Subject: [PATCH] More unique error codes

---
 program/include/rcmail.php |   30 +++++++++++++++---------------
 1 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index 396106e..ced5934 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -378,6 +378,7 @@
    *
    * @param string  Address book identifier
    * @param boolean True if the address book needs to be writeable
+   *
    * @return rcube_contacts Address book object
    */
   public function get_address_book($id, $writeable = false)
@@ -385,6 +386,10 @@
     $contacts    = null;
     $ldap_config = (array)$this->config->get('ldap_public');
     $abook_type  = strtolower($this->config->get('address_book_type'));
+
+    // 'sql' is the alias for '0' used by autocomplete
+    if ($id == 'sql')
+        $id = '0';
 
     // use existing instance
     if (isset($this->address_books[$id]) && is_a($this->address_books[$id], 'rcube_addressbook') && (!$writeable || !$this->address_books[$id]->readonly)) {
@@ -403,25 +408,20 @@
       if ($plugin['instance'] instanceof rcube_addressbook) {
         $contacts = $plugin['instance'];
       }
+      // get first source from the list
       else if (!$id) {
-        if ($abook_type == 'ldap') {
-          // Use the first writable LDAP address book.
-          foreach ($ldap_config as $id => $prop) {
-            if (!$writeable || $prop['writable']) {
-              $contacts = new rcube_ldap($prop, $this->config->get('ldap_debug'), $this->config->mail_domain($_SESSION['imap_host']));
-              break;
-            }
-          }
-        }
-        else { // $id == 'sql'
-          $contacts = new rcube_contacts($this->db, $this->user->ID);
+        $source = reset($this->get_address_sources($writeable));
+        if (!empty($source)) {
+          $contacts = $this->get_address_book($source['id']);
+          if ($contacts)
+            $id = $source['id'];
         }
       }
     }
 
     if (!$contacts) {
       raise_error(array(
-        'code' => 600, 'type' => 'php',
+        'code' => 700, 'type' => 'php',
         'file' => __FILE__, 'line' => __LINE__,
         'message' => "Addressbook source ($id) not found!"),
         true, true);
@@ -835,7 +835,7 @@
       }
       else {
         raise_error(array(
-          'code' => 600, 'type' => 'php',
+          'code' => 620, 'type' => 'php',
           'file' => __FILE__, 'line' => __LINE__,
           'message' => "Failed to create a user record. Maybe aborted by a plugin?"
           ), true, false);
@@ -843,9 +843,9 @@
     }
     else {
       raise_error(array(
-        'code' => 600, 'type' => 'php',
+        'code' => 621, 'type' => 'php',
         'file' => __FILE__, 'line' => __LINE__,
-        'message' => "Acces denied for new user $username. 'auto_create_user' is disabled"
+        'message' => "Access denied for new user $username. 'auto_create_user' is disabled"
         ), true, false);
     }
 

--
Gitblit v1.9.1