private static function storeForUser(array $item, int $uid)
{
if (Post::exists(['uri-id' => $item['uri-id'], 'uid' => $uid])) {
+ if (!empty($item['event-id'])) {
+ $post = Post::selectFirst(['event-id'], ['uri-id' => $item['uri-id'], 'uid' => $uid]);
+ if (!empty($post['event-id'])) {
+ $event = DBA::selectFirst('event', ['edited', 'start', 'finish', 'summary', 'desc', 'location', 'nofinish', 'adjust'], ['id' => $item['event-id']]);
+ if (!empty($event)) {
+ $ret = DBA::update('event', $event, ['id' => $post['event-id']]);
+ Logger::info('Event updated', ['uid' => $uid, 'source-event' => $item['event-id'], 'target-event' => $post['event-id'], 'ret' => $ret]);
+ }
+ }
+ }
Logger::info('Item already exists', ['uri-id' => $item['uri-id'], 'uid' => $uid]);
return 0;
}
}
Item::update($item, ['uri' => $activity['id']]);
+
+ if ($activity['object_type'] == 'as:Event') {
+ $posts = Post::select(['event-id', 'uid'], ['uri' => $activity['id']]);
+ while ($post = DBA::fetch($posts)) {
+ if (empty($post['event-id'])) {
+ continue;
+ }
+ self::updateEvent($post['event-id'], $activity);
+ }
+ }
+ }
+
+ /**
+ * Update an existing event
+ *
+ * @param int $event_id
+ * @param array $activity
+ */
+ private static function updateEvent(int $event_id, array $activity)
+ {
+ $event = DBA::selectFirst('event', [], ['id' => $event_id]);
+
+ $event['edited'] = DateTimeFormat::utc($activity['updated']);
+ $event['summary'] = HTML::toBBCode($activity['name']);
+ $event['desc'] = HTML::toBBCode($activity['content']);
+ $event['start'] = $activity['start-time'];
+ $event['finish'] = $activity['end-time'];
+ $event['nofinish'] = empty($event['finish']);
+ $event['location'] = $activity['location'];
+
+ Logger::info('Updating event', ['uri' => $activity['id'], 'id' => $event_id]);
+ Event::store($event);
}
/**