From 650e98b2a9aff2f54be84782ac48cc57badbf76f Mon Sep 17 00:00:00 2001 From: redmatrix Date: Mon, 7 Sep 2015 21:01:49 -0700 Subject: work on event sync --- include/import.php | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ include/zot.php | 8 +++++- mod/import.php | 7 +++++ 3 files changed, 89 insertions(+), 1 deletion(-) diff --git a/include/import.php b/include/import.php index a81ade791..616ee4987 100644 --- a/include/import.php +++ b/include/import.php @@ -540,6 +540,81 @@ function import_item_ids($channel,$itemids) { } } +function import_events($channel,$events) { + + if($channel && $events) { + foreach($events as $event) { + unset($event['id']); + $event['aid'] = $channel['channel_account_id']; + $event['uid'] = $channel['channel_id']; + + dbesc_array($event); + $r = dbq("INSERT INTO event (`" + . implode("`, `", array_keys($event)) + . "`) VALUES ('" + . implode("', '", array_values($event)) + . "')" + ); + } + } +} + + +function sync_events($channel,$events) { + + if($channel && $events) { + foreach($events as $event) { + + if((! $event['event_hash']) || (! $event['start'])) + continue; + + if($event['event_deleted']) { + $r = q("delete from event where event_hash = '%s' and uid = %d limit 1", + dbesc($event['event_hash']), + intval($channel['channel_id']) + ); + continue; + } + + unset($event['id']); + $event['aid'] = $channel['channel_account_id']; + $event['uid'] = $channel['channel_id']; + + $exists = false; + + $x = q("select * from event where event_hash = '%s' and uid = %d limit 1", + dbesc($event['event_hash']), + intval($channel['channel_id']) + ); + if($x) { + if($x[0]['edited'] >= $event['edited']) + continue; + $exists = true; + } + + if($exists) { + foreach($event as $k => $v) { + $r = q("UPDATE event SET `%s` = '%s' WHERE event_hash = '%s' AND uid = %d", + dbesc($k), + dbesc($v), + dbesc($event['event_hash']), + intval($channel['channel_id']) + ); + } + } + else { + dbesc_array($event); + $r = dbq("INSERT INTO event (`" + . implode("`, `", array_keys($event)) + . "`) VALUES ('" + . implode("', '", array_values($event)) + . "')" + ); + } + } + } +} + diff --git a/include/zot.php b/include/zot.php index 6f159b4f8..285668209 100644 --- a/include/zot.php +++ b/include/zot.php @@ -2882,7 +2882,13 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) { sync_apps($channel,$arr['app']); if(array_key_exists('chatroom',$arr) && $arr['chatroom']) - sync_apps($channel,$arr['chatroom']); + sync_chatrooms($channel,$arr['chatroom']); + + if(array_key_exists('event',$arr) && $arr['event']) + sync_events($channel,$arr['event']); + + if(array_key_exists('event_item',$arr) && $arr['event_item']) + sync_items($channel,$arr['event_item']); if(array_key_exists('item',$arr) && $arr['item']) sync_items($channel,$arr['item']); diff --git a/mod/import.php b/mod/import.php index 13d684f6e..27c2094c3 100644 --- a/mod/import.php +++ b/mod/import.php @@ -438,6 +438,13 @@ function import_post(&$a) { if(is_array($data['chatroom'])) import_chatrooms($channel,$data['chatroom']); + if(is_array($data['event'])) + import_events($channel,$data['event']); + + if(is_array($data['event_item'])) + import_items($channel,$data['event_item']); + + $saved_notification_flags = notifications_off($channel['channel_id']); if($import_posts && array_key_exists('item',$data) && $data['item']) -- cgit v1.2.3