r2l by Yoav
[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{
123 $Args[1]['attachment_common']['href'] = '../src/download.php?startMessage=' .
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");
129}
130
131
7baf86a9 132function attachment_common_link_html(&$Args)
133{
5bc6067b 134 $Args[1]['attachment_common']['href'] = '../src/download.php?startMessage=' .
7d89b19d 135 $Args[2] . '&amp;passed_id=' . $Args[3] . '&amp;mailbox=' . $Args[4] .
136 '&amp;passed_ent_id=' . $Args[5] . '&amp;override_type0=text&amp;override_type1=html';
5bc6067b 137
138 if ($Args[8] && $Args[9]) {
7d89b19d 139 $Args[1]['attachment_common']['href'] .= '&amp;where=' .
140 urlencode($Args[8]) . '&amp;what=' . urlencode($Args[9]);
5bc6067b 141 }
142
143 $Args[1]['attachment_common']['text'] = _("view");
144
145 $Args[6] = $Args[1]['attachment_common']['href'];
7baf86a9 146}
147
148
149function attachment_common_link_image(&$Args)
150{
5bc6067b 151 global $attachment_common_show_images, $attachment_common_show_images_list;
152
153 $info['passed_id'] = $Args[3];
154 $info['mailbox'] = $Args[4];
155 $info['ent_id'] = $Args[5];
156
157 $attachment_common_show_images_list[] = $info;
158
159 $Args[1]['attachment_common']['href'] = '../src/image.php?startMessage=' .
7d89b19d 160 $Args[2] . '&amp;passed_id=' . $Args[3] . '&amp;mailbox=' . $Args[4] .
161 '&amp;passed_ent_id=' . $Args[5];
5bc6067b 162
163 if ($Args[8] && $Args[9]) {
7d89b19d 164 $Args[1]['attachment_common']['href'] .= '&amp;where=' .
165 urlencode($Args[8]) . '&amp;what=' . urlencode($Args[9]);
5bc6067b 166 }
cd7b8833 167
5bc6067b 168 $Args[1]['attachment_common']['text'] = _("view");
169
170 $Args[6] = $Args[1]['attachment_common']['href'];
171
7baf86a9 172}
173
174
175function attachment_common_link_vcard(&$Args)
176{
5bc6067b 177 $Args[1]['attachment_common']['href'] = '../src/vcard.php?startMessage=' .
7d89b19d 178 $Args[2] . '&amp;passed_id=' . $Args[3] . '&amp;mailbox=' . $Args[4] .
179 '&amp;passed_ent_id=' . $Args[5];
5bc6067b 180
181 if (isset($where) && isset($what))
7d89b19d 182 $Args[1]['attachment_common']['href'] .= '&amp;where=' .
183 urlencode($Args[8]) . '&amp;what=' . urlencode($Args[9]);
5bc6067b 184
185 $Args[1]['attachment_common']['text'] = _("Business Card");
186
187 $Args[6] = $Args[1]['attachment_common']['href'];
7baf86a9 188}
189
190
191function attachment_common_octet_stream(&$Args)
192{
5bc6067b 193 global $FileExtensionToMimeType;
7baf86a9 194
5bc6067b 195 do_hook('attachment_common-load_mime_types');
7baf86a9 196
5bc6067b 197 ereg('\\.([^\\.]+)$', $Args[7], $Regs);
7baf86a9 198
5bc6067b 199 $Ext = strtolower($Regs[1]);
7baf86a9 200
5bc6067b 201 if ($Ext == '' || ! isset($FileExtensionToMimeType[$Ext]))
202 return;
7baf86a9 203
5bc6067b 204 $Ret = do_hook('attachment ' . $FileExtensionToMimeType[$Ext],
205 $Args[1], $Args[2], $Args[3], $Args[4], $Args[5], $Args[6],
206 $Args[7], $Args[8], $Args[9]);
7baf86a9 207
5bc6067b 208 foreach ($Ret as $a => $b) {
209 $Args[$a] = $b;
210 }
7baf86a9 211}
212
ae2f65a9 213?>