X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=functions%2Fattachment_common.php;h=0aed5a439aea63327d7423659f7665bfc17d83d4;hb=d99b6c569279c121747d92e6feab576371f7828a;hp=8b8a7ef2cf76088430fb2137c69f946ad67a6af8;hpb=ce68b76bfdef63cbc85d7bc46f7f1d538db9b4a4;p=squirrelmail.git diff --git a/functions/attachment_common.php b/functions/attachment_common.php index 8b8a7ef2..0aed5a43 100644 --- a/functions/attachment_common.php +++ b/functions/attachment_common.php @@ -3,28 +3,30 @@ /** * 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'); - -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', @@ -36,15 +38,19 @@ $FileExtensionToMimeType = array('bmp' => 'image/x-bitmap', /* 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'); } @@ -52,6 +58,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); } @@ -64,7 +89,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'); @@ -78,16 +102,26 @@ 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) { + global $base_uri; /* If there is a text attachment, we would like to create a "View" button that links to the text attachment viewer. @@ -100,7 +134,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'] = $base_uri . 'src/view_text.php?'. htmlspecialchars($QUERY_STRING); $Args[1]['attachment_common']['href'] = set_url_var($Args[1]['attachment_common']['href'], 'ent_id',$Args[5]); @@ -119,8 +154,14 @@ 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=' . + global $base_uri; + $Args[1]['attachment_common']['href'] = $base_uri . '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'; @@ -129,12 +170,18 @@ 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) { + global $base_uri; 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'] = $base_uri . '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'], @@ -145,8 +192,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_list; + global $attachment_common_show_images_list, $base_uri ; sqgetGlobalVar('QUERY_STRING', $QUERY_STRING, SQ_SERVER); @@ -156,7 +208,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'] = $base_uri . 'src/image.php?'. htmlspecialchars($QUERY_STRING); $Args[1]['attachment_common']['href'] = set_url_var($Args[1]['attachment_common']['href'], 'ent_id',$Args[5]); @@ -166,11 +218,16 @@ 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) { + global $base_uri; sqgetGlobalVar('QUERY_STRING', $QUERY_STRING, SQ_SERVER); - $Args[1]['attachment_common']['href'] = SM_PATH . 'src/vcard.php?'. $QUERY_STRING; + $Args[1]['attachment_common']['href'] = $base_uri . 'src/vcard.php?'. htmlspecialchars($QUERY_STRING); $Args[1]['attachment_common']['href'] = set_url_var($Args[1]['attachment_common']['href'], 'ent_id',$Args[5]); @@ -180,7 +237,12 @@ function attachment_common_link_vcard(&$Args) { $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; @@ -201,5 +263,3 @@ function attachment_common_octet_stream(&$Args) { $Args[$a] = $b; } } - -?> \ No newline at end of file