示例#1
0
 /**
  * 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);
 }
示例#2
0
 /**
  * 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();
 }
示例#3
0
 /**
  * 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();
 }
示例#4
0
 /**
  * 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();
 }