/** * Saves the message in cache. * * @param string $mailbox Folder name * @param rcube_mail_header $message Message data * @param bool $force Skips message in-cache existance check */ function add_message($mailbox, $message, $force = false) { if (!is_object($message) || empty($message->uid)) { return; } $msg = serialize($this->db->encode(clone $message)); $flags = 0; if (!empty($message->flags)) { foreach ($this->flags as $idx => $flag) { if (!empty($message->flags[$flag])) { $flags += $idx; } } } unset($msg->flags); // update cache record (even if it exists, the update // here will work as select, assume row exist if affected_rows=0) if (!$force) { $res = $this->db->query("UPDATE " . get_table_name('cache_messages') . " SET flags = ?, data = ?, changed = " . $this->db->now() . " WHERE user_id = ?" . " AND mailbox = ?" . " AND uid = ?", $flags, $msg, $this->userid, $mailbox, (int) $message->uid); if ($this->db->affected_rows()) { return; } } // insert new record $this->db->query("INSERT INTO " . get_table_name('cache_messages') . " (user_id, mailbox, uid, flags, changed, data)" . " VALUES (?, ?, ?, ?, " . $this->db->now() . ", ?)", $this->userid, $mailbox, (int) $message->uid, $flags, $msg); }
/** * Deletes given saved search record * * @param int $sid Search ID * * @return boolean True if deleted successfully, false if nothing changed */ function delete_search($sid) { if (!$this->ID) { return false; } $this->db->query("DELETE FROM " . $this->db->table_name('searches') . " WHERE user_id = ?" . " AND search_id = ?", (int) $this->ID, $sid); return $this->db->affected_rows(); }
/** * 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 */ function remove_from_group($group_id, $ids) { if (!is_array($ids)) { $ids = explode(self::SEPARATOR, $ids); } $ids = $this->db->array2list($ids, 'integer'); $sql_result = $this->db->query("DELETE FROM " . $this->db->table_name($this->db_groupmembers) . " WHERE contactgroup_id=?" . " AND contact_id IN ({$ids})", $group_id); return $this->db->affected_rows(); }
/** * Mark the given identity as deleted * * @param int $iid Identity ID * @return boolean True if deleted successfully, false if nothing changed */ function delete_identity($iid) { if (!$this->ID) { return false; } $sql_result = $this->db->query("SELECT count(*) AS ident_count FROM " . get_table_name('identities') . " WHERE user_id = ? AND del <> 1", $this->ID); $sql_arr = $this->db->fetch_assoc($sql_result); // we'll not delete last identity if ($sql_arr['ident_count'] <= 1) { return false; } $this->db->query("UPDATE " . get_table_name('identities') . " SET del = 1, changed = " . $this->db->now() . " WHERE user_id = ?" . " AND identity_id = ?", $this->ID, $iid); return $this->db->affected_rows(); }