A start for a new change_password master plugin. This is not finished
[squirrelmail.git] / plugins / delete_move_next / setup.php
CommitLineData
7a46945e 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 *
76911253 10 * Copyright (c) 1999-2003 The SquirrelMail Project Team
7a46945e 11 * Licensed under the GNU GPL. For full terms see the file COPYING.
12 *
13 * $Id$
ea5f4b8e 14 * @package plugins
15 * @subpackage delete_move_next
7a46945e 16 */
17
ea5f4b8e 18/**
19 * Initialize the plugin
20 * @return void
21 */
7a46945e 22function squirrelmail_plugin_init_delete_move_next() {
23 global $squirrelmail_plugin_hooks;
15902790 24
7a46945e 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';
15902790 28 $squirrelmail_plugin_hooks['read_body_menu_bottom']['delete_move_next'] = 'delete_move_next_read_t';
7a46945e 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
91e5e252 35/* fixes the sort_array for the prev_del/next_del links when
36 * using server side sorting or thread sorting
37 */
38
39function fix_sort_array () {
40 global $username, $data_dir, $allow_server_sort, $allow_thread_sort,
33573968 41 $thread_sort_messages,
432158be 42 $mailbox, $imapConnection, $sort, $uid_support, $mbx_response;
97892060 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
432158be 49 switch (true) {
50 case ($allow_thread_sort && $thread_sort_messages):
51 $server_sort_array = get_thread_sort($imapConnection);
15902790 52 break;
432158be 53 case ($allow_server_sort):
54 $server_sort_array = sqimap_get_sort_order($imapConnection, $sort, $mbx_response);
15902790 55 break;
432158be 56 case ($uid_support):
d47a55ea 57 $server_sort_array = sqimap_get_php_sort_order($imapConnection, $mbx_response);
15902790 58 break;
432158be 59 default:
60 break;
15902790 61 }
91e5e252 62}
63
7a46945e 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 */
91e5e252 72
7a46945e 73function delete_move_del_arr_elem($arr, $index) {
74 $tmp = array();
7a46945e 75 $j = 0;
33573968 76 foreach ($arr as $v) {
77 if ($j != $index) {
15902790 78 $tmp[] = $v;
79 }
80 $j++;
7a46945e 81 }
82 return $tmp;
83}
84
85function delete_move_show_msg_array() {
86 global $msort, $msgs;
7a46945e 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
94function delete_move_expunge_from_all($id) {
33573968 95 global $msgs, $msort, $sort, $imapConnection, $mailbox, $uid_support;
7a46945e 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) {
15902790 101 if (!$uid_support) {
432158be 102 $msgs[$i]['ID']--;
15902790 103 }
7a46945e 104 }
105 }
15902790 106
7a46945e 107 $msgs = delete_move_del_arr_elem($msgs, $delAt);
108 $msort = delete_move_del_arr_elem($msort, $delAt);
7a46945e 109 if ($sort < 6) {
110 if ($sort % 2) {
111 asort($msort);
112 } else {
113 arsort($msort);
114 }
115 }
3a6da7fd 116 sqsession_register($msgs, 'msgs');
117 sqsession_register($msort, 'msort');
15902790 118
7a46945e 119 sqimap_mailbox_expunge($imapConnection, $mailbox, true);
120}
121
122function delete_move_next_action() {
123
3a6da7fd 124 global $PHP_SELF;
7a46945e 125
fb694681 126 if ( !check_php_version(4,1) ) {
3a6da7fd 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)) {
7a46945e 138 delete_move_next_delete();
471805cd 139 fix_sort_array();
3a6da7fd 140 } elseif (isset($move_id)) {
7a46945e 141 delete_move_next_move();
471805cd 142 fix_sort_array();
7a46945e 143 }
144
145}
146
147function 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
156function 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
166function delete_move_next_read($currloc) {
167 global $delete_move_next_formATtop, $delete_move_next_formATbottom,
168 $color, $where, $what, $currentArrayIndex, $passed_id,
33573968 169 $mailbox, $sort, $startMessage, $delete_id, $move_id,
432158be 170 $imapConnection, $auto_expunge, $move_to_trash, $mbx_response,
04faf7f4 171 $uid_support, $passed_ent_id;
7a46945e 172
33573968 173 $urlMailbox = urlencode($mailbox);
174
04faf7f4 175 if (!isset($passed_ent_id)) $passed_ent_id = 0;
176
177 if (!(($where && $what) || ($currentArrayIndex == -1)) && !$passed_ent_id) {
7ae753d7 178 $next = findNextMessage($passed_id);
179 $prev = findPreviousMessage($mbx_response['EXISTS'], $passed_id);
7a46945e 180 $prev_if_del = $prev;
181 $next_if_del = $next;
432158be 182 if (!$uid_support && ($auto_expunge || $move_to_trash)) {
7a46945e 183 if ($prev_if_del > $passed_id) {
184 $prev_if_del--;
185 }
186 if ($next_if_del > $passed_id) {
187 $next_if_del--;
188 }
15902790 189 }
190
191 /* Base is illegal within documents
b9fb0634 192 * $location = get_location();
193 * echo "<base href=\"$location/\">" . */
432158be 194 echo '<table cellspacing=0 width="100%" border=0 cellpadding=2>'.
195 '<tr>'.
196 "<td bgcolor=\"$color[9]\" width=\"100%\" align=center><small>";
15902790 197
7a46945e 198 if ($prev > 0){
b9fb0634 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";
7a46945e 200 }
201 else {
202 echo _("Delete & Prev") . "&nbsp;|&nbsp;";
203 }
204 if ($next > 0){
b9fb0634 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";
7a46945e 206 } else {
207 echo _("Delete & Next");
208 }
209 echo '</small></td></tr>';
15902790 210
7a46945e 211 if ($next_if_del < 0) {
212 $next_if_del = $prev_if_del;
213 }
04faf7f4 214 if (($delete_move_next_formATtop == 'on') && ($currloc == 'top')) {
7a46945e 215 if ($next_if_del > 0) {
216 delete_move_next_moveNextForm($next_if_del);
217 } else {
218 delete_move_next_moveRightMainForm();
219 }
220 }
04faf7f4 221 if (($delete_move_next_formATbottom != 'off') && ($currloc == 'bottom')) {
7a46945e 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
232function get_move_target_list() {
c81eba29 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 }
7a46945e 240}
241
242function delete_move_next_moveNextForm($next) {
243
244 global $color, $where, $what, $currentArrayIndex, $passed_id,
33573968 245 $mailbox, $sort, $startMessage, $delete_id, $move_id,
7a46945e 246 $imapConnection;
247
432158be 248 echo '<tr>'.
249 "<td bgcolor=\"$color[9]\" width=\"100%\" align=\"center\">".
b9fb0634 250 '<form action="read_body.php" method="post"><small>'.
4366bea4 251 "<input type=\"hidden\" name=\"passed_id\" value=\"$next\">".
33573968 252 "<input type=\"hidden\" name=\"mailbox\" value=\"".$mailbox."\">".
4366bea4 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>'.
b9fb0634 263 '</form>'.
4366bea4 264 '</td>'.
b9fb0634 265 '</tr>';
7a46945e 266
267}
7a46945e 268function delete_move_next_moveRightMainForm() {
269
270 global $color, $where, $what, $currentArrayIndex, $passed_id,
33573968 271 $mailbox, $sort, $startMessage, $delete_id, $move_id,
7a46945e 272 $imapConnection;
273
15902790 274 echo '<tr>' .
432158be 275 "<td bgcolor=\"$color[9]\" width=\"100%\" align=\"center\">".
b9fb0634 276 '<form action="right_main.php" method="post"><small>' .
33573968 277 "<input type=\"hidden\" name=\"mailbox\" value=\"".$mailbox."\">".
4366bea4 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>'.
b9fb0634 287 '</form>' .
4366bea4 288 '</td>'.
b9fb0634 289 '</tr>';
7a46945e 290
291}
292
293
294function delete_move_next_delete() {
3a6da7fd 295 global $imapConnection, $auto_expunge;
296
fb694681 297 if ( !check_php_version(4,1) ) {
3a6da7fd 298 global $_GET;
299 }
300
301 $delete_id = $_GET['delete_id'];
302 $mailbox = $_GET['mailbox'];
15902790 303
7a46945e 304 sqimap_messages_delete($imapConnection, $delete_id, $delete_id, $mailbox);
33573968 305 if ($auto_expunge) {
7a46945e 306 delete_move_expunge_from_all($delete_id);
15902790 307 // sqimap_mailbox_expunge($imapConnection, $mailbox, true);
7a46945e 308 }
309}
310
311function delete_move_next_move() {
c81eba29 312 global $imapConnection, $mailbox, $auto_expunge, $lastTargetMailbox;
3a6da7fd 313
fb694681 314 if ( !check_php_version(4,1) ) {
3a6da7fd 315 global $_POST;
316 }
317
318 $move_id = $_POST['move_id'];
319 $mailbox = $_POST['mailbox'];
320 $targetMailbox = $_POST['targetMailbox'];
15902790 321
7a46945e 322 // Move message
323 sqimap_messages_copy($imapConnection, $move_id, $move_id, $targetMailbox);
33573968 324 sqimap_messages_flag($imapConnection, $move_id, $move_id, 'Deleted', true);
7a46945e 325 if ($auto_expunge) {
326 delete_move_expunge_from_all($move_id);
327 // sqimap_mailbox_expunge($imapConnection, $mailbox, true);
328 }
c81eba29 329
330 if ($targetMailbox != $lastTargetMailbox) {
331 $lastTargetMailbox = $targetMailbox;
332 sqsession_register('lastTargetMailbox' , $lastTargetMailbox);
333 }
7a46945e 334}
335
336function 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;
15902790 340
432158be 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";
15902790 344
7a46945e 345 if ($delete_move_next_t == 'on') {
346 echo " checked";
347 }
59b578d1 348 echo '> ' . _("Display at top").
7a46945e 349 " <input type=checkbox name=delete_move_next_formATtopi";
15902790 350
7a46945e 351 if ($delete_move_next_formATtop == 'on') {
352 echo ' checked';
353 }
15902790 354 echo '> ' . _("with move option") . '<br>';
355
7a46945e 356 echo '<input type=checkbox name=delete_move_next_bi';
357 if($delete_move_next_b != 'off') {
358 echo ' checked';
359 }
59b578d1 360 echo '> ' . _("Display at bottom") .
7a46945e 361 '<input type=checkbox name=delete_move_next_formATbottomi';
15902790 362
7a46945e 363 if ($delete_move_next_formATbottom != 'off') {
364 echo ' checked';
365 }
59b578d1 366 echo '> ' . _("with move option") . '<br>'.
7a46945e 367 "</td></tr>\n";
368}
369
370function delete_move_next_display_save() {
371
3a6da7fd 372 global $username,$data_dir;
373
fb694681 374 if ( !check_php_version(4,1) ) {
3a6da7fd 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 }
15902790 390
7a46945e 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 }
15902790 396
7a46945e 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 }
15902790 402
403
7a46945e 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 }
15902790 409
7a46945e 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
419function 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;
15902790 423
7a46945e 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
b9fb0634 431?>