#!/usr/bin/php4 -Cq
<?php

ini_set('include_path', '/usr/share/irm:/usr/share/irm/www:/usr/share/php');

require_once 'MDB.php';

$DSN = $_SERVER['argv'][1];

$DB = MDB::Connect($DSN);
if (MDB::isError($DB))
{
	trigger_error($DB->getMessage()."\n".$DB->getUserInfo(), E_USER_ERROR);
}

require_once 'database/upgrades.php';

$DB->setErrorHandling(PEAR_ERROR_RETURN);

// Covers most versions
$curver = $DB->getOne("SELECT version FROM config");
if (MDB::isError($curver) && $curver->getCode() == MDB_ERROR_NOSUCHTABLE)
{
	// Pre 1.3.1
	$curver = $DB->getOne("SELECT number FROM version");
}
if (MDB::isError($curver))
{
	// Hack for 1.0.3
	$curver = '1.3.0';
}
$DB->setErrorHandling(PEAR_ERROR_CALLBACK, 'DBDie');

$upgrading = false;
$RUNMSG = '';
foreach ($UPGRADES as $ver => $queries)
{
	if ($ver == $curver)
	{
		$upgrading = true;
	}
	
	if ($upgrading)
	{
		$RUNMSG .= "Running upgrade for $ver\n";
		foreach ($queries as $q)
		{
			$err = $DB->query($q);
			if (MDB::isError($err))
			{
				trigger_error("Upgrade query failed ($ver): " . $err->getMessage() . "\n" . $err->getUserInfo(), E_USER_ERROR);
			}
		}
	}
}
	
$DB->disconnect();
unset($DB);

$RUNMSG .= "The database has been upgraded to the current system version.";

echo $RUNMSG;
