Fix two typos "squirrelmai" -> "squirrelmail". Sheesh.
[squirrelmail.git] / plugins / delete_move_next / setup.php
1 <?php
2
3 /**
4 * setup.php
5 *
6 * delete_move_next
7 * deletes or moves currently displayed message and displays
8 * next or previous message.
9 *
10 * Copyright (c) 1999-2003 The SquirrelMail Project Team
11 * Licensed under the GNU GPL. For full terms see the file COPYING.
12 *
13 * $Id$
14 * @package plugins
15 * @subpackage delete_move_next
16 */
17
18 /**
19 * Initialize the plugin
20 * @return void
21 */
22 function squirrelmail_plugin_init_delete_move_next() {
23 global $squirrelmail_plugin_hooks;
24
25 $squirrelmail_plugin_hooks['html_top']['delete_move_next'] = 'delete_move_next_action';
26 $squirrelmail_plugin_hooks['right_main_after_header']['delete_move_next'] = 'delete_move_next_action';
27 $squirrelmail_plugin_hooks['read_body_bottom']['delete_move_next'] = 'delete_move_next_read_b';
28 $squirrelmail_plugin_hooks['read_body_menu_bottom']['delete_move_next'] = 'delete_move_next_read_t';
29 $squirrelmail_plugin_hooks['options_display_inside']['delete_move_next'] = 'delete_move_next_display_inside';
30 $squirrelmail_plugin_hooks['options_display_save']['delete_move_next'] = 'delete_move_next_display_save';
31 $squirrelmail_plugin_hooks['loading_prefs']['delete_move_next'] = 'delete_move_next_loading_prefs';
32 }
33
34
35 /* fixes the sort_array for the prev_del/next_del links when
36 * using server side sorting or thread sorting
37 */
38
39 function fix_sort_array () {
40 global $username, $data_dir, $allow_server_sort, $allow_thread_sort,
41 $thread_sort_messages,
42 $mailbox, $imapConnection, $sort, $uid_support, $mbx_response;
43
44 // Got to grab this out of prefs, since it isn't saved from mailbox_view.php
45 if ($allow_thread_sort) {
46 $thread_sort_messages = getPref($data_dir, $username, "thread_$mailbox",0);
47 }
48
49 switch (true) {
50 case ($allow_thread_sort && $thread_sort_messages):
51 $server_sort_array = get_thread_sort($imapConnection);
52 break;
53 case ($allow_server_sort):
54 $server_sort_array = sqimap_get_sort_order($imapConnection, $sort, $mbx_response);
55 break;
56 case ($uid_support):
57 $server_sort_array = sqimap_get_php_sort_order($imapConnection, $mbx_response);
58 break;
59 default:
60 break;
61 }
62 }
63
64 /*
65 * Warning: this function relies on the internal representation of
66 * of the message cache for the current mailbox. As such, it is fragile
67 * because the underlying implementation can change. I will present it
68 * to the squirrelmail maintainers as a proposed addition to the API,
69 * perhaps even as inline code to sqimap_mailbox_expunge(). In the
70 * meantime, you have been warned. [alane@geeksrus.net 2001/05/06]
71 */
72
73 function delete_move_del_arr_elem($arr, $index) {
74 $tmp = array();
75 $j = 0;
76 foreach ($arr as $v) {
77 if ($j != $index) {
78 $tmp[] = $v;
79 }
80 $j++;
81 }
82 return $tmp;
83 }
84
85 function delete_move_show_msg_array() {
86 global $msort, $msgs;
87 $keys = array_keys($msort);
88 for ($i = 0; $i < count($keys); $i++) {
89 echo '<p>key ' . $keys[$i] . ' msgid ' . $msgs[$keys[$i]]['ID'] . '</p>';
90 }
91 }
92
93
94 function delete_move_expunge_from_all($id) {
95 global $msgs, $msort, $sort, $imapConnection, $mailbox, $uid_support;
96 $delAt = -1;
97 for ($i = 0; $i < count($msort); $i++) {
98 if ($msgs[$i]['ID'] == $id) {
99 $delAt = $i;
100 } elseif ($msgs[$i]['ID'] > $id) {
101 if (!$uid_support) {
102 $msgs[$i]['ID']--;
103 }
104 }
105 }
106
107 $msgs = delete_move_del_arr_elem($msgs, $delAt);
108 $msort = delete_move_del_arr_elem($msort, $delAt);
109 if ($sort < 6) {
110 if ($sort % 2) {
111 asort($msort);
112 } else {
113 arsort($msort);
114 }
115 }
116 sqsession_register($msgs, 'msgs');
117 sqsession_register($msort, 'msort');
118
119 sqimap_mailbox_expunge($imapConnection, $mailbox, true);
120 }
121
122 function delete_move_next_action() {
123
124 global $PHP_SELF;
125
126 if ( !check_php_version(4,1) ) {
127 global $_GET, $_POST;
128 }
129
130 if (isset($_GET['delete_id'])) {
131 $delete_id = $_GET['delete_id'];
132 }
133 if (isset($_POST['move_id'])) {
134 $move_id = $_POST['move_id'];
135 }
136
137 if (isset($delete_id)) {
138 delete_move_next_delete();
139 fix_sort_array();
140 } elseif (isset($move_id)) {
141 delete_move_next_move();
142 fix_sort_array();
143 }
144
145 }
146
147 function delete_move_next_read_t() {
148
149 global $delete_move_next_t;
150
151 if($delete_move_next_t == 'on') {
152 delete_move_next_read('top');
153 }
154 }
155
156 function delete_move_next_read_b() {
157
158 global $delete_move_next_b;
159
160 if ($delete_move_next_b != 'off') {
161 delete_move_next_read('bottom');
162 }
163 }
164
165
166 function delete_move_next_read($currloc) {
167 global $delete_move_next_formATtop, $delete_move_next_formATbottom,
168 $color, $where, $what, $currentArrayIndex, $passed_id,
169 $mailbox, $sort, $startMessage, $delete_id, $move_id,
170 $imapConnection, $auto_expunge, $move_to_trash, $mbx_response,
171 $uid_support, $passed_ent_id;
172
173 $urlMailbox = urlencode($mailbox);
174
175 if (!isset($passed_ent_id)) $passed_ent_id = 0;
176
177 if (!(($where && $what) || ($currentArrayIndex == -1)) && !$passed_ent_id) {
178 $next = findNextMessage($passed_id);
179 $prev = findPreviousMessage($mbx_response['EXISTS'], $passed_id);
180 $prev_if_del = $prev;
181 $next_if_del = $next;
182 if (!$uid_support && ($auto_expunge || $move_to_trash)) {
183 if ($prev_if_del > $passed_id) {
184 $prev_if_del--;
185 }
186 if ($next_if_del > $passed_id) {
187 $next_if_del--;
188 }
189 }
190
191 /* Base is illegal within documents
192 * $location = get_location();
193 * echo "<base href=\"$location/\">" . */
194 echo '<table cellspacing=0 width="100%" border=0 cellpadding=2>'.
195 '<tr>'.
196 "<td bgcolor=\"$color[9]\" width=\"100%\" align=center><small>";
197
198 if ($prev > 0){
199 echo "<a href=\"read_body.php?passed_id=$prev_if_del&amp;mailbox=$urlMailbox&amp;sort=$sort&amp;startMessage=$startMessage&amp;show_more=0&amp;delete_id=$passed_id\">" . _("Delete & Prev") . "</a>" . "&nbsp;|&nbsp;\n";
200 }
201 else {
202 echo _("Delete & Prev") . "&nbsp;|&nbsp;";
203 }
204 if ($next > 0){
205 echo "<a href=\"read_body.php?passed_id=$next_if_del&amp;mailbox=$urlMailbox&amp;sort=$sort&amp;startMessage=$startMessage&amp;show_more=0&amp;delete_id=$passed_id\">" . _("Delete & Next") . "</a>\n";
206 } else {
207 echo _("Delete & Next");
208 }
209 echo '</small></td></tr>';
210
211 if ($next_if_del < 0) {
212 $next_if_del = $prev_if_del;
213 }
214 if (($delete_move_next_formATtop == 'on') && ($currloc == 'top')) {
215 if ($next_if_del > 0) {
216 delete_move_next_moveNextForm($next_if_del);
217 } else {
218 delete_move_next_moveRightMainForm();
219 }
220 }
221 if (($delete_move_next_formATbottom != 'off') && ($currloc == 'bottom')) {
222 if ($next_if_del > 0) {
223 delete_move_next_moveNextForm($next_if_del);
224 } else {
225 delete_move_next_moveRightMainForm();
226 }
227 }
228 echo '</table>';
229 }
230 }
231
232 function get_move_target_list() {
233 global $imapConnection, $lastTargetMailbox;
234 if (isset($lastTargetMailbox) && !empty($lastTargetMailbox)) {
235 echo sqimap_mailbox_option_list($imapConnection, array(strtolower($lastTargetMailbox)));
236 }
237 else {
238 echo sqimap_mailbox_option_list($imapConnection);
239 }
240 }
241
242 function delete_move_next_moveNextForm($next) {
243
244 global $color, $where, $what, $currentArrayIndex, $passed_id,
245 $mailbox, $sort, $startMessage, $delete_id, $move_id,
246 $imapConnection;
247
248 echo '<tr>'.
249 "<td bgcolor=\"$color[9]\" width=\"100%\" align=\"center\">".
250 '<form action="read_body.php" method="post"><small>'.
251 "<input type=\"hidden\" name=\"passed_id\" value=\"$next\">".
252 "<input type=\"hidden\" name=\"mailbox\" value=\"".$mailbox."\">".
253 "<input type=\"hidden\" name=\"sort\" value=\"$sort\">".
254 "<input type=\"hidden\" name=\"startMessage\" value=\"$startMessage\">".
255 "<input type=\"hidden\" name=\"show_more\" value=\"0\">".
256 "<input type=\"hidden\" name=\"move_id\" value=\"$passed_id\">".
257 _("Move to:") .
258 ' <select name="targetMailbox">';
259 get_move_target_list();
260 echo '</select> '.
261 '<input type="submit" value="' . _("Move") . '">'.
262 '</small>'.
263 '</form>'.
264 '</td>'.
265 '</tr>';
266
267 }
268 function delete_move_next_moveRightMainForm() {
269
270 global $color, $where, $what, $currentArrayIndex, $passed_id,
271 $mailbox, $sort, $startMessage, $delete_id, $move_id,
272 $imapConnection;
273
274 echo '<tr>' .
275 "<td bgcolor=\"$color[9]\" width=\"100%\" align=\"center\">".
276 '<form action="right_main.php" method="post"><small>' .
277 "<input type=\"hidden\" name=\"mailbox\" value=\"".$mailbox."\">".
278 "<input type=\"hidden\" name=\"sort\" value=\"$sort\">".
279 "<input type=\"hidden\" name=\"startMessage\" value=\"$startMessage\">".
280 "<input type=\"hidden\" name=\"move_id\" value=\"$passed_id\">".
281 _("Move to:") .
282 ' <select name="targetMailbox">';
283 get_move_target_list();
284 echo ' </select>' .
285 '<input type=submit value="' . _("Move") . '">'.
286 '</small>'.
287 '</form>' .
288 '</td>'.
289 '</tr>';
290
291 }
292
293
294 function delete_move_next_delete() {
295 global $imapConnection, $auto_expunge;
296
297 if ( !check_php_version(4,1) ) {
298 global $_GET;
299 }
300
301 $delete_id = $_GET['delete_id'];
302 $mailbox = $_GET['mailbox'];
303
304 sqimap_messages_delete($imapConnection, $delete_id, $delete_id, $mailbox);
305 if ($auto_expunge) {
306 delete_move_expunge_from_all($delete_id);
307 // sqimap_mailbox_expunge($imapConnection, $mailbox, true);
308 }
309 }
310
311 function delete_move_next_move() {
312 global $imapConnection, $mailbox, $auto_expunge, $lastTargetMailbox;
313
314 if ( !check_php_version(4,1) ) {
315 global $_POST;
316 }
317
318 $move_id = $_POST['move_id'];
319 $mailbox = $_POST['mailbox'];
320 $targetMailbox = $_POST['targetMailbox'];
321
322 // Move message
323 sqimap_messages_copy($imapConnection, $move_id, $move_id, $targetMailbox);
324 sqimap_messages_flag($imapConnection, $move_id, $move_id, 'Deleted', true);
325 if ($auto_expunge) {
326 delete_move_expunge_from_all($move_id);
327 // sqimap_mailbox_expunge($imapConnection, $mailbox, true);
328 }
329
330 if ($targetMailbox != $lastTargetMailbox) {
331 $lastTargetMailbox = $targetMailbox;
332 sqsession_register('lastTargetMailbox' , $lastTargetMailbox);
333 }
334 }
335
336 function delete_move_next_display_inside() {
337 global $username,$data_dir,
338 $delete_move_next_t, $delete_move_next_formATtop,
339 $delete_move_next_b, $delete_move_next_formATbottom;
340
341 echo "<tr><td align=right valign=top>\n".
342 _("Delete/Move/Next Buttons:") . "</td>\n".
343 "<td><input type=checkbox name=delete_move_next_ti";
344
345 if ($delete_move_next_t == 'on') {
346 echo " checked";
347 }
348 echo '> ' . _("Display at top").
349 " <input type=checkbox name=delete_move_next_formATtopi";
350
351 if ($delete_move_next_formATtop == 'on') {
352 echo ' checked';
353 }
354 echo '> ' . _("with move option") . '<br>';
355
356 echo '<input type=checkbox name=delete_move_next_bi';
357 if($delete_move_next_b != 'off') {
358 echo ' checked';
359 }
360 echo '> ' . _("Display at bottom") .
361 '<input type=checkbox name=delete_move_next_formATbottomi';
362
363 if ($delete_move_next_formATbottom != 'off') {
364 echo ' checked';
365 }
366 echo '> ' . _("with move option") . '<br>'.
367 "</td></tr>\n";
368 }
369
370 function delete_move_next_display_save() {
371
372 global $username,$data_dir;
373
374 if ( !check_php_version(4,1) ) {
375 global $_POST;
376 }
377
378 if (isset($_POST['delete_move_next_ti'])) {
379 $delete_move_next_ti = $_POST['delete_move_next_ti'];
380 }
381 if (isset($_POST['delete_move_next_bi'])) {
382 $delete_move_next_bi = $_POST['delete_move_next_bi'];
383 }
384 if (isset($_POST['delete_move_next_formATtopi'])) {
385 $delete_move_next_formATtopi = $_POST['delete_move_next_formATtopi'];
386 }
387 if (isset($_POST['delete_move_next_formATbottomi'])) {
388 $delete_move_next_formATbottomi = $_POST['delete_move_next_formATbottomi'];
389 }
390
391 if (isset($delete_move_next_ti)) {
392 setPref($data_dir, $username, 'delete_move_next_t', 'on');
393 } else {
394 setPref($data_dir, $username, 'delete_move_next_t', "off");
395 }
396
397 if (isset($delete_move_next_formATtopi)) {
398 setPref($data_dir, $username, 'delete_move_next_formATtop', 'on');
399 } else {
400 setPref($data_dir, $username, 'delete_move_next_formATtop', "off");
401 }
402
403
404 if (isset($delete_move_next_bi)) {
405 setPref($data_dir, $username, 'delete_move_next_b', 'on');
406 } else {
407 setPref($data_dir, $username, 'delete_move_next_b', "off");
408 }
409
410 if (isset($delete_move_next_formATbottomi)) {
411 setPref($data_dir, $username, 'delete_move_next_formATbottom', 'on');
412 } else {
413 setPref($data_dir, $username, 'delete_move_next_formATbottom', "off");
414 }
415
416 }
417
418
419 function delete_move_next_loading_prefs() {
420 global $username,$data_dir,
421 $delete_move_next_t, $delete_move_next_formATtop,
422 $delete_move_next_b, $delete_move_next_formATbottom;
423
424 $delete_move_next_t = getPref($data_dir, $username, 'delete_move_next_t');
425 $delete_move_next_b = getPref($data_dir, $username, 'delete_move_next_b');
426 $delete_move_next_formATtop = getPref($data_dir, $username, 'delete_move_next_formATtop');
427 $delete_move_next_formATbottom = getPref($data_dir, $username, 'delete_move_next_formATbottom');
428
429 }
430
431 ?>