/** * Return message headers object of a specific message * * @param int $id Message sequence ID or UID * @param string $mailbox Mailbox to read from * @param bool $force True to skip cache * * @return rcube_mail_header Message headers */ function get_headers($uid, $mailbox = null, $force = false) { if (!strlen($mailbox)) { $mailbox = $this->mailbox; } // get cached headers if (!$force && $uid && ($mcache = $this->get_mcache_engine())) { $headers = $mcache->get_message($mailbox, $uid); } else { $headers = $this->conn->fetchHeader($mailbox, $uid, true, true, $this->get_fetch_headers()); } return $headers; }
/** * Return message headers object of a specific message * * @param int $id Message UID * @param string $folder Folder to read from * @param bool $force True to skip cache * * @return rcube_message_header Message headers */ public function get_message_headers($uid, $folder = null, $force = false) { if (!strlen($folder)) { $folder = $this->folder; } // get cached headers if (!$force && $uid && ($mcache = $this->get_mcache_engine())) { $headers = $mcache->get_message($folder, $uid); } else { if (!$this->check_connection()) { $headers = false; } else { $headers = $this->conn->fetchHeader($folder, $uid, true, true, $this->get_fetch_headers()); } } return $headers; }
/** * @param string $key Cache key * @param string $from * @param string $to * @param string $sort_field * @param string $sort_order * @access private */ private function get_message_cache($key, $from, $to, $sort_field, $sort_order) { if (!$this->caching_enabled) { return NULL; } // use idx sort as default sorting if (!$sort_field || !in_array($sort_field, $this->db_header_fields)) { $sort_field = 'idx'; } $result = array(); $sql_result = $this->db->limitquery("SELECT idx, uid, headers" . " FROM " . get_table_name('messages') . " WHERE user_id=?" . " AND cache_key=?" . " ORDER BY " . $this->db->quoteIdentifier($sort_field) . " " . strtoupper($sort_order), $from, $to - $from, $_SESSION['user_id'], $key); while ($sql_arr = $this->db->fetch_assoc($sql_result)) { $uid = intval($sql_arr['uid']); $result[$uid] = $this->db->decode(unserialize($sql_arr['headers'])); // featch headers if unserialize failed if (empty($result[$uid])) { $result[$uid] = $this->conn->fetchHeader(preg_replace('/.msg$/', '', $key), $uid, true, false, $this->get_fetch_headers()); } } return $result; }
/** * Return message headers object of a specific message * * @param int $id Message UID * @param string $folder Folder to read from * @param bool $force True to skip cache * * @return rcube_message_header Message headers */ public function get_message_headers($uid, $folder = null, $force = false) { // decode combined UID-folder identifier if (preg_match('/^\\d+-.+/', $uid)) { list($uid, $folder) = explode('-', $uid, 2); } if (!strlen($folder)) { $folder = $this->folder; } // get cached headers if (!$force && $uid && ($mcache = $this->get_mcache_engine())) { $headers = $mcache->get_message($folder, $uid); } else { if (!$this->check_connection()) { $headers = false; } else { $headers = $this->conn->fetchHeader($folder, $uid, true, true, $this->get_fetch_headers()); if (is_object($headers)) { $headers->folder = $folder; } } } return $headers; }