function _convertFile($inFile, $code, $charset, $language) { $oldLines = file($inFile); $txt = implode('', $oldLines); $txt = str_replace('<', '&lt;', $txt); $txt = str_replace('>', '&gt;', $txt); $txt = str_replace("’", "'", $txt); if ($code == 'de-DE' || $code == 'fr-FR' || $code == 'it-IT') { $txt = htmlentities(utf8_decode($txt)); } else { $converter = new JCommentsUtf8($charset); $txt = $converter->utf8ToStr($txt); } $txt = str_replace('<', '<', $txt); $txt = str_replace('>', '>', $txt); $txt = str_replace('"', '"', $txt); $txt = str_replace('&quot;', '"', $txt); $txt = str_replace('&gt;', '>', $txt); $txt = str_replace('&lt;', '<', $txt); $txt = str_replace('Note : All ini files need to be saved as UTF-8 - No BOM', 'Note: this file need to be saved in ' . $charset . ' charset', $txt); $inFile = str_replace($code . '.com_jcomments.ini', $language . '.ini', $inFile); $fp = fopen($inFile, "w"); if ($fp) { fputs($fp, $txt); fclose($fp); } }
function convertEncoding($value) { $iso = explode('=', _ISO); $charset = strtolower($iso[1]); if ($charset != 'utf-8' && is_file(JCOMMENTS_LIBRARIES . DS . 'convert' . DS . 'maps' . DS . $charset)) { if (!defined('CONVERT_TABLES_DIR')) { require_once JCOMMENTS_LIBRARIES . DS . 'convert' . DS . 'utf8.class.php'; } $encoding =& JCommentsUtf8::getInstance($charset); $needEntities = false; if (is_array($value)) { $newArray = array(); foreach ($value as $k => $v) { if (is_array($v)) { $newArray[$k] = JCommentsAJAX::convertEncoding($v); } else { if ($v != '') { if ($needEntities === true) { $newArray[$k] = $encoding->utf8_to_entities($v); } else { $newArray[$k] = JCommentsText::isUTF8($v) ? $encoding->utf8ToStr($v) : $v; if ($encoding->encodingFailed($newArray[$k])) { $newArray[$k] = $encoding->utf8_to_entities($v); $needEntities = true; } } } } } return $newArray; } else { if ($value != '') { $text = $value; if (JCommentsText::isUTF8($value)) { $text = $encoding->utf8ToStr($value); if ($encoding->encodingFailed($text)) { $text = $encoding->utf8_to_entities($value); } } return $text; } } } return $value; }
function importJomComment($source, $language) { $db =& JCommentsFactory::getDBO(); $query = "SELECT c.*" . "\n, u.email as user_email, u.name as user_name, u.username as user_username " . "\nFROM #__jomcomment AS c" . "\nLEFT JOIN #__users AS u ON c.user_id = u.id"; $db->setQuery($query); $rows = $db->loadObjectList(); $iso = explode('=', _ISO); $charset = strtolower((string) $iso[1]); if ($charset != 'utf-8') { $entity_replace = create_function('$string', ' $num = substr($string, 0, 1) === \'x\' ? hexdec(substr($string, 1)) : (int) $string; return $num < 0x20 || $num > 0x10FFFF || ($num >= 0xD800 && $num <= 0xDFFF) ? \'\' : ($num < 0x80 ? \'&#\' . $num . \';\' : ($num < 0x800 ? chr(192 | $num >> 6) . chr(128 | $num & 63) : ($num < 0x10000 ? chr(224 | $num >> 12) . chr(128 | $num >> 6 & 63) . chr(128 | $num & 63) : chr(240 | $num >> 18) . chr(128 | $num >> 12 & 63) . chr(128 | $num >> 6 & 63) . chr(128 | $num & 63))));'); require_once JCOMMENTS_BASE . DS . 'libraries' . DS . 'convert' . DS . 'utf8.class.php'; $encoding =& JCommentsUtf8::getInstance($charset); } foreach ($rows as $row) { if ($charset != 'utf-8') { $row->comment = preg_replace('~(&#(\\d{1,7}|x[0-9a-fA-F]{1,6});)~e', '$entity_replace(\'\\2\')', $row->comment); $row->comment = $encoding->utf8ToStr($row->comment); $row->name = preg_replace('~(&#(\\d{1,7}|x[0-9a-fA-F]{1,6});)~e', '$entity_replace(\'\\2\')', $row->name); $row->name = $encoding->utf8ToStr($row->name); $row->username = preg_replace('~(&#(\\d{1,7}|x[0-9a-fA-F]{1,6});)~e', '$entity_replace(\'\\2\')', $row->username); $row->username = $encoding->utf8ToStr($row->username); $row->title = preg_replace('~(&#(\\d{1,7}|x[0-9a-fA-F]{1,6});)~e', '$entity_replace(\'\\2\')', $row->title); $row->title = $encoding->utf8ToStr($row->title); } $comment = new JCommentsImportedComment($db); $comment->object_id = $row->contentid; $comment->object_group = isset($row->option) && $row->option != '' ? $row->option : 'com_content'; $comment->userid = $row->user_id; $comment->name = $row->user_name ? $row->user_name : $row->name; $comment->username = $row->user_username ? $row->user_username : $row->name; $comment->email = $row->user_email ? $row->user_email : $row->email; $comment->homepage = $row->website; $comment->title = $row->title; $comment->comment = $row->comment; $comment->ip = $row->ip; $comment->published = $row->published; $comment->date = $row->date; $comment->source = $source; $comment->lang = $language; $comment->store(); } }