diff options
-rw-r--r-- | include/event.php | 55 | ||||
-rw-r--r-- | include/zot.php | 31 | ||||
-rw-r--r-- | mod/addtocal.php | 56 |
3 files changed, 96 insertions, 46 deletions
diff --git a/include/event.php b/include/event.php index 8e6a3fe71..968497a28 100644 --- a/include/event.php +++ b/include/event.php @@ -142,8 +142,21 @@ function event_store($arr) { $arr['type'] = (($arr['type']) ? $arr['type'] : 'event' ); $arr['event_xchan'] = (($arr['event_xchan']) ? $arr['event_xchan'] : ''); - // Existing event being modified + $item = null; + + if($arr['mid'] && $arr['uid']) { + $i = q("select * from item where mid = '%s' and uid = %d limit 1", + dbesc($arr['mid']), + intval($arr['uid']) + ); + if($i) { + xchan_query($i); + $item = fetch_post_tags($i,true); + } + } + // Existing event being modified +dbg(1); if($arr['id'] || $arr['event_hash']) { // has the event actually changed? @@ -160,7 +173,7 @@ function event_store($arr) { intval($arr['uid']) ); } - +dbg(0); if(! $r) return 0; @@ -170,7 +183,7 @@ function event_store($arr) { } $event_hash = $r[0]['event_hash']; - +dbg(1); // The event changed. Update it. $r = q("UPDATE `event` SET @@ -253,7 +266,7 @@ function event_store($arr) { $item_id = 0; call_hooks('event_updated', $arr['id']); - +dbg(0); return $item_id; } else { @@ -265,7 +278,7 @@ function event_store($arr) { if(! $arr['mid']) $arr['mid'] = item_message_id(); - +dbg(1); $r = q("INSERT INTO event ( uid,aid,event_xchan,event_hash,created,edited,start,finish,summary,description,location,type, adjust,nofinish,allow_cid,allow_gid,deny_cid,deny_gid) VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', '%s', '%s', '%s' ) ", @@ -302,24 +315,32 @@ function event_store($arr) { intval($arr['uid']) ); - $wall = (($z) ? true : false); - - $item_flags = ITEM_THREAD_TOP; - if($wall) { - $item_flags |= ITEM_WALL; - $item_flags |= ITEM_ORIGIN; - } $private = (($arr['allow_cid'] || $arr['allow_gid'] || $arr['deny_cid'] || $arr['deny_gid']) ? 1 : 0); $item_arr = array(); + + + if($item) { + $item_arr['id'] = $item['id']; + } + else { + $wall = (($z) ? true : false); + + $item_flags = ITEM_THREAD_TOP; + if($wall) { + $item_flags |= ITEM_WALL; + $item_flags |= ITEM_ORIGIN; + } + $item_arr['item_flags'] = $item_flags; + } + $item_arr['uid'] = $arr['uid']; $item_arr['author_xchan'] = $arr['event_xchan']; $item_arr['mid'] = $arr['mid']; $item_arr['parent_mid'] = $arr['mid']; - $item_arr['item_flags'] = $item_flags; $item_arr['owner_xchan'] = (($wall) ? $z[0]['channel_hash'] : $arr['event_xchan']); $item_arr['author_xchan'] = $arr['event_xchan']; @@ -362,11 +383,15 @@ function event_store($arr) { } - $res = item_store($item_arr); + if($item) + $res = item_store_update($item_arr); + else + $res = item_store($item_arr); + $item_id = $res['item_id']; call_hooks("event_created", $event['id']); - +dbg(0); return $item_id; } } diff --git a/include/zot.php b/include/zot.php index 303f4f4a7..8c50d723d 100644 --- a/include/zot.php +++ b/include/zot.php @@ -1470,37 +1470,6 @@ function process_delivery($sender,$arr,$deliveries,$relay,$public = false) { continue; } - // for events, extract the event info and create an event linked to an item - - if((x($arr,'obj_type')) && (activity_match($arr['obj_type'],ACTIVITY_OBJ_EVENT))) { - require_once('include/event.php'); - $ev = bbtoevent($arr['body']); - if(x($ev,'description') && x($ev,'start')) { - $ev['event_xchan'] = $arr['author_xchan']; - $ev['uid'] = $channel['channel_id']; - $ev['account'] = $channel['channel_account_id']; - $ev['edited'] = $arr['edited']; - $ev['mid'] = $arr['mid']; - $ev['private'] = $arr['item_private']; - - // is this an edit? - - $r = q("SELECT resource_id FROM item where mid = '%s' and uid = %d and resource_type = 'event' limit 1", - dbesc($arr['mid']), - intval($channel['channel_id']) - ); - if($r) { - $ev['event_hash'] = $r[0]['resource_id']; - } - - $xyz = event_store($ev); - add_source_route($xyz,$sender['hash']); - - $result = array($d['hash'],'event processed',$channel['channel_name'] . ' <' . $channel['channel_address'] . '@' . get_app()->get_hostname() . '>',$arr['mid']); - continue; - } - } - $r = q("select id, edited from item where mid = '%s' and uid = %d limit 1", dbesc($arr['mid']), intval($channel['channel_id']) diff --git a/mod/addtocal.php b/mod/addtocal.php new file mode 100644 index 000000000..7789e0ede --- /dev/null +++ b/mod/addtocal.php @@ -0,0 +1,56 @@ +<?php /** @file */ + + +function addtocal_init(&$a) { + + if(! local_user()) + return; + + if(argc() > 1) { + $post_id = intval(argv(1)); + + $r = q("select * from item where id = %d and uid = %d limit 1", + intval($post_id), + intval(local_user()) + ); + + if(! $r) + return; + } + + $arr = $r[0]; + $channel = $a->get_channel(); + + if(! $channel) + return; + + // for events, extract the event info and create an event linked to an item + + if((x($arr,'obj_type')) && (activity_match($arr['obj_type'],ACTIVITY_OBJ_EVENT))) { + + require_once('include/event.php'); + $ev = bbtoevent($arr['body']); + + if(x($ev,'description') && x($ev,'start')) { + $ev['event_xchan'] = $arr['author_xchan']; + $ev['uid'] = $channel['channel_id']; + $ev['account'] = $channel['channel_account_id']; + $ev['edited'] = $arr['edited']; + $ev['mid'] = $arr['mid']; + $ev['private'] = $arr['item_private']; + + // is this an edit? + + $r = q("SELECT resource_id FROM item where mid = '%s' and uid = %d and resource_type = 'event' limit 1", + dbesc($arr['mid']), + intval($channel['channel_id']) + ); + if($r) { + $ev['event_hash'] = $r[0]['resource_id']; + } + + $xyz = event_store($ev); + + } + } +}
\ No newline at end of file |