X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FProtocol%2FActivityPub%2FProcessor.php;h=948a3983bc1d6bde8d9ff02a3792af0c715b3bb9;hb=bd8032f2baa0e77cdf537093bd2fc7edf6f9a85d;hp=38999eb0dacd8602b820166fecffc6d09289c36f;hpb=2c33a7803e6fc998fe05f3564c79b3e90cd10c5b;p=friendica.git diff --git a/src/Protocol/ActivityPub/Processor.php b/src/Protocol/ActivityPub/Processor.php index 38999eb0da..948a3983bc 100644 --- a/src/Protocol/ActivityPub/Processor.php +++ b/src/Protocol/ActivityPub/Processor.php @@ -125,7 +125,7 @@ class Processor $data = ['uri-id' => $uriid]; $data['type'] = Post\Media::UNKNOWN; $data['url'] = $attachment['url']; - $data['mimetype'] = $attachment['mediaType']; + $data['mimetype'] = $attachment['mediaType'] ?? null; $data['height'] = $attachment['height'] ?? null; $data['width'] = $attachment['width'] ?? null; $data['size'] = $attachment['size'] ?? null; @@ -180,6 +180,38 @@ class Processor } 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); } /** @@ -619,7 +651,16 @@ class Processor continue; } - if (DI::pConfig()->get($receiver, 'system', 'accept_only_sharer', false) && ($receiver != 0) && ($item['gravity'] == GRAVITY_PARENT)) { + $is_forum = false; + + if ($receiver != 0) { + $user = User::getById($receiver, ['account-type']); + if (!empty($user['account-type'])) { + $is_forum = ($user['account-type'] == User::ACCOUNT_TYPE_COMMUNITY); + } + } + + if (!$is_forum && DI::pConfig()->get($receiver, 'system', 'accept_only_sharer', false) && ($receiver != 0) && ($item['gravity'] == GRAVITY_PARENT)) { $skip = !Contact::isSharingByURL($activity['author'], $receiver); if ($skip && (($activity['type'] == 'as:Announce') || ($item['isForum'] ?? false))) {