{
const CACHEKEY_FETCH_ACTIVITY = 'processor:fetchMissingActivity:';
const CACHEKEY_JUST_FETCHED = 'processor:isJustFetched:';
+
+ static $processed = [];
+
+ public static function addActivityId(string $id)
+ {
+ self::$processed[] = $id;
+ if (count(self::$processed) > 100) {
+ self::$processed = array_slice(self::$processed, 1);
+ }
+ print_r(self::$processed);
+ }
+
+ public static function isProcessed(string $id): bool
+ {
+ return in_array($id, self::$processed);
+ }
+
/**
* Extracts the tag character (#, @, !) from mention links
*
*/
public static function createItem(array $activity, bool $fetch_parents = true): array
{
+ if (self::isProcessed($activity['id'])) {
+ Logger::info('Id is already processed', ['id' => $activity['id']]);
+ return [];
+ }
+
+ self::addActivityId($activity['id']);
+
$item = [];
$item['verb'] = Activity::POST;
$item['thr-parent'] = $activity['reply-to-id'];
namespace Friendica\Protocol\ActivityPub;
use Friendica\Core\Logger;
+use Friendica\Core\System;
use Friendica\Database\Database;
use Friendica\Database\DBA;
use Friendica\DI;
}
}
- Logger::debug('Processing queue entry', ['id' => $entry['id'], 'type' => $entry['type'], 'object-type' => $entry['object-type'], 'uri' => $entry['object-id'], 'in-reply-to' => $entry['in-reply-to-id']]);
+ Logger::debug('Processing queue entry', ['id' => $entry['id'], 'type' => $entry['type'], 'object-type' => $entry['object-type'], 'uri' => $entry['object-id'], 'in-reply-to' => $entry['in-reply-to-id'], 'callstack' => System::callstack(20)]);
$activity = json_decode($entry['activity'], true);
$type = $entry['type'];