File size: 3Kb
<?php
/*
*
* EMOJI class for Dcms-Social
*
* @link http://koder-alex.ru
* @autor koder_alex
* @version 1.5
*
*/
class emoji
{
/*
* Метод деширования символов в строке
* А так же вывод найденных эмоций
*/
static function smile($msg)
{
return self::emojiUnicodStringDecode($msg);
}
/**
*
* Метод преобразования кодировки символов
*/
private static function emojiStringEncoding($string, $format = "%x")
{
$binary = mb_convert_encoding($string, 'UTF-32BE', 'UTF-8');
$string = vsprintf($format, unpack('N', $binary));
return $string;
}
/**
* кеш эмоций
*/
private static $emojiUni = array();
/**
*
* Метод дешифрования юникода в строке
*/
private static function emojiUnicodStringDecode($string)
{
return preg_replace_callback('/[\x{1f300}-\x{1f5ff}\x{1f900}-\x{1f9ff}\x{1f600}-\x{1f64f}\x{1f680}-\x{1f6ff}\x{2600}-\x{26ff}\x{2700}-\x{27bf}\x{1f1e6}-\x{1f1ff}\x{1f191}-\x{1f251}\x{1f004}\x{1f0cf}\x{1f170}-\x{1f171}\x{1f17e}-\x{1f17f}\x{1f18e}\x{3030}\x{2b50}\x{2b55}\x{2934}-\x{2935}\x{2b05}-\x{2b07}\x{2b1b}-\x{2b1c}\x{3297}\x{3299}\x{303d}\x{00a9}\x{00ae}\x{2122}\x{23f3}\x{24c2}\x{23e9}-\x{23ef}\x{25b6}\x{23f8}-\x{23fa}]/ui', function ($m) {
if(isset(self::$emojiUni[$m[0]]) === true) {
return self::$emojiUni[$m[0]];
}
$entity = self::emojiStringEncoding($m[0]);
self::$emojiUni[$m[0]]= '<img src="/files/images/blank.gif" alt="'.$m[0].'" class="emoji-icon emo-' . $entity . '">';
return self::$emojiUni[$m[0]];
}, $string);
}
/**
* Метод с дешифрованием все поступающий POST данных
*/
static function dataDecode()
{
if (getenv('REQUEST_METHOD') === 'POST' || empty($_POST) === false) {
$_POST = array_map(function($string) {
return preg_replace_callback('/[\x{1f300}-\x{1f5ff}\x{1f900}-\x{1f9ff}\x{1f600}-\x{1f64f}\x{1f680}-\x{1f6ff}\x{2600}-\x{26ff}\x{2700}-\x{27bf}\x{1f1e6}-\x{1f1ff}\x{1f191}-\x{1f251}\x{1f004}\x{1f0cf}\x{1f170}-\x{1f171}\x{1f17e}-\x{1f17f}\x{1f18e}\x{3030}\x{2b50}\x{2b55}\x{2934}-\x{2935}\x{2b05}-\x{2b07}\x{2b1b}-\x{2b1c}\x{3297}\x{3299}\x{303d}\x{00a9}\x{00ae}\x{2122}\x{23f3}\x{24c2}\x{23e9}-\x{23ef}\x{25b6}\x{23f8}-\x{23fa}]/ui', function ($m) {
return '&#x' . self::emojiStringEncoding($m[0]) . ';';
}, $string);
}, (array)$_POST);
}
}
static function showContent() {
?>
<span id="toggle_emoji" class="cp_sticker_btn cp_inline_attach_btn">
<i id="koder_alex_emoji" class="EmojiButton" onclick="Emoji.emojiToggle(); return false;" width="26" height="26"></i>
</span>
<?
}
}