forked from science-ation/science-ation
3904e2d9d8
db.update.$num.php, may contain 2 functions db_update_pre() and db_update_post() which are run before(pre) and after(post) the SQL file is applied. If the php script doesn't exist, the behaviour of the update script is unchanged.
97 lines
2.4 KiB
PHP
97 lines
2.4 KiB
PHP
<?
|
|
if(!function_exists("system")) {
|
|
echo "DB Update requires php's system() function to be available\n";
|
|
exit;
|
|
}
|
|
|
|
//include the config.inc.php
|
|
//so we have the db connection info
|
|
require("../data/config.inc.php");
|
|
echo "<pre>\n";
|
|
if(file_exists("db.code.version.txt"))
|
|
{
|
|
$dbcodeversion_file=file("db.code.version.txt");
|
|
$dbcodeversion=trim($dbcodeversion_file[0]);
|
|
}
|
|
else
|
|
{
|
|
echo "Couldnt load current db.code.version.txt\n";
|
|
exit;
|
|
}
|
|
|
|
|
|
mysql_connect($DBHOST,$DBUSER,$DBPASS);
|
|
mysql_select_db($DBNAME);
|
|
$q=mysql_query("SELECT val FROM config WHERE var='DBVERSION' AND year='0'");
|
|
$r=mysql_fetch_object($q);
|
|
$dbdbversion=$r->val;
|
|
if(!$dbdbversion)
|
|
{
|
|
echo "Couldnt get current db version. Is SFIAB properly installed?\n";
|
|
exit;
|
|
}
|
|
|
|
if($dbcodeversion && $dbdbversion)
|
|
{
|
|
//lets see if they match
|
|
if($dbcodeversion == $dbdbversion)
|
|
{
|
|
echo "DB and CODE are all up-to-date. Version: $dbdbversion\n";
|
|
exit;
|
|
}
|
|
else if($dbcodeversion<$dbdbversion)
|
|
{
|
|
echo "ERROR: dbcodeversion<dbdbversion ($dbcodeversion<$dbdbversion). This should not happen!";
|
|
exit;
|
|
|
|
}
|
|
else if($dbcodeversion>$dbdbversion)
|
|
{
|
|
echo "DB update requirements detected\n";
|
|
echo "Current DB Version: $dbdbversion\n";
|
|
echo "Current CODE Version: $dbcodeversion\n";
|
|
|
|
echo "Updating database from $dbdbversion to $dbcodeversion\n";
|
|
|
|
for($ver=$dbdbversion+1;$ver<=$dbcodeversion;$ver++)
|
|
{
|
|
if(file_exists("db.update.$ver.php"))
|
|
{
|
|
include("db.update.$ver.php");
|
|
}
|
|
if(is_callable("db_update_pre")) {
|
|
echo "db.update.$ver.php::db_update_pre() exists - running...\n";
|
|
call_user_func("db_update_pre");
|
|
echo "db.update.$ver.php::db_update_pre() done.\n";
|
|
}
|
|
if(file_exists("db.update.$ver.sql"))
|
|
{
|
|
echo "db.update.$ver.sql detected - running...\n";
|
|
readfile("db.update.$ver.sql");
|
|
echo "\n";
|
|
system("mysql --default-character-set=latin1 -h$DBHOST -u$DBUSER -p$DBPASS $DBNAME <db.update.$ver.sql");
|
|
}
|
|
else
|
|
{
|
|
echo "Version $ver SQL update file not found - skipping over\n";
|
|
}
|
|
if(is_callable("db_update_post")) {
|
|
echo "db.update.$ver.php::db_update_post() exists - running...\n";
|
|
call_user_func("db_update_post");
|
|
echo "db.update.$ver.php::db_update_post() done.\n";
|
|
}
|
|
}
|
|
echo "\nAll done - updating new DB version to $dbcodeversion\n";
|
|
mysql_query("UPDATE config SET val='$dbcodeversion' WHERE var='DBVERSION' AND year='0'");
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
echo "ERROR: dbcodeversion and dbdbversion are not defined\n";
|
|
}
|
|
|
|
echo "</pre>\n";
|
|
|
|
?>
|