]> source.dussan.org Git - nextcloud-server.git/commitdiff
Replace isValidEmoji by method in EmojiHelper 32437/head
authorVitor Mattos <vitor@php.rio>
Mon, 16 May 2022 15:58:58 +0000 (12:58 -0300)
committerVitor Mattos <vitor@php.rio>
Mon, 16 May 2022 15:58:58 +0000 (12:58 -0300)
Signed-off-by: Vitor Mattos <vitor@php.rio>
apps/user_status/lib/Service/EmojiService.php

index 0f1979338726ec8b626e9d1fe8cf3fd7f93501cb..9254c250b6b5cd8e74ffa4eed6ec46c6a3d351ff 100644 (file)
@@ -26,6 +26,7 @@ declare(strict_types=1);
  */
 namespace OCA\UserStatus\Service;
 
+use OC\Comments\EmojiHelper;
 use OCP\IDBConnection;
 
 /**
@@ -60,43 +61,7 @@ class EmojiService {
         * @return bool
         */
        public function isValidEmoji(string $emoji): bool {
-               $intlBreakIterator = \IntlBreakIterator::createCharacterInstance();
-               $intlBreakIterator->setText($emoji);
-
-               $characterCount = 0;
-               while ($intlBreakIterator->next() !== \IntlBreakIterator::DONE) {
-                       $characterCount++;
-               }
-
-               if ($characterCount !== 1) {
-                       return false;
-               }
-
-               $codePointIterator = \IntlBreakIterator::createCodePointInstance();
-               $codePointIterator->setText($emoji);
-
-               foreach ($codePointIterator->getPartsIterator() as $codePoint) {
-                       $codePointType = \IntlChar::charType($codePoint);
-
-                       // If the current code-point is an emoji or a modifier (like a skin-tone)
-                       // just continue and check the next character
-                       if ($codePointType === \IntlChar::CHAR_CATEGORY_MODIFIER_SYMBOL ||
-                               $codePointType === \IntlChar::CHAR_CATEGORY_MODIFIER_LETTER ||
-                               $codePointType === \IntlChar::CHAR_CATEGORY_OTHER_SYMBOL ||
-                               $codePointType === \IntlChar::CHAR_CATEGORY_GENERAL_OTHER_TYPES) {
-                               continue;
-                       }
-
-                       // If it's neither a modifier nor an emoji, we only allow
-                       // a zero-width-joiner or a variation selector 16
-                       $codePointValue = \IntlChar::ord($codePoint);
-                       if ($codePointValue === 8205 || $codePointValue === 65039) {
-                               continue;
-                       }
-
-                       return false;
-               }
-
-               return true;
+               $emojiHelper = new EmojiHelper($this->db);
+               return $emojiHelper->isValidEmoji($emoji);
        }
 }