Esempio n. 1
0
 /**
  * @access private
  */
 private function add_message_cache($key, $index, $headers, $struct = null, $force = false, $internal_cache = false)
 {
     if (empty($key) || !is_object($headers) || empty($headers->uid)) {
         return;
     }
     // add to internal (fast) cache
     if ($internal_cache) {
         $this->icache['message'][$headers->uid] = clone $headers;
         $this->icache['message'][$headers->uid]->structure = $struct;
     }
     // no further caching
     if (!$this->caching_enabled) {
         return;
     }
     // known message id
     if (is_int($force) && $force > 0) {
         $message_id = $force;
     } else {
         if (!$force) {
             $sql_result = $this->db->query("SELECT message_id" . " FROM " . get_table_name('messages') . " WHERE user_id=?" . " AND cache_key=?" . " AND uid=?", $_SESSION['user_id'], $key, $headers->uid);
             if ($sql_arr = $this->db->fetch_assoc($sql_result)) {
                 $message_id = $sql_arr['message_id'];
             }
         }
     }
     // update cache record
     if ($message_id) {
         $this->db->query("UPDATE " . get_table_name('messages') . " SET idx=?, headers=?, structure=?" . " WHERE message_id=?", $index, serialize($this->db->encode(clone $headers)), is_object($struct) ? serialize($this->db->encode(clone $struct)) : NULL, $message_id);
     } else {
         // insert new record
         $this->db->query("INSERT INTO " . get_table_name('messages') . " (user_id, del, cache_key, created, idx, uid, subject, " . $this->db->quoteIdentifier('from') . ", " . $this->db->quoteIdentifier('to') . ", " . "cc, date, size, headers, structure)" . " VALUES (?, 0, ?, " . $this->db->now() . ", ?, ?, ?, ?, ?, ?, " . $this->db->fromunixtime($headers->timestamp) . ", ?, ?, ?)", $_SESSION['user_id'], $key, $index, $headers->uid, (string) mb_substr($this->db->encode($this->decode_header($headers->subject, true)), 0, 128), (string) mb_substr($this->db->encode($this->decode_header($headers->from, true)), 0, 128), (string) mb_substr($this->db->encode($this->decode_header($headers->to, true)), 0, 128), (string) mb_substr($this->db->encode($this->decode_header($headers->cc, true)), 0, 128), (int) $headers->size, serialize($this->db->encode(clone $headers)), is_object($struct) ? serialize($this->db->encode(clone $struct)) : NULL);
     }
     unset($this->icache['index']);
 }
Esempio n. 2
0
 /**
  * Update a specific contact record
  *
  * @param mixed Record identifier
  * @param array Assoziative array with save data
  * @return boolean True on success, False on error
  */
 function update($id, $save_cols)
 {
     $updated = false;
     $write_sql = array();
     foreach ($this->table_cols as $col) {
         if (isset($save_cols[$col])) {
             $write_sql[] = sprintf("%s=%s", $this->db->quoteIdentifier($col), $this->db->quote($save_cols[$col]));
         }
     }
     if (!empty($write_sql)) {
         $this->db->query("UPDATE " . get_table_name($this->db_name) . " SET changed=" . $this->db->now() . ", " . join(', ', $write_sql) . " WHERE contact_id=?" . " AND user_id=?" . " AND del<>1", $id, $this->user_id);
         $updated = $this->db->affected_rows();
     }
     return $updated;
 }
Esempio n. 3
0
 /**
  * Create a new saved search record linked with this user
  *
  * @param array $data Hash array with col->value pairs to save
  *
  * @return int  The inserted search ID or false on error
  */
 function insert_search($data)
 {
     if (!$this->ID) {
         return false;
     }
     $insert_cols[] = 'user_id';
     $insert_values[] = (int) $this->ID;
     $insert_cols[] = $this->db->quoteIdentifier('type');
     $insert_values[] = (int) $data['type'];
     $insert_cols[] = $this->db->quoteIdentifier('name');
     $insert_values[] = $data['name'];
     $insert_cols[] = $this->db->quoteIdentifier('data');
     $insert_values[] = serialize($data['data']);
     $sql = "INSERT INTO " . $this->db->table_name('searches') . " (" . join(', ', $insert_cols) . ")" . " VALUES (" . join(', ', array_pad(array(), sizeof($insert_values), '?')) . ")";
     call_user_func_array(array($this->db, 'query'), array_merge(array($sql), $insert_values));
     return $this->db->insert_id('searches');
 }
Esempio n. 4
0
 /**
  * Update a specific contact record
  *
  * @param mixed Record identifier
  * @param array Assoziative array with save data
  * @return boolean True on success, False on error
  */
 function update($id, $save_cols)
 {
     $updated = false;
     $write_sql = array();
     $record = $this->get_record($id, true);
     $save_cols = $this->convert_save_data($save_cols, $record);
     foreach ($save_cols as $col => $value) {
         $write_sql[] = sprintf("%s=%s", $this->db->quoteIdentifier($col), $this->db->quote($value));
     }
     if (!empty($write_sql)) {
         $this->db->query("UPDATE " . $this->db->table_name($this->db_name) . " SET changed=" . $this->db->now() . ", " . join(', ', $write_sql) . " WHERE contact_id=?" . " AND user_id=?" . " AND del<>1", $id, $this->user_id);
         $updated = $this->db->affected_rows();
         $this->result = null;
         // clear current result (from get_record())
     }
     return $updated;
 }
Esempio n. 5
0
 /**
  * Make this identity the default one for this user
  *
  * @param int $iid The identity ID
  */
 function set_default($iid)
 {
     if ($this->ID && $iid) {
         $this->db->query("UPDATE " . get_table_name('identities') . " SET " . $this->db->quoteIdentifier('standard') . " = '0'" . " WHERE user_id = ?" . " AND identity_id <> ?" . " AND del <> 1", $this->ID, $iid);
     }
 }