/** * 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; }
/** * @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]; }