]> git.mxchange.org Git - friendica.git/blobdiff - src/Util/JsonLD.php
Catch exceptions for Worker::AddContact()
[friendica.git] / src / Util / JsonLD.php
index a0a272fdd149cbdbd3a7432ec2893ca75c6b50c6..732b4b985d4d5bdabde47d1891652bbb893cbdec 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
 
 namespace Friendica\Util;
 
-use Friendica\Core\Cache\Duration;
+use Friendica\Core\Cache\Enum\Duration;
 use Friendica\Core\Logger;
 use Exception;
+use Friendica\Core\System;
 use Friendica\DI;
 
 /**
@@ -41,6 +42,21 @@ class JsonLD
         */
        public static function documentLoader($url)
        {
+               switch ($url) {
+                       case 'https://w3id.org/security/v1':
+                               $url = DI::baseUrl() . '/static/security-v1.jsonld';
+                               break;
+                       case 'https://w3id.org/identity/v1':
+                               $url = DI::baseUrl() . '/static/identity-v1.jsonld';
+                               break;
+                       case 'https://www.w3.org/ns/activitystreams':
+                               $url = DI::baseUrl() . '/static/activitystreams.jsonld';
+                               break;
+                       default:
+                               Logger::info('Got url', ['url' =>$url]);
+                               break;
+               }
+
                $recursion = 0;
 
                $x = debug_backtrace();
@@ -54,7 +70,7 @@ class JsonLD
 
                if ($recursion > 5) {
                        Logger::error('jsonld bomb detected at: ' . $url);
-                       exit();
+                       System::exit();
                }
 
                $result = DI::cache()->get('documentLoader:' . $url);
@@ -124,7 +140,9 @@ class JsonLD
                        'toot' => (object)['@id' => 'http://joinmastodon.org/ns#', '@type' => '@id'],
                        'litepub' => (object)['@id' => 'http://litepub.social/ns#', '@type' => '@id'],
                        'sc' => (object)['@id' => 'http://schema.org#', '@type' => '@id'],
-                       'pt' => (object)['@id' => 'https://joinpeertube.org/ns#', '@type' => '@id']];
+                       'pt' => (object)['@id' => 'https://joinpeertube.org/ns#', '@type' => '@id'],
+                       'mobilizon' => (object)['@id' => 'https://joinmobilizon.org/ns#', '@type' => '@id'],
+               ];
 
                // Preparation for adding possibly missing content to the context
                if (!empty($json['@context']) && is_string($json['@context'])) {
@@ -150,9 +168,7 @@ class JsonLD
                }
                catch (Exception $e) {
                        $compacted = false;
-                       Logger::error('compacting error');
-                       // 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::notice('compacting error', ['line' => $e->getLine(), 'exception' => $e]);
                }
 
                $json = json_decode(json_encode($compacted, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE), true);
@@ -180,7 +196,7 @@ class JsonLD
                }
 
                // If it isn't an array yet, make it to one
-               if (!is_int(key($array[$element]))) {
+               if (!is_array($array[$element]) || !is_int(key($array[$element]))) {
                        $array[$element] = [$array[$element]];
                }