'desc' => _("Set preferences for what happens when you move and delete messages."),
'members' => array(
'mailbox_return', 'delete_spam_after_report', 'move_ham_after_report',
- 'empty_spam_menu', 'use_trash', 'trashselect', 'empty_trash_menu'
+ 'move_spam_report', 'empty_spam_menu', 'use_trash', 'trashselect',
+ 'empty_trash_menu'
)
);
'help' => 'prefs-move_ham_after_report'
);
+// If moving a message to the Spam mailbox, should they be reported as spam?
+$_prefs['move_spam_report'] = array(
+ 'value' => 0,
+ 'advanced' => true,
+ 'type' => 'checkbox',
+ 'desc' => _("If moving a message to the Spam mailbox, should those messages be reported as spam?")
+);
+
// should we move messages to a trash folder instead of just marking
// them as deleted?
$_prefs['use_trash'] = array(
v5.0-git
--------
+[mms] Add preference to allow for automatic spam reporting when explicitly
+ moving messages to the Spam mailbox (Request #6455).
[mms] Automatically determine view based on browser and 'dynamic_view'
preference (Request #9159).
[mms] Add preference to define default font family/size for the HTML compose
*/
public function copyMessages($mailbox, $indices, $target)
{
- return $GLOBALS['injector']->getInstance('IMP_Message')->copy($target, 'copy', new IMP_Indices($mailbox, $indices), true);
+ return $GLOBALS['injector']->getInstance('IMP_Message')->copy($target, 'copy', new IMP_Indices($mailbox, $indices), array('create' => true));
}
/**
*/
public function moveMessages($mailbox, $indices, $target)
{
- return $GLOBALS['injector']->getInstance('IMP_Message')->copy($target, 'move', new IMP_Indices($mailbox, $indices), true);
+ return $GLOBALS['injector']->getInstance('IMP_Message')->copy($target, 'move', new IMP_Indices($mailbox, $indices), array('create' => true));
}
/**
* (UTF7-IMAP).
* @param string $action Either 'copy' or 'move'.
* @param IMP_Indices $indices An indices object.
- * @param boolean $new Whether the target mailbox has to be
- * created.
+ * @param array $opts Additional options:
+ * <pre>
+ * 'create' - (boolean) Should the target mailbox be created?
+ * DEFAULT: false
+ * </pre>
*
* @return boolean True if successful, false if not.
*/
- public function copy($targetMbox, $action, $indices, $new = false)
+ public function copy($targetMbox, $action, $indices, array $opts = array())
{
global $conf, $notification, $prefs;
return true;
}
- if ($new) {
+ if (!empty($opts['create'])) {
$imp_folder = $GLOBALS['injector']->getInstance('IMP_Folder');
if (!$imp_folder->exists($targetMbox) &&
!$imp_folder->create($targetMbox, $prefs->getValue('subscribe'))) {
}
}
+ /* Determine if report on move to Spam mailbox is active. */
+ $spam_report =
+ $prefs->getValue('move_spam_report') &&
+ ($targetMbox == IMP::folderPref($prefs->getValue('spam_folder'), true));
+
$imap_move = false;
$return_value = true;
if (($action == 'move') && $imp_mailbox->isBuilt()) {
$imp_mailbox->removeMsgs(new IMP_Indices($mbox, $msgIndices));
}
+
+ if ($spam_report) {
+ IMP_Spam::reportSpam(new IMP_Indices($mbox, $msgIndices), 'spam', array('noaction' => true));
+ }
} catch (Horde_Imap_Client_Exception $e) {
$error = $e->getMessage();
}
case 'delmove':
if ($pop3) {
$ui->suppress[] = 'move_ham_after_report';
+ $ui->suppress[] = 'move_spam_report';
$ui->suppress[] = 'empty_spam_menu';
$ui->suppress[] = 'use_trash';
$ui->suppress[] = 'trashselect';
$ui->suppress[] = 'empty_trash_menu';
- } elseif ($prefs->isLocked('use_trash') ||
- !$prefs->getValue('use_trash')) {
- $ui->suppress[] = 'trashselect';
- $ui->suppress[] = 'empty_trash_menu';
+ } else {
+ if ($prefs->isLocked('use_trash') ||
+ !$prefs->getValue('use_trash')) {
+ $ui->suppress[] = 'trashselect';
+ $ui->suppress[] = 'empty_trash_menu';
+ }
+
+ if (!$prefs->getValue('spam_folder')) {
+ $ui->suppress[] = 'move_spam_report';
+ }
}
break;
*
* @param IMP_Indices $indices An indices object.
* @param string $action Either 'spam' or 'notspam'.
+ * @param array $opts Additional options:
+ * <pre>
+ * 'noaction' - (boolean) Don't perform any action after reporting?
+ * DEFAULT: false
+ * </pre>
*
* @return integer 1 if messages have been deleted, 2 if messages have
* been moved.
*/
- static public function reportSpam($indices, $action)
+ static public function reportSpam($indices, $action, array $opts = array())
{
global $notification;
/* Delete/move message after report. */
switch ($action) {
case 'spam':
- if ($result = $GLOBALS['prefs']->getValue('delete_spam_after_report')) {
+ if (empty($opts['noaction']) &&
+ ($result = $GLOBALS['prefs']->getValue('delete_spam_after_report'))) {
$imp_message = $GLOBALS['injector']->getInstance('IMP_Message');
switch ($result) {
case 1:
case 2:
$targetMbox = IMP::folderPref($GLOBALS['prefs']->getValue('spam_folder'), true);
if ($targetMbox) {
- if (!$imp_message->copy($targetMbox, 'move', $indices, true)) {
+ if (!$imp_message->copy($targetMbox, 'move', $indices, array('create' => true))) {
$result = 0;
}
} else {
break;
case 'notspam':
- if ($result = $GLOBALS['prefs']->getValue('move_ham_after_report')) {
+ if (empty($opts['noaction']) &&
+ ($result = $GLOBALS['prefs']->getValue('move_ham_after_report'))) {
$imp_message = $GLOBALS['injector']->getInstance('IMP_Message');
if (!$imp_message->copy('INBOX', 'move', $indices)) {
$result = 0;
$targetMbox = $vars->targetMbox;
$newMbox = false;
}
- $injector->getInstance('IMP_Message')->copy($targetMbox, ($actionID == 'move_messages') ? 'move' : 'copy', $indices, $newMbox);
+ $injector->getInstance('IMP_Message')->copy($targetMbox, ($actionID == 'move_messages') ? 'move' : 'copy', $indices, array('create' => $newMbox));
}
break;
} else {
$newMbox = false;
}
- $imp_message->copy($vars->targetMbox, ($vars->actionID == 'move_message') ? 'move' : 'copy', $indices, $vars->newMbox);
+ $imp_message->copy($vars->targetMbox, ($vars->actionID == 'move_message') ? 'move' : 'copy', $indices, array('create' => $newMbox));
if ($prefs->getValue('mailbox_return')) {
_returnToMailbox($imp_mailbox->getMessageIndex());
require IMP_BASE . '/mailbox.php';