]> git.mxchange.org Git - friendica.git/commitdiff
Remove custom emojis from contact names
authorMichael <heluecht@pirati.ca>
Sat, 7 Sep 2024 07:33:39 +0000 (07:33 +0000)
committerMichael <heluecht@pirati.ca>
Sat, 7 Sep 2024 07:33:39 +0000 (07:33 +0000)
src/Model/APContact.php

index 36f0b864de9d372f5e250011349d46ba1f343075..5296043169166009b74c5a90268814d88b5bb690 100644 (file)
@@ -245,6 +245,8 @@ class APContact
                        }
                }
 
+               $apcontact['name'] = self::removeCustomEmojis($apcontact['name'], JsonLD::fetchElementArray($compacted, 'as:tag') ?? []);
+
                $apcontact['photo'] = JsonLD::fetchElement($compacted, 'as:icon', '@id');
                if (is_array($apcontact['photo']) || !empty($compacted['as:icon']['as:url']['@id'])) {
                        $apcontact['photo'] = JsonLD::fetchElement($compacted['as:icon'], 'as:url', '@id');
@@ -484,6 +486,19 @@ class APContact
                return DBA::selectFirst('apcontact', [], ['url' => $apcontact['url']]) ?: [];
        }
 
+       public static function removeCustomEmojis(string $name, array $tags): string
+       {
+               $original = $name;
+               foreach ($tags as $tag) {
+                       if ($tag['@type'] != 'toot:Emoji') {
+                               continue;
+                       }
+                       $name = trim(str_replace($tag['as:name'], '', $name));
+               }
+
+               return $name ?: $original;
+       }
+
        /**
         * Fetch the number of statuses for the given owner
         *