download related fixes
[squirrelmail.git] / functions / attachment_common.php
CommitLineData
7baf86a9 1<?php
7350889b 2
35586184 3/**
4 * attachment_common.php
5 *
15e6162e 6 * Copyright (c) 1999-2002 The SquirrelMail Project Team
35586184 7 * Licensed under the GNU GPL. For full terms see the file COPYING.
8 *
9 * This file provides the handling of often-used attachment types.
10 *
11 * $Id$
12 */
7baf86a9 13
35586184 14global $attachment_common_show_images_list;
15$attachment_common_show_images_list = array();
bbdd6ddb 16
5bc6067b 17global $FileExtensionToMimeType, $attachment_common_types;
18$FileExtensionToMimeType = array('bmp' => 'image/x-bitmap',
19 'gif' => 'image/gif',
20 'htm' => 'text/html',
21 'html' => 'text/html',
22 'jpg' => 'image/jpeg',
23 'jpeg' => 'image/jpeg',
24 'php' => 'text/plain',
25 'png' => 'image/png',
26 'rtf' => 'text/richtext',
27 'txt' => 'text/plain',
28 'vcf' => 'text/x-vcard');
29
30/* Register browser-supported image types */
31if (isset($attachment_common_types)) {
32 /* Don't run this before being logged in. That may happen
33 when plugins include mime.php */
34 foreach ($attachment_common_types as $val => $v) {
7baf86a9 35 if ($val == 'image/gif')
5bc6067b 36 register_attachment_common('image/gif', 'link_image');
7baf86a9 37 elseif (($val == 'image/jpeg' || $val == 'image/pjpeg') and
38 (!isset($jpeg_done))) {
5bc6067b 39 $jpeg_done = 1;
40 register_attachment_common('image/jpeg', 'link_image');
41 register_attachment_common('image/pjpeg', 'link_image');
7baf86a9 42 }
43 elseif ($val == 'image/png')
5bc6067b 44 register_attachment_common('image/png', 'link_image');
7baf86a9 45 elseif ($val == 'image/x-xbitmap')
5bc6067b 46 register_attachment_common('image/x-xbitmap', 'link_image');
47 }
48 unset($jpeg_done);
49}
7baf86a9 50
5bc6067b 51/* Register text-type attachments */
679f13b7 52//register_attachment_common('message/rfc822', 'link_text');
53register_attachment_common('message/rfc822', 'link_message');
5bc6067b 54register_attachment_common('text/plain', 'link_text');
55register_attachment_common('text/richtext', 'link_text');
7baf86a9 56
5bc6067b 57/* Register HTML */
58register_attachment_common('text/html', 'link_html');
7baf86a9 59
ae2f65a9 60
5bc6067b 61/* Register vcards */
62register_attachment_common('text/x-vcard', 'link_vcard');
7baf86a9 63
ae2f65a9 64/* Register rules for general types.
65 * These will be used if there isn't a more specific rule available. */
66register_attachment_common('text/*', 'link_text');
67register_attachment_common('message/*', 'link_text');
68
5bc6067b 69/* Register "unknown" attachments */
70register_attachment_common('application/octet-stream', 'octet_stream');
7baf86a9 71
72
73/* Function which optimizes readability of the above code */
74
75function register_attachment_common($type, $func) {
5bc6067b 76 global $squirrelmail_plugin_hooks;
77 $squirrelmail_plugin_hooks['attachment ' . $type]['attachment_common'] =
7baf86a9 78 'attachment_common_' . $func;
79}
80
81
82function attachment_common_link_text(&$Args)
83{
5bc6067b 84 /* If there is a text attachment, we would like to create a 'view' button
85 that links to the text attachment viewer.
86
87 $Args[1] = the array of actions
88
89 Use our plugin name for adding an action
90 $Args[1]['attachment_common'] = array for href and text
91
92 $Args[1]['attachment_common']['text'] = What is displayed
93 $Args[1]['attachment_common']['href'] = Where it links to
94
95 This sets the 'href' of this plugin for a new link. */
3bf87aae 96
97 global $QUERY_STRING;
98 $Args[1]['attachment_common']['href'] = '../src/view_text.php?'. $QUERY_STRING;
98eb617f 99 $Args[1]['attachment_common']['href'] =
100 set_url_var($Args[1]['attachment_common']['href'],
b854f93a 101 'ent_id',$Args[5]);
7baf86a9 102
5bc6067b 103 /* The link that we created needs a name. "view" will be displayed for
104 all text attachments handled by this plugin. */
105 $Args[1]['attachment_common']['text'] = _("view");
679f13b7 106
5bc6067b 107 /* Each attachment has a filename on the left, which is a link.
108 Where that link points to can be changed. Just in case the link above
109 for viewing text attachments is not the same as the default link for
110 this file, we'll change it.
111
112 This is a lot better in the image links, since the defaultLink will just
113 download the image, but the one that we set it to will format the page
114 to have an image tag in the center (looking a lot like this text viewer) */
115 $Args[6] = $Args[1]['attachment_common']['href'];
7baf86a9 116}
117
679f13b7 118function attachment_common_link_message(&$Args)
119{
f4c8a5ab 120 $Args[1]['attachment_common']['href'] = '../src/read_body.php?startMessage=' .
679f13b7 121 $Args[2] . '&amp;passed_id=' . $Args[3] . '&amp;mailbox=' . $Args[4] .
122 '&amp;passed_ent_id=' . $Args[5] . '&amp;override_type0=message&amp;override_type1=rfc822';
123 /* The link that we created needs a name. "view" will be displayed for
124 all text attachments handled by this plugin. */
125 $Args[1]['attachment_common']['text'] = _("view");
f4c8a5ab 126
127 $Args[6] = $Args[1]['attachment_common']['href'];
679f13b7 128}
129
130
7baf86a9 131function attachment_common_link_html(&$Args)
132{
5bc6067b 133 $Args[1]['attachment_common']['href'] = '../src/download.php?startMessage=' .
7d89b19d 134 $Args[2] . '&amp;passed_id=' . $Args[3] . '&amp;mailbox=' . $Args[4] .
135 '&amp;passed_ent_id=' . $Args[5] . '&amp;override_type0=text&amp;override_type1=html';
5bc6067b 136
137 if ($Args[8] && $Args[9]) {
7d89b19d 138 $Args[1]['attachment_common']['href'] .= '&amp;where=' .
139 urlencode($Args[8]) . '&amp;what=' . urlencode($Args[9]);
5bc6067b 140 }
141
142 $Args[1]['attachment_common']['text'] = _("view");
143
144 $Args[6] = $Args[1]['attachment_common']['href'];
7baf86a9 145}
146
7baf86a9 147function attachment_common_link_image(&$Args)
148{
5bc6067b 149 global $attachment_common_show_images, $attachment_common_show_images_list;
150
151 $info['passed_id'] = $Args[3];
152 $info['mailbox'] = $Args[4];
153 $info['ent_id'] = $Args[5];
154
155 $attachment_common_show_images_list[] = $info;
156
ff9d4297 157 global $QUERY_STRING;
158 $Args[1]['attachment_common']['href'] = '../src/image.php?'. $QUERY_STRING;
159 $Args[1]['attachment_common']['href'] =
160 set_url_var($Args[1]['attachment_common']['href'],
161 'ent_id',$Args[5]);
cd7b8833 162
5bc6067b 163 $Args[1]['attachment_common']['text'] = _("view");
164
165 $Args[6] = $Args[1]['attachment_common']['href'];
f4c8a5ab 166
7baf86a9 167}
168
169
170function attachment_common_link_vcard(&$Args)
171{
ff9d4297 172 global $QUERY_STRING;
173 $Args[1]['attachment_common']['href'] = '../src/vcard.php?'. $QUERY_STRING;
174 $Args[1]['attachment_common']['href'] =
175 set_url_var($Args[1]['attachment_common']['href'],
176 'ent_id',$Args[5]);
5bc6067b 177
178 $Args[1]['attachment_common']['text'] = _("Business Card");
179
180 $Args[6] = $Args[1]['attachment_common']['href'];
7baf86a9 181}
182
183
184function attachment_common_octet_stream(&$Args)
185{
5bc6067b 186 global $FileExtensionToMimeType;
7baf86a9 187
5bc6067b 188 do_hook('attachment_common-load_mime_types');
7baf86a9 189
5bc6067b 190 ereg('\\.([^\\.]+)$', $Args[7], $Regs);
7baf86a9 191
5bc6067b 192 $Ext = strtolower($Regs[1]);
7baf86a9 193
5bc6067b 194 if ($Ext == '' || ! isset($FileExtensionToMimeType[$Ext]))
195 return;
7baf86a9 196
5bc6067b 197 $Ret = do_hook('attachment ' . $FileExtensionToMimeType[$Ext],
198 $Args[1], $Args[2], $Args[3], $Args[4], $Args[5], $Args[6],
199 $Args[7], $Args[8], $Args[9]);
7baf86a9 200
5bc6067b 201 foreach ($Ret as $a => $b) {
202 $Args[$a] = $b;
203 }
7baf86a9 204}
205
ae2f65a9 206?>