From 321e57d58d7c28f010debbd991031e93229208ff Mon Sep 17 00:00:00 2001 From: e107steved Date: Sat, 12 Dec 2009 16:57:49 +0000 Subject: [PATCH] Little utility to generate DB control arrays --- e107_files/utilities/dbgen.php | 206 +++++++++++++++++++++++++++++++++ 1 file changed, 206 insertions(+) create mode 100644 e107_files/utilities/dbgen.php diff --git a/e107_files/utilities/dbgen.php b/e107_files/utilities/dbgen.php new file mode 100644 index 000000000..878d2436e --- /dev/null +++ b/e107_files/utilities/dbgen.php @@ -0,0 +1,206 @@ +get_table_def('',e_ADMIN.'sql/core_sql.php'); +$tableArray = array(); + +foreach ($tableStruct as $t) +{ + $tableArray[$t[1]] = array('src' => e_ADMIN.'sql/core_sql.php', 'desc' => 'core:'.$t[1]); +} + + +// Now do the plugins +$sqlFiles = e107::getPref('e_sql_list'); +foreach ($sqlFiles as $p => $f) +{ + $targ = e_PLUGIN.$p.'/'.$f.'.php'; + //echo $p.':'.$targ.'
'; + $tableStruct = $dbAdm->get_table_def('',$targ); + foreach ($tableStruct as $t) + { + $tableArray[$t[1]] = array('src' => $targ, 'desc' => 'plug:'.$p.':'.$t[1]); + } +} +unset($tableStruct); +unset($sqlFiles); + + +function genFileSelect($tableDefs, $name,$fl) +{ + $ret = "\n"; + return $ret; +} + + + + + +//$HEADER = ''; +//$FOOTER = ''; +require(HEADERF); + + +$message = ''; +//======================================================== +// ACTION +//======================================================== +if (isset($_POST['do_conversion'])) +{ + if (varset($_POST['selected_plugin'],FALSE)) + { + $table = $_POST['selected_plugin']; + if (!isset($tableArray[$table])) + { + $message = 'Bad table name specified'; + $table = ''; + } + } + else + { + $message = 'No table name specified'; + } +} + +if ($table) +{ + $baseStruct = $dbAdm->get_table_def($table,$tableArray[$table]['src']); + $fieldDefs = $dbAdm->parse_field_defs($baseStruct[0][2]); // Required definitions + $outDefs = array(); + foreach ($fieldDefs as $k => $v) + { + switch ($v['type']) + { + case 'field' : + if (vartrue($v['autoinc'])) + { + if (isset($outDefs['WHERE'])) + { + } + else + { + $outDefs['WHERE'] = "`{$v['name']}` = \$id"; + } + break; + } + $baseType = preg_replace('#\(\d+?\)#', '', $v['fieldtype']); // Should strip any length + switch ($baseType) + { + case 'int' : + case 'shortint' : + case 'tinyint' : + $outDefs['_FIELD_TYPES'][$v['name']] = 'int'; + break; + case 'char' : + case 'text' : + case 'varchar' : + $outDefs['_FIELD_TYPES'][$v['name']] = 'todb'; + break; + } + if (isset($v['nulltype']) && !isset($v['default'])) + { + $outDefs['_NOTNULL'][$v['name']] = ''; + } + break; + case 'pkey' : + case 'ukey' : + case 'key' : + break; // Do nothing with keys for now + default : + echo "Unexpected field type: {$k} => {$v['type']}
"; + } + } + $toSave = $eArrayStorage->WriteArray($outDefs, FALSE); // 2nd parameter to TRUE if needs to be written to DB +} + +//======================================================== +// FORM +//======================================================== +$text = + "
+
+ + + + + "; + +$text .= " + + "; + +if ($message) +{ + $text .= " + + + "; +} + + +if ($table) +{ +$text .= " + + + "; +} + +$text .= " + + + + "; + + + + $text .= " + + + "; + + +$text .= " +
".'Table printout'."
".'(ready to copy and paste)'."
".'Error:'."".$message." +
Table {$table}
".str_replace("\n", '
', $toSave)."
".'Choose table:'."".genFileSelect($tableArray, 'selected_plugin',$pluginList)." +
+ +
\n +
+

"; + $ns->tablerender('SQL Definition Parser', $text); + +require(FOOTERF); + + +?>