7 * deletes or moves currently displayed message and displays
8 * next or previous message.
10 * Copyright (c) 1999-2003 The SquirrelMail Project Team
11 * Licensed under the GNU GPL. For full terms see the file COPYING.
15 * @subpackage delete_move_next
19 * Initialize the plugin
22 function squirrelmail_plugin_init_delete_move_next() {
23 global $squirrelmail_plugin_hooks;
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';
35 /* fixes the sort_array for the prev_del/next_del links when
36 * using server side sorting or thread sorting
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;
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);
50 case ($allow_thread_sort && $thread_sort_messages):
51 $server_sort_array = get_thread_sort($imapConnection);
53 case ($allow_server_sort):
54 $server_sort_array = sqimap_get_sort_order($imapConnection, $sort, $mbx_response);
57 $server_sort_array = sqimap_get_php_sort_order($imapConnection, $mbx_response);
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]
73 function delete_move_del_arr_elem($arr, $index) {
76 foreach ($arr as $v) {
85 function delete_move_show_msg_array() {
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>';
94 function delete_move_expunge_from_all($id) {
95 global $msgs, $msort, $sort, $imapConnection, $mailbox, $uid_support;
97 for ($i = 0; $i < count($msort); $i++
) {
98 if ($msgs[$i]['ID'] == $id) {
100 } elseif ($msgs[$i]['ID'] > $id) {
107 $msgs = delete_move_del_arr_elem($msgs, $delAt);
108 $msort = delete_move_del_arr_elem($msort, $delAt);
116 sqsession_register($msgs, 'msgs');
117 sqsession_register($msort, 'msort');
119 sqimap_mailbox_expunge($imapConnection, $mailbox, true);
122 function delete_move_next_action() {
126 if ( !check_php_version(4,1) ) {
127 global $_GET, $_POST;
130 if (isset($_GET['delete_id'])) {
131 $delete_id = $_GET['delete_id'];
133 if (isset($_POST['move_id'])) {
134 $move_id = $_POST['move_id'];
137 if (isset($delete_id)) {
138 delete_move_next_delete();
140 } elseif (isset($move_id)) {
141 delete_move_next_move();
147 function delete_move_next_read_t() {
149 global $delete_move_next_t;
151 if($delete_move_next_t == 'on') {
152 delete_move_next_read('top');
156 function delete_move_next_read_b() {
158 global $delete_move_next_b;
160 if ($delete_move_next_b != 'off') {
161 delete_move_next_read('bottom');
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;
173 $urlMailbox = urlencode($mailbox);
175 if (!isset($passed_ent_id)) $passed_ent_id = 0;
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) {
186 if ($next_if_del > $passed_id) {
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>'.
196 "<td bgcolor=\"$color[9]\" width=\"100%\" align=center><small>";
199 echo "<a href=\"read_body.php?passed_id=$prev_if_del&mailbox=$urlMailbox&sort=$sort&startMessage=$startMessage&show_more=0&delete_id=$passed_id\">" . _("Delete & Prev") . "</a>" . " | \n";
202 echo _("Delete & Prev") . " | ";
205 echo "<a href=\"read_body.php?passed_id=$next_if_del&mailbox=$urlMailbox&sort=$sort&startMessage=$startMessage&show_more=0&delete_id=$passed_id\">" . _("Delete & Next") . "</a>\n";
207 echo _("Delete & Next");
209 echo '</small></td></tr>';
211 if ($next_if_del < 0) {
212 $next_if_del = $prev_if_del;
214 if (($delete_move_next_formATtop == 'on') && ($currloc == 'top')) {
215 if ($next_if_del > 0) {
216 delete_move_next_moveNextForm($next_if_del);
218 delete_move_next_moveRightMainForm();
221 if (($delete_move_next_formATbottom != 'off') && ($currloc == 'bottom')) {
222 if ($next_if_del > 0) {
223 delete_move_next_moveNextForm($next_if_del);
225 delete_move_next_moveRightMainForm();
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)));
238 echo sqimap_mailbox_option_list($imapConnection);
242 function delete_move_next_moveNextForm($next) {
244 global $color, $where, $what, $currentArrayIndex, $passed_id,
245 $mailbox, $sort, $startMessage, $delete_id, $move_id,
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\">".
258 ' <select name="targetMailbox">';
259 get_move_target_list();
261 '<input type="submit" value="' . _("Move") . '">'.
268 function delete_move_next_moveRightMainForm() {
270 global $color, $where, $what, $currentArrayIndex, $passed_id,
271 $mailbox, $sort, $startMessage, $delete_id, $move_id,
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\">".
282 ' <select name="targetMailbox">';
283 get_move_target_list();
285 '<input type=submit value="' . _("Move") . '">'.
294 function delete_move_next_delete() {
295 global $imapConnection, $auto_expunge;
297 if ( !check_php_version(4,1) ) {
301 $delete_id = $_GET['delete_id'];
302 $mailbox = $_GET['mailbox'];
304 sqimap_messages_delete($imapConnection, $delete_id, $delete_id, $mailbox);
306 delete_move_expunge_from_all($delete_id);
307 // sqimap_mailbox_expunge($imapConnection, $mailbox, true);
311 function delete_move_next_move() {
312 global $imapConnection, $mailbox, $auto_expunge, $lastTargetMailbox;
314 if ( !check_php_version(4,1) ) {
318 $move_id = $_POST['move_id'];
319 $mailbox = $_POST['mailbox'];
320 $targetMailbox = $_POST['targetMailbox'];
323 sqimap_messages_copy($imapConnection, $move_id, $move_id, $targetMailbox);
324 sqimap_messages_flag($imapConnection, $move_id, $move_id, 'Deleted', true);
326 delete_move_expunge_from_all($move_id);
327 // sqimap_mailbox_expunge($imapConnection, $mailbox, true);
330 if ($targetMailbox != $lastTargetMailbox) {
331 $lastTargetMailbox = $targetMailbox;
332 sqsession_register('lastTargetMailbox' , $lastTargetMailbox);
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;
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";
345 if ($delete_move_next_t == 'on') {
348 echo '> ' . _("Display at top").
349 " <input type=checkbox name=delete_move_next_formATtopi";
351 if ($delete_move_next_formATtop == 'on') {
354 echo '> ' . _("with move option") . '<br>';
356 echo '<input type=checkbox name=delete_move_next_bi';
357 if($delete_move_next_b != 'off') {
360 echo '> ' . _("Display at bottom") .
361 '<input type=checkbox name=delete_move_next_formATbottomi';
363 if ($delete_move_next_formATbottom != 'off') {
366 echo '> ' . _("with move option") . '<br>'.
370 function delete_move_next_display_save() {
372 global $username,$data_dir;
374 if ( !check_php_version(4,1) ) {
378 if (isset($_POST['delete_move_next_ti'])) {
379 $delete_move_next_ti = $_POST['delete_move_next_ti'];
381 if (isset($_POST['delete_move_next_bi'])) {
382 $delete_move_next_bi = $_POST['delete_move_next_bi'];
384 if (isset($_POST['delete_move_next_formATtopi'])) {
385 $delete_move_next_formATtopi = $_POST['delete_move_next_formATtopi'];
387 if (isset($_POST['delete_move_next_formATbottomi'])) {
388 $delete_move_next_formATbottomi = $_POST['delete_move_next_formATbottomi'];
391 if (isset($delete_move_next_ti)) {
392 setPref($data_dir, $username, 'delete_move_next_t', 'on');
394 setPref($data_dir, $username, 'delete_move_next_t', "off");
397 if (isset($delete_move_next_formATtopi)) {
398 setPref($data_dir, $username, 'delete_move_next_formATtop', 'on');
400 setPref($data_dir, $username, 'delete_move_next_formATtop', "off");
404 if (isset($delete_move_next_bi)) {
405 setPref($data_dir, $username, 'delete_move_next_b', 'on');
407 setPref($data_dir, $username, 'delete_move_next_b', "off");
410 if (isset($delete_move_next_formATbottomi)) {
411 setPref($data_dir, $username, 'delete_move_next_formATbottom', 'on');
413 setPref($data_dir, $username, 'delete_move_next_formATbottom', "off");
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;
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');