function url_action_mailbox($get) { global $user; global $imap; global $sort_types; global $client_sort_types; global $sticky_url; global $sort_filters; global $show_all_max; if ($user->logged_in) { do_work_hook('mailbox_page_start'); $user->page_data['labels'] = array($user->str[13], $user->str[56], $user->str[58], $user->str[57]); if (isset($_SESSION['just_logged_in']) && $_SESSION['just_logged_in']) { if (isset($_SESSION['user_settings']['folder_check'])) { $imap->get_unseen_status($_SESSION['user_settings']['folder_check']); } } if ($user->dsp_page == 'search') { return $this->url_action_search($get); } $user->page_data['mailbox_link_class'] = 'current_page'; if (isset($_SESSION['search_terms'][0]['words'])) { $user->page_data['mailbox_search_words'] = $_SESSION['search_terms'][0]['words']; } else { $user->page_data['mailbox_search_words'] = ''; } if (isset($_SESSION['search_terms'][0]['fld'])) { $user->page_data['fld_id'] = $_SESSION['search_terms'][0]['fld']; } else { $user->page_data['fld_id'] = 0; } if (isset($_SESSION['search_terms'][0]['location'])) { $user->page_data['location_id'] = $_SESSION['search_terms'][0]['location']; } else { $user->page_data['location_id'] = 0; } if (isset($_SESSION['user_settings']['top_page_links']) && $_SESSION['user_settings']['top_page_links']) { $user->page_data['top_page_links'] = true; } else { $user->page_data['top_page_links'] = false; } $mailbox = 'INBOX'; if (isset($get['mailbox'])) { if (isset($_SESSION['folders'][$get['mailbox']])) { $mailbox = $get['mailbox']; } elseif ($get['mailbox'] != $_SESSION['folders']['INBOX']['name']) { $this->errors[] = $user->str[11] . ': ' . $user->htmlsafe($get['mailbox']); } } $filter_by = 'ALL'; if (isset($get['filter_by'])) { if (isset($sort_filters[$get['filter_by']])) { $filter_by = $get['filter_by']; } } else { if (isset($_SESSION['user_settings']['hide_deleted_messages']) && $_SESSION['user_settings']['hide_deleted_messages']) { $filter_by = 'UNDELETED'; } } $user->page_data['filter_by'] = $filter_by; if (isset($_SESSION['user_settings']['sort_by'][$mailbox])) { $sort_by = $_SESSION['user_settings']['sort_by'][$mailbox]; } else { $sort_by = 'ARRIVAL'; } if (isset($_SESSION['session_sort'][$mailbox])) { $sort_by = $_SESSION['session_sort'][$mailbox]; } if (isset($get['sort_by'])) { if (stristr($_SESSION['imap_capability'], 'SORT')) { $types = $sort_types; } else { $types = $client_sort_types; } if (isset($types[$get['sort_by']])) { $sort_by = $get['sort_by']; $_SESSION['session_sort'][$mailbox] = $sort_by; } } if (isset($_SESSION['user_settings']['sent_folder']) && $_SESSION['user_settings']['sent_folder'] == $mailbox) { $user->page_data['labels'][1] = $user->str[55]; } $unseen_refresh = false; if (isset($get['track_mail'])) { $sticky_url = preg_replace("/\\&track_mail=(1|0)/", '', $sticky_url); if ($get['track_mail']) { if (isset($_SESSION['user_settings']['folder_check']) && is_array($_SESSION['user_settings']['folder_check'])) { if (!in_array($mailbox, $_SESSION['user_settings']['folder_check'])) { $folders = $_SESSION['user_settings']['folder_check']; $folders[] = $mailbox; usort($folders, 'new_folder_sort'); $_SESSION['user_settings']['folder_check'] = $folders; $user->page_data['settings']['folder_check'] = $_SESSION['user_settings']['folder_check']; $unseen_refresh = true; $this->write_settings(); } } else { $_SESSION['user_settings']['folder_check'] = array($mailbox); $user->page_data['settings']['folder_check'] = array($mailbox); $user->page_data['settings']['folder_check'] = $_SESSION['user_settings']['folder_check']; $this->write_settings(); } } else { if (isset($_SESSION['user_settings']['folder_check']) && is_array($_SESSION['user_settings']['folder_check']) && in_array($mailbox, $_SESSION['user_settings']['folder_check'])) { $new_folders = array(); foreach ($_SESSION['user_settings']['folder_check'] as $v) { if ($v != $mailbox) { $new_folders[] = $v; } } $_SESSION['user_settings']['folder_check'] = $new_folders; $user->page_data['settings']['folder_check'] = $new_folders; $this->write_settings(); } } } $status = $imap->select_mailbox($mailbox, $sort_by, $unseen_refresh, false, $filter_by); do_work_hook('mailbox_page_selected'); if ($status) { $page = 1; if (isset($get['mailbox_page'])) { $page = (int) $get['mailbox_page']; if (!$page) { $page = 1; } } if (isset($get['show_all_msg']) && $get['show_all_msg']) { $page = 1; $user->page_data['settings']['mailbox_per_page_count'] = $show_all_max; if (count($_SESSION['uid_cache'][$mailbox]['uids']) > $show_all_max) { $this->errors[] = 'Only displaying first ' . $show_all_max . ' messages out of ' . count($_SESSION['uid_cache'][$mailbox]['uids']); } $user->page_data['show_all_msg'] = 1; } else { $user->page_data['show_all_msg'] = 0; } list($page, $uids) = $this->build_page_uids($mailbox, $page, $user->page_data['settings']['mailbox_per_page_count'], $_SESSION['uid_cache'][$mailbox]['uids']); $total = $_SESSION['uid_cache'][$mailbox]['total']; $unread = $_SESSION['folders'][$mailbox]['status']['unseen']; $user->page_data['mailbox_page'] = $page; $user->page_data['folder_unread'] = $unread; $user->page_data['mailbox_range'] = $user->page_data['settings']['mailbox_per_page_count'] * ($page - 1) + 1; if ($total < $user->page_data['mailbox_range'] - 1 + $user->page_data['settings']['mailbox_per_page_count']) { $user->page_data['mailbox_range'] .= ' - ' . $total; } else { $user->page_data['mailbox_range'] .= ' - ' . ($user->page_data['mailbox_range'] - 1 + $user->page_data['settings']['mailbox_per_page_count']); } if (!empty($uids)) { /*if (!empty($_SESSION['uid_cache'][$mailbox]['thread_data'])) { $total = count($_SESSION['uid_cache'][$mailbox]['threads']); list($page, $uids) = $this->build_page_uids($mailbox, $page, $user->page_data['settings']['mailbox_per_page_count'], $_SESSION['uid_cache'][$mailbox]['threads']); }*/ $user->page_data['header_list'] = $imap->get_mailbox_page($mailbox, $uids, $page); $user->page_data['page_count'] = count($user->page_data['header_list']); if (count($user->page_data['header_list']) > 14) { $user->page_data['top_link'] = '<a href="' . $sticky_url . '#top">' . $user->str[186] . '</a>'; } $user->page_data['mailbox_total'] = $_SESSION['folders'][$mailbox]['status']['messages']; $user->page_data['thread_data'] = $_SESSION['uid_cache'][$mailbox]['thread_data']; $user->page_data['page_links'] = build_page_links($page, $total, $user->page_data['settings']['mailbox_per_page_count'], '?page=mailbox&sort_by=' . $sort_by . '&filter_by=' . $filter_by . '&mailbox=' . urlencode($mailbox)); } else { $user->page_data['header_list'] = array(); $user->page_data['page_links'] = ''; $user->page_data['mailbox_total'] = 0; } $user->page_data['sort_by'] = $sort_by; $user->page_data['mailbox'] = $mailbox; $user->page_data['url_mailbox'] = urlencode($mailbox); if ($mailbox == 'INBOX') { $user->page_data['mailbox_dsp'] = $user->str[436]; } else { $user->page_data['mailbox_dsp'] = $user->htmlsafe($mailbox, 0, 0, 1); } $user->dsp_page = 'mailbox'; if (isset($_SESSION['search_results'])) { $user->page_data['search_results'] = $_SESSION['search_results']; } $user->page_data['folders'] = $_SESSION['folders']; $user->page_title .= ' | ' . $user->str[22] . ' |'; if (isset($_SESSION['frozen_folders'][$mailbox])) { $user->page_data['frozen_dsp'] = '<span id="frozen">(Mailbox Frozen)</span>'; } else { $user->page_data['frozen_dsp'] = ''; } } else { $this->errors[] = $user->str[387] . ': ' . $user->htmlsafe($mailbox); } } }
/** * Build ajax response for a folder page */ protected function output() { $res = array(); if ($this->get('imap_mailbox_page')) { prepare_imap_message_list($this->get('imap_mailbox_page'), $this, false); $this->out('page_links', build_page_links($this->get('imap_folder_detail'), $this->get('imap_mailbox_page_path'))); } elseif (!$this->get('formatted_message_list')) { $this->out('formatted_message_list', array()); } }
function print_search_res($cols = array(), $onclick = false, $headers = true) { $n = 1; $data = '<div id="search_page_inner">'; $empty = true; foreach ($this->pd['search_results'] as $vals) { if (isset($vals['headers']) && !empty($vals['headers'])) { $empty = false; break; } } if (!$empty) { $data .= '<table class="search_res_table" cellpadding="0" cellspacing="0" width="100%">'; if ($headers) { $data .= '<tr>' . $this->print_mailbox_list_headers() . '</tr>'; } $cnt = 0; $start = $this->pd['search_start']; $end = $this->pd['search_end']; foreach ($this->pd['search_results'] as $i => $array) { $list = array(); foreach ($array['headers'] as $vals) { $cnt++; if ($start && $end && ($cnt < $start || $cnt > $end)) { continue; } $list[] = $vals; } if (empty($list)) { continue; } $array['headers'] = $list; if (!isset($array['total'])) { $array['total'] = 0; } $data .= '<tr><td colspan="' . count($this->msg_list_flds) . '"><h4>' . $array['total'] . '  <a title="' . $this->user->htmlsafe($i, 0, 0, 1) . '" href="?page=mailbox&mailbox=' . urlencode($i) . '">' . $this->user->htmlsafe($this->pd['folders'][$i]['basename'], 0, 0, 1) . '</a></h4></td></tr>'; if (!empty($array['headers'])) { $data .= $this->print_mailbox_list_rows($this->msg_list_flds, $array['headers'], $this->onclick, $i, $n); $n += count($array['headers']); } else { $data .= '<tr><td colspan="' . count($this->msg_list_flds) . '"><div class="empty_unread">No matching search results in this folder</div></td></tr>'; } } $_SESSION['toggle_all'] = false; $_SESSION['toggle_uids'] = array(); $_SESSION['toggle_boxes'] = array(); $data .= '</table>'; //<input type="hidden" id="page_count" value="'.($n - 1).'" />'; $data .= build_page_links($this->pd['mailbox_page'], $this->pd['search_total'], $this->pd['search_per_page'], '?page=search'); } else { $data .= '<div class="empty_search_res">' . $this->user->str[90] . '</div>'; } $data .= '</div>'; return $data; }
function url_action_message($get) { global $sort_types; global $client_sort_types; global $max_read_length; global $user; global $imap; global $include_path; global $message_part_types; global $override_missing_mime_header; global $add_contact_headers; global $conf; global $sort_filters; global $fd; global $sticky_url; $user->page_data['top_link'] = '<a href="' . $sticky_url . '#top">' . $user->str[186] . '</a>'; if ($user->logged_in) { if (isset($_SESSION['iframe_content']) && $_SESSION['iframe_content'] && isset($get['inline_html']) && $get['inline_html']) { ob_clean(); echo $_SESSION['iframe_content']; unset($_SESSION['iframe_content']); exit; } do_work_hook('message_page_start'); $user->page_data['unseen_uids'] = 0; $user->page_data['show_previous_options'] = 0; $user->page_data['show_up_options'] = 0; $user->page_data['show_next_options'] = 0; $user->page_data['full_header'] = -1; $user->page_data['full_part_header'] = -1; $user->page_data['message_part_headers'] = array(); $user->page_data['sort_filters'] = array('ALL' => 'All messages', 'UNSEEN' => 'Unread', 'SEEN' => 'Read', 'FLAGGED' => 'Flagged', 'UNFLAGGED' => 'Unflagged', 'ANSWERED' => 'Answered', 'UNANSWERED' => 'Unanswered', 'DELETED' => 'Deleted', 'UNDELETED' => 'Not Deleted'); $user->page_data['message_link_class'] = 'current_page'; $mailbox = false; if (isset($get['mailbox'])) { if (isset($_SESSION['folders'][$get['mailbox']])) { $mailbox = $get['mailbox']; } } if (isset($get['full_part_header'])) { $user->page_data['full_part_header'] = intval($get['full_part_header']); } if (isset($get['full_header'])) { $user->page_data['full_header'] = intval($get['full_header']); } if (isset($get['find_response']) && isset($get['current_uid']) && isset($get['response_id'])) { $uid = false; if (isset($_SESSION['user_settings']['sent_folder'])) { $select_res = $imap->select_mailbox($_SESSION['user_settings']['sent_folder'], false, false, true); if ($select_res) { $search_res = $imap->simple_search('header in-reply-to', false, $get['response_id']); if (isset($search_res[0])) { $get['uid'] = $search_res[0]; $uid = $get['uid']; $mailbox = $_SESSION['user_settings']['sent_folder']; $_GET['mailbox'] = $mailbox; $this->errors[] = $user->str[388]; } } } if (!$uid) { $get['uid'] = $get['current_uid']; $this->errors[] = $user->str[389]; } } if ($mailbox && isset($get['uid'])) { if (isset($_SESSION['frozen_folders'][$mailbox])) { $user->page_data['frozen_dsp'] = '<span id="frozen">(Mailbox Frozen)</span>'; } else { $user->page_data['frozen_dsp'] = ''; } $id = (int) $get['uid']; if ($id) { $sort_by = 'ARRIVAL'; if (isset($get['sort_by'])) { if (stristr($_SESSION['imap_capability'], 'SORT')) { $types = $sort_types; } else { $types = $client_sort_types; } if (isset($types[$get['sort_by']])) { $sort_by = $get['sort_by']; } } $filter_by = 'ALL'; if (isset($get['filter_by'])) { if (isset($sort_filters[$get['filter_by']])) { $filter_by = $get['filter_by']; } } $user->page_data['filter_by'] = $filter_by; $user->page_data['sort_by'] = $sort_by; if ($imap->select_mailbox($mailbox, $sort_by, false, true, $filter_by)) { do_work_hook('message_page_selected'); $user->page_data['mailbox'] = $mailbox; if ($mailbox == 'INBOX') { $user->page_data['mailbox_dsp'] = $user->str[436]; } else { $user->page_data['mailbox_dsp'] = $user->htmlsafe($mailbox, 0, 0, 1); } $user->page_data['url_mailbox'] = urlencode($mailbox); if ((!isset($get['show_all_mp']) || !$get['show_all_mp']) && isset($_SESSION['user_settings']['short_message_parts']) && $_SESSION['user_settings']['short_message_parts']) { if (isset($_SESSION['user_settings']['html_first']) && $_SESSION['user_settings']['html_first']) { $mfilter = 'html'; } else { $mfilter = 'plain'; } } else { $mfilter = false; } if (!isset($get['show_all_mp']) || !$get['show_all_mp']) { $user->page_data['show_all_mp'] = false; } else { $user->page_data['show_all_mp'] = true; } if ($mfilter) { list($struct, $user->page_data['filtered_mp']) = $imap->get_message_structure($id, $mfilter); } else { $user->page_data['filtered_mp'] = 0; $struct = $imap->get_message_structure($id); } $flat_list = $this->get_flat_part_list($struct); $user->page_data['part_nav_list'] = $flat_list; if (isset($get['message_part'])) { $mpart = $get['message_part']; } else { $mpart = 0; } $sort_by = 'ARRIVAL'; if (!isset($get['show_image']) && !isset($get['download']) || isset($get['framed_part'])) { $user->page_data['full_message_headers'] = $imap->get_message_headers($id, false); } if ($override_missing_mime_header) { $struct = $this->override_missing_mime_header($struct, $user->page_data['full_message_headers']); } if (isset($_SESSION['user_settings']['html_first']) && $_SESSION['user_settings']['html_first']) { list($message_data, $viewable) = $this->find_message_part($struct, $mpart, 'text', 'html'); if (empty($message_data) && !empty($viewable)) { list($message_data, $viewable) = $this->find_message_part($struct, $viewable[0]); } } else { list($message_data, $viewable) = $this->find_message_part($struct, $mpart, 'text', 'plain'); if (empty($message_data) && !empty($viewable)) { list($message_data, $viewable) = $this->find_message_part($struct, $viewable[0]); } } if (isset($get['raw_view']) && $get['raw_view']) { $raw = 1; $message_data['imap_id'] = 0; $message_data['type'] = 'text'; $message_data['subtype'] = 'plain'; } else { $raw = 0; } if (empty($message_data) && !empty($user->page_data['full_message_headers'])) { $message_data['imap_id'] = 0; $message_data['type'] = 'text'; $message_data['subtype'] = 'plain'; $user->page_data['broken_msg'] = true; } $user->page_data['raw_view'] = $raw; $user->page_data['message_struct'] = $struct; $user->page_data['message_uid'] = $id; $user->page_data['message_part'] = $mpart; $count = $_SESSION['uid_cache'][$mailbox]['total']; $page = 1; if (isset($get['mailbox_page'])) { $page = (int) $get['mailbox_page']; if (!$page) { $page = 1; } } $user->page_data['previous_uid'] = false; $user->page_data['uid_index'] = false; $user->page_data['next_uid'] = false; for ($i = 0; $i < $count; $i++) { if ($id == $_SESSION['uid_cache'][$mailbox]['uids'][$i]) { $page = floor($i / $user->page_data['settings']['mailbox_per_page_count']) + 1; $user->page_data['uid_index'] = $i; if (isset($_SESSION['uid_cache'][$mailbox]['uids'][$i + 1])) { $user->page_data['next_uid'] = $_SESSION['uid_cache'][$mailbox]['uids'][$i + 1]; $user->page_data['next_uid_page'] = floor(($i + 1) / $user->page_data['settings']['mailbox_per_page_count']) + 1; } if (isset($_SESSION['uid_cache'][$mailbox]['uids'][$i - 1])) { $user->page_data['previous_uid'] = $_SESSION['uid_cache'][$mailbox]['uids'][$i - 1]; $user->page_data['prev_uid_page'] = floor(($i - 1) / $user->page_data['settings']['mailbox_per_page_count']) + 1; } break; } } $user->page_data['show_small_headers'] = 0; $user->page_data['show_full_headers'] = 0; if (isset($get['full_headers']) && $get['full_headers']) { $user->page_data['show_full_headers'] = 1; } elseif (isset($get['small_headers']) && $get['small_headers']) { $user->page_data['show_small_headers'] = 1; } if (!empty($message_data)) { $user->page_data['message_part'] = $message_data['imap_id']; $type = strtolower($message_data['type'] . '/' . $message_data['subtype']); $user->page_data['charset'] = 'us-ascii'; if (isset($message_data['charset'])) { $user->page_data['charset'] = strtolower($message_data['charset']); } $user->page_data['raw_message_type'] = $type; if (isset($message_part_types[$type]) || isset($get['download'])) { $user->page_data['message_type'] = false; if (isset($message_part_types[$type])) { $user->page_data['message_type'] = $message_part_types[$type]; } if (isset($get['show_image']) && strtolower($message_data['type'] == 'image')) { $data = $imap->get_message_part($id, $message_data['imap_id']); if (isset($message_data['encoding']) && strtolower($message_data['encoding']) == 'base64') { $data = base64_decode($data); } elseif (isset($message_data['encoding']) && strtolower($message_data['encoding']) == 'quoted-printable') { $data = quoted_printable_decode($data); } ob_end_clean(); if ($data) { if (isset($get['thumbnail']) && $get['thumbnail'] && function_exists('imagecreatefromstring')) { $im = @imagecreatefromstring($data); $width = imagesx($im); $height = imagesy($im); $max_width = 80; $max_height = 60; if ($width > $max_width) { $new_width = $max_width; $new_height = $new_width * $height / $width; if ($new_height > $max_height) { $new_height = $max_height; $new_width = $new_height * $width / $height; } } elseif ($height > $max_height) { $new_height = $max_height; $new_width = $new_height * $width / $height; } else { $new_height = $height; $new_width = $width; } if (!$new_height || !$new_width) { $new_height = 50; $new_width = 50; } $im2 = @imagecreatetruecolor($new_width, $new_height); if ($im2 !== false && $im !== false) { imagecolortransparent($im2, imagecolorallocate($im2, 0, 0, 0)); imagealphablending($im2, false); imagesavealpha($im2, true); imagecopyresampled($im2, $im, 0, 0, 0, 0, $new_width, $new_height, $width, $height); imagepng($im2); } $imap->disconnect(); $user->clean_up(); exit; } $size = (int) $message_data['size']; header("Content-Type: " . $type); header("Content-Length: " . strlen($data)); echo $data; $imap->disconnect(); $user->clean_up(); exit; } } elseif (isset($get['framed_part'])) { if (isset($message_data['filename']) && $message_data['filename']) { $name = $message_data['filename']; } elseif (isset($message_data['name']) && $message_data['name']) { $name = $message_data['name']; } else { $name = 'message_' . $message_data['imap_id']; } $exten = get_mimetype_extension($type); if (strtolower(substr($name, -4)) != $exten) { $name .= $exten; } $encoding = false; if (isset($message_data['encoding']) && strtolower($message_data['encoding']) == 'base64') { $encoding = 'base64_decode'; } elseif (isset($message_data['encoding']) && strtolower($message_data['encoding'] == 'quoted-printable')) { $encoding = 'quoted_decode'; } $left_over = ''; $read_size = 0; $lit_size = $imap->get_message_part_start($id, $message_data['imap_id']); header("Content-Type: {$type}"); header('Content-Transfer-Encoding: binary'); header('Accept-Ranges: bytes'); header("Pragma: public"); header("Expires: 0"); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); ob_end_clean(); while ($data = $imap->get_message_part_line()) { $read_size += strlen($data); if ($read_size > $lit_size) { $extra = $read_size - $lit_size; if (strlen($data) > $extra) { $data = substr($data, 0, strlen($data) - $extra); } else { $data = false; } } if ($data && $encoding == 'base64_decode') { $data = base64_decode($data); } elseif ($data && $encoding == 'quoted_decode') { $data = $user->user_action->quoted_decode($data); } if ($data) { echo $data; flush(); } $data = false; } $imap->disconnect(); $user->clean_up(); exit; } elseif (isset($get['download'])) { if (isset($message_data['filename']) && $message_data['filename']) { $name = $message_data['filename']; } elseif (isset($message_data['name']) && $message_data['name']) { $name = $message_data['name']; } else { $name = 'message_' . $message_data['imap_id']; } $exten = get_mimetype_extension($type); if (strtolower(substr($name, -4)) != $exten) { $name .= $exten; } $encoding = false; if (isset($message_data['encoding']) && strtolower($message_data['encoding']) == 'base64') { $encoding = 'base64_decode'; } elseif (isset($message_data['encoding']) && strtolower($message_data['encoding'] == 'quoted-printable')) { $encoding = 'quoted_decode'; } $left_over = ''; $read_size = 0; $lit_size = $imap->get_message_part_start($id, $message_data['imap_id']); header("Content-Type: text"); //$type"); header('Content-Transfer-Encoding: binary'); header('Accept-Ranges: bytes'); if (isset($message_data['att_size']) && intval($message_data['att_size']) > 0) { header('Content-Length: ' . $message_data['att_size']); } elseif (!$encoding && intval($lit_size) > 0) { header('Content-Length: ' . $lit_size); } header("Pragma: public"); header("Expires: 0"); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Content-Disposition: attachment; filename="' . $name . '"'); ob_end_clean(); while ($data = $imap->get_message_part_line()) { $read_size += strlen($data); if ($read_size > $lit_size) { $extra = $read_size - $lit_size; if (strlen($data) > $extra) { $data = substr($data, 0, strlen($data) - $extra); } else { $data = false; } } if ($data && $encoding == 'base64_decode') { $data = base64_decode($data); } elseif ($data && $encoding == 'quoted_decode') { $data = $user->user_action->quoted_decode($data); } if ($data) { echo $data; } $data = false; } $imap->disconnect(); $user->clean_up(); ob_flush(); flush(); exit; } else { /*if (isset($_SESSION['header_cache'][$mailbox][$page][$id]['flags'])) { if (!stristr($_SESSION['header_cache'][$mailbox][$page][$id]['flags'], 'seen')) { if (isset($_SESSION['folders'][$mailbox]['status']['unseen']) && $_SESSION['folders'][$mailbox]['status']['unseen'] > 0) { $_SESSION['folders'][$mailbox]['status']['unseen'] -= 1; $user->page_data['folders'] = $_SESSION['folders']; } } if (!stristr($_SESSION['header_cache'][$mailbox][$page][$id]['flags'], 'Seen')) { $_SESSION['header_cache'][$mailbox][$page][$id]['flags'] .= ' \Seen'; if (isset($_SESSION['total_unread']) && $_SESSION['total_unread'] > 0 && isset($_SESSION['user_settings']['folder_check']) && is_array($_SESSION['user_settings']['folder_check']) && in_array($mailbox, $_SESSION['user_settings']['folder_check'])) { $_SESSION['total_unread']--; } } }*/ if (!isset($user->page_data['full_message_headers'])) { $user->page_data['full_message_headers'] = $imap->get_message_headers($id, false); } $user->page_data['message_headers'] = $this->prep_headers($user->page_data['full_message_headers']); if (!$user->page_data['charset']) { foreach ($user->page_data['message_headers'] as $vals) { if (strtolower($vals[0]) == 'content-type') { if (preg_match("/charset=([^\\s;]+)/", $vals[1], $matches)) { $user->page_data['charset'] = trim(str_replace(array("'", '"'), '', $matches[1])); } break; } } } if (count($user->page_data['part_nav_list']) > 1) { $parent_id = 0; foreach ($flat_list as $vals) { if ($vals[0] == $message_data['imap_id'] && $vals[1]) { $parent_id = $vals[1]; break; } } if ($parent_id && $parent_id != 1) { $user->page_data['message_part_headers'] = $this->prep_headers($imap->get_message_headers($id, $parent_id)); } } if ($raw) { $user->page_data['message_data'] = $imap->get_message_part($id, false, $raw, $max_read_length); if (isset($user->page_data['message_part_headers'])) { unset($user->page_data['message_part_headers']); } $user->page_data['part_nav_list'] = array(); } elseif ($message_part_types[$type] == 'text' || $message_part_types[$type] == 'html') { $user->page_data['message_data'] = $imap->get_message_part($id, $message_data['imap_id'], $raw, $max_read_length); if ($imap->max_read) { $this->errors[] = $user->str[390]; $imap->max_read = false; } if ($message_part_types[$type] == 'html') { if (isset($get['show_external_images'])) { if ($get['show_external_images']) { $user->page_data['show_external_images'] = true; } else { $user->page_data['show_external_images'] = false; } } } if (!$raw) { if (isset($message_data['encoding']) && strtolower($message_data['encoding']) == 'base64') { $user->page_data['message_data'] = base64_decode($user->page_data['message_data']); } elseif (isset($message_data['encoding']) && strtolower($message_data['encoding'] == 'quoted-printable')) { $user->page_data['message_data'] = $user->user_action->quoted_decode($user->page_data['message_data']); } } if (isset($conf['html_message_iframe']) && $conf['html_message_iframe'] && $message_part_types[$type] == 'html') { if ($user->sub_class_names['url']) { $class_name = 'site_page_' . $user->sub_class_names['url']; $pd = hm_new($class_name); } else { $pd = hm_new('site_page'); } $_SESSION['iframe_content'] = $pd->print_message_iframe_content(); } if (strstr($type, 'x-vcard')) { require_once $include_path . 'lib' . $fd . 'vcard.php'; $vcard = hm_new('vcard'); $vcard->import_card(explode("\r\n", $user->page_data['message_data'])); if (is_array($vcard->card) && !empty($vcard->card)) { $user->page_data['card_detail'] = $vcard->card; $_SESSION['import_card_detail'] = $vcard->card; } } } } } } if (!isset($user->page_data['full_message_headers'])) { $user->page_data['full_message_headers'] = $imap->get_message_headers($id, false); } if (!isset($user->page_data['charset'])) { $user->page_data['charset'] = false; if (isset($user->page_data['message_headers'])) { foreach ($user->page_data['message_headers'] as $vals) { if (strtolower($vals[0]) == 'content-type') { if (preg_match("/charset=([^ ]+)/", $vals[1], $matches)) { $user->page_data['charset'] = trim(str_replace(array("'", '"'), '', $matches[1])); } break; } } } } $user->page_data['mailbox_page'] = $page; $user->page_data['mailbox_total'] = $_SESSION['uid_cache'][$mailbox]['total']; $user->page_data['page_links'] = build_page_links($page, $_SESSION['uid_cache'][$mailbox]['total'], $user->page_data['settings']['mailbox_per_page_count'], '?page=mailbox&sort_by=' . $sort_by . '&filter_by=' . $filter_by . '&mailbox=' . urlencode($mailbox), $user->str[88]); $user->dsp_page = 'message'; $_SESSION['last_message_read'][$mailbox] = $id; if (isset($get['print_view']) && $get['print_view']) { ob_clean(); if ($user->sub_class_names['url']) { $class_name = 'site_page_' . $user->sub_class_names['url']; $pd = hm_new($class_name); } else { $pd = hm_new('site_page'); } echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head><title>Message Print View</title><base href="' . $pd->pd['base_href'] . '" /><title id="title">' . $pd->user->page_title . '</title> <style type="text/css">table {padding:10px;margin-left:-10px;padding-bottom:20px;} b{font-weight: normal;} table td {padding-left:10px;} table th {text-align:left;font-weight:normal;} pre {white-space: pre-wrap; white-space: -moz-pre-wrap !important; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;} </style></head> <body style="background: none; background-image: none; background-color: #fff; color: #000; margin: 30px;">' . '<table>' . $pd->print_message_headers() . '</table>'; if (isset($pd->pd['message_part_headers'])) { '<table>' . $pd->print_part_headers() . '</table>'; } //$pd->pd['raw_view'] = true; switch ($user->page_data['message_type']) { case 'text': case 'image': case 'html': echo $pd->{'print_message_' . $user->page_data['message_type']}(); break; default: echo '<div style="text-align: center; margin-top: 100px;">Unsupported MIME type: ' . $user->htmlsafe($user->page_data['raw_message_type']) . '</div>'; break; } echo ' </body> </html>'; exit; } if (isset($get['show_up_options'])) { $user->page_data['show_up_options'] = 1; } if (isset($get['show_next_options'])) { $user->page_data['show_next_options'] = 1; } if (isset($get['show_previous_options'])) { $user->page_data['show_previous_options'] = 1; } $new_contacts = array(); if (isset($user->page_data['full_message_headers'])) { foreach ($user->page_data['full_message_headers'] as $vals) { $i = $vals[0]; $v = $vals[1]; if (!in_array(strtolower($i), $add_contact_headers)) { continue; } if (strstr($v, ' ')) { $bits = explode(' ', trim($v)); } elseif (strstr($v, ',')) { $bits = explode(',', trim($v)); } else { $bits = array($v); } foreach ($bits as $val) { $val = rtrim(ltrim($val, '<,'), '>,'); if ($this->match_email($val)) { $new_contacts[] = $val; } } } } $user->page_data['new_contacts'] = $new_contacts; list($total_unread, $user->page_data['unseen_uids']) = $imap->get_mailbox_unseen($mailbox); if ($total_unread) { $user->page_data['unseen_uids'][] = $user->page_data['message_uid']; $user->page_data['unseen_uids'] = $this->sort_uid_list($user->page_data['unseen_uids'], $mailbox); } if (isset($_SESSION['search_results'][$mailbox])) { $user->page_data['search_results'] = $this->sort_uid_list($_SESSION['search_results'][$mailbox], $mailbox); } if (isset($_SESSION['uid_cache'][$mailbox]['thread_data'])) { $user->page_data['thread_data'] = $_SESSION['uid_cache'][$mailbox]['thread_data']; } $user->page_data['folders'] = $_SESSION['folders']; $user->page_title .= ' | Message |'; } } } } }