diff options
author | Vitor Mattos <vitor@php.rio> | 2022-04-28 08:00:08 -0300 |
---|---|---|
committer | Vitor Mattos <vitor@php.rio> | 2022-04-29 14:00:57 -0300 |
commit | cefcd55994898f68f1e8781e9581d17238b16bb2 (patch) | |
tree | af82f7fc83da05f88e31608b7464791930ba6413 /lib/private/EmojiHelper.php | |
parent | a75a22f3ac3384ffd52e4642c05fbd3d35f94a3d (diff) | |
download | nextcloud-server-cefcd55994898f68f1e8781e9581d17238b16bb2.tar.gz nextcloud-server-cefcd55994898f68f1e8781e9581d17238b16bb2.zip |
Include more emoji chars to test and fixes after include it
Signed-off-by: Vitor Mattos <vitor@php.rio>
Diffstat (limited to 'lib/private/EmojiHelper.php')
-rw-r--r-- | lib/private/EmojiHelper.php | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/lib/private/EmojiHelper.php b/lib/private/EmojiHelper.php index 7a4580a1bdb..d6e44810fab 100644 --- a/lib/private/EmojiHelper.php +++ b/lib/private/EmojiHelper.php @@ -60,13 +60,26 @@ class EmojiHelper implements IEmojiHelper { 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; + // Unicode chars need 2 or more chars + // The characterCount before this loop already validate if is a single emoji + // This condition is to don't continue if non emoji chars + if (strlen($emoji) >= 2) { + // 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_FORMAT_CHAR || // i.e. 🏴 🏴 + $codePointType === \IntlChar::CHAR_CATEGORY_OTHER_PUNCTUATION || // i.e. ‼️ ⁉️ #⃣ + $codePointType === \IntlChar::CHAR_CATEGORY_LOWERCASE_LETTER || // i.e. ℹ️ + $codePointType === \IntlChar::CHAR_CATEGORY_MATH_SYMBOL || // i.e. ↔️ ◻️ ⤴️ ⤵️ + $codePointType === \IntlChar::CHAR_CATEGORY_ENCLOSING_MARK || // i.e. 0⃣..9⃣ + $codePointType === \IntlChar::CHAR_CATEGORY_DECIMAL_DIGIT_NUMBER || // i.e. 0⃣..9⃣ + $codePointType === \IntlChar::CHAR_CATEGORY_DASH_PUNCTUATION || // i.e. 〰️ + $codePointType === \IntlChar::CHAR_CATEGORY_GENERAL_OTHER_TYPES + ) { + continue; + } } // If it's neither a modifier nor an emoji, we only allow |