summaryrefslogtreecommitdiff
path: root/program
diff options
context:
space:
mode:
Diffstat (limited to 'program')
-rw-r--r--program/include/main.inc24
-rw-r--r--program/localization/en_US/labels.inc2
-rw-r--r--program/steps/settings/func.inc22
-rw-r--r--program/steps/settings/save_prefs.inc4
4 files changed, 51 insertions, 1 deletions
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("<tr><td class=\"title\"><label for=\"%s\">%s</label></td><td>%s</td></tr>\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("<tr><td class=\"title\"><label for=\"%s\">%s</label></td><td>%s</td></tr>\n",
+ $field_id,
+ Q(rcube_label('logoutcompact')),
+ $input_expunge->show($CONFIG['logout_expunge']?1:0));
+ }
+
$out .= "\n</table>$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