Esempio n. 1
0
 /**
  * Converts cache row into message object.
  *
  * @param array $sql_arr Message row data
  *
  * @return rcube_mail_header Message object
  */
 private function build_message($sql_arr)
 {
     $message = $this->db->decode(unserialize($sql_arr['data']));
     if ($message) {
         $message->flags = array();
         foreach ($this->flags as $idx => $flag) {
             if (($sql_arr['flags'] & $idx) == $idx) {
                 $message->flags[$flag] = true;
             }
         }
     }
     return $message;
 }
Esempio n. 2
0
 /**
  * @param string $key Cache key
  * @param int    $uid Message UID
  * @return mixed
  * @access private
  */
 private function &get_cached_message($key, $uid)
 {
     $internal_key = 'message';
     if ($this->caching_enabled && !isset($this->icache[$internal_key][$uid])) {
         $sql_result = $this->db->query("SELECT idx, headers, structure, message_id" . " FROM " . get_table_name('messages') . " WHERE user_id=?" . " AND cache_key=?" . " AND uid=?", $_SESSION['user_id'], $key, $uid);
         if ($sql_arr = $this->db->fetch_assoc($sql_result)) {
             $this->icache['message.id'][$uid] = intval($sql_arr['message_id']);
             $this->uid_id_map[preg_replace('/\\.msg$/', '', $key)][$uid] = intval($sql_arr['idx']);
             $this->icache[$internal_key][$uid] = $this->db->decode(unserialize($sql_arr['headers']));
             if (is_object($this->icache[$internal_key][$uid]) && !empty($sql_arr['structure'])) {
                 $this->icache[$internal_key][$uid]->structure = $this->db->decode(unserialize($sql_arr['structure']));
             }
         }
     }
     return $this->icache[$internal_key][$uid];
 }