From eaa39477bd53130e68bfb26d63308cc9b6af9369 Mon Sep 17 00:00:00 2001 From: alecpl Date: Fri, 11 Apr 2008 13:34:19 +0000 Subject: #1483863: empty trash and expunge inbox on logout --- program/include/main.inc | 24 ++++++++++++++++++++++++ program/localization/en_US/labels.inc | 2 ++ program/steps/settings/func.inc | 22 ++++++++++++++++++++++ program/steps/settings/save_prefs.inc | 4 +++- 4 files changed, 51 insertions(+), 1 deletion(-) (limited to 'program') diff --git a/program/include/main.inc b/program/include/main.inc index 5b82640f7..649dd25e9 100644 --- a/program/include/main.inc +++ b/program/include/main.inc @@ -352,6 +352,30 @@ function rcmail_kill_session() $USER->reset(); } +/** + * Do server side actions on logout + */ +function rcmail_logout_actions() + { + global $CONFIG, $IMAP; + + // on logout action we're not connected to imap server + if (($CONFIG['logout_purge'] && !empty($CONFIG['trash_mbox'])) + || $CONFIG['logout_expunge']) + { + if (!rcmail_authenticate_session()) + return; + + rcmail_imap_init(true); + } + + if ($CONFIG['logout_purge'] && !empty($CONFIG['trash_mbox'])) + $IMAP->clear_mailbox($CONFIG['trash_mbox']); + + if ($CONFIG['logout_expunge']) + $IMAP->expunge('INBOX'); + } + /** * Return correct name for a specific database table diff --git a/program/localization/en_US/labels.inc b/program/localization/en_US/labels.inc index 2e5f1bab2..ddd1a5f1f 100644 --- a/program/localization/en_US/labels.inc +++ b/program/localization/en_US/labels.inc @@ -250,6 +250,8 @@ $labels['dstactive'] = 'Daylight saving time'; $labels['htmleditor'] = 'Compose HTML messages'; $labels['htmlsignature'] = 'HTML signature'; $labels['previewpane'] = 'Show preview pane'; +$labels['logoutclear'] = 'Clear Trash on logout'; +$labels['logoutcompact'] = 'Compact Inbox on logout'; $labels['autosavedraft'] = 'Automatically save draft'; $labels['everynminutes'] = 'every $n minutes'; diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc index befc1d7a0..3edced4b3 100644 --- a/program/steps/settings/func.inc +++ b/program/steps/settings/func.inc @@ -195,6 +195,28 @@ function rcmail_user_prefs_form($attrib) $select_autosave->show($CONFIG['draft_autosave'])); } + // Trash purging on logout + if (!isset($no_override['logout_purge'])) + { + $field_id = 'rcmfd_logout_purge'; + $input_purge = new checkbox(array('name' => '_logout_purge', 'id' => $field_id, 'value' => 1)); + $out .= sprintf("%s\n", + $field_id, + Q(rcube_label('logoutclear')), + $input_purge->show($CONFIG['logout_purge']?1:0)); + } + + // INBOX compacting on logout + if (!isset($no_override['logout_expunge'])) + { + $field_id = 'rcmfd_logout_expunge'; + $input_expunge = new checkbox(array('name' => '_logout_expunge', 'id' => $field_id, 'value' => 1)); + $out .= sprintf("%s\n", + $field_id, + Q(rcube_label('logoutcompact')), + $input_expunge->show($CONFIG['logout_expunge']?1:0)); + } + $out .= "\n$form_end"; return $out; diff --git a/program/steps/settings/save_prefs.inc b/program/steps/settings/save_prefs.inc index caa4a49e5..8dae7bc47 100644 --- a/program/steps/settings/save_prefs.inc +++ b/program/steps/settings/save_prefs.inc @@ -27,7 +27,9 @@ $a_user_prefs = array( 'prefer_html' => isset($_POST['_prefer_html']) ? TRUE : FALSE, 'htmleditor' => isset($_POST['_htmleditor']) ? TRUE : FALSE, 'preview_pane' => isset($_POST['_preview_pane']) ? TRUE : FALSE, - 'draft_autosave' => isset($_POST['_draft_autosave']) ? intval($_POST['_draft_autosave']) : 0 + 'logout_purge' => isset($_POST['_logout_purge']) ? TRUE : FALSE, + 'logout_expunge' => isset($_POST['_logout_expunge']) ? TRUE : FALSE, + 'draft_autosave' => isset($_POST['_draft_autosave']) ? intval($_POST['_draft_autosave']) : 0, ); // don't override these parameters -- cgit v1.2.3