summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2008-04-11 13:34:19 +0000
committeralecpl <alec@alec.pl>2008-04-11 13:34:19 +0000
commiteaa39477bd53130e68bfb26d63308cc9b6af9369 (patch)
tree84e278a4b3e813693dc6b9a92232434da0daca40
parentcb6b51ee7647924403a81cf5b9443936f7c5a901 (diff)
#1483863: empty trash and expunge inbox on logout
-rw-r--r--config/main.inc.php.dist6
-rw-r--r--index.php1
-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
6 files changed, 58 insertions, 1 deletions
diff --git a/config/main.inc.php.dist b/config/main.inc.php.dist
index 962fb4e2f..0cde47823 100644
--- a/config/main.inc.php.dist
+++ b/config/main.inc.php.dist
@@ -283,6 +283,12 @@ $rcmail_config['draft_autosave'] = 300;
// default setting if preview pane is enabled
$rcmail_config['preview_pane'] = FALSE;
+// Clear Trash on logout
+$rcmail_config['logout_purge'] = FALSE;
+
+// Compact INBOX on logout
+$rcmail_config['logout_expunge'] = FALSE;
+
// don't let users set pagesize to more than this value if set
$rcmail_config['max_pagesize'] = 200;
diff --git a/index.php b/index.php
index 0687763da..e9c1cee98 100644
--- a/index.php
+++ b/index.php
@@ -185,6 +185,7 @@ if ($_action=='login' && $_task=='mail')
else if (($_task=='logout' || $_action=='logout') && isset($_SESSION['user_id']))
{
$OUTPUT->show_message('loggedout');
+ rcmail_logout_actions();
rcmail_kill_session();
}
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