Index: trunk/core/install/utf.php
===================================================================
diff -u -N
--- trunk/core/install/utf.php (revision 8901)
+++ trunk/core/install/utf.php (revision 0)
@@ -1,131 +0,0 @@
-Init();
-
-header('Content-type: text/html; charset: utf-8');
-
-if (!defined('DEBUG_MODE') || !DEBUG_MODE) exit;
-
-$target_charset = 'utf8';
-$target_collation = 'utf8_general_ci';
-
-//$target_charset = 'latin1';
-//$target_collation = 'latin1_swedish_ci';
-
-ini_set('max_execution_time', 0);
-
-// Convert language translation
-$langs = $application->Conn->Query('SELECT * FROM '.TABLE_PREFIX.'Language', 'LanguageId');
-foreach ($langs as $lang_id => $a_lang) {
- switch ( strtoupper($a_lang['Charset']) ) {
- case 'WINDOWS-1251':
- $langs[$lang_id]['mysql_charset'] = 'cp1251';
- break;
- default:
- $langs[$lang_id]['mysql_charset'] = 'latin1';
- }
-}
-
-print_pre($langs);
-
-//die();
-
-$query = 'ALTER DATABASE `'.SQL_DB.'` DEFAULT CHARACTER SET '.$target_charset.' COLLATE '.$target_collation;
-//$application->Conn->Query($query);
-
-$query = 'SHOW TABLE STATUS';
-$tables = $application->Conn->Query($query);
-
-foreach ($tables as $table_status)
-{
- $table = $table_status['Name'];
-
- if ($table_status['Collation'] != $target_collation) {
- $sql = 'ALTER TABLE '.$table.' COLLATE '.$application->Conn->qstr($target_collation);
- echo "$sql
\n";
- $application->Conn->Query($sql);
- }
-
- echo "scanning $table
";
-
- $columns = $application->Conn->Query('SHOW FULL COLUMNS FROM '.$table);
- foreach ($columns as $a_column) {
- if ($a_column['Collation'] != 'NULL') {
- if ($a_column['Collation'] == $target_collation) {
- echo "skipping ".$a_column['Field'].'
';
- continue;
- }
-
- echo 'processing column '.$a_column['Field'].' ('.$a_column['Collation'].')
';
-
-// ALTER TABLE `inp_Addresses` ADD `utf_To` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `To` ;
-
- // adding temporary UTF column
- $new_def = $a_column['Type'].' CHARACTER SET '.$target_charset.' COLLATE '.$target_collation.' '.($a_column['Null'] == 'YES' ? 'NULL':'NOT NULL');
- $q = 'ALTER TABLE `'.$table.'` ADD `utf_'.$a_column['Field'].'` '.$new_def.' AFTER `'.$a_column['Field'].'`;';
- echo "$q
";
- $application->Conn->Query($q);
-
- // copying value to utf
- if ($table == TABLE_PREFIX.'Phrase' && $a_column['Field'] == 'Translation') {
- foreach ($langs as $lang_id => $a_lang) {
- $cast = $a_lang['mysql_charset'];
- if (!$cast) $cast = 'latin1';
- $copy_def = 'CONVERT( CAST(BINARY('.$a_column['Field'].') AS CHAR CHARACTER SET '.$cast.') USING '.$target_charset.')';
- $q = 'UPDATE `'.$table.'` SET `utf_'.$a_column['Field'].'` = '.$copy_def.' WHERE LanguageId = '.$lang_id;
- echo "$q
";
- $application->Conn->Query($q);
- }
- }
- elseif (preg_match('/l([0-9]+)_.*/', $a_column['Field'], $matches)) {
- $cast = $langs[$matches[1]]['mysql_charset'];
- if (!$cast) $cast = 'latin1';
- $copy_def = 'CONVERT( CAST(BINARY('.$a_column['Field'].') AS CHAR CHARACTER SET '.$cast.') USING '.$target_charset.')';
- $q = 'UPDATE `'.$table.'` SET `utf_'.$a_column['Field'].'` = '.$copy_def;
- echo "$q
";
- $application->Conn->Query($q);
- }
- else {
- $copy_def = 'BINARY(`'.$a_column['Field'].'`);';
- $q = 'UPDATE `'.$table.'` SET `utf_'.$a_column['Field'].'` = '.$copy_def;
- echo "$q
";
- $application->Conn->Query($q);
- }
-
- // altering orignal field to utf
- $q = 'ALTER TABLE `'.$table.'` CHANGE `'.$a_column['Field'].'` `'.$a_column['Field'].'` '.$new_def.';';
- echo "$q
";
- $application->Conn->Query($q);
-
- // copying utf value back
- $q = 'UPDATE `'.$table.'` SET `'.$a_column['Field'].'` = `utf_'.$a_column['Field'].'`;';
- echo "$q
";
- $application->Conn->Query($q);
-
- // removing temporary UTF column
- $q = 'ALTER TABLE `'.$table.'` DROP `utf_'.$a_column['Field'].'`;';
- echo "$q
";
- $application->Conn->Query($q);
-
- }
- }
-}
-
-$application->Conn->Query('UPDATE '.TABLE_PREFIX.'Language SET Charset = \''.$target_charset.'\'');
-
-function getmicrotime()
-{
- list($usec, $sec) = explode(" ", microtime());
- return ((float)$usec + (float)$sec);
-}
-?>
\ No newline at end of file