| | |
| | | |
| | | /* |
| | | +-----------------------------------------------------------------------+ |
| | | | program/include/rcube_contacts.php | |
| | | | | |
| | | | This file is part of the Roundcube Webmail client | |
| | | | Copyright (C) 2006-2012, The Roundcube Dev Team | |
| | | | | |
| | |
| | | | | |
| | | | PURPOSE: | |
| | | | Interface to the local address book database | |
| | | | | |
| | | +-----------------------------------------------------------------------+ |
| | | | Author: Thomas Bruederli <roundcube@gmail.com> | |
| | | +-----------------------------------------------------------------------+ |
| | |
| | | 'jobtitle', 'organization', 'department', 'assistant', 'manager', |
| | | 'gender', 'maidenname', 'spouse', 'email', 'phone', 'address', |
| | | 'birthday', 'anniversary', 'website', 'im', 'notes', 'photo'); |
| | | public $date_cols = array('birthday', 'anniversary'); |
| | | |
| | | const SEPARATOR = ','; |
| | | |
| | |
| | | for ($i=0; $i<$pages; $i++) { |
| | | $this->list_records(null, $i, true); |
| | | while ($row = $this->result->next()) { |
| | | $id = $row[$this->primary_key]; |
| | | $id = $row[$this->primary_key]; |
| | | $found = array(); |
| | | foreach (preg_grep($regexp, array_keys($row)) as $col) { |
| | | $pos = strpos($col, ':'); |
| | | $colname = $pos ? substr($col, 0, $pos) : $col; |
| | | $search = $post_search[$colname]; |
| | | foreach ((array)$row[$col] as $value) { |
| | | // composite field, e.g. address |
| | | foreach ((array)$value as $val) { |
| | | $val = mb_strtolower($val); |
| | | switch ($mode) { |
| | | case 1: |
| | | $got = ($val == $search); |
| | | break; |
| | | case 2: |
| | | $got = ($search == substr($val, 0, strlen($search))); |
| | | break; |
| | | default: |
| | | $got = (strpos($val, $search) !== false); |
| | | break; |
| | | } |
| | | |
| | | if ($got) { |
| | | $found[$colname] = true; |
| | | break 2; |
| | | } |
| | | if ($this->compare_search_value($colname, $value, $search, $mode)) { |
| | | $found[$colname] = true; |
| | | break 2; |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | $insert_id = $this->db->insert_id($this->db_name); |
| | | } |
| | | |
| | | // also add the newly created contact to the active group |
| | | if ($insert_id && $this->group_id) |
| | | $this->add_to_group($this->group_id, $insert_id); |
| | | |
| | | $this->cache = null; |
| | | |