diff --git a/airtime_mvc/application/common/Database.php b/airtime_mvc/application/common/Database.php index 2c61bc589..bb9557474 100644 --- a/airtime_mvc/application/common/Database.php +++ b/airtime_mvc/application/common/Database.php @@ -2,9 +2,11 @@ class Application_Common_Database { public static function prepareAndExecute($sql, array $paramValueMap, - $type='all', $fetchType=PDO::FETCH_ASSOC) + $type='all', $fetchType=PDO::FETCH_ASSOC, $con=null) { - $con = Propel::getConnection(); + if (is_null($con)) { + $con = Propel::getConnection(); + } $stmt = $con->prepare($sql); foreach ($paramValueMap as $param => $v) { $stmt->bindValue($param, $v); diff --git a/airtime_mvc/application/models/Block.php b/airtime_mvc/application/models/Block.php index 931445d2d..1a068fd08 100644 --- a/airtime_mvc/application/models/Block.php +++ b/airtime_mvc/application/models/Block.php @@ -33,6 +33,7 @@ class Application_Model_Block implements Application_Model_LibraryEditable "cueout" => "00:00:00", "fadein" => "0.0", "fadeout" => "0.0", + "crossfadeDuration" => 0 ); //using propel's phpNames. @@ -101,6 +102,7 @@ class Application_Model_Block implements Application_Model_LibraryEditable $this->blockItem["fadein"] = Application_Model_Preference::GetDefaultFadeIn(); $this->blockItem["fadeout"] = Application_Model_Preference::GetDefaultFadeOut(); + $this->blockItem["crossfadeDuration"] = Application_Model_Preference::GetDefaultCrossfadeDuration(); $this->con = isset($con) ? $con : Propel::getConnection(CcBlockPeer::DATABASE_NAME); $this->id = $this->block->getDbId(); @@ -390,6 +392,7 @@ SQL; $row->setDbCueout($info["cueout"]); $row->setDbFadein(Application_Common_DateHelper::secondsToPlaylistTime($info["fadein"])); $row->setDbFadeout(Application_Common_DateHelper::secondsToPlaylistTime($info["fadeout"])); + $row->setDbTrackOffset($info["crossfadeDuration"]); $row->save($this->con); // above save result update on cc_block table on length column. // but $this->block doesn't get updated automatically diff --git a/airtime_mvc/application/models/Preference.php b/airtime_mvc/application/models/Preference.php index e96d4e888..6cba9814c 100644 --- a/airtime_mvc/application/models/Preference.php +++ b/airtime_mvc/application/models/Preference.php @@ -11,6 +11,9 @@ class Application_Model_Preference private static function setValue($key, $value, $isUserValue = false, $userId = null) { try { + $con = Propel::getConnection(CcPrefPeer::DATABASE_NAME); + $con->beginTransaction(); + //called from a daemon process if (!class_exists("Zend_Auth", false) || !Zend_Auth::getInstance()->hasIdentity()) { $id = NULL; @@ -35,7 +38,11 @@ class Application_Model_Preference $paramMap[':id'] = $userId; } - $result = Application_Common_Database::prepareAndExecute($sql, $paramMap, 'column'); + $result = Application_Common_Database::prepareAndExecute($sql, + $paramMap, + 'column', + PDO::FETCH_ASSOC, + $con); $paramMap = array(); if ($result > 1) { @@ -80,9 +87,15 @@ class Application_Model_Preference $paramMap[':key'] = $key; $paramMap[':value'] = $value; - Application_Common_Database::prepareAndExecute($sql, $paramMap, 'execute'); + Application_Common_Database::prepareAndExecute($sql, + $paramMap, + 'execute', + PDO::FETCH_ASSOC, + $con); + $con->commit(); } catch (Exception $e) { + $con->rollback(); header('HTTP/1.0 503 Service Unavailable'); Logging::info("Database error: ".$e->getMessage()); exit; diff --git a/airtime_mvc/public/js/waveformplaylist/playout.js b/airtime_mvc/public/js/waveformplaylist/playout.js index 8a30098b2..a2a156b37 100644 --- a/airtime_mvc/public/js/waveformplaylist/playout.js +++ b/airtime_mvc/public/js/waveformplaylist/playout.js @@ -82,7 +82,9 @@ AudioPlayout.prototype.loadData = function (audioData, cb) { that.buffer = buffer; cb(buffer); }, - Error + function(err) { + console.log("err(decodeAudioData): "+err); + } ); }; diff --git a/install_minimal/include/AirtimeIni.php b/install_minimal/include/AirtimeIni.php index 8d631f8e4..c774c20a2 100644 --- a/install_minimal/include/AirtimeIni.php +++ b/install_minimal/include/AirtimeIni.php @@ -214,6 +214,57 @@ class AirtimeIni fclose($fp); } + //stupid hack found on http://stackoverflow.com/a/1268642/276949 + //with some modifications: 1) Spaces are inserted in between sections and + //2) numeric values are not quoted. + public static function write_ini_file($assoc_arr, $path, $has_sections = false) { + $content = ""; + + if ($has_sections) { + $first_line = true; + foreach ($assoc_arr as $key=>$elem) { + if ($first_line) { + $content .= "[".$key."]\n"; + $first_line = false; + } else { + $content .= "\n[".$key."]\n"; + } + foreach ($elem as $key2=>$elem2) { + if(is_array($elem2)) + { + for($i=0;$i$elem) { + if(is_array($elem)) + { + for($i=0;$i