diff options
Diffstat (limited to 'include/message.php')
-rw-r--r-- | include/message.php | 63 |
1 files changed, 51 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; + } |