<?php
/**
- * @copyright Copyright (C) 2010-2022, the Friendica project
+ * @copyright Copyright (C) 2010-2023, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
use Friendica\Model\Post;
use Friendica\Protocol\Activity;
use Friendica\Protocol\ActivityPub;
+use Friendica\Protocol\Delivery;
use Friendica\Protocol\Relay;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\HTTPSignature;
use Friendica\Util\JsonLD;
use Friendica\Util\Network;
use Friendica\Util\Strings;
-use Friendica\Worker\Delivery;
/**
* ActivityPub Processor Protocol class
$ldactivity['recursion-depth'] = !empty($child['recursion-depth']) ? $child['recursion-depth'] + 1 : 0;
+ if ($object_actor != $actor) {
+ Contact::updateByUrlIfNeeded($object_actor);
+ }
+
+ Contact::updateByUrlIfNeeded($actor);
+
if (!empty($relay_actor)) {
$ldactivity['thread-completion'] = $ldactivity['from-relay'] = Contact::getIdForURL($relay_actor);
$ldactivity['completion-mode'] = Receiver::COMPLETION_RELAY;
Queue::remove($activity);
}
+ /**
+ * Report a user
+ *
+ * @param array $activity
+ * @return void
+ * @throws \Exception
+ */
+ public static function ReportAccount(array $activity)
+ {
+ $account_id = Contact::getIdForURL($activity['object_id']);
+ if (empty($account_id)) {
+ Logger::info('Unknown account', ['activity' => $activity]);
+ Queue::remove($activity);
+ return;
+ }
+
+ $reporter_id = Contact::getIdForURL($activity['actor']);
+ if (empty($reporter_id)) {
+ Logger::info('Unknown actor', ['activity' => $activity]);
+ Queue::remove($activity);
+ return;
+ }
+
+ $uri_ids = [];
+ foreach ($activity['object_ids'] as $status_id) {
+ $post = Post::selectFirst(['uri-id'], ['uri' => $status_id]);
+ if (!empty($post['uri-id'])) {
+ $uri_ids[] = $post['uri-id'];
+ }
+ }
+
+ $report = DI::reportFactory()->createFromReportsRequest($reporter_id, $account_id, $activity['content'], null, '', false, $uri_ids);
+ DI::report()->save($report);
+
+ Logger::info('Stored report', ['reporter' => $reporter_id, 'account_id' => $account_id, 'comment' => $activity['content'], 'object_ids' => $activity['object_ids']]);
+ }
+
/**
* Accept a follow request
*