/** * __construct * * Provide a uid, and parse message structure. * * @param string $uid The message UID. * @param string $folder Folder name * * @see self::$app, self::$storage, self::$opt, self::$parts */ function __construct($uid, $folder = null) { $this->uid = $uid; $this->app = rcube::get_instance(); $this->storage = $this->app->get_storage(); $this->folder = strlen($folder) ? $folder : $this->storage->get_folder(); $this->storage->set_options(array('all_headers' => true)); // Set current folder $this->storage->set_folder($this->folder); $this->headers = $this->storage->get_message($uid); if (!$this->headers) { return; } $this->mime = new rcube_mime($this->headers->charset); $this->subject = $this->headers->get('subject'); list(, $this->sender) = each($this->mime->decode_address_list($this->headers->from, 1)); $this->set_safe(intval($_GET['_safe']) || $_SESSION['safe_messages'][$this->folder . ':' . $uid]); $this->opt = array('safe' => $this->is_safe, 'prefer_html' => $this->app->config->get('prefer_html'), 'get_url' => $this->app->url(array('action' => 'get', 'mbox' => $this->storage->get_folder(), 'uid' => $uid))); if (!empty($this->headers->structure)) { $this->get_mime_numbers($this->headers->structure); $this->parse_structure($this->headers->structure); } else { $this->body = $this->storage->get_body($uid); } // notify plugins and let them analyze this structured message object $this->app->plugins->exec_hook('message_load', array('object' => $this)); }
/** * __construct * * Provide a uid, and parse message structure. * * @param string $uid The message UID. * @param string $folder Folder name * @param bool $is_safe Security flag * * @see self::$app, self::$storage, self::$opt, self::$parts */ function __construct($uid, $folder = null, $is_safe = false) { // decode combined UID-folder identifier if (preg_match('/^[0-9.]+-.+/', $uid)) { list($uid, $folder) = explode('-', $uid, 2); } if (preg_match('/^([0-9]+)\\.([0-9.]+)$/', $uid, $matches)) { $uid = $matches[1]; $context = $matches[2]; } $this->uid = $uid; $this->context = $context; $this->app = rcube::get_instance(); $this->storage = $this->app->get_storage(); $this->folder = strlen($folder) ? $folder : $this->storage->get_folder(); // Set current folder $this->storage->set_folder($this->folder); $this->storage->set_options(array('all_headers' => true)); $this->headers = $this->storage->get_message($uid); if (!$this->headers) { return; } $this->set_safe($is_safe || $_SESSION['safe_messages'][$this->folder . ':' . $uid]); $this->opt = array('safe' => $this->is_safe, 'prefer_html' => $this->app->config->get('prefer_html'), 'get_url' => $this->app->url(array('action' => 'get', 'mbox' => $this->folder, 'uid' => $uid), false, false, true)); if (!empty($this->headers->structure)) { $this->get_mime_numbers($this->headers->structure); $this->parse_structure($this->headers->structure); } else { if ($this->context === null) { $this->body = $this->storage->get_body($uid); } } $this->mime = new rcube_mime($this->headers->charset); $this->subject = $this->headers->get('subject'); list(, $this->sender) = each($this->mime->decode_address_list($this->headers->from, 1)); // notify plugins and let them analyze this structured message object $this->app->plugins->exec_hook('message_load', array('object' => $this)); }