From b33a9a71f6d13efb68d140ecbc41cc442564cde0 Mon Sep 17 00:00:00 2001 From: redmatrix Date: Wed, 14 Oct 2015 17:40:50 -0700 Subject: more work on import & sync of private mail and conversations --- include/import.php | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++- include/zot.php | 6 +++++ mod/import.php | 6 +++++ 3 files changed, 78 insertions(+), 1 deletion(-) diff --git a/include/import.php b/include/import.php index ad8bcd84e..d5ff0d617 100644 --- a/include/import.php +++ b/include/import.php @@ -790,7 +790,7 @@ function import_likes($channel,$likes) { if($r) continue; - dbesc_array($config); + dbesc_array($like); $r = dbq("INSERT INTO likes (`" . implode("`, `", array_keys($like)) . "`) VALUES ('" @@ -800,6 +800,71 @@ function import_likes($channel,$likes) { } } +function import_conv($channel,$convs) { + if($channel && $convs) { + foreach($convs as $conv) { + if($conv['deleted']) { + q("delete from conv where guid = '%s' and uid = %d limit 1", + dbesc($conv['guid']), + intval($channel['channel_id']) + ); + continue; + } + + unset($conv['id']); + + $conv['uid'] = $channel['channel_id']; + $conv['subject'] = str_rot47(base64url_encode($conv['subject'])); + + $r = q("select id from conv where guid = '%s' and uid = %d limit 1", + dbesc($conv['guid']), + intval($channel['channel_id']) + ); + if($r) + continue; + + dbesc_array($conv); + $r = dbq("INSERT INTO conv (`" + . implode("`, `", array_keys($conv)) + . "`) VALUES ('" + . implode("', '", array_values($conv)) + . "')" ); + } + } +} + + + +function import_mail($channel,$mails) { + if($channel && $mails) { + foreach($mails as $mail) { + if(array_key_exists('flags',$mail) && in_array('deleted',$mail['flags'])) { + q("delete from mail where mid = '%s' and uid = %d limit 1", + dbesc($mail['message_id']), + intval($channel['channel_id']) + ); + continue; + } + $m = get_mail_elements($mail); + if(! $m) + continue; + if($mail['conv_guid']) { + $x = q("select id from conv where guid = '%s' and uid = %d limit 1", + dbesc($mail['conv_guid']), + intval($channel['channel_id']) + ); + if($x) { + $m['convid'] = $x[0]['id']; + } + } + $m['aid'] = $channel['channel_account_id']; + $m['uid'] = $channel['channel_id']; + mail_store($m); + } + } +} + + diff --git a/include/zot.php b/include/zot.php index dd9222bf3..b1cb5a8ec 100644 --- a/include/zot.php +++ b/include/zot.php @@ -3002,6 +3002,12 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) { if(array_key_exists('chatroom',$arr) && $arr['chatroom']) sync_chatrooms($channel,$arr['chatroom']); + if(array_key_exists('conv',$arr) && $arr['conv']) + import_conv($channel,$arr['conv']); + + if(array_key_exists('mail',$arr) && $arr['mail']) + import_mail($channel,$arr['mail']); + if(array_key_exists('event',$arr) && $arr['event']) sync_events($channel,$arr['event']); diff --git a/mod/import.php b/mod/import.php index b6e36d734..72d8f92e9 100644 --- a/mod/import.php +++ b/mod/import.php @@ -441,6 +441,12 @@ function import_post(&$a) { if(is_array($data['chatroom'])) import_chatrooms($channel,$data['chatroom']); + if(is_array($data['conv'])) + import_conv($channel,$data['conv']); + + if(is_array($data['mail'])) + import_mail($channel,$data['mail']); + if(is_array($data['event'])) import_events($channel,$data['event']); -- cgit v1.2.3