diff options
author | Aleksander Machniak <alec@alec.pl> | 2012-07-10 20:30:34 +0200 |
---|---|---|
committer | Aleksander Machniak <alec@alec.pl> | 2012-07-10 20:30:34 +0200 |
commit | 840b4dbeb81603ed44c30dc77be8eff98d7667c3 (patch) | |
tree | c1e7206aec71ae03ff05cbacdd5e724a5574afc1 /program | |
parent | 2b21b97ef0b13c958ed53c7adf10f02f6c4c434f (diff) |
Simplified method of getting default addressbook.
Make sure to use the same source when adding contact and checking
if message is safe (sender is in addressbook).
Small code improvements.
Diffstat (limited to 'program')
-rw-r--r-- | program/include/rcmail.php | 36 | ||||
-rw-r--r-- | program/steps/mail/addcontact.inc | 13 | ||||
-rw-r--r-- | program/steps/mail/func.inc | 29 |
3 files changed, 40 insertions, 38 deletions
diff --git a/program/include/rcmail.php b/program/include/rcmail.php index 63ae8e20f..c70170209 100644 --- a/program/include/rcmail.php +++ b/program/include/rcmail.php @@ -171,7 +171,7 @@ class rcmail extends rcube /** * Return instance of the internal address book class * - * @param string Address book identifier + * @param string Address book identifier (-1 for default addressbook) * @param boolean True if the address book needs to be writeable * * @return rcube_contacts Address book object @@ -180,17 +180,17 @@ class rcmail extends rcube { $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'; + $id = '0'; + else if ($id == -1) { + $id = $this->config->get('default_addressbook'); + $default = true; + } // use existing instance - if (isset($this->address_books[$id]) && is_object($this->address_books[$id]) - && is_a($this->address_books[$id], 'rcube_addressbook') - && (!$writeable || !$this->address_books[$id]->readonly) - ) { + if (isset($this->address_books[$id]) && ($this->address_books[$id] instanceof rcube_addressbook)) { $contacts = $this->address_books[$id]; } else if ($id && $ldap_config[$id]) { @@ -206,14 +206,16 @@ class rcmail extends rcube if ($plugin['instance'] instanceof rcube_addressbook) { $contacts = $plugin['instance']; } - // get first source from the list - else if (!$id) { - $source = reset($this->get_address_sources($writeable)); - if (!empty($source)) { - $contacts = $this->get_address_book($source['id']); - if ($contacts) - $id = $source['id']; - } + } + + // Get first addressbook from the list if configured default doesn't exist + // This can happen when user deleted the addressbook (e.g. Kolab folder) + if (!$contacts && (!$id || $default)) { + $source = reset($this->get_address_sources($writeable)); + if (!empty($source)) { + $contacts = $this->get_address_book($source['id']); + if ($contacts) + $id = $source['id']; } } @@ -225,6 +227,10 @@ class rcmail extends rcube true, true); } + if ($writeable && $contacts->readonly) { + return null; + } + // set configured sort order if ($sort_col = $this->config->get('addressbook_sort_col')) $contacts->set_sort_order($sort_col); diff --git a/program/steps/mail/addcontact.inc b/program/steps/mail/addcontact.inc index 2dc406f84..380557766 100644 --- a/program/steps/mail/addcontact.inc +++ b/program/steps/mail/addcontact.inc @@ -23,17 +23,8 @@ if (!$OUTPUT->ajax_call) return; -$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 || !is_object($CONTACTS)) { - $source = reset($RCMAIL->get_address_sources(true)); - $CONTACTS = $RCMAIL->get_address_book($source['id'], true); -} +// Get default addressbook +$CONTACTS = $RCMAIL->get_address_book(-1, true); if (!empty($_POST['_address']) && is_object($CONTACTS)) { diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index 5a18ded6b..21fa3e8aa 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -518,21 +518,26 @@ function rcmail_check_safe(&$message) { global $RCMAIL; - $show_images = $RCMAIL->config->get('show_images'); if (!$message->is_safe - && !empty($show_images) - && $message->has_html_part()) - { - switch($show_images) { - case '1': // known senders only - $CONTACTS = new rcube_contacts($RCMAIL->db, $_SESSION['user_id']); - if ($CONTACTS->search('email', $message->sender['mailto'], true, false)->count) { - $message->set_safe(true); + && ($show_images = $RCMAIL->config->get('show_images')) + && $message->has_html_part() + ) { + switch ($show_images) { + case 1: // known senders only + // get default addressbook, like in addcontact.inc + $CONTACTS = $RCMAIL->get_address_book(-1, true); + + if ($CONTACTS) { + $result = $CONTACTS->search('email', $message->sender['mailto'], 1, false); + if ($result->count) { + $message->set_safe(true); + } } - break; - case '2': // always + break; + + case 2: // always $message->set_safe(true); - break; + break; } } } |