-
- require_once('include/datetime.php');
- require_once('include/items.php');
- require_once('include/bbcode.php');
-
- $a = get_app();
-
- $arr['created'] = (($arr['created']) ? $arr['created'] : datetime_convert());
- $arr['edited'] = (($arr['edited']) ? $arr['edited'] : datetime_convert());
- $arr['type'] = (($arr['type']) ? $arr['type'] : 'event' );
- $arr['cid'] = ((intval($arr['cid'])) ? intval($arr['cid']) : 0);
- $arr['uri'] = (x($arr,'uri') ? $arr['uri'] : item_new_uri($a->get_hostname(),$arr['uid']));
- $arr['private'] = ((x($arr,'private')) ? intval($arr['private']) : 0);
- $arr['guid'] = get_guid(32);
-
- if($arr['cid'])
- $c = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
- intval($arr['cid']),
- intval($arr['uid'])
- );
- else
- $c = q("SELECT * FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1",
- intval($arr['uid'])
- );
-
- if(count($c))
- $contact = $c[0];
-
-
- // Existing event being modified
-
- if($arr['id']) {
-
- // has the event actually changed?
-
- $r = q("SELECT * FROM `event` WHERE `id` = %d AND `uid` = %d LIMIT 1",
- intval($arr['id']),
- intval($arr['uid'])
- );
- if((! dbm::is_result($r)) || ($r[0]['edited'] === $arr['edited'])) {
-
- // Nothing has changed. Grab the item id to return.
-
- $r = q("SELECT * FROM `item` WHERE `event-id` = %d AND `uid` = %d LIMIT 1",
- intval($arr['id']),
- intval($arr['uid'])
- );
- return((dbm::is_result($r)) ? $r[0]['id'] : 0);
- }
-
- // The event changed. Update it.
-
- $r = q("UPDATE `event` SET
- `edited` = '%s',
- `start` = '%s',
- `finish` = '%s',
- `summary` = '%s',
- `desc` = '%s',
- `location` = '%s',
- `type` = '%s',
- `adjust` = %d,
- `nofinish` = %d
- WHERE `id` = %d AND `uid` = %d",
-
- dbesc($arr['edited']),
- dbesc($arr['start']),
- dbesc($arr['finish']),
- dbesc($arr['summary']),
- dbesc($arr['desc']),
- dbesc($arr['location']),
- dbesc($arr['type']),
- intval($arr['adjust']),
- intval($arr['nofinish']),
- intval($arr['id']),
- intval($arr['uid'])
- );
- $r = q("SELECT * FROM `item` WHERE `event-id` = %d AND `uid` = %d LIMIT 1",
- intval($arr['id']),
- intval($arr['uid'])
- );
- if (dbm::is_result($r)) {
- $object = '<object><type>' . xmlify(ACTIVITY_OBJ_EVENT) . '</type><title></title><id>' . xmlify($arr['uri']) . '</id>';
- $object .= '<content>' . xmlify(format_event_bbcode($arr)) . '</content>';
- $object .= '</object>' . "\n";
-
-
- q("UPDATE `item` SET `body` = '%s', `object` = '%s', `edited` = '%s' WHERE `id` = %d AND `uid` = %d",
- dbesc(format_event_bbcode($arr)),
- dbesc($object),
- dbesc($arr['edited']),
- intval($r[0]['id']),
- intval($arr['uid'])
- );
-
- $item_id = $r[0]['id'];
- } else
- $item_id = 0;
-
- call_hooks("event_updated", $arr['id']);
-
- return $item_id;
- } else {
-
- // New event. Store it.
-
- $r = q("INSERT INTO `event` (`uid`,`cid`,`guid`,`uri`,`created`,`edited`,`start`,`finish`,`summary`, `desc`,`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' ) ",
- intval($arr['uid']),
- intval($arr['cid']),
- dbesc($arr['guid']),
- dbesc($arr['uri']),
- dbesc($arr['created']),
- dbesc($arr['edited']),
- dbesc($arr['start']),
- dbesc($arr['finish']),
- dbesc($arr['summary']),
- dbesc($arr['desc']),
- dbesc($arr['location']),
- dbesc($arr['type']),
- intval($arr['adjust']),
- intval($arr['nofinish']),
- dbesc($arr['allow_cid']),
- dbesc($arr['allow_gid']),
- dbesc($arr['deny_cid']),
- dbesc($arr['deny_gid'])
-
- );
-
- $r = q("SELECT * FROM `event` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
- dbesc($arr['uri']),
- intval($arr['uid'])
- );
- if (dbm::is_result($r))
- $event = $r[0];
-
- $item_arr = array();
-
- $item_arr['uid'] = $arr['uid'];
- $item_arr['contact-id'] = $arr['cid'];
- $item_arr['uri'] = $arr['uri'];
- $item_arr['parent-uri'] = $arr['uri'];
- $item_arr['guid'] = $arr['guid'];
- $item_arr['type'] = 'activity';
- $item_arr['wall'] = (($arr['cid']) ? 0 : 1);
- $item_arr['contact-id'] = $contact['id'];
- $item_arr['owner-name'] = $contact['name'];
- $item_arr['owner-link'] = $contact['url'];
- $item_arr['owner-avatar'] = $contact['thumb'];
- $item_arr['author-name'] = $contact['name'];
- $item_arr['author-link'] = $contact['url'];
- $item_arr['author-avatar'] = $contact['thumb'];
- $item_arr['title'] = '';
- $item_arr['allow_cid'] = $arr['allow_cid'];
- $item_arr['allow_gid'] = $arr['allow_gid'];
- $item_arr['deny_cid'] = $arr['deny_cid'];
- $item_arr['deny_gid'] = $arr['deny_gid'];
- $item_arr['private'] = $arr['private'];
- $item_arr['last-child'] = 1;
- $item_arr['visible'] = 1;
- $item_arr['verb'] = ACTIVITY_POST;
- $item_arr['object-type'] = ACTIVITY_OBJ_EVENT;
- $item_arr['origin'] = ((intval($arr['cid']) == 0) ? 1 : 0);
- $item_arr['body'] = format_event_bbcode($event);
-
-
- $item_arr['object'] = '<object><type>' . xmlify(ACTIVITY_OBJ_EVENT) . '</type><title></title><id>' . xmlify($arr['uri']) . '</id>';
- $item_arr['object'] .= '<content>' . xmlify(format_event_bbcode($event)) . '</content>';
- $item_arr['object'] .= '</object>' . "\n";
-
- $item_id = item_store($item_arr);
-
- $r = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
- intval($arr['uid'])
- );
- //if (dbm::is_result($r))
- // $plink = App::get_baseurl() . '/display/' . $r[0]['nickname'] . '/' . $item_id;
-
-
- if($item_id) {
- //q("UPDATE `item` SET `plink` = '%s', `event-id` = %d WHERE `uid` = %d AND `id` = %d",
- // dbesc($plink),
- // intval($event['id']),
- // intval($arr['uid']),
- // intval($item_id)
- //);
- q("UPDATE `item` SET `event-id` = %d WHERE `uid` = %d AND `id` = %d",
- intval($event['id']),
- intval($arr['uid']),
- intval($item_id)
- );
- }
-
- call_hooks("event_created", $event['id']);
-
- return $item_id;
- }