Permalink
Browse files

#1483863: empty trash and expunge inbox on logout

  • Loading branch information...
1 parent cb6b51e commit eaa39477bd53130e68bfb26d63308cc9b6af9369 @alecpl alecpl committed Apr 11, 2008
View
@@ -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;
View
@@ -185,6 +185,7 @@
else if (($_task=='logout' || $_action=='logout') && isset($_SESSION['user_id']))
{
$OUTPUT->show_message('loggedout');
+ rcmail_logout_actions();
rcmail_kill_session();
}
View
@@ -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
@@ -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';
@@ -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;
@@ -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

0 comments on commit eaa3947

Please sign in to comment.