Skip to content

Commit

Permalink
Merge pull request #32437 from nextcloud/bugfix/32256/backport/32220/…
Browse files Browse the repository at this point in the history
…stable24

Replace isValidEmoji by method in EmojiHelper
  • Loading branch information
blizzz authored May 16, 2022
2 parents ee89136 + 1284919 commit 8bb0e1e
Showing 1 changed file with 3 additions and 38 deletions.
41 changes: 3 additions & 38 deletions apps/user_status/lib/Service/EmojiService.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
*/
namespace OCA\UserStatus\Service;

use OC\Comments\EmojiHelper;
use OCP\IDBConnection;

/**
Expand Down Expand Up @@ -60,43 +61,7 @@ public function doesPlatformSupportEmoji(): bool {
* @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);
}
}

0 comments on commit 8bb0e1e

Please sign in to comment.