** -> *
[squirrelmail.git] / functions / attachment_common.php
1 <?php
2
3 /**
4 * attachment_common.php
5 *
6 * Copyright (c) 1999-2001 The Squirrelmail Development Team
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 */
13
14 global $attachment_common_show_images_list;
15 $attachment_common_show_images_list = array();
16
17 global $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
31 if (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) {
35 if ($val == 'image/gif')
36 register_attachment_common('image/gif', 'link_image');
37 elseif (($val == 'image/jpeg' || $val == 'image/pjpeg') and
38 (!isset($jpeg_done))) {
39 $jpeg_done = 1;
40 register_attachment_common('image/jpeg', 'link_image');
41 register_attachment_common('image/pjpeg', 'link_image');
42 }
43 elseif ($val == 'image/png')
44 register_attachment_common('image/png', 'link_image');
45 elseif ($val == 'image/x-xbitmap')
46 register_attachment_common('image/x-xbitmap', 'link_image');
47 }
48 unset($jpeg_done);
49 }
50
51 // Register text-type attachments
52 register_attachment_common('message/rfc822', 'link_text');
53 register_attachment_common('text/plain', 'link_text');
54 register_attachment_common('text/richtext', 'link_text');
55
56 // Register HTML
57 register_attachment_common('text/html', 'link_html');
58
59 // Register vcards
60 register_attachment_common('text/x-vcard', 'link_vcard');
61
62 // Register "unknown" attachments
63 register_attachment_common('application/octet-stream', 'octet_stream');
64
65
66 /* Function which optimizes readability of the above code */
67
68 function register_attachment_common($type, $func) {
69 global $squirrelmail_plugin_hooks;
70 $squirrelmail_plugin_hooks['attachment ' . $type]['attachment_common'] =
71 'attachment_common_' . $func;
72 }
73
74
75 function attachment_common_link_text(&$Args)
76 {
77 // If there is a text attachment, we would like to create a 'view' button
78 // that links to the text attachment viewer.
79 //
80 // $Args[1] = the array of actions
81 //
82 // Use our plugin name for adding an action
83 // $Args[1]['attachment_common'] = array for href and text
84 //
85 // $Args[1]['attachment_common']['text'] = What is displayed
86 // $Args[1]['attachment_common']['href'] = Where it links to
87 //
88 // This sets the 'href' of this plugin for a new link.
89 $Args[1]['attachment_common']['href'] = '../src/download.php?startMessage=' .
90 $Args[2] . '&passed_id=' . $Args[3] . '&mailbox=' . $Args[4] .
91 '&passed_ent_id=' . $Args[5] . '&override_type0=text&override_type1=plain';
92
93 // If we got here from a search, we should preserve these variables
94 if ($Args[8] && $Args[9])
95 $Args[1]['attachment_common']['href'] .= '&where=' .
96 urlencode($Args[8]) . '&what=' . urlencode($Args[9]);
97
98 // The link that we created needs a name. "view" will be displayed for
99 // all text attachments handled by this plugin.
100 $Args[1]['attachment_common']['text'] = _("view");
101
102 // Each attachment has a filename on the left, which is a link.
103 // Where that link points to can be changed. Just in case the link above
104 // for viewing text attachments is not the same as the default link for
105 // this file, we'll change it.
106 //
107 // This is a lot better in the image links, since the defaultLink will just
108 // download the image, but the one that we set it to will format the page
109 // to have an image tag in the center (looking a lot like this text viewer)
110 $Args[6] = $Args[1]['attachment_common']['href'];
111 }
112
113
114 function attachment_common_link_html(&$Args)
115 {
116 $Args[1]['attachment_common']['href'] = '../src/download.php?startMessage=' .
117 $Args[2] . '&passed_id=' . $Args[3] . '&mailbox=' . $Args[4] .
118 '&passed_ent_id=' . $Args[5] . '&override_type0=text&override_type1=html';
119
120 if ($Args[8] && $Args[9])
121 $Args[1]['attachment_common']['href'] .= '&where=' .
122 urlencode($Args[8]) . '&what=' . urlencode($Args[9]);
123
124 $Args[1]['attachment_common']['text'] = _("view");
125
126 $Args[6] = $Args[1]['attachment_common']['href'];
127 }
128
129
130 function attachment_common_link_image(&$Args)
131 {
132 global $attachment_common_show_images, $attachment_common_show_images_list;
133
134 $info['passed_id'] = $Args[3];
135 $info['mailbox'] = $Args[4];
136 $info['ent_id'] = $Args[5];
137
138 $attachment_common_show_images_list[] = $info;
139
140 $Args[1]['attachment_common']['href'] = '../src/image.php?startMessage=' .
141 $Args[2] . '&passed_id=' . $Args[3] . '&mailbox=' . $Args[4] .
142 '&passed_ent_id=' . $Args[5];
143
144 if ($Args[8] && $Args[9])
145 $Args[1]['attachment_common']['href'] .= '&where=' .
146 urlencode($Args[8]) . '&what=' . urlencode($Args[9]);
147
148 $Args[1]['attachment_common']['text'] = _("view");
149
150 $Args[6] = $Args[1]['attachment_common']['href'];
151 }
152
153
154 function attachment_common_link_vcard(&$Args)
155 {
156 $Args[1]['attachment_common']['href'] = '../src/vcard.php?startMessage=' .
157 $Args[2] . '&passed_id=' . $Args[3] . '&mailbox=' . $Args[4] .
158 '&passed_ent_id=' . $Args[5];
159
160 if (isset($where) && isset($what))
161 $Args[1]['attachment_common']['href'] .= '&where=' .
162 urlencode($Args[8]) . '&what=' . urlencode($Args[9]);
163
164 $Args[1]['attachment_common']['text'] = _("Business Card");
165
166 $Args[6] = $Args[1]['attachment_common']['href'];
167 }
168
169
170 function attachment_common_octet_stream(&$Args)
171 {
172 global $FileExtensionToMimeType;
173
174 do_hook('attachment_common-load_mime_types');
175
176 ereg('\\.([^\\.]+)$', $Args[7], $Regs);
177
178 $Ext = strtolower($Regs[1]);
179
180 if ($Ext == '' || ! isset($FileExtensionToMimeType[$Ext]))
181 return;
182
183 $Ret = do_hook('attachment ' . $FileExtensionToMimeType[$Ext],
184 $Args[1], $Args[2], $Args[3], $Args[4], $Args[5], $Args[6],
185 $Args[7], $Args[8], $Args[9]);
186
187 foreach ($Ret as $a => $b) {
188 $Args[$a] = $b;
189 }
190 }
191
192 ?>