Aleksander Machniak
2013-10-14 c1bc8f6c827a27540b5510b42dcc65b39d38f2c1
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).
@@ -626,10 +644,6 @@
            $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;
        return $insert_id;
@@ -704,6 +718,10 @@
        foreach ($save_data as $key => $values) {
            list($field, $section) = explode(':', $key);
            $fulltext = in_array($field, $this->fulltext_cols);
            // avoid casting DateTime objects to array
            if (is_object($values) && is_a($values, 'DateTime')) {
                $values = array(0 => $values);
            }
            foreach ((array)$values as $value) {
                if (isset($value))
                    $vcard->set($field, $value, $section);
@@ -883,9 +901,10 @@
    /**
     * Add the given contact records the a certain group
     *
     * @param string  Group identifier
     * @param array   List of contact identifiers to be added
     * @return int    Number of contacts added
     * @param string       Group identifier
     * @param array|string List of contact identifiers to be added
     *
     * @return int Number of contacts added
     */
    function add_to_group($group_id, $ids)
    {
@@ -930,9 +949,10 @@
    /**
     * Remove the given contact records from a certain group
     *
     * @param string  Group identifier
     * @param array   List of contact identifiers to be removed
     * @return int    Number of deleted group members
     * @param string       Group identifier
     * @param array|string List of contact identifiers to be removed
     *
     * @return int Number of deleted group members
     */
    function remove_from_group($group_id, $ids)
    {