\n";
}
}
function ShowBizModel($sBaseArgs)
{
echo "
\n";
foreach(MetaModel::GetClasses() as $sClass)
{
echo "
".sexyclass($sClass, $sBaseArgs)."
\n";
}
echo "
\n";
}
function ShowZLists($sBaseArgs)
{
$aData = array();
// 1 row per class, header made after the first row keys
//
foreach(MetaModel::GetClasses() as $sClass)
{
$aRow = array();
$aRow["_"] = $sClass;
foreach (MetaModel::EnumZLists() as $sListCode)
{
$aRow[$sListCode] = implode(", ", MetaModel::GetZListItems($sClass, $sListCode));
}
$aData[] = $aRow;
}
echo MyHelpers::make_table_from_assoc_array($aData);
}
function ShowDatabaseInfo()
{
$aTables = array();
foreach (CMDBSource::EnumTables() as $sTable)
{
$aTableData = array();
$aTableData["Name"] = $sTable;
$aTableDesc = CMDBSource::GetTableInfo($sTable);
$aTableData["Fields"] = MyHelpers::make_table_from_assoc_array($aTableDesc["Fields"]);
$aTables[$sTable] = $aTableData;
}
echo MyHelpers::make_table_from_assoc_array($aTables);
}
function CreateDB()
{
$sRes = "
Creating the DB...
\n";
if (MetaModel::DBExists())
{
$sRes .= "
It appears that the DB already exists.
\n";
}
else
{
MetaModel::DBCreate();
$sRes .= "
Done!
\n";
}
return $sRes;
}
function DebugQuery($sConfigFile)
{
$sQuery = ReadParam("oql");
if (empty($sQuery))
{
$sQueryTemplate = "SELECT Foo AS f JOIN Dummy AS D ON d.spirit = f.id WHERE f.age * d.height > TO_DAYS(NOW()) OR d.alive";
}
else
{
$sQueryTemplate = $sQuery;
}
echo "\n";
if (empty($sQuery)) return;
echo "
\n";
exit;
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////
//
// M a i n P r o g r a m
//
/////////////////////////////////////////////////////////////////////////////////////////////////
require_once('../core/cmdbobject.class.inc.php');
$sConfigFile = ReadParam("config", '');
if (empty($sConfigFile))
{
printConfigList();
exit;
}
MetaModel::Startup($sConfigFile, true); // allow missing DB
$sBaseArgs = "config=".urlencode($sConfigFile);
$sTodo = ReadParam("todo", "");
if ($sTodo == 'execsql')
{
$sSql = ReadMandatoryParam("sql");
$aSql = explode("##SEP##", $sSql);
$sConfirm = ReadParam("confirm");
if (empty($sConfirm) || ($sConfirm != "Yes"))
{
echo "\n";
}
else
{
foreach ($aSql as $sOneSingleSql)
{
echo "Executing command: $sOneSingleSql\n";
CMDBSource::Query($sOneSingleSql);
echo "... done!\n";
}
}
}
else
{
$sBaseUrl = "?$sBaseArgs&todo=execsql";
switch ($sTodo)
{
case "createdb":
// do NOT print the menu, because it will change...
break;
default:
printMenu($sConfigFile);
}
switch ($sTodo)
{
case "showtables":
ShowDatabaseInfo();
break;
case "showbizmodel":
ShowBizModel($sBaseArgs);
break;
case "showclass":
$sClass = ReadMandatoryParam("class");
ShowClass($sClass, $sBaseArgs);
break;
case "showzlists":
ShowZLists($sBaseArgs);
break;
case "debugquery":
DebugQuery($sConfigFile);
break;
case "createdb":
$sRes = CreateDB();
// As the menu depends on the existence of the DB, we have to do display it right after the job is done
printMenu($sConfigFile);
echo $sRes;
break;
case "checkmodel":
echo "Check definitions...\n";
MetaModel::CheckDefinitions();
echo "done...\n";
break;
case "checkmodeltodb":
echo "Check DB format...\n";
list($aErrors, $aSugFix) = MetaModel::DBCheckFormat();
DisplayDBFormatIssues($aErrors, $aSugFix, $sBaseUrl, $sSQLStatementArgName = "sql");
echo "done...\n";
break;
case "checkdb":
echo "Check DB integrity...\n";
MetaModel::DBCheckIntegrity($sBaseUrl, "sql");
echo "done...\n";
break;
case "userrightssetup":
echo "Setup user rights module (init DB)...\n";
UserRights::Setup();
echo "done...\n";
break;
case "checkall":
echo "Check definitions...\n";
MetaModel::CheckDefinitions();
echo "done...\n";
echo "Check DB format...\n";
list($aErrors, $aSugFix) = MetaModel::DBCheckFormat();
DisplayDBFormatIssues($aErrors, $aSugFix, $sBaseUrl, $sSQLStatementArgName = "sql");
echo "done...\n";
echo "Check DB integrity...\n";
MetaModel::DBCheckIntegrity($sBaseUrl, "sql");
echo "done...\n";
break;
}
}
?>