diff options
-rw-r--r-- | boot.php | 1 | ||||
-rwxr-xr-x | include/items.php | 15 | ||||
-rw-r--r-- | include/zot.php | 11 |
3 files changed, 26 insertions, 1 deletions
@@ -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 { |