diff options
-rw-r--r-- | include/message.php | 63 | ||||
-rw-r--r-- | mod/mail.php | 9 |
2 files changed, 60 insertions, 12 deletions
diff --git a/include/message.php b/include/message.php index b5e805d4a..820d814b6 100644 --- a/include/message.php +++ b/include/message.php @@ -95,6 +95,7 @@ function send_message($uid = 0, $recipient='', $body='', $subject='', $replyto=' ); if($r) { $retconv = $r[0]; + $retconv['subject'] = base64url_decode(str_rot47($retconv['subject'])); } } @@ -105,6 +106,7 @@ function send_message($uid = 0, $recipient='', $body='', $subject='', $replyto=' ); if($r) { $retconv = $r[0]; + $retconv['subject'] = base64url_decode(str_rot47($retconv['subject'])); } } @@ -209,7 +211,8 @@ function send_message($uid = 0, $recipient='', $body='', $subject='', $replyto=' ); if($r) { $post_id = $r[0]['id']; - $retmail = $r; + $retmail = $r[0]; + xchan_mail_query($retmail); } else { $ret['message'] = t('Stored post could not be verified.'); @@ -382,31 +385,67 @@ function private_messages_fetch_message($channel_id, $messageitem_id, $updatesee function private_messages_drop($channel_id, $messageitem_id, $drop_conversation = false) { - if($drop_conversation) { - // find the parent_id - $p = q("SELECT parent_mid, conv_guid FROM mail WHERE id = %d AND channel_id = %d LIMIT 1", - intval($messageitem_id), + + $x = q("select * from mail where id = %d and channel_id = %d limit 1", + intval($messageitem_id), + intval($channel_id) + ); + if(! $x) + return false; + + $conversation = null; + + if($x[0]['conv_guid']) { + $y = q("select * from conv where guid = '%s' and uid = %d limit 1", + dbesc($x[0]['conv_guid']), intval($channel_id) ); - if($p) { + if($y) { + $conversation = $y[0]; + $conversation['subject'] = base64url_decode(str_rot47($conversation['subject'])); + } + } - $r = q("DELETE FROM mail WHERE parent_mid = '%s' AND channel_id = %d ", - dbesc($p[0]['parent_mid']), + if($drop_conversation) { + $m = array(); + $m['conv'] = array($conversation); + $m['conv'][0]['deleted'] = 1; + + $z = q("select * from mail where parent_mid = '%s' and channel_id = %d", + dbesc($x[0]['parent_mid']), + intval($channel_id) + ); + if($z) { + q("delete from conv where guid = '%s' and uid = %d limit 1", + dbesc($x[0]['conv_guid']), + intval($channel_id) + ); + $m['mail'] = array(); + foreach($z as $zz) { + xchan_mail_query($zz); + $zz['mail_deleted'] = 1; + $m['mail'][] = encode_mail($zz,true); + } + q("DELETE FROM mail WHERE parent_mid = '%s' AND channel_id = %d ", + dbesc($x[0]['parent_mid']), intval($channel_id) ); - if($r) - return true; } + build_sync_packet($channel_id,$m); + return true; } else { + xchan_mail_query($x[0]); + $x[0]['mail_deleted'] = true; $r = q("DELETE FROM mail WHERE id = %d AND channel_id = %d", intval($messageitem_id), intval($channel_id) ); - if($r) - return true; + build_sync_packet($channel_id,array('mail' => array(encode_mail($x,true)))); + return true; } return false; + } diff --git a/mod/mail.php b/mod/mail.php index 2fbd96fdb..884c41565 100644 --- a/mod/mail.php +++ b/mod/mail.php @@ -98,6 +98,7 @@ function mail_post(&$a) { $ret = send_message(0, $recipient, $body, $subject, $replyto, $expires); if($ret['success']) { + xchan_mail_query($ret['mail']); build_sync_packet(0,array('conv' => array($ret['conv']),'mail' => array(encode_mail($ret['mail'],true)))); } else { @@ -152,6 +153,14 @@ function mail_content(&$a) { intval(argv(3)), intval(local_channel()) ); + $x = q("select * from mail where id = %d and channel_id = %d", + intval(argv(3)), + intval(local_channel()) + ); + if($x) { + build_sync_packet(local_channel(),array('mail' => encode_mail($x[0],true))); + } + proc_run('php','include/notifier.php','mail',intval(argv(3))); if($r) { |