<?php

include_once 'install/DatabaseInstaller.class.php';
include_once 'install-funcs.inc.php';
// Read in DSN
$CONFIG_FILE = '../conf/config.ini';
$CONFIG = parse_ini_file($CONFIG_FILE);
$defaultScriptDir = getcwd() . '/sql/pgsql/';
// Remove the database
$answer = configure('DO_SCHEMA_LOAD', 'Y', "\nWould you like to remove the data for this application");
if (!responseIsAffirmative($answer)) {
    print "Normal exit.\n";
    exit(0);
}
$answer = configure('CONFIRM_DO_SCHEMA_LOAD', 'N', "\nRemoving the data removes any existing database, schema, users, and/or data.\n" . 'Are you sure you wish to continue');
if (!responseIsAffirmative($answer)) {
    print "\nNormal exit.\n";
    exit(0);
}
// Setup root DSN
$username = configure('DB_ROOT_USER', 'root', "\nDatabase adminitrator user");
$password = configure('DB_ROOT_PASS', '', "Database administrator password", true);
$installer = DatabaseInstaller::getInstaller($CONFIG['DB_DSN'], $username, $password);
// Drop tables
$installer->runScript($defaultScriptDir . 'drop_tables.sql');
// Disable postgis
$installer->disablePostgis();
// Drop user
$installer->dropUser(array('SELECT'), $CONFIG['DB_USER']);
// Drop database
$installer->dropDatabase();
// Find schema load file
$schemaScript = configure('SCHEMA_SCRIPT', $defaultScriptDir . DIRECTORY_SEPARATOR . 'create_tables.sql', 'SQL script containing schema definition');
if (!file_exists($schemaScript)) {
    print "The indicated script does not exist. Please try again.\n";
    exit(-1);
}
$dropSchemaScript = configure('SCHEMA_SCRIPT', str_replace('create_tables.sql', 'drop_tables.sql', $schemaScript), 'SQL script containing schema definition');
if (!file_exists($dropSchemaScript)) {
    print "The indicated script does not exist. Please try again.\n";
    exit(-1);
}
// ----------------------------------------------------------------------
// Create Database
// ----------------------------------------------------------------------
include_once 'install/DatabaseInstaller.class.php';
$dbInstaller = DatabaseInstaller::getInstaller($DB_DSN, $username, $password);
// make sure database exists
if (!$dbInstaller->databaseExists()) {
    $dbInstaller->createDatabase();
}
// ----------------------------------------------------------------------
// Create Schema
// ----------------------------------------------------------------------
// run drop tables
$dbInstaller->runScript($dropSchemaScript);
// create schema
$dbInstaller->runScript($schemaScript);
// create read/write user for save
$dbInstaller->createUser(array('SELECT', 'INSERT', 'UPDATE', 'DELETE'), $CONFIG['DB_USER'], $CONFIG['DB_PASS']);
print "Schema loaded successfully!\n";
// ----------------------------------------------------------------------