From 05731394b5de4490eee597405cd43042673312aa Mon Sep 17 00:00:00 2001 From: Alexey Melnichuk Date: Fri, 26 Aug 2016 01:10:22 +0300 Subject: [PATCH] Fix. use new parse_message function to Fax Inbox page. (#1559) * Fix. use new parse_message function to Fax Inbox page. * Fix. display messages without attachment. --- app/fax/fax_files_remote.php | 496 ++++++++++++++++++----------------- 1 file changed, 253 insertions(+), 243 deletions(-) diff --git a/app/fax/fax_files_remote.php b/app/fax/fax_files_remote.php index 98aba84223..325ae40a6a 100644 --- a/app/fax/fax_files_remote.php +++ b/app/fax/fax_files_remote.php @@ -1,243 +1,253 @@ - - Portions created by the Initial Developer are Copyright (C) 2008-2012 - the Initial Developer. All Rights Reserved. - - Contributor(s): - Mark J Crane - James Rose -*/ -include "root.php"; -require_once "resources/require.php"; -require_once "resources/check_auth.php"; -require_once "resources/functions/object_to_array.php"; -require_once "resources/functions/parse_attachments.php"; -if (permission_exists('fax_inbox_view')) { - //access granted -} -else { - echo "access denied"; - exit; -} - -//add multi-lingual support - $language = new text; - $text = $language->get(); - -//get fax server uuid, set connection parameters - if (strlen($_GET['id']) > 0) { - $fax_uuid = check_str($_GET["id"]); - - if (if_group("superadmin") || if_group("admin")) { - //show all fax extensions - $sql = "select * from v_fax "; - $sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' "; - $sql .= "and fax_uuid = '$fax_uuid' "; - } - else { - //show only assigned fax extensions - $sql = "select * from v_fax as f, v_fax_users as u "; - $sql .= "where f.fax_uuid = u.fax_uuid "; - $sql .= "and f.domain_uuid = '".$_SESSION['domain_uuid']."' "; - $sql .= "and f.fax_uuid = '$fax_uuid' "; - $sql .= "and u.user_uuid = '".$_SESSION['user_uuid']."' "; - } - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); - if (count($result) == 0) { - if (!if_group("superadmin") && !if_group("admin")) { - echo "access denied"; - exit; - } - } - foreach ($result as &$row) { - $fax_name = $row["fax_name"]; - $fax_extension = $row["fax_extension"]; - $fax_email_connection_type = $row["fax_email_connection_type"]; - $fax_email_connection_host = $row["fax_email_connection_host"]; - $fax_email_connection_port = $row["fax_email_connection_port"]; - $fax_email_connection_security = $row["fax_email_connection_security"]; - $fax_email_connection_validate = $row["fax_email_connection_validate"]; - $fax_email_connection_username = $row["fax_email_connection_username"]; - $fax_email_connection_password = $row["fax_email_connection_password"]; - $fax_email_connection_mailbox = $row["fax_email_connection_mailbox"]; - $fax_email_inbound_subject_tag = $row["fax_email_inbound_subject_tag"]; - break; - } - unset ($prep_statement); - - // make connection - $fax_email_connection = "{".$fax_email_connection_host.":".$fax_email_connection_port."/".$fax_email_connection_type; - $fax_email_connection .= ($fax_email_connection_security != '') ? "/".$fax_email_connection_security : "/notls"; - $fax_email_connection .= "/".(($fax_email_connection_validate == 'false') ? "no" : null)."validate-cert"; - $fax_email_connection .= "}".$fax_email_connection_mailbox; - if (!$connection = imap_open($fax_email_connection, $fax_email_connection_username, $fax_email_connection_password)) { - $_SESSION["message_mood"] = 'negative'; - $_SESSION["message"] = $text['message-cannot_connect']."(".imap_last_error().")"; - header("Location: fax.php"); - exit; - } - - } - else { - header("Location: fax.php"); - exit; - } - -//message action - if ($_GET['email_id'] != '') { - $email_id = check_str($_GET['email_id']); - - //download attachment - if (isset($_GET['download'])) { - $attachment = parse_attachments($connection, $email_id, FT_UID); - $file_type = pathinfo($attachment[0]['filename'], PATHINFO_EXTENSION); - switch ($file_type) { - case "pdf" : header("Content-Type: application/pdf"); break; - case "tif" : header("Contet-Type: image/tiff"); break; - } - header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 - header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // date in the past - header("Content-Length: ".strlen($attachment[0]['attachment'])); - $browser = $_SERVER["HTTP_USER_AGENT"]; - if (preg_match("/MSIE 5.5/", $browser) || preg_match("/MSIE 6.0/", $browser)) { - header("Content-Disposition: filename=\"".$attachment[0]['filename']."\""); - } - else { - header("Content-Disposition: attachment; filename=\"".$attachment[0]['filename']."\""); - } - header("Content-Transfer-Encoding: binary"); - echo $attachment[0]['attachment']; - exit; - } - - //delete email - if (isset($_GET['delete']) && permission_exists('fax_inbox_delete')) { - $attachment = parse_attachments($connection, $email_id, FT_UID); - if (imap_delete($connection, $email_id, FT_UID)) { - if (imap_expunge($connection)) { - //clean up local inbox copy - $fax_dir = $_SESSION['switch']['storage']['dir'].'/fax/'.$_SESSION['domain_name']; - @unlink($fax_dir.'/'.$fax_extension.'/inbox/'.$attachment[0]['filename']); - //redirect user - $_SESSION["message"] = $text['message-delete']; - header("Location: ?id=".$fax_uuid); - exit; - } - } - else { - //redirect user - $_SESSION["message_mood"] = "negative"; - $_SESSION["message"] = $text['message-delete_failed']; - header("Location: ?id=".$fax_uuid); - exit; - } - } - else { - //redirect user - $_SESSION["message_mood"] = "negative"; - $_SESSION["message"] = $text['message-delete_failed']; - header("Location: ?id=".$fax_uuid); - exit; - } - - } - -//get emails - $emails = imap_search($connection, "SUBJECT \"".$fax_email_inbound_subject_tag."\"", SE_UID); - -//show the header - require_once "resources/header.php"; - - $row_style["0"] = "row_style0"; - $row_style["1"] = "row_style1"; - -//show the inbox - $c = 0; - echo "\n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo "
\n"; - echo " ".$text['header-inbox'].": ".$fax_name." (".$fax_extension.")\n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo "
\n"; - echo "

\n"; - - echo "\n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - if (permission_exists('fax_inbox_delete')) { - echo " \n"; - } - echo " "; - - if ($emails) { - - rsort($emails); // most recent on top - - foreach ($emails as $email_id) { - $metadata = object_to_array(imap_fetch_overview($connection, $email_id, FT_UID)); - $attachment = parse_attachments($connection, $email_id, FT_UID); - $file_name = $attachment[0]['filename']; - $caller_id_name = substr($file_name, 0, strpos($file_name, '-')); - $caller_id_number = (is_numeric($caller_id_name)) ? format_phone((int) $caller_id_name) : null; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - if (permission_exists('fax_inbox_delete')) { - echo " \n"; - } - echo " \n"; -// $fax_message = imap_fetchbody($connection, $email_id, '1.1', FT_UID); -// if ($fax_message == '') { -// $fax_message = imap_fetchbody($connection, $email_id, '1', FT_UID); -// } - $c = ($c) ? 0 : 1; - } - - } - else { - echo "\n"; - echo " \n"; - echo "\n"; - } - - echo "
".$text['label-fax_caller_id_name']."".$text['label-fax_caller_id_number']."".$text['table-file']."".$text['label-email_size']."".$text['label-email_received']." 
".$caller_id_name."".$caller_id_number."".$file_name."".byte_convert(strlen($attachment[0]['attachment']))."".$metadata[0]['date']."".$v_link_label_delete."


".$text['message-no_faxes_found']."

"; - echo "

"; - -/* close the connection */ -imap_close($connection); - - -//show the footer - require_once "resources/footer.php"; -?> + + Portions created by the Initial Developer are Copyright (C) 2008-2012 + the Initial Developer. All Rights Reserved. + + Contributor(s): + Mark J Crane + James Rose +*/ +include "root.php"; +require_once "resources/require.php"; +require_once "resources/check_auth.php"; +require_once "resources/functions/object_to_array.php"; +require_once "resources/functions/parse_message.php"; +if (permission_exists('fax_inbox_view')) { + //access granted +} +else { + echo "access denied"; + exit; +} + +//add multi-lingual support + $language = new text; + $text = $language->get(); + +//get fax server uuid, set connection parameters + if (strlen($_GET['id']) > 0) { + $fax_uuid = check_str($_GET["id"]); + + if (if_group("superadmin") || if_group("admin")) { + //show all fax extensions + $sql = "select * from v_fax "; + $sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' "; + $sql .= "and fax_uuid = '$fax_uuid' "; + } + else { + //show only assigned fax extensions + $sql = "select * from v_fax as f, v_fax_users as u "; + $sql .= "where f.fax_uuid = u.fax_uuid "; + $sql .= "and f.domain_uuid = '".$_SESSION['domain_uuid']."' "; + $sql .= "and f.fax_uuid = '$fax_uuid' "; + $sql .= "and u.user_uuid = '".$_SESSION['user_uuid']."' "; + } + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); + if (count($result) == 0) { + if (!if_group("superadmin") && !if_group("admin")) { + echo "access denied"; + exit; + } + } + foreach ($result as &$row) { + $fax_name = $row["fax_name"]; + $fax_extension = $row["fax_extension"]; + $fax_email_connection_type = $row["fax_email_connection_type"]; + $fax_email_connection_host = $row["fax_email_connection_host"]; + $fax_email_connection_port = $row["fax_email_connection_port"]; + $fax_email_connection_security = $row["fax_email_connection_security"]; + $fax_email_connection_validate = $row["fax_email_connection_validate"]; + $fax_email_connection_username = $row["fax_email_connection_username"]; + $fax_email_connection_password = $row["fax_email_connection_password"]; + $fax_email_connection_mailbox = $row["fax_email_connection_mailbox"]; + $fax_email_inbound_subject_tag = $row["fax_email_inbound_subject_tag"]; + break; + } + unset ($prep_statement); + + // make connection + $fax_email_connection = "{".$fax_email_connection_host.":".$fax_email_connection_port."/".$fax_email_connection_type; + $fax_email_connection .= ($fax_email_connection_security != '') ? "/".$fax_email_connection_security : "/notls"; + $fax_email_connection .= "/".(($fax_email_connection_validate == 'false') ? "no" : null)."validate-cert"; + $fax_email_connection .= "}".$fax_email_connection_mailbox; + if (!$connection = imap_open($fax_email_connection, $fax_email_connection_username, $fax_email_connection_password)) { + $_SESSION["message_mood"] = 'negative'; + $_SESSION["message"] = $text['message-cannot_connect']."(".imap_last_error().")"; + header("Location: fax.php"); + exit; + } + + } + else { + header("Location: fax.php"); + exit; + } + +//message action + if ($_GET['email_id'] != '') { + $email_id = check_str($_GET['email_id']); + + //download attachment + if (isset($_GET['download'])) { + $message = parse_message($connection, $email_id, FT_UID); + $attachment = $message['attachments'][0]; + if ($attachment) { + $file_type = pathinfo($attachment['name'], PATHINFO_EXTENSION); + switch ($file_type) { + case "pdf" : header("Content-Type: application/pdf"); break; + case "tif" : header("Contet-Type: image/tiff"); break; + } + header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 + header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // date in the past + header("Content-Length: ".$attachment['size']); + $browser = $_SERVER["HTTP_USER_AGENT"]; + if (preg_match("/MSIE 5.5/", $browser) || preg_match("/MSIE 6.0/", $browser)) { + header("Content-Disposition: filename=\"".$attachment['name']."\""); + } + else { + header("Content-Disposition: attachment; filename=\"".$attachment['name']."\""); + } + header("Content-Transfer-Encoding: binary"); + echo $attachment['data']; + exit; + } + else{ + //redirect user + $_SESSION["message_mood"] = "negative"; + $_SESSION["message"] = $text['message-download_failed']; + header("Location: ?id=".$fax_uuid); + exit; + } + + } + + //delete email + if (isset($_GET['delete']) && permission_exists('fax_inbox_delete')) { + $message = parse_message($connection, $email_id, FT_UID); + $attachment = $message['attachments'][0]; + if (imap_delete($connection, $email_id, FT_UID)) { + if (imap_expunge($connection)) { + //clean up local inbox copy + $fax_dir = $_SESSION['switch']['storage']['dir'].'/fax/'.$_SESSION['domain_name']; + @unlink($fax_dir.'/'.$fax_extension.'/inbox/'.$attachment['name']); + //redirect user + $_SESSION["message"] = $text['message-delete']; + header("Location: ?id=".$fax_uuid); + exit; + } + } + else { + //redirect user + $_SESSION["message_mood"] = "negative"; + $_SESSION["message"] = $text['message-delete_failed']; + header("Location: ?id=".$fax_uuid); + exit; + } + } + else { + //redirect user + $_SESSION["message_mood"] = "negative"; + $_SESSION["message"] = $text['message-delete_failed']; + header("Location: ?id=".$fax_uuid); + exit; + } + + } + +//get emails + $emails = imap_search($connection, "SUBJECT \"".$fax_email_inbound_subject_tag."\"", SE_UID); + +//show the header + require_once "resources/header.php"; + + $row_style["0"] = "row_style0"; + $row_style["1"] = "row_style1"; + +//show the inbox + $c = 0; + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo "
\n"; + echo " ".$text['header-inbox'].": ".$fax_name." (".$fax_extension.")\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo "
\n"; + echo "

\n"; + + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + if (permission_exists('fax_inbox_delete')) { + echo " \n"; + } + echo " "; + + if ($emails) { + + rsort($emails); // most recent on top + + foreach ($emails as $email_id) { + $metadata = object_to_array(imap_fetch_overview($connection, $email_id, FT_UID)); + $message = parse_message($connection, $email_id, FT_UID); + $attachment = $message['attachments'][0]; + $file_name = $attachment['name']; + $caller_id_name = substr($file_name, 0, strpos($file_name, '-')); + $caller_id_number = (is_numeric($caller_id_name)) ? format_phone((int) $caller_id_name) : null; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + if (permission_exists('fax_inbox_delete')) { + echo " \n"; + } + echo " \n"; + $c = ($c) ? 0 : 1; + + } + + } + else { + echo "\n"; + echo " \n"; + echo "\n"; + } + + echo "
".$text['label-fax_caller_id_name']."".$text['label-fax_caller_id_number']."".$text['table-file']."".$text['label-email_size']."".$text['label-email_received']." 
".$caller_id_name."".$caller_id_number."".$file_name."".byte_convert($attachment['size'])."".$metadata[0]['date']."".$v_link_label_delete."


".$text['message-no_faxes_found']."

"; + echo "

"; + +/* close the connection */ +imap_close($connection); + + +//show the footer + require_once "resources/footer.php"; +?>