use Friendica\Content\Text\BBCode;
use Friendica\Content\Text\HTML;
use Friendica\Content\Text\Markdown;
+use Friendica\Core\Cache\Enum\Duration;
use Friendica\Core\Logger;
use Friendica\Core\Protocol;
use Friendica\Core\System;
*/
class Processor
{
+ const CACHEKEY_FETCH_ACTIVITY = 'processor:fetchMissingActivity:';
/**
* Extracts the tag character (#, @, !) from mention links
*
$uid = 0;
}
- $object = ActivityPub::fetchContent($url, $uid);
- if (empty($object)) {
- Logger::notice('Activity was not fetchable, aborting.', ['url' => $url, 'uid' => $uid]);
- return '';
- }
+ $cachekey = self::CACHEKEY_FETCH_ACTIVITY . $url;
+ $object = DI::cache()->get($cachekey);
- if (empty($object['id'])) {
- Logger::notice('Activity has got not id, aborting. ', ['url' => $url, 'object' => $object]);
- return '';
+ if (is_null($object)) {
+ $object = ActivityPub::fetchContent($url, $uid);
+ if (empty($object)) {
+ Logger::notice('Activity was not fetchable, aborting.', ['url' => $url, 'uid' => $uid]);
+ return '';
+ }
+
+ if (empty($object['id'])) {
+ Logger::notice('Activity has got not id, aborting. ', ['url' => $url, 'object' => $object]);
+ return '';
+ }
+ DI::cache()->set($cachekey, $object, Duration::FIVE_MINUTES);
+ } else {
+ Logger::debug('Fetch from cache', ['url' => $url]);
}
$signer = [];
return;
}
- $children = DBA::select('inbox-entry', ['id'], ['in-reply-to-id' => $entry['object-id']]);
- while ($child = DBA::fetch($children)) {
- if ($id == $child['id']) {
- continue;
- }
- self::deleteById($child['id']);
- }
- DBA::close($children);
DBA::delete('inbox-entry', ['id' => $entry['id']]);
}
Logger::notice('Relayed message had not been fetched', ['id' => $object_id, 'actor' => $actor]);
return;
}
-
- $item_id = Item::searchByLink($object_id);
- if ($item_id) {
- Logger::info('Relayed message had been fetched and stored', ['id' => $object_id, 'item' => $item_id, 'actor' => $actor]);
- } else {
- Logger::notice('Relayed message had not been stored', ['id' => $object_id, 'actor' => $actor]);
- }
}
/**
return;
}
- if ($push) {
+ if (!empty($object_data['entry-id']) && ($push || ($activity['completion-mode'] == self::COMPLETION_RELAY))) {
// We delay by 5 seconds to allow to accumulate all receivers
$delayed = date(DateTimeFormat::MYSQL, time() + 5);
+ Logger::debug('Initiate processing', ['id' => $object_data['entry-id'], 'uri' => $object_data['object_id']]);
Worker::add(['priority' => PRIORITY_HIGH, 'delayed' => $delayed], 'ProcessQueue', $object_data['entry-id']);
return;
}