| | |
| | | $structure[1] = $m[2]; |
| | | } |
| | | else { |
| | | return $headers; |
| | | // Try to parse the message using Mail_mimeDecode package |
| | | // We need a better solution, Mail_mimeDecode parses message |
| | | // in memory, which wouldn't work for very big messages, |
| | | // (it uses up to 10x more memory than the message size) |
| | | // it's also buggy and not actively developed |
| | | if ($headers->size && rcube_utils::mem_check($headers->size * 10)) { |
| | | $raw_msg = $this->get_raw_body($uid); |
| | | $struct = rcube_mime::parse_message($raw_msg); |
| | | } |
| | | else { |
| | | return $headers; |
| | | } |
| | | } |
| | | } |
| | | |
| | | $struct = $this->structure_part($structure, 0, '', $headers); |
| | | if (empty($struct)) { |
| | | $struct = $this->structure_part($structure, 0, '', $headers); |
| | | } |
| | | |
| | | // don't trust given content-type |
| | | if (empty($struct->parts) && !empty($headers->ctype)) { |
| | |
| | | $cache_key = 'mailboxes.folder-info.' . $folder; |
| | | $cached = $this->get_cache($cache_key); |
| | | |
| | | if (is_array($cached)) |
| | | if (is_array($cached)) { |
| | | return $cached; |
| | | } |
| | | |
| | | $acl = $this->get_capability('ACL'); |
| | | $namespace = $this->get_namespace(); |
| | |
| | | $options['name'] = $folder; |
| | | $options['attributes'] = $this->folder_attributes($folder, true); |
| | | $options['namespace'] = $this->folder_namespace($folder); |
| | | $options['rights'] = $acl && !$options['is_root'] ? (array)$this->my_rights($folder) : array(); |
| | | $options['special'] = in_array($folder, $this->default_folders); |
| | | |
| | | // Set 'noselect' and 'norename' flags |
| | | // Set 'noselect' flag |
| | | if (is_array($options['attributes'])) { |
| | | foreach ($options['attributes'] as $attrib) { |
| | | $attrib = strtolower($attrib); |
| | |
| | | $options['noselect'] = true; |
| | | } |
| | | |
| | | // Get folder rights (MYRIGHTS) |
| | | if ($acl && !$options['noselect']) { |
| | | // skip shared roots |
| | | if (!$options['is_root'] || $options['namespace'] == 'personal') { |
| | | $options['rights'] = (array)$this->my_rights($folder); |
| | | } |
| | | } |
| | | |
| | | // Set 'norename' flag |
| | | if (!empty($options['rights'])) { |
| | | $options['norename'] = !in_array('x', $options['rights']) && !in_array('d', $options['rights']); |
| | | |
| | |
| | | { |
| | | if ($this->messages_caching && !$this->mcache) { |
| | | $rcube = rcube::get_instance(); |
| | | if ($dbh = $rcube->get_dbh()) { |
| | | if (($dbh = $rcube->get_dbh()) && ($userid = $rcube->get_user_id())) { |
| | | $this->mcache = new rcube_imap_cache( |
| | | $dbh, $this, $rcube->get_user_id(), $this->options['skip_deleted']); |
| | | $dbh, $this, $userid, $this->options['skip_deleted']); |
| | | } |
| | | } |
| | | |