Fix so addressbook_search_mode works also for group search (#1489079)
| | |
| | | CHANGELOG Roundcube Webmail |
| | | =========================== |
| | | |
| | | - Fix so addressbook_search_mode works also for group search (#1489079) |
| | | - Fix removal of a contact from a group in LDAP addressbook (#1489081) |
| | | - Support CSV import from Atmail (#1489045) |
| | | - Inlcude SQL query in the log on SQL error (#1489064) |
| | |
| | | * List all active contact groups of this source |
| | | * |
| | | * @param string Optional search string to match group name |
| | | * @param int Matching mode: |
| | | * 0 - partial (*abc*), |
| | | * 1 - strict (=), |
| | | * 2 - prefix (abc*) |
| | | * |
| | | * @return array Indexed list of contact groups, each a hash array |
| | | */ |
| | | function list_groups($search = null) |
| | | function list_groups($search = null, $mode = 0) |
| | | { |
| | | /* empty for address books don't supporting groups */ |
| | | return array(); |
| | |
| | | * List all active contact groups of this source |
| | | * |
| | | * @param string Search string to match group name |
| | | * @param int Matching mode: |
| | | * 0 - partial (*abc*), |
| | | * 1 - strict (=), |
| | | * 2 - prefix (abc*) |
| | | * |
| | | * @return array Indexed list of contact groups, each a hash array |
| | | */ |
| | | function list_groups($search = null) |
| | | function list_groups($search = null, $mode = 0) |
| | | { |
| | | $results = array(); |
| | | |
| | | if (!$this->groups) |
| | | return $results; |
| | | |
| | | $sql_filter = $search ? " AND " . $this->db->ilike('name', '%'.$search.'%') : ''; |
| | | if ($search) { |
| | | switch (intval($mode)) { |
| | | case 1: |
| | | $sql_filter = $this->db->ilike('name', $search); |
| | | break; |
| | | case 2: |
| | | $sql_filter = $this->db->ilike('name', $search . '%'); |
| | | break; |
| | | default: |
| | | $sql_filter = $this->db->ilike('name', '%' . $search . '%'); |
| | | } |
| | | |
| | | $sql_filter = " AND $sql_filter"; |
| | | } |
| | | |
| | | $sql_result = $this->db->query( |
| | | "SELECT * FROM ".$this->db->table_name($this->db_groups). |
| | |
| | | * List all active contact groups of this source |
| | | * |
| | | * @param string Optional search string to match group name |
| | | * @param int Matching mode: |
| | | * 0 - partial (*abc*), |
| | | * 1 - strict (=), |
| | | * 2 - prefix (abc*) |
| | | * |
| | | * @return array Indexed list of contact groups, each a hash array |
| | | */ |
| | | function list_groups($search = null) |
| | | function list_groups($search = null, $mode = 0) |
| | | { |
| | | if (!$this->groups) |
| | | return array(); |
| | |
| | | |
| | | $groups = array(); |
| | | if ($search) { |
| | | $search = mb_strtolower($search); |
| | | foreach ($group_cache as $group) { |
| | | if (strpos(mb_strtolower($group['name']), $search) !== false) |
| | | if ($this->compare_search_value('name', $group['name'], $search, $mode)) { |
| | | $groups[] = $group; |
| | | } |
| | | } |
| | | } |
| | | else |
| | |
| | | |
| | | // also list matching contact groups |
| | | if ($abook->groups && count($contacts) < $MAXNUM) { |
| | | foreach ($abook->list_groups($search) as $group) { |
| | | foreach ($abook->list_groups($search, $mode) as $group) { |
| | | $abook->reset(); |
| | | $abook->set_group($group['ID']); |
| | | $group_prop = $abook->get_group($group['ID']); |