Aleksander Machniak
2013-05-01 62fe548e08c64b8ff9689b1b1330a0faf0f4b784
Fix so addressbook_search_mode works also for group search (#1489079)
5 files modified
43 ■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
program/lib/Roundcube/rcube_addressbook.php 7 ●●●● patch | view | raw | blame | history
program/lib/Roundcube/rcube_contacts.php 22 ●●●●● patch | view | raw | blame | history
program/lib/Roundcube/rcube_ldap.php 11 ●●●● patch | view | raw | blame | history
program/steps/mail/autocomplete.inc 2 ●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,7 @@
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)
- Inlcude SQL query in the log on SQL error (#1489064)
- Fix handling untagged responses in IMAP FETCH - "could not load message" error (#1489074)
program/lib/Roundcube/rcube_addressbook.php
@@ -309,9 +309,14 @@
     * 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();
program/lib/Roundcube/rcube_contacts.php
@@ -137,16 +137,34 @@
     * 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).
program/lib/Roundcube/rcube_ldap.php
@@ -1715,9 +1715,14 @@
     * 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();
@@ -1729,10 +1734,10 @@
        $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
program/steps/mail/autocomplete.inc
@@ -102,7 +102,7 @@
    // 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']);