alecpl
2010-04-29 06c116bf757d55d17dd03b60e1260ccdb55b2ee9
program/include/rcube_contacts.php
@@ -27,8 +27,10 @@
 */
class rcube_contacts extends rcube_addressbook
{
    // protected for backward compat. with some plugins
    // maybe changed in the future
    protected $db_name = '';
    private $db = null;
    private $db_name = '';
    private $user_id = 0;
    private $filter = null;
    private $result = null;
@@ -122,7 +124,7 @@
        if (!$this->groups)
            return $results;
        $sql_filter = $search ? "AND " . $this->db->ilike('name', '%'.$search.'%') : '';
        $sql_filter = $search ? " AND " . $this->db->ilike('name', '%'.$search.'%') : '';
        $sql_result = $this->db->query(
            "SELECT * FROM ".get_table_name('contactgroups').
@@ -163,11 +165,12 @@
        $length = $subset != 0 ? abs($subset) : $this->page_size;
        if ($this->group_id)
            $join = "LEFT JOIN ".get_table_name('contactgroupmembers')." AS m".
            $join = " LEFT JOIN ".get_table_name('contactgroupmembers')." AS m".
                " ON (m.contact_id = c.".$this->primary_key.")";
        $sql_result = $this->db->limitquery(
            "SELECT * FROM ".$this->db_name." AS c ".$join .
            "SELECT * FROM ".$this->db_name." AS c" .
            $join .
            " WHERE c.del<>1" .
                " AND c.user_id=?" .
                ($this->group_id ? " AND m.contactgroup_id=?" : "").
@@ -194,6 +197,8 @@
        else if ($this->list_page <= 1) {
            if ($cnt < $this->page_size && $subset == 0)
                $this->result->count = $cnt;
            else if (isset($this->cache['count']))
                $this->result->count = $this->cache['count'];
            else
                $this->result->count = $this->_count();
        }
@@ -221,7 +226,7 @@
        foreach ($fields as $col) {
            if ($col == 'ID' || $col == $this->primary_key) {
                $ids         = !is_array($value) ? explode(',', $value) : $value;
                $ids         = join(',', array_map(array($this->db, 'quote'), $ids));
                $ids         = $this->db->array2list($ids, 'integer');
                $add_where[] = 'c.' . $this->primary_key.' IN ('.$ids.')';
            }
            else if ($strict)
@@ -263,14 +268,15 @@
    private function _count()
    {
        if ($this->group_id)
            $join = "LEFT JOIN ".get_table_name('contactgroupmembers')." AS m".
            $join = " LEFT JOIN ".get_table_name('contactgroupmembers')." AS m".
                " ON (m.contact_id=c.".$this->primary_key.")";
      
        // count contacts for this user
        $sql_result = $this->db->query(
            "SELECT COUNT(c.contact_id) AS rows".
            " FROM ".$this->db_name." AS c ".$join.
            " WHERE  c.del<>1".
            " FROM ".$this->db_name." AS c".
                $join.
            " WHERE c.del<>1".
            " AND c.user_id=?".
            ($this->group_id ? " AND m.contactgroup_id=?" : "").
            ($this->filter ? " AND (".$this->filter.")" : ""),
@@ -431,7 +437,7 @@
        if (!is_array($ids))
            $ids = explode(',', $ids);
        $ids = join(',', array_map(array($this->db, 'quote'), $ids));
        $ids = $this->db->array2list($ids, 'integer');
        // flag record as deleted
        $this->db->query(
@@ -583,8 +589,8 @@
        if (!is_array($ids))
            $ids = explode(',', $ids);
        $ids = join(',', array_map(array($this->db, 'quote'), $ids));
        $ids = $this->db->array2list($ids, 'integer');
        $sql_result = $this->db->query(
            "DELETE FROM ".get_table_name('contactgroupmembers').
            " WHERE contactgroup_id=?".