]> git.mxchange.org Git - friendica.git/blobdiff - src/Util/JsonLD.php
Merge pull request #9526 from MrPetovan/bug/9525-mastodon-emojis-tag
[friendica.git] / src / Util / JsonLD.php
index 1452318b52646f82606a21829f8e4403d6982272..c211ebc2a00067591703f0bbcd3955b11d29ca5d 100644 (file)
@@ -122,7 +122,9 @@ class JsonLD
                        'ostatus' => (object)['@id' => 'http://ostatus.org#', '@type' => '@id'],
                        'dc' => (object)['@id' => 'http://purl.org/dc/terms/', '@type' => '@id'],
                        'toot' => (object)['@id' => 'http://joinmastodon.org/ns#', '@type' => '@id'],
-                       'litepub' => (object)['@id' => 'http://litepub.social/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']];
 
                // Preparation for adding possibly missing content to the context
                if (!empty($json['@context']) && is_string($json['@context'])) {
@@ -171,12 +173,8 @@ class JsonLD
         *
         * @return array fetched element
         */
-       public static function fetchElementArray($array, $element, $key = '@id')
+       public static function fetchElementArray($array, $element, $key = null, $type = null, $type_value = null)
        {
-               if (empty($array)) {
-                       return null;
-               }
-
                if (!isset($array[$element])) {
                        return null;
                }
@@ -189,12 +187,14 @@ class JsonLD
                $elements = [];
 
                foreach ($array[$element] as $entry) {
-                       if (!is_array($entry)) {
-                               $elements[] = $entry;
+                       if (!is_array($entry) || is_null($key)) {
+                               $item = $entry;
                        } elseif (isset($entry[$key])) {
-                               $elements[] = $entry[$key];
-                       } elseif (!empty($entry) || !is_array($entry)) {
-                               $elements[] = $entry;
+                               $item = $entry[$key];
+                       }
+
+                       if (isset($item) && (is_null($type) || is_null($type_value) || isset($item[$type]) && $item[$type] == $type_value)) {
+                               $elements[] = $item;
                        }
                }