diff --git a/admin/communication.php b/admin/communication.php
index ff380f62..d729b1b6 100644
--- a/admin/communication.php
+++ b/admin/communication.php
@@ -616,6 +616,14 @@ case "email_get_list":
}
echo "";
exit;
+
+ case 'cancel':
+ if($_GET['cancel']) {
+ mysql_query("UPDATE emailqueue SET finished=NOW() WHERE id='".intval($_GET['cancel'])."'");
+ mysql_query("UPDATE emailqueue_recipients SET result='cancelled' WHERE emailqueue_id='".intval($_GET['cancel'])."' AND sent IS NULL AND result IS NULL");
+ echo "ok";
+ }
+ exit;
}
include "communication.inc.php";
diff --git a/admin/communication_send_status.php b/admin/communication_send_status.php
index d0bf0547..eb104d86 100644
--- a/admin/communication_send_status.php
+++ b/admin/communication_send_status.php
@@ -48,6 +48,7 @@
echo "
".i18n("Progress")." | \n";
echo " ".i18n("Duration")." | \n";
echo " ".i18n("ETA")." | \n";
+ echo " ".i18n("Cancel")." | \n";
echo "\n";
while($r=mysql_fetch_object($q)) {
@@ -73,6 +74,7 @@
echo "Unknown";
}
echo "";
+ echo "id)\">".i18n("cancel")." | ";
echo "\n";
}
echo "";
@@ -143,6 +145,10 @@
}
}
+ function cancelQueue(id) {
+ $("#debug").load("communication.php?action=cancel&cancel="+id,null,function() { if(!refreshTimeout) refreshStatus(); });
+ }
+
echo "
";
diff --git a/db/db.code.version.txt b/db/db.code.version.txt
index 9386c220..0234b515 100644
--- a/db/db.code.version.txt
+++ b/db/db.code.version.txt
@@ -1 +1 @@
-161
+162
diff --git a/db/db.update.162.sql b/db/db.update.162.sql
new file mode 100644
index 00000000..c047d0a8
--- /dev/null
+++ b/db/db.update.162.sql
@@ -0,0 +1 @@
+ALTER TABLE `emailqueue_recipients` CHANGE `result` `result` ENUM( 'ok', 'failed', 'cancelled', 'bounced' ) NULL DEFAULT NULL;