Current Path : /var/www/html/clients/amz.e-nk.ru/ |
Current File : /var/www/html/clients/amz.e-nk.ru/convert_utf8.php |
<?header("Content-type: text/html; charset=cp1251");?><html><head><title>Êîíâåðòàöèÿ ôàéëîâ</title></head><body><? $STEP = intval($_REQUEST['step']); if (!$STEP) $STEP = 1; $strRes = ''; define('LIMIT', 10); // time limit if (!function_exists('file_get_contents')) // PHP 4 { function file_get_contents($file) { return implode(file($file)); } function file_put_contents($file, $str) { return ($f = fopen($file, 'wb')) && fwrite($f, $str) && fclose($f); } } if (!$_REQUEST['go']) { // Îáÿçàòåëüíûå ïðîâåðêè if (!function_exists('mb_convert_encoding')) Error('Íå äîñòóïíà áèáëèîòåêà mbstring'); if (ini_get('mbstring.func_overload') != 2) Error('Çíà÷åíèå ïàðàìåòðà mbstring.func_overload íå ðàâíî 2'); require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php'); if (!defined('BX_UTF') || BX_UTF !== true) Error('Êîíñòàíòà BX_UTF íå îïðåäåëåíà â true â /bitrix/php_interface/dbconn.php'); $res = $DB->Query('SHOW VARIABLES LIKE "character_set_results"'); $f = $res->Fetch(); //if (strtolower($f['Value']) != 'cp1251') //Error('Áàçà äàííûõ ðàáîòàåò â êîäèðîâêå, îòëè÷íîé îò cp1251 (çíà÷åíèå: '.$f['Value'].')'); } else // GO! { define('START_TIME', time()); // çàñåêàåì âðåìÿ ñòàðòà if ($STEP < 3) { define('START_PATH', $_SERVER['DOCUMENT_ROOT']); // ñòàðòîâàÿ ïàïêà äëÿ ïîèñêà if ($_REQUEST['break_point']) define('SKIP_PATH',$_REQUEST['break_point']); // ïðîìåæóòî÷íûé ïóòü Search(START_PATH); if (defined('BREAK_POINT')) { ?><form method=post id=postform> <input type=hidden name=step value="<?=$STEP?>"> <input type=hidden name=go value=Y> <input type=hidden name=break_point value="<?=htmlspecialchars(BREAK_POINT)?>"> </form> Èä¸ò îáðàáîòêà...<br> Òåêóùèé ôàéë: <i><?=htmlspecialchars(BREAK_POINT)?></i> <script>window.setTimeout("document.getElementById('postform').submit()",500);</script><? // òàéìàóò ÷òîáû áðàóçåð ïîêàçàë òåêñò die(); } else { $strRes = "<font color=green><b>Øàã $STEP âûïîëíåí óñïåøíî</b></font>"; $STEP++; } } elseif ($STEP == 3) // Êîíâåðòàöèÿ áàçû { if ($_REQUEST['break_point']) define('SKIP_PATH',$_REQUEST['break_point']); // ïðîìåæóòî÷íûé ïóòü require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php'); $res = $DB->Query('SHOW TABLES'); while($f = $res->Fetch()) { $table = $f['Tables_in_'.$DBName]; if (defined('SKIP_PATH') && !defined('FOUND')) { if ($table == SKIP_PATH) define('FOUND', true); else continue; } $DB->Query('ALTER TABLE `'.$table.'` CHARACTER SET utf8'); $res0 = $DB->Query('SHOW FIELDS FROM `'.$table.'`'); while($f0 = $res0->Fetch()) { if (false!==strpos($f0['Type'],'char') || false!==strpos($f0['Type'],'text')) { $q = 'ALTER TABLE `'.$table.'` MODIFY `'.$f0['Field'].'` '.$f0['Type'].' CHARACTER SET utf8 '.(trim($f0['Default'])?'DEFAULT '.($f0['Null']=='YES'?'NULL':'"'.$DB->ForSql($f0['Default']).'"'):''); $DB->Query($q); if (time() - START_TIME > LIMIT) { if (!defined('BREAK_POINT')) define('BREAK_POINT', $table); break; } } } if (defined('BREAK_POINT')) break; } if (defined('BREAK_POINT')) { ?><form method=post id=postform> <input type=hidden name=step value="<?=$STEP?>"> <input type=hidden name=go value=Y> <input type=hidden name=break_point value="<?=htmlspecialchars(BREAK_POINT)?>"> </form> Èä¸ò îáðàáîòêà...<br> Òåêóùàÿ òàáëèöà: <i><?=htmlspecialchars(BREAK_POINT)?></i> <script>window.setTimeout("document.getElementById('postform').submit()",500);</script><? // òàéìàóò ÷òîáû áðàóçåð ïîêàçàë òåêñò die(); } else { $DB->Query('ALTER DATABASE `'.$DBName.'` DEFAULT CHARACTER SET utf8'); die("<font color=green><b>Øàã $STEP âûïîëíåí óñïåøíî. <br>Êîíâåðòàöèÿ çàâåðøåíà.</b></font><br>Îáÿçàòåëüíî óäàëèòå ".__FILE__."!"); } } } $arStep = array( 0, 'Ïðîâåðêà ïðàâ äîñòóïà', 'Êîíâåðòàöèÿ ôàéëîâ â UTF8', 'Êîíâåðòàöèÿ áàçû äàííûõ â UTF8' ) ?> <h1>Êîíâåðòàöèÿ ñàéòà â utf8</h1> <p>Ïðèìåð ñêðèïòà, îïèñàííîãî â áëîãå: <a href="http://dev.1c-bitrix.ru/community/blogs/howto/1466.php">http://dev.1c-bitrix.ru/community/blogs/howto/1466.php</a></p> <?=$strRes?> <form method=post> <h2>Øàã <?=$STEP?></h2> <input type=hidden name=step value="<?=$STEP?>"> <input type=submit name=go value="<?=$arStep[$STEP]?>"> </form> <? function Search($path) { if (time() - START_TIME > LIMIT) { if (!defined('BREAK_POINT')) define('BREAK_POINT', $path); return; } if (defined('SKIP_PATH') && !defined('FOUND')) // ïðîâåðèì, ãîäèòñÿ ëè òåêóùèé ïóòü { if (0!==strpos(SKIP_PATH, dirname($path))) // îòáðàñûâàåì èìÿ èëè èä¸ì íèæå return; if (SKIP_PATH==$path) // ïóòü íàéäåí, ïðîäîëæàåì èñêàòü òåêñò define('FOUND',true); } if (is_dir($path)) // dir { $dir = opendir($path); while($item = readdir($dir)) { if ($item == '.' || $item == '..') continue; Search($path.'/'.$item); } closedir($dir); } else // file { if (!defined('SKIP_PATH') || defined('FOUND')) { if ((substr($path,-3) == '.js' || substr($path,-4) == '.php') && $path != __FILE__) Process($path); } } } function Process($file) { global $STEP; if ( 0 === strpos($file, $_SERVER['DOCUMENT_ROOT'].'/bitrix') && 0 !== strpos($file, $_SERVER['DOCUMENT_ROOT'].'/bitrix/templates') && false === strpos($file,'/lang/ru/') ) return; if ($STEP == 1) { if (!is_writable($file)) Error('Ôàéë íå äîñòóïåí íà çàïèñü: '.$file); } elseif ($STEP == 2) { $content = file_get_contents($file); if ($content === false) Error('Íå óäàëîñü ïðî÷èòàòü ôàéë: '.$file); if (file_put_contents($file, mb_convert_encoding($content, 'utf8', 'cp1251')) === false) Error('Íå óäàëîñü ñîõðàíèòü ôàéë: '.$file); } } function Error($text) { die('<font color=red>'.$text.'</font>'); } ?>