Additional parameters in provisioning when creating stations from dashboard

This commit is contained in:
Duncan Sommerville 2015-03-03 15:10:10 -05:00
parent ccb4b1552e
commit 52813045a6
2 changed files with 23 additions and 6 deletions

View file

@ -10,6 +10,7 @@ class ProvisioningHelper
// Parameter values // Parameter values
private $dbuser, $dbpass, $dbname, $dbhost, $dbowner, $apikey; private $dbuser, $dbpass, $dbname, $dbhost, $dbowner, $apikey;
private $instanceId; private $instanceId;
private $station_name, $description;
public function __construct($apikey) public function __construct($apikey)
{ {
@ -34,7 +35,7 @@ class ProvisioningHelper
try { try {
$this->parsePostParams(); $this->parsePostParams();
//For security, the Airtime Pro provisioning system creates the database for the user. //For security, the Airtime Pro provisioning system creates the database for the user.
$this->setNewDatabaseConnection(); $this->setNewDatabaseConnection();
@ -58,6 +59,7 @@ class ProvisioningHelper
$this->createDatabaseTables(); $this->createDatabaseTables();
$this->initializeMusicDirsTable($this->instanceId); $this->initializeMusicDirsTable($this->instanceId);
$this->initializePrefs();
} catch (Exception $e) { } catch (Exception $e) {
http_response_code(400); http_response_code(400);
Logging::error($e->getMessage() Logging::error($e->getMessage()
@ -102,6 +104,9 @@ class ProvisioningHelper
$this->dbhost = $_POST['dbhost']; $this->dbhost = $_POST['dbhost'];
$this->dbowner = $_POST['dbowner']; $this->dbowner = $_POST['dbowner'];
$this->instanceId = $_POST['instanceid']; $this->instanceId = $_POST['instanceid'];
$this->station_name = $_POST['station_name'];
$this->description = $_POST['description'];
} }
/** /**
@ -111,9 +116,9 @@ class ProvisioningHelper
private function setNewDatabaseConnection() private function setNewDatabaseConnection()
{ {
self::$dbh = new PDO("pgsql:host=" . $this->dbhost self::$dbh = new PDO("pgsql:host=" . $this->dbhost
. ";dbname=" . $this->dbname . ";dbname=" . $this->dbname
. ";port=5432" . ";user=" . $this->dbuser . ";port=5432" . ";user=" . $this->dbuser
. ";password=" . $this->dbpass); . ";password=" . $this->dbpass);
//Turn on PDO exceptions because they're off by default. //Turn on PDO exceptions because they're off by default.
//self::$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //self::$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$err = self::$dbh->errorInfo(); $err = self::$dbh->errorInfo();
@ -130,8 +135,8 @@ class ProvisioningHelper
{ {
Logging::info("Creating database..."); Logging::info("Creating database...");
$statement = self::$dbh->prepare("CREATE DATABASE " . pg_escape_string($this->dbname) $statement = self::$dbh->prepare("CREATE DATABASE " . pg_escape_string($this->dbname)
. " WITH ENCODING 'UTF8' TEMPLATE template0" . " WITH ENCODING 'UTF8' TEMPLATE template0"
. " OWNER " . pg_escape_string($this->dbowner)); . " OWNER " . pg_escape_string($this->dbowner));
if (!$statement->execute()) { if (!$statement->execute()) {
throw new Exception("ERROR: Failed to create Airtime database"); throw new Exception("ERROR: Failed to create Airtime database");
} }
@ -182,5 +187,12 @@ class ProvisioningHelper
$musicDir->save(); $musicDir->save();
} }
/**
* Initialize preference values passed from the dashboard (if any exist)
*/
private function initializePrefs() {
Application_Model_Preference::SetStationName($this->station_name);
Application_Model_Preference::SetStationDescription($this->description);
}
} }

View file

@ -326,6 +326,11 @@ class Application_Model_Preference
return self::getValue("station_name"); return self::getValue("station_name");
} }
public static function SetStationName($station_name)
{
self::setValue("station_name", $station_name);
}
public static function SetAutoUploadRecordedShowToSoundcloud($upload) public static function SetAutoUploadRecordedShowToSoundcloud($upload)
{ {
self::setValue("soundcloud_auto_upload_recorded_show", $upload); self::setValue("soundcloud_auto_upload_recorded_show", $upload);