summaryrefslogtreecommitdiffstats
path: root/lib/private/EmojiHelper.php
diff options
context:
space:
mode:
authorVitor Mattos <vitor@php.rio>2022-04-28 08:00:08 -0300
committerVitor Mattos <vitor@php.rio>2022-04-29 14:00:57 -0300
commitcefcd55994898f68f1e8781e9581d17238b16bb2 (patch)
treeaf82f7fc83da05f88e31608b7464791930ba6413 /lib/private/EmojiHelper.php
parenta75a22f3ac3384ffd52e4642c05fbd3d35f94a3d (diff)
downloadnextcloud-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.php27
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