X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=tags%2Fsqlite0853%2Fsqlite%2Fnucleus%2Fsqlite%2Fconvert.php;fp=tags%2Fsqlite0853%2Fsqlite%2Fnucleus%2Fsqlite%2Fconvert.php;h=a1c7d9ecea9a4320f15532404d9f5071511abe41;hb=742ebc80399c748313bfb6709e36feb3485d070f;hp=0000000000000000000000000000000000000000;hpb=ec765ffba11de068a431927779a873e8e1c6c28b;p=nucleus-jp%2Fnucleus-plugins.git diff --git a/tags/sqlite0853/sqlite/nucleus/sqlite/convert.php b/tags/sqlite0853/sqlite/nucleus/sqlite/convert.php new file mode 100644 index 0000000..a1c7d9e --- /dev/null +++ b/tags/sqlite0853/sqlite/nucleus/sqlite/convert.php @@ -0,0 +1,151 @@ + nucleus_mysql_xxx converter * +* for Nucleus * +* ver 0.8.5 Written by Katsumi * +*******************************************/ + +// The license of this script is GPL + +function modifyConfigInstall(){ + // Modify config.php + $pattern=array(); + $replace=array(); + array_push($pattern,'/^([\s\S]*?)include([^\(]*?)\(([\s\S]*?)\$([\s\S]+)\'globalfunctions.php\'([\s\S]*?)$/'); + array_push($replace,'$1include$2($3\$DIR_NUCLEUS.\'sqlite/sqlite.php\'$5'.'$1include$2($3\$$4\'globalfunctions.php\'$5'); + if (file_exists('./config.php')) { + $before=read_from_file('./config.php'); + if (strpos($before,'sqlite.php')===false) { + $before=file('./config.php'); + $after=''; + foreach($before as $line) $after.=preg_replace($pattern,$replace,$line); + if (!write_to_file(realpath('./config.php'),$after)) ExitWithError(); + } + } + + // Modify install.php + if (file_exists('./install.php')) { + $before=read_from_file('./install.php'); + if (strpos($before,'sqlite.php')===false) { + + // The same pattern/replce is also used for install.php + array_push($pattern,'/aConfPlugsToInstall([\s\S]+)\'NP_SkinFiles\'/i'); + array_push($replace,'aConfPlugsToInstall$1\'NP_SkinFiles\',\'NP_SQLite\''); + array_push($pattern,'/]+name="mySQL_host"([^\/]+)\/>/i'); + array_push($replace,'Not needed for SQLite'); + array_push($pattern,'/]+name="mySQL_user"([^\/]+)\/>/i'); + array_push($replace,'Not needed for SQLite'); + array_push($pattern,'/]+name="mySQL_password"([^\/]+)\/>/i'); + array_push($replace,'Not needed for SQLite'); + array_push($pattern,'/]+name="mySQL_database"([^\/]+)\/>/i'); + array_push($replace,'Not needed for SQLite'); + array_push($pattern,'/]+name="mySQL_create"([^\)]+)<\/label>/i'); + array_push($replace,'Database will be created if not exist.'); + $before=file('./install.php'); + $after=''; + foreach($before as $line) $after.=preg_replace($pattern,$replace,$line); + if (!write_to_file(realpath('./install.php'),$after)) ExitWithError(); + } + } + + // Modify backup.php + if (!modifyBackup('./nucleus/libs/backup.php')) // less than version 3.3 + modifyBackup('./nucleus/plugins/backup/NP_BackupAdmin.php','class'); // more than version 3.4 (??) + + // Modify install.sql + if (file_exists('./install.sql')) { + $before=file('./install.sql'); + $pluginoptiontable=false; + $after=''; + foreach($before as $line){ + if ($pluginoptiontable) { + if (preg_match('/TYPE\=MyISAM;/i',$line)) $pluginoptiontable=false; + else if (preg_match('/`oid`[\s]+int\(11\)[\s]+NOT[\s]+NULL[\s]+auto_increment/i',$line)) + $line=preg_replace('/[\s]+auto_increment/i'," default '0'",$line); + } else { + if (preg_match('/CREATE[\s]+TABLE[\s]+`nucleus_plugin_option`/i',$line)) $pluginoptiontable=true; + } + if (strlen($after)==0) { + $replace='PRAGMA synchronous = off;'; + if (!strstr($line,$replace)) $after=preg_replace('/^[^\r\n]*([\r\n]*)$/',$replace.'$1$1',$line); + } + $after.=$line; + } + if ($after!=$before) { + if (!write_to_file(realpath('./install.sql'),$after)) ExitWithError(); + } + } +} + +function modifyBackup($file,$type='global'){ + if (!file_exists($file)) return false; + $before=read_from_file($file); + if (strpos($before,'sqlite_restore_execute_queries')===false) { + $pattern='/_execute_queries[\s]*\(([^\)]+)\)[\s]*;/i'; + if ($type=='class') $pattern='/\$this->_execute_queries[\s]*\(([^\)]+)\)[\s]*;/i'; + $replace='sqlite_restore_execute_queries($1);'; + $after=preg_replace($pattern,$replace,$before); + if (!write_to_file(realpath($file),$after)) ExitWithError(); + } + return true; +} + +function seekPhpFiles($dir,&$phpfiles,$myself){ + if (!is_dir($dir)) return; + $d = dir($dir); + $dirpath=realpath($d->path); + $dirs=array(); + if (substr($dirpath,-1)!='/' && substr($dirpath,-1)!="\\") $dirpath.='/'; + while (false !== ($entry = $d->read())) { + if ($entry=='.' || $entry=='..') continue; + if (is_file($dirpath.$entry) && substr($entry,-4)=='.php' && $entry!==$myself) array_push($phpfiles,realpath($dirpath.$entry)); + if (is_dir($dirpath.$entry) && $entry!='language' && $entry!='sqlite' ) array_push($dirs,realpath($dirpath.$entry)); + } + $d->close(); + foreach($dirs as $dir) seekPhpFiles($dir,$phpfiles,$myself); +} +function changeFunctions($file){ + if (!is_file($file=realpath($file))) return false; + if (!is_readable($file)) { + echo "Cannot read: $file
\n"; + return false; + } + $before=read_from_file($file); + $after=do_replace($before); + if ($before!=$after) return write_to_file($file,$after); + return true; +} +function do_replace(&$text) { + // Do this process until change does not occur any more... + // Otherwise, sometime file is not completely modified. + // This is indeed the case for BLOG.php. + $after=$text; + do $after=preg_replace('/([^_])mysql_([_a-z]+)([\s]*?)\(/','$1nucleus_mysql_$2(',($before=$after)); + while ($before!=$after); + return $after; +} +function read_from_file($file) { + if (function_exists('file_get_contents') ) $ret=file_get_contents($file); + else { + ob_start(); + readfile($file); + $ret=ob_get_contents(); + ob_end_clean(); + } + return $ret; +} +function write_to_file($file,&$text){ + if (!$handle = @fopen($file, 'w')) { + echo "Cannot change: $file
\n"; + return false; + } + fwrite($handle,$text); + fclose($handle); + echo "Changed: $file
\n"; + return true; +} +function ExitWithError($text='Error occured.') { + echo "$text"; + exit; +} +?> \ No newline at end of file