<?php

// Service
$db_nel = 4;
$db_nel_tool = 2;

// Support
$db_nel_ams = 2;
$db_nel_ams_lib = 7;

// Domain
$db_ring_domain = 1;


function set_db_version($continue_r, $name, $version) {
	$continue = $continue_r;

	if ($continue) {
		if (file_put_contents("db_version_" . $name, (string)$version)) {
		} else {
			printalert("danger", "Failed to set database version");
			$continue = false;
		}
	}

	return $continue;
}

function get_db_version($name) {
	if (!file_exists("db_version_" . $name)) {
		return 0;
	}
	return (int)file_get_contents("db_version_" . $name);
}

function connect_database($continue, $name) {
	$con = null;

	global $cfg;
	if ($continue) {
		$con = mysqli_connect(
			$cfg['db'][$name]['host'],
			$cfg['db'][$name]['user'],
			$cfg['db'][$name]['pass'],
			$cfg['db'][$name]['name']);
		if (mysqli_connect_errno()) {
			printalert("danger", "Failed to connect to the <em>" . $name . "</em> SQL server: " . mysqli_connect_error());
			$con = null;
		} else {
			printalert("success", "Connected to the <em>" . $name . "</em> SQL server");
		}
	}

	return $con;
}

function disconnect_database($con, $name) {
	if ($con) {
		mysqli_close($con);
		printalert("info", "Disconnected from the <em>" . $name . "</em> SQL server");
	}
}

function upgrade_service_databases($continue_r) {
	$continue = $continue_r;

	$con = null;
	$con = connect_database($continue, "shard");
	$continue = ($con != null);
	global $db_nel;
	for ($i = 1; $i <= $db_nel; $i++) {
		if ($continue && get_db_version("shard") < $i) {
			$continue = update_database_structure($continue, $con, "nel_" . str_pad($i, 5, "0", STR_PAD_LEFT) . ".sql");
			$continue = set_db_version($continue, "shard", $i);
		}
	}
	disconnect_database($con, "shard");

	$con = null;
	$con = connect_database($continue, "tool");
	$continue = ($con != null);
	global $db_nel_tool;
	for ($i = 1; $i <= $db_nel_tool; $i++) {
		if ($continue && get_db_version("tool") < $i) {
			$continue = update_database_structure($continue, $con, "nel_tool_" . str_pad($i, 5, "0", STR_PAD_LEFT) . ".sql");
			$continue = set_db_version($continue, "tool", $i);
		}
	}
	disconnect_database($con, "tool");

	return $continue;
}

function upgrade_support_databases($continue_r) {
	$continue = $continue_r;

	$con = null;
	$con = connect_database($continue, "web");
	$continue = ($con != null);
	global $db_nel_ams;
	for ($i = 1; $i <= $db_nel_ams; $i++) {
		if ($continue && get_db_version("web") < $i) {
			$continue = update_database_structure($continue, $con, "nel_ams_" . str_pad($i, 5, "0", STR_PAD_LEFT) . ".sql");
			$continue = set_db_version($continue, "web", $i);
		}
	}
	disconnect_database($con, "web");

	$con = null;
	$con = connect_database($continue, "lib");
	$continue = ($con != null);
	global $db_nel_ams_lib;
	for ($i = 1; $i <= $db_nel_ams_lib; $i++) {
		if ($continue && get_db_version("lib") < $i) {
			$continue = update_database_structure($continue, $con, "nel_ams_lib_" . str_pad($i, 5, "0", STR_PAD_LEFT) . ".sql");
			$continue = set_db_version($continue, "lib", $i);
		}
	}
	disconnect_database($con, "lib");

	return $continue;
}

function upgrade_domain_databases($continue_r) {
	$continue = $continue_r;

	$con = null;
	$con = connect_database($continue, "ring");
	$continue = ($con != null);
	global $db_ring_domain;
	for ($i = 1; $i <= $db_ring_domain; $i++) {
		if ($continue && get_db_version("ring") < $i) {
			$continue = update_database_structure($continue, $con, "ring_domain_" . str_pad($i, 5, "0", STR_PAD_LEFT) . ".sql");
			$continue = set_db_version($continue, "ring", $i);
		}
	}
	disconnect_database($con, "ring");

	return $continue;
}

?>