Changeset 3759
- Timestamp:
- Aug 23, 2007, 3:13:08 PM (15 years ago)
- Location:
- OpenPNE/trunk/webapp
- Files:
-
- 1 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
OpenPNE/trunk/webapp/lib/OpenPNE/Smarty.php
r3757 r3759 27 27 function ext_display($resource_name, $cache_id = null, $compile_id = null) 28 28 { 29 $this->register_outputfilter('smarty_outputfilter_convert_emoji'); 29 30 // とりあえず携帯用にSJISのみ対応 30 31 if ($this->output_charset == 'SJIS') { … … 101 102 function smarty_outputfilter_unescape_emoji($tpl_output, &$smarty) 102 103 { 103 return emoji_unescape($tpl_output, true); 104 $tpl_output = emoji_unescape($tpl_output, true); 105 $tpl_output = emoji_unescape($tpl_output, false); 106 return $tpl_output; 104 107 } 105 108 … … 119 122 } 120 123 124 function smarty_outputfilter_convert_emoji($tpl_output, &$smarty) 125 { 126 return emoji_convert($tpl_output, true); 127 } 128 121 129 ?> -
OpenPNE/trunk/webapp/lib/util/emoji.php
r1856 r3759 5 5 */ 6 6 7 require_once(OPENPNE_WEBAPP_DIR .'/lib/OpenPNE/KtaiEmoji.php'); 7 8 function emoji_escape($str, $remove = false) 8 9 { … … 11 12 $emoji = ''; 12 13 $c1 = ord($str[$i]); 13 if ($c1 == 0xF8 || $c1 == 0xF9) { 14 if ($GLOBALS['__Framework']['carrier'] == 's') { 15 if ($c1 == 0xF7 || $c1 == 0xF9 || $c1 == 0xFB) { 16 $bin = substr($str, $i, 2); 17 $emoji = emoji_escape_sb($bin); 18 } 19 } elseif ($c1 == 0xF8 || $c1 == 0xF9) { 14 20 $bin = substr($str, $i, 2); 15 21 $emoji = emoji_escape_i($bin); … … 39 45 if (preg_match('/'.$iemoji.'/', $bin)) { 40 46 $unicode = mb_convert_encoding($bin, 'UCS2', 'SJIS-win'); 41 return sprintf('&#x%02X%02X;', ord($unicode[0]), ord($unicode[1])); 47 $emoji_code = OpenPNE_KtaiEmoji::getInstance(); 48 $code = $emoji_code->get_emoji_code4emoji(sprintf('&#x%02X%02X;', ord($unicode[0]), ord($unicode[1])), 'i'); 49 return '%%'.$code.'%%'; 42 50 } else { 43 51 return ''; … … 79 87 return ''; 80 88 } 81 return sprintf('&#x%04X;', $unicode); 89 $emoji_code = OpenPNE_KtaiEmoji::getInstance(); 90 $code = $emoji_code->get_emoji_code4emoji(sprintf('&#x%04X;', $unicode), 'e'); 91 return '%%'.$code.'%%'; 92 } 93 94 function emoji_escape_sb($bin) 95 { 96 $sjis1 = ord($bin[0]); 97 $sjis2 = ord($bin[1]); 98 $web1 = $web2 = 0; 99 switch ($sjis1) { 100 case 0xF9: 101 if ($sjis2 >= 0x41 && $sjis2 <= 0x7E) { 102 $web1 = ord('G'); 103 $web2 = $sjis2 - 0x20; 104 } elseif($sjis2 >= 0x80 && $sjis2 <= 0x9B) { 105 $web1 = ord('G'); 106 $web2 = $sjis2 - 0x21; 107 } elseif ($sjis2 >= 0xA1 && $sjis2 <= 0xED) { 108 $web1 = ord('O'); 109 $web2 = $sjis2 - 0x80; 110 } 111 break; 112 case 0xF7: 113 if ($sjis2 >= 0x41 && $sjis2 <= 0x7E) { 114 $web1 = ord('E'); 115 $web2 = $sjis2 - 0x20; 116 } elseif ($sjis2 >= 0x80 && $sjis2 <= 0x9B) { 117 $web1 = ord('E'); 118 $web2 = $sjis2 - 0x21; 119 } elseif ($sjis2 >= 0xA1 && $sjis2 <= 0xF3) { 120 $web1 = ord('F'); 121 $web2 = $sjis2 - 0x80; 122 } 123 break; 124 case 0xFB: 125 if ($sjis2 >= 0x41 && $sjis2 <= 0x7E) { 126 $web1 = ord('P'); 127 $web2 = $sjis2 - 0x20; 128 } elseif ($sjis2 >= 0x80 && $sjis2 <= 0x8D) { 129 $web1 = ord('P'); 130 $web2 = $sjis2 - 0x21; 131 } elseif ($sjis2 >= 0xA1 && $sjis2 <= 0xD7) { 132 $web1 = ord('Q'); 133 $web2 = $sjis2 - 0x80; 134 } 135 break; 136 default: 137 return ''; 138 } 139 $emoji_code = OpenPNE_KtaiEmoji::getInstance(); 140 $code = $emoji_code->get_emoji_code4emoji(pack('c5', 0x1b, 0x24, $web1, $web2, 0x0f), 's'); 141 return '%%'.$code.'%%'; 82 142 } 83 143 … … 142 202 } 143 203 204 function emoji_convert($str) 205 { 206 $moji_pattern = '/%%([a-z][0-9]+)%%/i'; 207 return preg_replace_callback($moji_pattern, '_emoji_convert', $str); 208 } 209 210 function _emoji_convert($matches) 211 { 212 $o_code = $matches[1]; 213 214 switch ($GLOBALS['__Framework']['carrier']) { 215 case 'i': 216 $carrior = 'i'; 217 break; 218 case 's': 219 $carrior = 's'; 220 break; 221 case 'e': 222 $carrior = 'e'; 223 break; 224 default: 225 return '〓'; 226 } 227 228 $emoji_code = OpenPNE_KtaiEmoji::getInstance(); 229 $c_emoji = $emoji_code->convert_emoji($o_code, $carrior); 230 if ($c_emoji) { 231 return $c_emoji; 232 } else { 233 return '〓'; 234 } 235 } 236 144 237 ?> -
OpenPNE/trunk/webapp/modules/ktai/init.inc
r2190 r3759 19 19 if (CHECK_KTAI_UA && !isKtaiUserAgent()) { 20 20 openpne_redirect('pc'); 21 } 22 23 $agent = new OpenPNE_KtaiUA(); 24 if ($agent->is_docomo()) { 25 $GLOBALS['__Framework']['carrier'] = 'i'; 26 } elseif ($agent->is_au()) { 27 $GLOBALS['__Framework']['carrier'] = 'e'; 28 } elseif ($agent->is_vodafone()) { 29 $GLOBALS['__Framework']['carrier'] = 's'; 21 30 } 22 31
Note: See TracChangeset
for help on using the changeset viewer.