<?php /** * This file is separated out so that it can be run separately for DEB package installation. * When installing a DEB package, Postgresql may not be installed yet and thus the database * cannot be created. So this script is run after all DEB packages have been installed. */ require_once(__DIR__.'/AirtimeIni.php'); require_once(__DIR__.'/AirtimeInstall.php'); require_once(__DIR__.'/airtime-constants.php'); require_once(AirtimeInstall::GetAirtimeSrcDir().'/application/configs/conf.php'); //Propel classes. set_include_path(AirtimeInstall::GetAirtimeSrcDir().'/application/models' . PATH_SEPARATOR . get_include_path()); $CC_CONFIG = Config::getConfig(); require_once 'vendor/propel/propel1/runtime/lib/Propel.php'; Propel::init(AirtimeInstall::GetAirtimeSrcDir()."/application/configs/airtime-conf-production.php"); //use this class to set new values in the cache as well. require_once(AirtimeInstall::GetAirtimeSrcDir().'/application/common/Database.php'); require_once(AirtimeInstall::GetAirtimeSrcDir().'/application/models/Preference.php'); echo PHP_EOL."* Database Installation".PHP_EOL; AirtimeInstall::CreateDatabaseUser(); $databaseExisted = AirtimeInstall::CreateDatabase(); AirtimeInstall::DbConnect(true); AirtimeInstall::InstallPostgresScriptingLanguage(); //Load Database parameters $dbuser = $CC_CONFIG['dsn']['username']; $dbpasswd = $CC_CONFIG['dsn']['password']; $dbname = $CC_CONFIG['dsn']['database']; $dbhost = $CC_CONFIG['dsn']['hostspec']; if (isset($argv[1]) && $argv[1] == 'y') { AirtimeInstall::CreateDatabaseTables($dbuser, $dbpasswd, $dbname, $dbhost); } else if ($databaseExisted) { //Database already exists. Ask the user how they want to //proceed. Warn them that creating the database tables again //will cause them to lose their old ones. $userAnswer = "x"; while (!in_array($userAnswer, array("y", "Y", "n", "N", ""))) { echo PHP_EOL."Database already exists. Do you want to delete all tables and recreate? (y/N)"; $userAnswer = trim(fgets(STDIN)); } if (in_array($userAnswer, array("y", "Y"))) { AirtimeInstall::CreateDatabaseTables($dbuser, $dbpasswd, $dbname, $dbhost); } } else { //Database was just created, meaning the tables do not //exist. Let's create them. AirtimeInstall::CreateDatabaseTables($dbuser, $dbpasswd, $dbname, $dbhost); } echo " * Setting Airtime version".PHP_EOL; AirtimeInstall::SetAirtimeVersion(AIRTIME_VERSION); if (AirtimeInstall::$databaseTablesCreated) { // set up some keys in DB AirtimeInstall::SetUniqueId(); $ini = parse_ini_file(__DIR__."/airtime-install.ini"); $stor_dir = realpath($ini["storage_dir"])."/"; echo " * Inserting stor directory location $stor_dir into music_dirs table".PHP_EOL; $con = Propel::getConnection(); $sql = "INSERT INTO cc_music_dirs (directory, type) VALUES ('$stor_dir', 'stor')"; try { $con->exec($sql); } catch (Exception $e) { echo " * Failed inserting {$stor_dir} in cc_music_dirs".PHP_EOL; echo " * Message {$e->getMessage()}".PHP_EOL; exit(1); } }