X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=functions%2Fattachment_common.php;h=3b9e561a923b7de4fa8baeb079293b0b14a8367a;hb=318578ca2325e714600a7035829c3cc22473463b;hp=678a0f38713d28bdc8de687c3b2a30ee6ca8d545;hpb=21dab2dcae048a38fcaf5b4bb7bb653bf11de4c1;p=squirrelmail.git diff --git a/functions/attachment_common.php b/functions/attachment_common.php index 678a0f38..3b9e561a 100644 --- a/functions/attachment_common.php +++ b/functions/attachment_common.php @@ -3,47 +3,64 @@ /** * attachment_common.php * - * Copyright (c) 1999-2004 The SquirrelMail Project Team - * Licensed under the GNU GPL. For full terms see the file COPYING. - * * This file provides the handling of often-used attachment types. * + * @copyright © 1999-2006 The SquirrelMail Project Team + * @license http://opensource.org/licenses/gpl-license.php GNU Public License * @version $Id$ * @package squirrelmail + * @todo document attachment $type hook arguments */ -/** - * FIXME Needs phpDocumentator style documentation - */ -require_once(SM_PATH . 'functions/global.php'); +/** @ignore */ +if (! defined('SM_PATH')) define('SM_PATH','../'); + +/** sqgetGlobalVar() */ +include_once(SM_PATH . 'functions/global.php'); +/** sqm_baseuri() */ +include_once(SM_PATH . 'functions/display_messages.php'); global $attachment_common_show_images_list; $attachment_common_show_images_list = array(); global $FileExtensionToMimeType, $attachment_common_types; +/** + * Mapping of file extensions to mime types + * + * Used for application/octet-stream mime type detection. + * Supported extensions: bmp, gif, htm, html, jpg, jpeg, php, + * png, rtf, txt, patch (since 1.4.2), vcf + * @global array $FileExtensionToMimeType + */ $FileExtensionToMimeType = array('bmp' => 'image/x-bitmap', 'gif' => 'image/gif', 'htm' => 'text/html', 'html' => 'text/html', + 'jpe' => 'image/jpeg', 'jpg' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'php' => 'text/plain', 'png' => 'image/png', 'rtf' => 'text/richtext', 'txt' => 'text/plain', + 'patch'=> 'text/plain', 'vcf' => 'text/x-vcard'); /* Register browser-supported image types */ sqgetGlobalVar('attachment_common_types', $attachment_common_types); +// FIXME: do we use $attachment_common_types that is not extracted by sqgetGlobalVar() ? if (isset($attachment_common_types)) { + // var is used to detect activation of jpeg image types + unset($jpeg_done); /* Don't run this before being logged in. That may happen when plugins include mime.php */ foreach ($attachment_common_types as $val => $v) { if ($val == 'image/gif') register_attachment_common('image/gif', 'link_image'); - elseif (($val == 'image/jpeg' || $val == 'image/pjpeg') and + elseif (($val == 'image/jpeg' || $val == 'image/pjpeg' || $val == 'image/jpg') and (!isset($jpeg_done))) { $jpeg_done = 1; + register_attachment_common('image/jpg', 'link_image'); register_attachment_common('image/jpeg', 'link_image'); register_attachment_common('image/pjpeg', 'link_image'); } @@ -51,6 +68,25 @@ if (isset($attachment_common_types)) { register_attachment_common('image/png', 'link_image'); elseif ($val == 'image/x-xbitmap') register_attachment_common('image/x-xbitmap', 'link_image'); + elseif ($val == '*/*' || $val == 'image/*') { + /** + * browser (Firefox) declared that anything is acceptable. + * Lets register some common image types. + */ + if (! isset($jpeg_done)) { + $jpeg_done = 1; + register_attachment_common('image/jpg', 'link_image'); + register_attachment_common('image/jpeg', 'link_image'); + register_attachment_common('image/pjpeg', 'link_image'); + } + register_attachment_common('image/gif', 'link_image'); + register_attachment_common('image/png', 'link_image'); + register_attachment_common('image/x-xbitmap', 'link_image'); + // register_attachment_common('image/x-ico', 'link_image'); + // register_attachment_common('image/x-icon', 'link_image'); + // register_attachment_common('image/bmp', 'link_image'); + // register_attachment_common('image/x-ms-bmp', 'link_image'); + } } unset($jpeg_done); } @@ -63,7 +99,6 @@ register_attachment_common('text/richtext', 'link_text'); /* Register HTML */ register_attachment_common('text/html', 'link_html'); - /* Register vcards */ register_attachment_common('text/x-vcard', 'link_vcard'); register_attachment_common('text/directory', 'link_vcard'); @@ -77,15 +112,24 @@ register_attachment_common('message/*', 'link_text'); register_attachment_common('application/octet-stream', 'octet_stream'); -/* Function which optimizes readability of the above code */ - +/** + * Function which optimizes readability of the above code + * Registers 'attachment $type' hooks. + * @param string $type attachment type + * @param string $func suffix of attachment_common_* function, which handles $type attachments. + * @since 1.2.0 + */ function register_attachment_common($type, $func) { global $squirrelmail_plugin_hooks; $squirrelmail_plugin_hooks['attachment ' . $type]['attachment_common'] = 'attachment_common_' . $func; } - +/** + * Adds href and text keys to attachment_common array for text attachments + * @param array $Args attachment $type hook arguments + * @since 1.2.0 + */ function attachment_common_link_text(&$Args) { /* If there is a text attachment, we would like to create a "View" button that links to the text attachment viewer. @@ -99,7 +143,8 @@ function attachment_common_link_text(&$Args) { $Args[1]['attachment_common']['href'] = Where it links to */ sqgetGlobalVar('QUERY_STRING', $QUERY_STRING, SQ_SERVER); - $Args[1]['attachment_common']['href'] = SM_PATH . 'src/view_text.php?'. $QUERY_STRING; + // if htmlspecialchars() breaks something - find other way to encode & in url. + $Args[1]['attachment_common']['href'] = sqm_baseuri() . 'src/view_text.php?'. htmlspecialchars($QUERY_STRING); $Args[1]['attachment_common']['href'] = set_url_var($Args[1]['attachment_common']['href'], 'ent_id',$Args[5]); @@ -118,8 +163,13 @@ function attachment_common_link_text(&$Args) { $Args[6] = $Args[1]['attachment_common']['href']; } +/** + * Adds href and text keys to attachment_common array for rfc822 attachments + * @param array $Args attachment $type hook arguments + * @since 1.2.6 + */ function attachment_common_link_message(&$Args) { - $Args[1]['attachment_common']['href'] = SM_PATH . 'src/read_body.php?startMessage=' . + $Args[1]['attachment_common']['href'] = sqm_baseuri() . 'src/read_body.php?startMessage=' . $Args[2] . '&passed_id=' . $Args[3] . '&mailbox=' . $Args[4] . '&passed_ent_id=' . $Args[5] . '&override_type0=message&override_type1=rfc822'; @@ -128,12 +178,17 @@ function attachment_common_link_message(&$Args) { $Args[6] = $Args[1]['attachment_common']['href']; } - +/** + * Adds href and text keys to attachment_common array for html attachments + * @param array $Args attachment $type hook arguments + * @since 1.2.0 + */ function attachment_common_link_html(&$Args) { sqgetGlobalVar('QUERY_STRING', $QUERY_STRING, SQ_SERVER); - $Args[1]['attachment_common']['href'] = SM_PATH . 'src/view_text.php?'. $QUERY_STRING. - /* why use the overridetype? can this be removed */ + $Args[1]['attachment_common']['href'] = sqm_baseuri() . 'src/view_text.php?'. htmlspecialchars($QUERY_STRING). + /* why use the overridetype? can this be removed */ + /* override_type might be needed only when we want view other type of messages as html */ '&override_type0=text&override_type1=html'; $Args[1]['attachment_common']['href'] = set_url_var($Args[1]['attachment_common']['href'], @@ -144,8 +199,13 @@ function attachment_common_link_html(&$Args) { $Args[6] = $Args[1]['attachment_common']['href']; } +/** + * Adds href and text keys to attachment_common array for image attachments + * @param array $Args attachment $type hook arguments + * @since 1.2.0 + */ function attachment_common_link_image(&$Args) { - global $attachment_common_show_images, $attachment_common_show_images_list; + global $attachment_common_show_images_list; sqgetGlobalVar('QUERY_STRING', $QUERY_STRING, SQ_SERVER); @@ -155,7 +215,7 @@ function attachment_common_link_image(&$Args) { $attachment_common_show_images_list[] = $info; - $Args[1]['attachment_common']['href'] = SM_PATH . 'src/image.php?'. $QUERY_STRING; + $Args[1]['attachment_common']['href'] = sqm_baseuri() . 'src/image.php?'. htmlspecialchars($QUERY_STRING); $Args[1]['attachment_common']['href'] = set_url_var($Args[1]['attachment_common']['href'], 'ent_id',$Args[5]); @@ -165,21 +225,30 @@ function attachment_common_link_image(&$Args) { $Args[6] = $Args[1]['attachment_common']['href']; } - +/** + * Adds href and text keys to attachment_common array for vcard attachments + * @param array $Args attachment $type hook arguments + * @since 1.2.0 + */ function attachment_common_link_vcard(&$Args) { sqgetGlobalVar('QUERY_STRING', $QUERY_STRING, SQ_SERVER); - $Args[1]['attachment_common']['href'] = SM_PATH . 'src/vcard.php?'. $QUERY_STRING; + $Args[1]['attachment_common']['href'] = sqm_baseuri() . 'src/vcard.php?'. htmlspecialchars($QUERY_STRING); $Args[1]['attachment_common']['href'] = set_url_var($Args[1]['attachment_common']['href'], 'ent_id',$Args[5]); - $Args[1]['attachment_common']['text'] = _("Business Card"); + $Args[1]['attachment_common']['text'] = _("View Business Card"); $Args[6] = $Args[1]['attachment_common']['href']; } - +/** + * Processes octet-stream attachments. + * Calls attachment_common-load_mime_types and attachment $type hooks. + * @param array $Args attachment $type hook arguments + * @since 1.2.0 + */ function attachment_common_octet_stream(&$Args) { global $FileExtensionToMimeType;