X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=functions%2Fattachment_common.php;h=e8bee5b7e562142bc21259a191fad7fb22083ec0;hp=23278b17a5f9fb7f5a20224cd3580156174e158d;hb=d2dcc1938bc3932ab0c60664c60ade26d5096b84;hpb=6c84ba1ec45ab854c37b6f65c5b4d84ab1c7aad4 diff --git a/functions/attachment_common.php b/functions/attachment_common.php index 23278b17..e8bee5b7 100644 --- a/functions/attachment_common.php +++ b/functions/attachment_common.php @@ -3,28 +3,30 @@ /** * attachment_common.php * - * Copyright (c) 1999-2005 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,18 +192,25 @@ 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); $info['passed_id'] = $Args[3]; $info['mailbox'] = $Args[4]; $info['ent_id'] = $Args[5]; - + $info['name'] = $Args[7]; + $info['download_href'] = isset($Args[1]['download link']) ? $Args[1]['download link']['href'] : ''; + $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 +220,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 +239,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 +265,3 @@ function attachment_common_octet_stream(&$Args) { $Args[$a] = $b; } } - -?> \ No newline at end of file