aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--boot.php1
-rwxr-xr-xinclude/items.php15
-rw-r--r--include/zot.php11
3 files changed, 26 insertions, 1 deletions
diff --git a/boot.php b/boot.php
index 567242d90..e46c8cd48 100644
--- a/boot.php
+++ b/boot.php
@@ -224,6 +224,7 @@ define ( 'MAIL_DELETED', 0x0001);
define ( 'MAIL_REPLIED', 0x0002);
define ( 'MAIL_ISREPLY', 0x0004);
define ( 'MAIL_SEEN', 0x0008);
+define ( 'MAIL_RECALLED', 0x0010);
define ( 'ATTACH_FLAG_DIR', 0x0001);
diff --git a/include/items.php b/include/items.php
index 5947e4912..3154ae5d5 100755
--- a/include/items.php
+++ b/include/items.php
@@ -773,6 +773,12 @@ function encode_mail($item) {
$x['from'] = encode_item_xchan($item['from']);
$x['to'] = encode_item_xchan($item['to']);
+ if($item['mail_flags'] & MAIL_RECALLED) {
+ $x['flags'] = 'recalled';
+ $x['title'] = '';
+ $x['body'] = '';
+ }
+
return $x;
}
@@ -786,6 +792,15 @@ function get_mail_elements($x) {
$arr['created'] = datetime_convert('UTC','UTC',$x['created']);
+ $arr['mail_flags'] = 0;
+
+ if($x['flags'] && is_array($x['flags'])) {
+ if(in_array('recalled',$x['flags'])) {
+ $arr['mail_flags'] &= MAIL_RECALLED;
+ }
+ }
+
+
if($arr['created'] > datetime_convert())
$arr['created'] = datetime_convert();
diff --git a/include/zot.php b/include/zot.php
index 60fec9316..b72e966bf 100644
--- a/include/zot.php
+++ b/include/zot.php
@@ -999,7 +999,16 @@ function process_mail_delivery($sender,$arr,$deliveries) {
intval($channel['channel_id'])
);
if($r) {
- logger('duplicate mail received');
+ if($arr['mail_flags'] & MAIL_RECALLED) {
+ $x = q("delete from mail where id = %d and channel_id = %d limit 1",
+ intval($r[0]['id']),
+ intval($channel['channel_id'])
+ );
+ logger('mail_recalled');
+ }
+ else {
+ logger('duplicate mail received');
+ }
continue;
}
else {