migrator.php-pa
author rejo
Tue, 17 Apr 2007 19:43:24 +0000
changeset 4 55ed92aa7cf5
parent 1 58094faf794d
permissions -rwxr-xr-x
[feladat @ 5] - Second half of translation framework. - Several small typo's in code fixed. - Removed comments on a todo in leveldescription(), already done. - Replaced dal.inc.php with DB.php from package DB-1.7.6 from pear.php.net to fix problems using poweradmin 1.2.7-patched with php5/pear. The DB package has already been superseded by MDB2, but that version is incompatible with current code.

<?php
// +--------------------------------------------------------------------+
// | PowerAdmin								|
// +--------------------------------------------------------------------+
// | Copyright (c) 1997-2002 The PowerAdmin Team			|
// +--------------------------------------------------------------------+
// | This source file is subject to the license carried by the overal	|
// | program PowerAdmin as found on http://poweradmin.sf.net		|
// | The PowerAdmin program falls under the QPL License:		|
// | http://www.trolltech.com/developer/licensing/qpl.html		|
// +--------------------------------------------------------------------+
// | Authors: Roeland Nieuwenhuis <trancer <AT> trancer <DOT> nl>	|
// |          Sjeemz <sjeemz <AT> sjeemz <DOT> nl>			|
// +--------------------------------------------------------------------+
//
// File: migrator.php
// Description: Migrates PowerAdmin 1.1.2 to the new 1.2 format

if(!@include_once("inc/config.inc.php"))
{
        error("You have to create a config.inc.php!");
}
require_once("inc/database.inc.php");

PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, 'error');
function error($msg)
{
        // General function for printing critical errors.
        include_once("inc/header.inc.php");
        ?>
        <P><TABLE CLASS="error"><TR><TD CLASS="error"><H2>Oops! An error occured!</H2>
        <BR>
        <FONT STYLE="font-weight: Bold">
	<?
		if(is_object($msg))
		{	
			switch($msg->code)
			{
				case -19:
					echo "<P>It seems you already have your PowerAdmin migrated because the tables cant be 
						altered. Another problem can be that you dont ALTER right on your database, 
						check this if you think your database doesnt have the proper format yet!</P>";
					break;
				case -18:
					echo "<P>One of the tables required doesnt exist, please run 
						test_setup.php.</P>PEAR::DB Error: " . $msg->getDebugInfo();
					break;
				default:
					echo "Unknown error, sorry: PEAR::DB Returned: " . $msg->getDebugInfo();
					break;
			}
		}
		else
		{
			echo $msg;
		}
	?>

	<BR><BR><a href="javascript:history.go(-1)">&lt;&lt; back</a></FONT><BR></TD></TR></TABLE></P>
        <?
        include_once("inc/footer.inc.php");
        die();
}


function message($msg)
{
    include_once("inc/header.inc.php");
    ?>
    <P><TABLE CLASS="messagetable"><TR><TD CLASS="message"><H2>Success!</H2>
    <BR>
	<FONT STYLE="font-weight: Bold">
	<P>
	<?
    if($msg)
    {
        echo nl2br($msg);
    }
    else
    {
        echo "Successful!";
    }
    ?>
    </P>
    <BR>
    <P>
    <a href="javascript:history.go(-1)">&lt;&lt; back</a></FONT>
    </P>
    </TD></TR></TABLE></P>
    <?
    include_once("inc/footer.inc.php");
}

$zoneresult = $db->getCol("select id from zones");

foreach($zoneresult as $zr)
{
	// Look up the domain_id
	$zonename = $db->getOne("select name from zones where zones.id=" . $zr);
        // do a count, if the record already exists in the domains table, dont insert it
	$dom_count = $db->query("select id from domains where name='$zonename'");
        if($dom_count->numRows() == 0)
        {
                $dom_id = $db->nextID("domains");
        	$db->query("INSERT INTO domains(id, name, type) VALUES('$dom_id', '$zonename', 'NATIVE')");
	        $db->query("UPDATE records SET domain_id=$dom_id where domain_id=$zr");
        	$db->query("UPDATE zones SET name=$dom_id where id=$zr");
        }
        else
        {
		$row = $dom_count->fetchRow();
		
                $db->query('UPDATE records SET domain_id=' . $row["id"] . " where domain_id=$zr");
                $db->query('UPDATE zones SET name=' . $row['id'] . " where id=$zr");
        }
}

if(!DB::isError($zoneresult))
{
	$db->query("ALTER TABLE zones CHANGE name domain_id INT(11) NOT NULL");

	message("Done updating your tables, enjoy your new PowerAdmin! 
	Please remove this file from your webdirectory!");
}
else
{
	error("You seem to have no information in the table zones");
}
?>