mirror of
https://github.com/nextcloud/server.git
synced 2026-06-09 00:32:29 -04:00
Replace isValidEmoji by method in EmojiHelper
Signed-off-by: Vitor Mattos <vitor@php.rio>
This commit is contained in:
parent
762d1ff050
commit
12849196ad
1 changed files with 3 additions and 38 deletions
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue