From 4b4218f5162e11d1502bf49a12e6411e779a54df Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 16 May 2021 19:31:10 +0000 Subject: [PATCH] Compact using a predefined context to fix content from Pleroma --- src/Util/JsonLD.php | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/Util/JsonLD.php b/src/Util/JsonLD.php index 7692cefc2f..ee5e0aea97 100644 --- a/src/Util/JsonLD.php +++ b/src/Util/JsonLD.php @@ -26,6 +26,7 @@ use Friendica\Core\Logger; use Exception; use Friendica\Core\System; use Friendica\DI; +use Friendica\Protocol\ActivityPub; /** * This class contain methods to work with JsonLD data @@ -161,6 +162,26 @@ class JsonLD * @throws Exception */ public static function compact($json) + { + $context = $json['@context'] ?? []; + $json['@context'] = ActivityPub::CONTEXT; + + $compacted = self::internalCompact($json); + if (empty($compacted)) { + Logger::info('Failed to compact with our context'); + $json['@context'] = $context; + $compacted = self::internalCompact($json); + if (empty($compacted)) { + Logger::info('Failed to compact with original context'); + } else { + Logger::info('Successful compacted with original context'); + } + } + + return $compacted; + } + + private static function internalCompact($json) { $json = self::fixContext($json); @@ -192,9 +213,7 @@ class JsonLD } catch (Exception $e) { $compacted = false; - Logger::error('compacting error', ['callstack' => System::callstack(20)]); - // Sooner or later we should log some details as well - but currently this leads to memory issues - // Logger::log('compacting error:' . substr(print_r($e, true), 0, 10000), Logger::DEBUG); + Logger::error('compacting error', ['line' => $e->getLine(), 'message' => $e->getMessage(),'callstack' => System::callstack(20)]); } $json = json_decode(json_encode($compacted, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE), true);