alecpl
2010-06-02 1126fc6127a0dbeeb053da55412414861109f94a
program/include/rcube_contacts.php
@@ -564,28 +564,32 @@
            $ids = explode(',', $ids);
        $added = 0;
        $exists = array();
        // get existing assignments ...
        $sql_result = $this->db->query(
            "SELECT contact_id FROM ".get_table_name($this->db_groupmembers).
            " WHERE contactgroup_id=?".
                " AND contact_id IN (".$this->db->array2list($ids, 'integer').")",
            $group_id
        );
        while ($sql_result && ($sql_arr = $this->db->fetch_assoc($sql_result))) {
            $exists[] = $sql_arr['contact_id'];
        }
        // ... and remove them from the list
        $ids = array_diff($ids, $exists);
        foreach ($ids as $contact_id) {
            $sql_result = $this->db->query(
                "SELECT 1 FROM ".get_table_name($this->db_groupmembers).
                " WHERE contactgroup_id=?".
                    " AND contact_id=?",
            $this->db->query(
                "INSERT INTO ".get_table_name($this->db_groupmembers).
                " (contactgroup_id, contact_id, created)".
                " VALUES (?, ?, ".$this->db->now().")",
                $group_id,
                $contact_id
            );
            if (!$this->db->num_rows($sql_result)) {
                $this->db->query(
                    "INSERT INTO ".get_table_name($this->db_groupmembers).
                    " (contactgroup_id, contact_id, created)".
                    " VALUES (?, ?, ".$this->db->now().")",
                    $group_id,
                    $contact_id
                );
                if (!$this->db->db_error)
                    $added++;
            }
            if (!$this->db->db_error)
                $added++;
        }
        return $added;