<?php
/*
Copyright Intermesh 2003
Author: Merijn Schering <mschering@intermesh.nl>
Version: 1.0 Release date: 28 Februari 2005

This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2 of the License, or (at your
option) any later version.
*/
require_once('../Group-Office.php');

$CONFIG_FILE = $GO_CONFIG->get_config_file();

require_once('install.inc');

if(!isset($_REQUEST['config_created']))
{
	save_config($GO_CONFIG);
	header('Location: '.$_SERVER['PHP_SELF'].'?config_created=true');
	exit();
}

$db = new db();
$db->Halt_On_Error = 'no';

$old_version = intval(str_replace('.', '', $GO_CONFIG->get_setting('version')));
$new_version = intval(str_replace('.', '', $GO_CONFIG->version));

require_once($GO_CONFIG->root_path.'lib/updates.inc');

if (!isset($updates[$old_version]))
{
	//invalid version, abort upgrade
	echo 'The version number '.$old_version.' is invalid<br />';
	exit();
}else
{
	for ($cur_ver=$old_version;$cur_ver<$new_version;$cur_ver++)
	{
		if (isset($updates[$cur_ver]))
		{
			while($query = array_shift($updates[$cur_ver]))
			{
				@$db->query($query);
			}
		}

		if (file_exists($GO_CONFIG->root_path.'lib/scripts/'.$cur_ver.'.inc'))
		{
			echo 'Running update script for version '.$cur_ver.'...<br />';
			require_once($GO_CONFIG->root_path.'lib/scripts/'.$cur_ver.'.inc');
		}
	}
	$db_version = $GO_CONFIG->version;
	$_SESSION['completed']['database_structure'] = true;
	//store the version number for future upgrades

	$GO_CONFIG->save_setting('version', $GO_CONFIG->version);

	//Upgrade modules
	$GO_MODULES->get_modules();
	while($GO_MODULES->next_record())
	{
		$module_info = $GO_MODULES->get_module_info($GO_MODULES->f('id'));

		if($module_info)
		{
			$installed_version = intval(str_replace('.', '', $GO_MODULES->f('version')));						
			$new_version = intval(str_replace('.', '',$module_info['version']));

			if($installed_version < $new_version)
			{						
				$update_file = $GO_CONFIG->root_path.'modules/'.$GO_MODULES->f('id').'/sql/'.$GO_MODULES->f('id').'.updates.inc';
				if(file_exists($update_file))
				{
					require_once($update_file);
					for ($cur_ver=$installed_version;$cur_ver<$new_version;$cur_ver++)
					{
						if (isset($updates[$cur_ver]))
						{
							while($query = array_shift($updates[$cur_ver]))
							{
								@$db->query($query);
							}
						}
					}

				}
				for ($cur_ver=$installed_version;$cur_ver<$new_version;$cur_ver++)
				{
					if (file_exists($GO_CONFIG->root_path.'modules/'.$GO_MODULES->f('id').'/sql/'.$cur_ver.'.inc'))
					{						
						echo 'Running update script for module \''.$GO_MODULES->f('id').'\' version '.$cur_ver.'...<br />';
						require_once($GO_CONFIG->root_path.'modules/'.$GO_MODULES->f('id').'/sql/'.$cur_ver.'.inc');
					}					 			    		
				}
			}
			$sql = "UPDATE modules SET version='".$module_info['version']."' WHERE id='".$GO_MODULES->f('id')."'";	    	
			$db->query($sql);
		}
	}
	install_required_modules();
	echo 'Database updated<br />';
}
?>