session recover compose.
[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. */
96 $Args[1]['attachment_common']['href'] = '../src/download.php?startMessage=' .
7d89b19d 97 $Args[2] . '&amp;passed_id=' . $Args[3] . '&amp;mailbox=' . $Args[4] .
98 '&amp;passed_ent_id=' . $Args[5] . '&amp;override_type0=text&amp;override_type1=plain';
5bc6067b 99
100 /* If we got here from a search, we should preserve these variables */
101 if ($Args[8] && $Args[9])
7d89b19d 102 $Args[1]['attachment_common']['href'] .= '&amp;where=' .
103 urlencode($Args[8]) . '&amp;what=' . urlencode($Args[9]);
7baf86a9 104
5bc6067b 105 /* The link that we created needs a name. "view" will be displayed for
106 all text attachments handled by this plugin. */
107 $Args[1]['attachment_common']['text'] = _("view");
679f13b7 108
5bc6067b 109 /* Each attachment has a filename on the left, which is a link.
110 Where that link points to can be changed. Just in case the link above
111 for viewing text attachments is not the same as the default link for
112 this file, we'll change it.
113
114 This is a lot better in the image links, since the defaultLink will just
115 download the image, but the one that we set it to will format the page
116 to have an image tag in the center (looking a lot like this text viewer) */
117 $Args[6] = $Args[1]['attachment_common']['href'];
7baf86a9 118}
119
120
679f13b7 121function attachment_common_link_message(&$Args)
122{
f4c8a5ab 123 $Args[1]['attachment_common']['href'] = '../src/read_body.php?startMessage=' .
679f13b7 124 $Args[2] . '&amp;passed_id=' . $Args[3] . '&amp;mailbox=' . $Args[4] .
125 '&amp;passed_ent_id=' . $Args[5] . '&amp;override_type0=message&amp;override_type1=rfc822';
126 /* The link that we created needs a name. "view" will be displayed for
127 all text attachments handled by this plugin. */
128 $Args[1]['attachment_common']['text'] = _("view");
f4c8a5ab 129
130 $Args[6] = $Args[1]['attachment_common']['href'];
679f13b7 131}
132
133
7baf86a9 134function attachment_common_link_html(&$Args)
135{
5bc6067b 136 $Args[1]['attachment_common']['href'] = '../src/download.php?startMessage=' .
7d89b19d 137 $Args[2] . '&amp;passed_id=' . $Args[3] . '&amp;mailbox=' . $Args[4] .
138 '&amp;passed_ent_id=' . $Args[5] . '&amp;override_type0=text&amp;override_type1=html';
5bc6067b 139
140 if ($Args[8] && $Args[9]) {
7d89b19d 141 $Args[1]['attachment_common']['href'] .= '&amp;where=' .
142 urlencode($Args[8]) . '&amp;what=' . urlencode($Args[9]);
5bc6067b 143 }
144
145 $Args[1]['attachment_common']['text'] = _("view");
146
147 $Args[6] = $Args[1]['attachment_common']['href'];
7baf86a9 148}
149
150
151function attachment_common_link_image(&$Args)
152{
5bc6067b 153 global $attachment_common_show_images, $attachment_common_show_images_list;
154
155 $info['passed_id'] = $Args[3];
156 $info['mailbox'] = $Args[4];
157 $info['ent_id'] = $Args[5];
158
159 $attachment_common_show_images_list[] = $info;
160
161 $Args[1]['attachment_common']['href'] = '../src/image.php?startMessage=' .
7d89b19d 162 $Args[2] . '&amp;passed_id=' . $Args[3] . '&amp;mailbox=' . $Args[4] .
163 '&amp;passed_ent_id=' . $Args[5];
5bc6067b 164
165 if ($Args[8] && $Args[9]) {
7d89b19d 166 $Args[1]['attachment_common']['href'] .= '&amp;where=' .
167 urlencode($Args[8]) . '&amp;what=' . urlencode($Args[9]);
5bc6067b 168 }
cd7b8833 169
5bc6067b 170 $Args[1]['attachment_common']['text'] = _("view");
171
172 $Args[6] = $Args[1]['attachment_common']['href'];
f4c8a5ab 173
7baf86a9 174}
175
176
177function attachment_common_link_vcard(&$Args)
178{
5bc6067b 179 $Args[1]['attachment_common']['href'] = '../src/vcard.php?startMessage=' .
7d89b19d 180 $Args[2] . '&amp;passed_id=' . $Args[3] . '&amp;mailbox=' . $Args[4] .
181 '&amp;passed_ent_id=' . $Args[5];
5bc6067b 182
183 if (isset($where) && isset($what))
7d89b19d 184 $Args[1]['attachment_common']['href'] .= '&amp;where=' .
185 urlencode($Args[8]) . '&amp;what=' . urlencode($Args[9]);
5bc6067b 186
187 $Args[1]['attachment_common']['text'] = _("Business Card");
188
189 $Args[6] = $Args[1]['attachment_common']['href'];
7baf86a9 190}
191
192
193function attachment_common_octet_stream(&$Args)
194{
5bc6067b 195 global $FileExtensionToMimeType;
7baf86a9 196
5bc6067b 197 do_hook('attachment_common-load_mime_types');
7baf86a9 198
5bc6067b 199 ereg('\\.([^\\.]+)$', $Args[7], $Regs);
7baf86a9 200
5bc6067b 201 $Ext = strtolower($Regs[1]);
7baf86a9 202
5bc6067b 203 if ($Ext == '' || ! isset($FileExtensionToMimeType[$Ext]))
204 return;
7baf86a9 205
5bc6067b 206 $Ret = do_hook('attachment ' . $FileExtensionToMimeType[$Ext],
207 $Args[1], $Args[2], $Args[3], $Args[4], $Args[5], $Args[6],
208 $Args[7], $Args[8], $Args[9]);
7baf86a9 209
5bc6067b 210 foreach ($Ret as $a => $b) {
211 $Args[$a] = $b;
212 }
7baf86a9 213}
214
ae2f65a9 215?>