]> git.mxchange.org Git - friendica.git/commitdiff
Fix expected implementation of JsonLD::fetchElementArray
authorHypolite Petovan <hypolite@mrpetovan.com>
Wed, 11 Nov 2020 16:19:08 +0000 (11:19 -0500)
committerHypolite Petovan <hypolite@mrpetovan.com>
Wed, 11 Nov 2020 16:19:08 +0000 (11:19 -0500)
- Added expected field value matching

src/Protocol/ActivityPub/Receiver.php
src/Util/JsonLD.php

index 31a2dcb0b8dee0859cb05cd6f8a9e8ff3cc4528e..3c0f4862e6d212475771012f3a4d62ce23b30847 100644 (file)
@@ -1345,7 +1345,7 @@ class Receiver
                $object_data['longitude'] = JsonLD::fetchElement($object_data, 'longitude', '@value');
                $object_data['attachments'] = self::processAttachments(JsonLD::fetchElementArray($object, 'as:attachment') ?? []);
                $object_data['tags'] = self::processTags(JsonLD::fetchElementArray($object, 'as:tag') ?? []);
-               $object_data['emojis'] = self::processEmojis(JsonLD::fetchElementArray($object, 'as:tag', 'toot:Emoji') ?? []);
+               $object_data['emojis'] = self::processEmojis(JsonLD::fetchElementArray($object, 'as:tag', null, '@type', 'toot:Emoji') ?? []);
                $object_data['generator'] = JsonLD::fetchElement($object, 'as:generator', 'as:name', '@type', 'as:Application');
                $object_data['generator'] = JsonLD::fetchElement($object_data, 'generator', '@value');
                $object_data['alternate-url'] = JsonLD::fetchElement($object, 'as:url', '@id');
index 2649e9073788147ef6e7117d1982892b501fbf53..c211ebc2a00067591703f0bbcd3955b11d29ca5d 100644 (file)
@@ -173,7 +173,7 @@ class JsonLD
         *
         * @return array fetched element
         */
-       public static function fetchElementArray($array, $element, $key = null)
+       public static function fetchElementArray($array, $element, $key = null, $type = null, $type_value = null)
        {
                if (!isset($array[$element])) {
                        return null;
@@ -187,10 +187,14 @@ class JsonLD
                $elements = [];
 
                foreach ($array[$element] as $entry) {
-                       if (!is_array($entry) || (is_null($key) && is_array($entry))) {
-                               $elements[] = $entry;
-                       } elseif (!is_null($key) && isset($entry[$key])) {
-                               $elements[] = $entry[$key];
+                       if (!is_array($entry) || is_null($key)) {
+                               $item = $entry;
+                       } elseif (isset($entry[$key])) {
+                               $item = $entry[$key];
+                       }
+
+                       if (isset($item) && (is_null($type) || is_null($type_value) || isset($item[$type]) && $item[$type] == $type_value)) {
+                               $elements[] = $item;
                        }
                }