Example #1
0
 /**
  * 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;
 }
Example #2
0
 /**
  * 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;
 }
Example #3
0
 /**
  * @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;
 }
Example #4
0
 /**
  * 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;
 }