2006-10-19 16:55:07 +02:00
|
|
|
<?php
|
|
|
|
/**
|
2011-01-05 23:44:23 +01:00
|
|
|
* @package Airtime
|
2010-07-24 05:03:53 +02:00
|
|
|
* @copyright 2010 Sourcefabric O.P.S.
|
2006-12-16 07:36:22 +01:00
|
|
|
* @license http://www.gnu.org/licenses/gpl.txt
|
2006-10-19 16:55:07 +02:00
|
|
|
*/
|
|
|
|
|
2011-06-20 23:24:12 +02:00
|
|
|
require_once(dirname(__FILE__).'/AirtimeIni.php');
|
|
|
|
require_once(dirname(__FILE__).'/AirtimeInstall.php');
|
2011-03-30 00:32:53 +02:00
|
|
|
// Need to check that we are superuser before running this.
|
2011-04-12 19:59:08 +02:00
|
|
|
AirtimeInstall::ExitIfNotRoot();
|
2006-10-19 16:55:07 +02:00
|
|
|
|
2011-04-14 21:04:44 +02:00
|
|
|
if (!file_exists(AirtimeIni::CONF_FILE_AIRTIME)) {
|
|
|
|
echo PHP_EOL."Airtime config file '".AirtimeIni::CONF_FILE_AIRTIME."' does not exist.".PHP_EOL;
|
2011-04-07 21:47:31 +02:00
|
|
|
echo "Most likely this means that Airtime is not installed, so there is nothing to do.".PHP_EOL.PHP_EOL;
|
|
|
|
exit();
|
|
|
|
}
|
2011-09-23 22:26:19 +02:00
|
|
|
require_once(__DIR__.'/airtime-constants.php');
|
2011-04-15 00:55:04 +02:00
|
|
|
require_once(AirtimeInstall::GetAirtimeSrcDir().'/application/configs/conf.php');
|
2013-01-14 22:16:14 +01:00
|
|
|
$CC_CONFIG = Config::getConfig();
|
2006-10-19 16:55:07 +02:00
|
|
|
|
2012-04-20 22:10:19 +02:00
|
|
|
|
|
|
|
require_once 'propel/runtime/lib/Propel.php';
|
|
|
|
Propel::init(AirtimeInstall::GetAirtimeSrcDir()."/application/configs/airtime-conf-production.php");
|
|
|
|
|
2011-04-15 20:45:10 +02:00
|
|
|
echo PHP_EOL;
|
|
|
|
echo "* Uninstalling Airtime ".AIRTIME_VERSION.PHP_EOL;
|
2011-04-15 00:55:04 +02:00
|
|
|
|
2010-10-11 17:22:04 +02:00
|
|
|
//------------------------------------------------------------------------
|
|
|
|
// Delete the database
|
2011-03-16 18:21:40 +01:00
|
|
|
// Note: Do not put a call to AirtimeInstall::DbConnect()
|
2012-04-02 05:39:15 +02:00
|
|
|
// before this function, it will create a connection to the database
|
|
|
|
// and you wont be able to delete it.
|
2010-10-11 17:22:04 +02:00
|
|
|
//------------------------------------------------------------------------
|
2011-05-12 21:05:48 +02:00
|
|
|
|
2011-12-09 18:13:40 +01:00
|
|
|
//close connection for any process id using airtime database since we are about to drop the database.
|
|
|
|
$sql = "SELECT pg_cancel_backend(procpid) FROM pg_stat_activity WHERE datname = 'airtime';";
|
|
|
|
$command = "echo \"$sql\" | su postgres -c psql";
|
|
|
|
@exec($command, $output);
|
|
|
|
|
2013-01-14 22:16:14 +01:00
|
|
|
$CC_CONFIG = Config::getConfig();
|
2011-12-09 18:13:40 +01:00
|
|
|
echo " * Dropping the database '".$CC_CONFIG["dsn"]["database"]."'...".PHP_EOL;
|
|
|
|
|
|
|
|
//dropdb returns 1 if other sessions are using the database, otherwise returns 0
|
|
|
|
$command = "su postgres -c \"dropdb ".$CC_CONFIG["dsn"]["database"]."\"";
|
2011-05-12 22:36:01 +02:00
|
|
|
|
2010-10-18 12:12:23 +02:00
|
|
|
@exec($command, $output, $dbDeleteFailed);
|
2010-10-11 17:22:04 +02:00
|
|
|
|
2010-10-18 12:12:23 +02:00
|
|
|
//------------------------------------------------------------------------
|
|
|
|
// Delete DB tables
|
|
|
|
// We do this if dropping the database fails above.
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
if ($dbDeleteFailed) {
|
2012-04-02 05:39:15 +02:00
|
|
|
$connected = AirtimeInstall::DbConnect(false);
|
2011-03-16 18:21:40 +01:00
|
|
|
|
2012-04-02 05:39:15 +02:00
|
|
|
if ($connected) {
|
2013-05-06 23:12:48 +02:00
|
|
|
echo " * Couldn't delete the database, so deleting all the DB tables...".PHP_EOL;
|
2012-04-02 05:39:15 +02:00
|
|
|
$con = Propel::getConnection();
|
2011-03-16 18:21:40 +01:00
|
|
|
$sql = "select * from pg_tables where tableowner = 'airtime'";
|
2012-04-02 05:39:15 +02:00
|
|
|
try {
|
|
|
|
$rows = $con->query($sql)->fetchAll();
|
|
|
|
} catch (Exception $e) {
|
2011-03-16 18:21:40 +01:00
|
|
|
$rows = array();
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach ($rows as $row) {
|
|
|
|
$tablename = $row["tablename"];
|
|
|
|
echo " * Removing database table $tablename...";
|
|
|
|
|
2013-05-06 23:12:48 +02:00
|
|
|
$sql = "DROP TABLE $tablename CASCADE";
|
|
|
|
AirtimeInstall::InstallQuery($sql, false);
|
|
|
|
AirtimeInstall::DropSequence($tablename."_id");
|
|
|
|
echo "done.".PHP_EOL;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
echo " * Deleting database sequences...".PHP_EOL;
|
|
|
|
$sql = "SELECT c.relname FROM pg_class c WHERE c.relkind = 'S';";
|
|
|
|
try {
|
|
|
|
$rows = $con->query($sql)->fetchAll();
|
|
|
|
} catch (Exception $e) {
|
|
|
|
$rows = array();
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach ($rows as $row) {
|
|
|
|
$sequence = $row["relname"];
|
|
|
|
echo " * Removing database sequence $sequence...";
|
|
|
|
|
|
|
|
$sql = "DROP SEQUENCE $sequence CASCADE";
|
|
|
|
AirtimeInstall::InstallQuery($sql, false);
|
2011-03-16 18:21:40 +01:00
|
|
|
echo "done.".PHP_EOL;
|
|
|
|
}
|
|
|
|
}
|
2010-10-18 12:12:23 +02:00
|
|
|
}
|
2010-09-10 20:37:02 +02:00
|
|
|
|
2010-10-11 17:22:04 +02:00
|
|
|
//------------------------------------------------------------------------
|
|
|
|
// Delete the user
|
|
|
|
//------------------------------------------------------------------------
|
2011-03-09 06:44:51 +01:00
|
|
|
echo " * Deleting database user '{$CC_CONFIG['dsn']['username']}'...".PHP_EOL;
|
2011-06-20 23:38:18 +02:00
|
|
|
$command = "echo \"DROP USER IF EXISTS {$CC_CONFIG['dsn']['username']}\" | su postgres -c psql >/dev/null 2>&1";
|
2010-10-11 17:22:04 +02:00
|
|
|
@exec($command, $output, $results);
|
|
|
|
if ($results == 0) {
|
2011-03-16 18:21:40 +01:00
|
|
|
echo " * User '{$CC_CONFIG['dsn']['username']}' deleted.".PHP_EOL;
|
2010-09-10 20:37:02 +02:00
|
|
|
} else {
|
2011-04-14 21:04:44 +02:00
|
|
|
echo " * Nothing to delete.".PHP_EOL;
|
2010-09-10 20:37:02 +02:00
|
|
|
}
|
|
|
|
|