17,12 → 17,29 |
* limitations under the License. |
*/ |
|
include_once __DIR__ . '/../includes/oidplus.inc.php'; |
|
$prefix = isset($_REQUEST['prefix']) ? $_REQUEST['prefix'] : ''; |
$database = isset($_REQUEST['database']) ? $_REQUEST['database'] : ''; |
$slang = isset($_REQUEST['slang']) ? $_REQUEST['slang'] : 'mysql'; |
|
if (($slang != 'mysql') && ($slang != 'pgsql') && ($slang != 'mssql') && ($slang != 'sqlite')) die('Unknown slang'); |
$ary = glob(__DIR__ . '/../plugins/sql_slang/'.'*'.'/plugin.inc.php'); |
foreach ($ary as $a) include $a; |
|
$slang_plugin = null; |
foreach (get_declared_classes() as $c) { |
if (is_subclass_of($c, 'OIDplusSqlSlangPlugin')) { |
$obj = new $c(); |
if ($obj::id() === $slang) { |
$slang_plugin = $obj; |
break; |
} |
} |
} |
if (is_null($slang_plugin)) { |
die('Unknown slang'); |
} |
|
$cont = trim(file_get_contents(__DIR__.'/sql/struct_'.$slang.'.sql'))."\n\n". |
trim(file_get_contents(__DIR__.'/sql/wellknown_country_'.$slang.'.sql'))."\n\n". |
trim(file_get_contents(__DIR__.'/sql/wellknown_other_'.$slang.'.sql'))."\n\n". |
30,24 → 47,8 |
|
$table_names = array('objects', 'asn1id', 'iri', 'ra', 'config', 'log', 'log_user', 'log_object'); |
foreach ($table_names as $table) { |
if ($slang == 'mysql') { |
$cont = str_replace('`'.$table.'`', '`'.$prefix.$table.'`', $cont); |
$cont = $slang_plugin->setupSetTablePrefix($cont, $table, $prefix); |
} |
if ($slang == 'sqlite') { |
$cont = str_replace('`'.$table.'`', '`'.$prefix.$table.'`', $cont); |
} |
if ($slang == 'pgsql') { |
$cont = str_replace('"'.$table.'"', '"'.$prefix.$table.'"', $cont); |
$cont = str_replace('"index_'.$table, '"index_'.$prefix.$table, $cont); |
} |
if ($slang == 'mssql') { |
$cont = str_replace('['.$table.']', '['.$prefix.$table.']', $cont); |
$cont = str_replace("'dbo.$table'", "'dbo.$prefix$table'", $cont); |
$cont = str_replace('PK_'.$table, 'PK_'.$prefix.$table, $cont); |
$cont = str_replace('IX_'.$table, 'PK_'.$prefix.$table, $cont); |
$cont = str_replace('DF__'.$table, 'DF__'.$prefix.$table, $cont); |
} |
} |
|
if (php_sapi_name() != 'cli') { |
header('Content-Type:text/sql'); |
55,17 → 56,7 |
} |
|
if (!empty($database)) { |
if ($slang == 'mysql') { |
echo "CREATE DATABASE IF NOT EXISTS `$database`;\n\n"; |
echo "USE `$database`;\n\n"; |
echo $slang_plugin->setupCreateDbIfNotExists($database); |
echo $slang_plugin->setupUseDatabase($database); |
} |
if ($slang == 'pgsql') { |
echo "-- CREATE DATABASE $database;\n\n"; |
echo "-- \connect $database;\n\n"; |
} |
if ($slang == 'mssql') { |
echo "USE [$database]\n\n"; |
echo "GO\n\n"; |
} |
} |
echo $cont; |