diff --git a/airtime_mvc/application/common/DateHelper.php b/airtime_mvc/application/common/DateHelper.php index eb32c0393..c13543d8e 100644 --- a/airtime_mvc/application/common/DateHelper.php +++ b/airtime_mvc/application/common/DateHelper.php @@ -366,56 +366,56 @@ class Application_Common_DateHelper return $retVal; } - /** - * This function is used for calculations! Don't modify for display purposes! - * - * Convert playlist time value to float seconds - * - * @param string $plt - * playlist interval value (HH:mm:ss.dddddd) - * @return int - * seconds - */ - public static function playlistTimeToSeconds($plt) - { - $arr = preg_split('/:/', $plt); - if (isset($arr[2])) { - return (intval($arr[0])*60 + intval($arr[1]))*60 + floatval($arr[2]); - } - if (isset($arr[1])) { - return intval($arr[0])*60 + floatval($arr[1]); - } - - return floatval($arr[0]); - } - - - /** - * This function is used for calculations! Don't modify for display purposes! - * - * Convert float seconds value to playlist time format - * - * @param float $seconds - * @return string - * interval in playlist time format (HH:mm:ss.d) - */ - public static function secondsToPlaylistTime($p_seconds) - { - $info = explode('.', $p_seconds); - $seconds = $info[0]; - if (!isset($info[1])) { - $milliStr = 0; - } else { - $milliStr = $info[1]; - } - $hours = floor($seconds / 3600); - $seconds -= $hours * 3600; - $minutes = floor($seconds / 60); - $seconds -= $minutes * 60; - - $res = sprintf("%02d:%02d:%02d.%s", $hours, $minutes, $seconds, $milliStr); - - return $res; + /** + * This function is used for calculations! Don't modify for display purposes! + * + * Convert playlist time value to float seconds + * + * @param string $plt + * playlist interval value (HH:mm:ss.dddddd) + * @return int + * seconds + */ + public static function playlistTimeToSeconds($plt) + { + $arr = preg_split('/:/', $plt); + if (isset($arr[2])) { + return (intval($arr[0])*60 + intval($arr[1]))*60 + floatval($arr[2]); + } + if (isset($arr[1])) { + return intval($arr[0])*60 + floatval($arr[1]); + } + + return floatval($arr[0]); + } + + + /** + * This function is used for calculations! Don't modify for display purposes! + * + * Convert float seconds value to playlist time format + * + * @param float $seconds + * @return string + * interval in playlist time format (HH:mm:ss.d) + */ + public static function secondsToPlaylistTime($p_seconds) + { + $info = explode('.', $p_seconds); + $seconds = $info[0]; + if (!isset($info[1])) { + $milliStr = 0; + } else { + $milliStr = $info[1]; + } + $hours = floor($seconds / 3600); + $seconds -= $hours * 3600; + $minutes = floor($seconds / 60); + $seconds -= $minutes * 60; + + $res = sprintf("%02d:%02d:%02d.%s", $hours, $minutes, $seconds, $milliStr); + + return $res; } } diff --git a/airtime_mvc/application/controllers/ApiController.php b/airtime_mvc/application/controllers/ApiController.php index 033369802..1e3cee844 100644 --- a/airtime_mvc/application/controllers/ApiController.php +++ b/airtime_mvc/application/controllers/ApiController.php @@ -5,7 +5,12 @@ class ApiController extends Zend_Controller_Action public function init() { - $this->checkAuth(); + $ignoreAuth = array("live-info", "week-info"); + + $params = $this->getRequest()->getParams(); + if (!in_array($params['action'], $ignoreAuth)) { + $this->checkAuth(); + } /* Initialize action controller here */ $context = $this->_helper->getHelper('contextSwitch'); $context->addActionContext('version' , 'json') @@ -41,7 +46,6 @@ class ApiController extends Zend_Controller_Action public function checkAuth() { global $CC_CONFIG; - $api_key = $this->_getParam('api_key'); if (!in_array($api_key, $CC_CONFIG["apiKey"]) && @@ -298,7 +302,7 @@ class ApiController extends Zend_Controller_Action $result = array(); for ($i=0; $i<7; $i++) { $utcDayEnd = Application_Common_DateHelper::GetDayEndTimestamp($utcDayStart); - $shows = Application_Model_Show::getNextShows($utcDayStart, "0", $utcDayEnd); + $shows = Application_Model_Show::getNextShows($utcDayStart, "ALL", $utcDayEnd); $utcDayStart = $utcDayEnd; Application_Model_Show::convertToLocalTimeZone($shows, @@ -307,9 +311,10 @@ class ApiController extends Zend_Controller_Action $result[$dow[$i]] = $shows; } - $result['AIRTIME_API_VERSION'] = AIRTIME_API_VERSION; //used by caller to determine if the airtime they are running or widgets in use is out of date. + + //used by caller to determine if the airtime they are running or widgets in use is out of date. + $result['AIRTIME_API_VERSION'] = AIRTIME_API_VERSION; header("Content-type: text/javascript"); - Logging::info($result); // If a callback is not given, then just provide the raw JSON. echo isset($_GET['callback']) ? $_GET['callback'].'('.json_encode($result).')' : json_encode($result); } else { @@ -415,8 +420,9 @@ class ApiController extends Zend_Controller_Action $this->uploadRecordedActionParam($show_instance_id, $file_id); } - // The paramterized version of the uploadRecordedAction controller. We want this controller's action - // to be invokable from other controllers instead being of only through http + // The paramterized version of the uploadRecordedAction controller. + // We want this controller's action to be invokable from other + // controllers instead being of only through http public function uploadRecordedActionParam($show_instance_id, $file_id) { $showCanceled = false; @@ -430,10 +436,10 @@ class ApiController extends Zend_Controller_Action } catch (Exception $e) { //we've reached here probably because the show was - //cancelled, and therefore the show instance does not - //exist anymore (ShowInstance constructor threw this error). - //We've done all we can do (upload the file and put it in - //the library), now lets just return. + //cancelled, and therefore the show instance does not exist + //anymore (ShowInstance constructor threw this error). We've + //done all we can do (upload the file and put it in the + //library), now lets just return. $showCanceled = true; } @@ -444,7 +450,7 @@ class ApiController extends Zend_Controller_Action if (!$showCanceled && Application_Model_Preference::GetAutoUploadRecordedShowToSoundcloud()) { $id = $file->getId(); - $res = exec("/usr/lib/airtime/utils/soundcloud-uploader $id > /dev/null &"); + Application_Model_Soundcloud::uploadSoundcloud($id); } } diff --git a/airtime_mvc/application/controllers/LibraryController.php b/airtime_mvc/application/controllers/LibraryController.php index fa6a92e68..2d8f06b71 100644 --- a/airtime_mvc/application/controllers/LibraryController.php +++ b/airtime_mvc/application/controllers/LibraryController.php @@ -469,7 +469,7 @@ class LibraryController extends Zend_Controller_Action public function uploadFileSoundcloudAction() { $id = $this->_getParam('id'); - $res = exec("/usr/lib/airtime/utils/soundcloud-uploader $id > /dev/null &"); + Application_Model_Soundcloud::uploadSoundcloud($id); // we should die with ui info die(); } diff --git a/airtime_mvc/application/controllers/ScheduleController.php b/airtime_mvc/application/controllers/ScheduleController.php index f65ce1332..41e1b5125 100644 --- a/airtime_mvc/application/controllers/ScheduleController.php +++ b/airtime_mvc/application/controllers/ScheduleController.php @@ -217,7 +217,7 @@ class ScheduleController extends Zend_Controller_Action $file = $show_inst->getRecordedFile(); $id = $file->getId(); - $res = exec("/usr/lib/airtime/utils/soundcloud-uploader $id > /dev/null &"); + Application_Model_Soundcloud::uploadSoundcloud($id); // we should die with ui info die(); } diff --git a/airtime_mvc/application/models/Datatables.php b/airtime_mvc/application/models/Datatables.php index dc196b35a..c022f2533 100644 --- a/airtime_mvc/application/models/Datatables.php +++ b/airtime_mvc/application/models/Datatables.php @@ -77,8 +77,21 @@ class Application_Model_Datatables // map that maps dbname to searchTerm $dbname2searchTerm = array(); foreach ($current2dbname as $currentPos => $dbname) { - $dbname2searchTerm[$dbname] = - $orig2searchTerm[$librarySetting($currentPos)]; + $new_index = $librarySetting($currentPos); + // TODO : Fix this retarded hack later. Just a band aid for + // now at least we print some warnings so that we don't + // forget about this -- cc-4462 + if ( array_key_exists($new_index, $orig2searchTerm) ) { + $dbname2searchTerm[$dbname] = $orig2searchTerm[$new_index]; + } else { + Logging::warn("Trying to reorder to unknown index + printing as much debugging as possible..."); + $debug = array( + '$new_index' => $new_index, + '$currentPos' => $currentPos, + '$orig2searchTerm' => $orig2searchTerm); + Logging::warn($debug); + } } $where = array(); diff --git a/airtime_mvc/application/models/Preference.php b/airtime_mvc/application/models/Preference.php index c73426a2d..9984e49bc 100644 --- a/airtime_mvc/application/models/Preference.php +++ b/airtime_mvc/application/models/Preference.php @@ -1101,7 +1101,7 @@ class Application_Model_Preference } else { $ds = unserialize($v); return function ($x) use ($ds) { - if ( in_array($x, $ds['ColReorder'] ) ) { + if ( array_key_exists($x, $ds['ColReorder'] ) ) { return $ds['ColReorder'][$x]; } else { Logging::warn("Index $x does not exist preferences"); diff --git a/airtime_mvc/application/models/Show.php b/airtime_mvc/application/models/Show.php index 7f905b687..9a0eaa452 100644 --- a/airtime_mvc/application/models/Show.php +++ b/airtime_mvc/application/models/Show.php @@ -2060,8 +2060,6 @@ SQL; // been specified if ($timeEnd == "") { $timeEnd = "'$timeStart' + INTERVAL '2 days'"; - } else { - $timeEnd = "'$timeEnd'"; } //TODO, returning starts + ends twice (once with an alias). Unify this after the 2.0 release. --Martin @@ -2083,12 +2081,24 @@ WHERE si.show_id = s.id AND si.starts < :timeEnd::timestamp AND modified_instance != TRUE ORDER BY si.starts -LIMIT :lim SQL; - return Application_Common_Database::prepareAndExecute( $sql, array( + + //PDO won't accept "ALL" as a limit value (complains it is not an + //integer, and so we must completely remove the limit clause if we + //want to show all results - MK + if ($limit != "ALL") { + $sql .= PHP_EOL."LIMIT :lim"; + $params = array( ':timeStart' => $timeStart, ':timeEnd' => $timeEnd, - ':lim' => $limit), 'all'); + ':lim' => $limit); + } else { + $params = array( + ':timeStart' => $timeStart, + ':timeEnd' => $timeEnd); + } + + return Application_Common_Database::prepareAndExecute( $sql, $params, 'all'); } /** diff --git a/airtime_mvc/application/models/ShowBuilder.php b/airtime_mvc/application/models/ShowBuilder.php index b73a341d0..d708681ca 100644 --- a/airtime_mvc/application/models/ShowBuilder.php +++ b/airtime_mvc/application/models/ShowBuilder.php @@ -189,10 +189,13 @@ class Application_Model_ShowBuilder $row["record"] = true; if (Application_Model_Preference::GetUploadToSoundcloudOption()) { - $file = Application_Model_StoredFile::Recall($p_item["si_file_id"]); + Logging::info('$p_item contains:'); + Logging::info($p_item); + $file = Application_Model_StoredFile::Recall( + $p_item['si_file_id']); if (isset($file)) { $sid = $file->getSoundCloudId(); - $row["soundcloud_id"] = $sid; + $row['soundcloud_id'] = $sid; } } } @@ -204,18 +207,18 @@ class Application_Model_ShowBuilder $this->currentShow = false; } - $row["header"] = true; - $row["starts"] = $showStartDT->format("Y-m-d H:i"); + $row["header"] = true; + $row["starts"] = $showStartDT->format("Y-m-d H:i"); $row["startDate"] = $showStartDT->format("Y-m-d"); $row["startTime"] = $showStartDT->format("H:i"); - $row["refresh"] = floatval($showStartDT->format("U.u")) - $this->epoch_now; - $row["ends"] = $showEndDT->format("Y-m-d H:i"); - $row["endDate"] = $showEndDT->format("Y-m-d"); - $row["endTime"] = $showEndDT->format("H:i"); - $row["duration"] = floatval($showEndDT->format("U.u")) - floatval($showStartDT->format("U.u")); - $row["title"] = $p_item["show_name"]; - $row["instance"] = intval($p_item["si_id"]); - $row["image"] = ''; + $row["refresh"] = floatval($showStartDT->format("U.u")) - $this->epoch_now; + $row["ends"] = $showEndDT->format("Y-m-d H:i"); + $row["endDate"] = $showEndDT->format("Y-m-d"); + $row["endTime"] = $showEndDT->format("H:i"); + $row["duration"] = floatval($showEndDT->format("U.u")) - floatval($showStartDT->format("U.u")); + $row["title"] = $p_item["show_name"]; + $row["instance"] = intval($p_item["si_id"]); + $row["image"] = ''; $this->getScheduledStatus($startsEpoch, $endsEpoch, $row); @@ -440,9 +443,12 @@ class Application_Model_ShowBuilder //make the last footer if there were any scheduled items. if (count($scheduled_items) > 0) { - $display_items[] = $this->makeFooterRow($scheduled_items[count($scheduled_items)-1]); + $display_items[] = $this->makeFooterRow($scheduled_items[ + count($scheduled_items)-1]); } - return array("schedule" => $display_items, "showInstances" => $this->showInstances); + return array( + "schedule" => $display_items, + "showInstances" => $this->showInstances); } } diff --git a/airtime_mvc/application/models/Soundcloud.php b/airtime_mvc/application/models/Soundcloud.php index 7e2b74d57..2b1068e57 100644 --- a/airtime_mvc/application/models/Soundcloud.php +++ b/airtime_mvc/application/models/Soundcloud.php @@ -37,11 +37,11 @@ class Application_Model_Soundcloud $downloadable = Application_Model_Preference::GetSoundCloudDownloadbleOption() == '1'; $track_data = array( - 'track[sharing]' => 'private', - 'track[title]' => $filename, - 'track[asset_data]' => '@' . $filepath, - 'track[tag_list]' => $tags, - 'track[description]' => $description, + 'track[sharing]' => 'private', + 'track[title]' => $filename, + 'track[asset_data]' => '@' . $filepath, + 'track[tag_list]' => $tags, + 'track[description]' => $description, 'track[downloadable]' => $downloadable, ); @@ -52,7 +52,6 @@ class Application_Model_Soundcloud //YYYY-MM-DD-HH-mm-SS $release = explode("-", $release); - $track_data['track[release_year]'] = $release[0]; $track_data['track[release_month]'] = $release[1]; $track_data['track[release_day]'] = $release[2]; @@ -87,6 +86,13 @@ class Application_Model_Soundcloud throw new NoSoundCloundToken(); } } + + public static function uploadSoundcloud($id) + { + $cmd = "/usr/lib/airtime/utils/soundcloud-uploader $id > /dev/null &"; + Logging::info("Uploading soundcloud with command: $cmd"); + exec($cmd); + } } class NoSoundCloundToken extends Exception {} diff --git a/airtime_mvc/application/models/StoredFile.php b/airtime_mvc/application/models/StoredFile.php index 3469c75c9..420510953 100644 --- a/airtime_mvc/application/models/StoredFile.php +++ b/airtime_mvc/application/models/StoredFile.php @@ -407,11 +407,12 @@ SQL; */ public function getFileExtension() { + return ""; // TODO : what's the point of having this function? Can we not just use // the extension from the file_path column from cc_files? $mime = $this->_file->getDbMime(); - if ($mime == "audio/vorbis" || $mime == "application/ogg") { + if ($mime == "audio/ogg" || $mime == "application/ogg") { return "ogg"; } elseif ($mime == "audio/mp3" || $mime == "audio/mpeg") { return "mp3"; @@ -505,8 +506,6 @@ SQL; */ public function getRelativeFileUrl($baseUrl) { - Logging::info("getting media!"); - return $baseUrl."/api/get-media/file/".$this->getId().".".$this->getFileExtension(); } diff --git a/airtime_mvc/application/models/StreamSetting.php b/airtime_mvc/application/models/StreamSetting.php index 61a179d8a..a5740c70f 100644 --- a/airtime_mvc/application/models/StreamSetting.php +++ b/airtime_mvc/application/models/StreamSetting.php @@ -106,12 +106,12 @@ class Application_Model_StreamSetting public static function getStreamData($p_streamId) { $con = Propel::getConnection(); + $streamId = pg_escape_string($p_streamId); $sql = "SELECT * " ."FROM cc_stream_setting " - ."WHERE keyname LIKE :stream_id"; + ."WHERE keyname LIKE '{$streamId}_%'"; $stmt = $con->prepare($sql); - $stmt->bindParam(':stream_id', "${p_streamId}_%"); if ($stmt->execute()) { $rows = $stmt->fetchAll(); diff --git a/airtime_mvc/application/models/airtime/CcBlockcontents.php b/airtime_mvc/application/models/airtime/CcBlockcontents.php index f6de2dd45..5fcfbbf24 100644 --- a/airtime_mvc/application/models/airtime/CcBlockcontents.php +++ b/airtime_mvc/application/models/airtime/CcBlockcontents.php @@ -14,82 +14,82 @@ * @package propel.generator.airtime */ class CcBlockcontents extends BaseCcBlockcontents { - /** - * Get the [optionally formatted] temporal [fadein] column value. - * - * @return mixed Formatted date/time value as string or DateTime object (if format is NULL), NULL if column is NULL - * @throws PropelException - if unable to parse/validate the date/time value. - */ - public function getDbFadein($format = "s.u") - { - return parent::getDbFadein($format); - } - - /** - * Get the [optionally formatted] temporal [fadein] column value. - * - * @return mixed Formatted date/time value as string or DateTime object (if format is NULL), NULL if column is NULL - * @throws PropelException - if unable to parse/validate the date/time value. - */ - public function getDbFadeout($format = "s.u") - { - return parent::getDbFadeout($format); - } - - /** - * - * @param String in format SS.uuuuuu, Datetime, or DateTime accepted string. - * - * @return CcBlockcontents The current object (for fluent API support) - */ - public function setDbFadein($v) - { - if ($v instanceof DateTime) { - $dt = $v; - } - else if (preg_match('/^[0-9]{1,2}(\.\d{1,6})?$/', $v)) { - $dt = DateTime::createFromFormat("s.u", $v); - } - else { - try { - $dt = new DateTime($v); - } catch (Exception $x) { - throw new PropelException('Error parsing date/time value: ' . var_export($v, true), $x); - } - } - - $this->fadein = $dt->format('H:i:s.u'); - $this->modifiedColumns[] = CcBlockcontentsPeer::FADEIN; - - return $this; - } // setDbFadein() - - /** - * - * @param String in format SS.uuuuuu, Datetime, or DateTime accepted string. - * - * @return CcBlockcontents The current object (for fluent API support) - */ - public function setDbFadeout($v) - { - if ($v instanceof DateTime) { - $dt = $v; - } - else if (preg_match('/^[0-9]{1,2}(\.\d{1,6})?$/', $v)) { - $dt = DateTime::createFromFormat("s.u", $v); - } - else { - try { - $dt = new DateTime($v); - } catch (Exception $x) { - throw new PropelException('Error parsing date/time value: ' . var_export($v, true), $x); - } - } - - $this->fadeout = $dt->format('H:i:s.u'); - $this->modifiedColumns[] = CcBlockcontentsPeer::FADEOUT; - - return $this; + /** + * Get the [optionally formatted] temporal [fadein] column value. + * + * @return mixed Formatted date/time value as string or DateTime object (if format is NULL), NULL if column is NULL + * @throws PropelException - if unable to parse/validate the date/time value. + */ + public function getDbFadein($format = "s.u") + { + return parent::getDbFadein($format); + } + + /** + * Get the [optionally formatted] temporal [fadein] column value. + * + * @return mixed Formatted date/time value as string or DateTime object (if format is NULL), NULL if column is NULL + * @throws PropelException - if unable to parse/validate the date/time value. + */ + public function getDbFadeout($format = "s.u") + { + return parent::getDbFadeout($format); + } + + /** + * + * @param String in format SS.uuuuuu, Datetime, or DateTime accepted string. + * + * @return CcBlockcontents The current object (for fluent API support) + */ + public function setDbFadein($v) + { + if ($v instanceof DateTime) { + $dt = $v; + } + else if (preg_match('/^[0-9]{1,2}(\.\d{1,6})?$/', $v)) { + $dt = DateTime::createFromFormat("s.u", $v); + } + else { + try { + $dt = new DateTime($v); + } catch (Exception $x) { + throw new PropelException('Error parsing date/time value: ' . var_export($v, true), $x); + } + } + + $this->fadein = $dt->format('H:i:s.u'); + $this->modifiedColumns[] = CcBlockcontentsPeer::FADEIN; + + return $this; + } // setDbFadein() + + /** + * + * @param String in format SS.uuuuuu, Datetime, or DateTime accepted string. + * + * @return CcBlockcontents The current object (for fluent API support) + */ + public function setDbFadeout($v) + { + if ($v instanceof DateTime) { + $dt = $v; + } + else if (preg_match('/^[0-9]{1,2}(\.\d{1,6})?$/', $v)) { + $dt = DateTime::createFromFormat("s.u", $v); + } + else { + try { + $dt = new DateTime($v); + } catch (Exception $x) { + throw new PropelException('Error parsing date/time value: ' . var_export($v, true), $x); + } + } + + $this->fadeout = $dt->format('H:i:s.u'); + $this->modifiedColumns[] = CcBlockcontentsPeer::FADEOUT; + + return $this; } // setDbFadeout() } // CcBlockcontents diff --git a/airtime_mvc/application/models/airtime/CcShowInstances.php b/airtime_mvc/application/models/airtime/CcShowInstances.php index ed598c5ee..4625d1f91 100644 --- a/airtime_mvc/application/models/airtime/CcShowInstances.php +++ b/airtime_mvc/application/models/airtime/CcShowInstances.php @@ -139,40 +139,40 @@ class CcShowInstances extends BaseCcShowInstances { $this->save($con); } - /** - * Computes the value of the aggregate column time_filled - * - * @param PropelPDO $con A connection object - * - * @return mixed The scalar result from the aggregate query - */ - public function computeDbTimeFilled(PropelPDO $con) - { - $stmt = $con->prepare('SELECT SUM(clip_length) FROM "cc_schedule" WHERE cc_schedule.INSTANCE_ID = :p1'); - $stmt->bindValue(':p1', $this->getDbId()); - $stmt->execute(); - return $stmt->fetchColumn(); - } - - /** - * Updates the aggregate column time_filled - * - * @param PropelPDO $con A connection object - */ - public function updateDbTimeFilled(PropelPDO $con) + /** + * Computes the value of the aggregate column time_filled + * + * @param PropelPDO $con A connection object + * + * @return mixed The scalar result from the aggregate query + */ + public function computeDbTimeFilled(PropelPDO $con) + { + $stmt = $con->prepare('SELECT SUM(clip_length) FROM "cc_schedule" WHERE cc_schedule.INSTANCE_ID = :p1'); + $stmt->bindValue(':p1', $this->getDbId()); + $stmt->execute(); + return $stmt->fetchColumn(); + } + + /** + * Updates the aggregate column time_filled + * + * @param PropelPDO $con A connection object + */ + public function updateDbTimeFilled(PropelPDO $con) { $timefilled = $this->computeDbTimeFilled($con); if(is_null($timefilled)){ $timefilled = "00:00:00"; - } - $this->setDbTimeFilled($timefilled); - $this->save($con); + } + $this->setDbTimeFilled($timefilled); + $this->save($con); } public function preInsert(PropelPDO $con = null) { - $now = new DateTime("now", new DateTimeZone("UTC")); - $this->setDbCreated($now); - return true; + $now = new DateTime("now", new DateTimeZone("UTC")); + $this->setDbCreated($now); + return true; } } // CcShowInstances diff --git a/airtime_mvc/application/views/scripts/playlist/update.phtml b/airtime_mvc/application/views/scripts/playlist/update.phtml index bbb11093d..a51fd37db 100644 --- a/airtime_mvc/application/views/scripts/playlist/update.phtml +++ b/airtime_mvc/application/views/scripts/playlist/update.phtml @@ -85,7 +85,7 @@ if ($item['type'] == 2) { -
+ diff --git a/airtime_mvc/public/css/playlist_builder.css b/airtime_mvc/public/css/playlist_builder.css index 01828b72f..2fef8a296 100644 --- a/airtime_mvc/public/css/playlist_builder.css +++ b/airtime_mvc/public/css/playlist_builder.css @@ -572,4 +572,7 @@ li.spl_empty { font-weight: normal; display: inline-block; padding-right: 6px; +} +.expand-block-separate { + border-top: 1px solid #5B5B5B; } \ No newline at end of file diff --git a/airtime_mvc/public/js/airtime/library/spl.js b/airtime_mvc/public/js/airtime/library/spl.js index e0b58f205..3ee9a22ef 100644 --- a/airtime_mvc/public/js/airtime/library/spl.js +++ b/airtime_mvc/public/js/airtime/library/spl.js @@ -369,7 +369,6 @@ var AIRTIME = (function(AIRTIME){ $.each($(".big_play"), function(index, value){ if ($(value).attr('blockId') === undefined) { var mime = $(value).attr("data-mime-type"); - console.log($(value)); if (isAudioSupported(mime)) { $(value).bind("click", openAudioPreview); } else { diff --git a/install_minimal/include/AirtimeInstall.php b/install_minimal/include/AirtimeInstall.php index d0c2ed3f7..b2d4bf451 100644 --- a/install_minimal/include/AirtimeInstall.php +++ b/install_minimal/include/AirtimeInstall.php @@ -107,16 +107,16 @@ class AirtimeInstall echo "done.\n"; } } catch (Exception $e) { - echo "Error!\n".$e->getMessage()."\n"; - echo " SQL statement was:\n"; + echo "Error!\n".$e->getMessage()."\n"; + echo " SQL statement was:\n"; echo " ".$sql."\n\n"; } } - public static function DropSequence($p_sequenceName) - { + public static function DropSequence($p_sequenceName) + { AirtimeInstall::InstallQuery("DROP SEQUENCE IF EXISTS $p_sequenceName"); - } + } /** * Try to connect to the database. Return true on success, false on failure. @@ -130,12 +130,12 @@ class AirtimeInstall try { $con = Propel::getConnection(); } catch (Exception $e) { - echo $e->getMessage().PHP_EOL; - echo "Database connection problem.".PHP_EOL; - echo "Check if database '{$CC_CONFIG['dsn']['database']}' exists". - " with corresponding permissions.".PHP_EOL; - if ($p_exitOnError) { - exit(1); + echo $e->getMessage().PHP_EOL; + echo "Database connection problem.".PHP_EOL; + echo "Check if database '{$CC_CONFIG['dsn']['database']}' exists". + " with corresponding permissions.".PHP_EOL; + if ($p_exitOnError) { + exit(1); } return false; } @@ -215,6 +215,15 @@ class AirtimeInstall $database = $CC_CONFIG['dsn']['database']; $username = $CC_CONFIG['dsn']['username']; #$command = "echo \"CREATE DATABASE $database OWNER $username\" | su postgres -c psql 2>/dev/null"; + + $command = "su postgres -c \"psql -l | cut -f2 -d' ' | grep -w 'airtime'\";"; + exec($command, $output, $rv); + + if ($rv == 0) { + //database already exists + return true; + } + $command = "su postgres -c \"createdb $database --encoding UTF8 --owner $username\""; @exec($command, $output, $results); @@ -305,7 +314,7 @@ class AirtimeInstall public static function SetUniqueId() { - $con = Propel::getConnection(); + $con = Propel::getConnection(); $uniqueId = md5(uniqid("", true)); $sql = "INSERT INTO cc_pref (keystr, valstr) VALUES ('uniqueId', '$uniqueId')"; @@ -319,8 +328,9 @@ class AirtimeInstall public static function SetDefaultTimezone() { $con = Propel::getConnection(); - // we need to run php as commandline because we want to get the timezone in cli php.ini file - $defaultTimezone = exec("php -r 'echo date_default_timezone_get().PHP_EOL;'"); + // we need to run php as commandline because we want to get the timezone in cli php.ini file + //$defaultTimezone = exec("php -r 'echo date_default_timezone_get().PHP_EOL;'"); + $defaultTimezone = exec("cat /etc/timezone"); $defaultTimezone = trim($defaultTimezone); if((!in_array($defaultTimezone, DateTimeZone::listIdentifiers()))){ $defaultTimezone = "UTC"; @@ -335,7 +345,7 @@ class AirtimeInstall public static function SetImportTimestamp() { - $con = Propel::getConnection(); + $con = Propel::getConnection(); $sql = "INSERT INTO cc_pref (keystr, valstr) VALUES ('import_timestamp', '0')"; $result = $con->exec($sql); if ($result < 1) { diff --git a/install_minimal/include/airtime-db-install.php b/install_minimal/include/airtime-db-install.php index 862ce3756..3d9a80ed3 100644 --- a/install_minimal/include/airtime-db-install.php +++ b/install_minimal/include/airtime-db-install.php @@ -11,7 +11,7 @@ require_once(__DIR__.'/airtime-constants.php'); require_once(AirtimeInstall::GetAirtimeSrcDir().'/application/configs/conf.php'); require_once 'propel/runtime/lib/Propel.php'; -Propel::init(AirtimeInstall::GetAirtimeSrcDir()."/application/configs/airtime-conf-production.php"); +Propel::init(AirtimeInstall::GetAirtimeSrcDir()."/application/configs/airtime-conf-production.php"); echo PHP_EOL."* Database Installation".PHP_EOL; diff --git a/utils/soundcloud-uploader.php b/utils/soundcloud-uploader.php index ea6826aab..2660d32e2 100644 --- a/utils/soundcloud-uploader.php +++ b/utils/soundcloud-uploader.php @@ -33,6 +33,7 @@ set_include_path(implode(PATH_SEPARATOR, array( require_once($CC_CONFIG['phpDir'].'/application/models/StoredFile.php'); require_once($CC_CONFIG['phpDir'].'/application/models/Preference.php'); require_once($CC_CONFIG['phpDir'].'/application/models/MusicDir.php'); +require_once($CC_CONFIG['phpDir'].'/application/common/OsPath.php'); set_include_path($CC_CONFIG['phpDir'].'/library' . PATH_SEPARATOR . get_include_path()); require_once($CC_CONFIG['phpDir'].'/application/models/Soundcloud.php');