Merge branch 'devel' of dev.sourcefabric.org:airtime into devel
This commit is contained in:
commit
df476d9cb6
|
@ -5,7 +5,12 @@ class ApiController extends Zend_Controller_Action
|
||||||
|
|
||||||
public function init()
|
public function init()
|
||||||
{
|
{
|
||||||
|
$ignoreAuth = array("live-info", "week-info");
|
||||||
|
|
||||||
|
$params = $this->getRequest()->getParams();
|
||||||
|
if (!in_array($params['action'], $ignoreAuth)) {
|
||||||
$this->checkAuth();
|
$this->checkAuth();
|
||||||
|
}
|
||||||
/* Initialize action controller here */
|
/* Initialize action controller here */
|
||||||
$context = $this->_helper->getHelper('contextSwitch');
|
$context = $this->_helper->getHelper('contextSwitch');
|
||||||
$context->addActionContext('version' , 'json')
|
$context->addActionContext('version' , 'json')
|
||||||
|
@ -41,7 +46,6 @@ class ApiController extends Zend_Controller_Action
|
||||||
public function checkAuth()
|
public function checkAuth()
|
||||||
{
|
{
|
||||||
global $CC_CONFIG;
|
global $CC_CONFIG;
|
||||||
|
|
||||||
$api_key = $this->_getParam('api_key');
|
$api_key = $this->_getParam('api_key');
|
||||||
|
|
||||||
if (!in_array($api_key, $CC_CONFIG["apiKey"]) &&
|
if (!in_array($api_key, $CC_CONFIG["apiKey"]) &&
|
||||||
|
@ -298,7 +302,7 @@ class ApiController extends Zend_Controller_Action
|
||||||
$result = array();
|
$result = array();
|
||||||
for ($i=0; $i<7; $i++) {
|
for ($i=0; $i<7; $i++) {
|
||||||
$utcDayEnd = Application_Common_DateHelper::GetDayEndTimestamp($utcDayStart);
|
$utcDayEnd = Application_Common_DateHelper::GetDayEndTimestamp($utcDayStart);
|
||||||
$shows = Application_Model_Show::getNextShows($utcDayStart, "0", $utcDayEnd);
|
$shows = Application_Model_Show::getNextShows($utcDayStart, "ALL", $utcDayEnd);
|
||||||
$utcDayStart = $utcDayEnd;
|
$utcDayStart = $utcDayEnd;
|
||||||
|
|
||||||
Application_Model_Show::convertToLocalTimeZone($shows,
|
Application_Model_Show::convertToLocalTimeZone($shows,
|
||||||
|
@ -307,9 +311,10 @@ class ApiController extends Zend_Controller_Action
|
||||||
|
|
||||||
$result[$dow[$i]] = $shows;
|
$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");
|
header("Content-type: text/javascript");
|
||||||
Logging::info($result);
|
|
||||||
// If a callback is not given, then just provide the raw JSON.
|
// If a callback is not given, then just provide the raw JSON.
|
||||||
echo isset($_GET['callback']) ? $_GET['callback'].'('.json_encode($result).')' : json_encode($result);
|
echo isset($_GET['callback']) ? $_GET['callback'].'('.json_encode($result).')' : json_encode($result);
|
||||||
} else {
|
} else {
|
||||||
|
@ -415,8 +420,9 @@ class ApiController extends Zend_Controller_Action
|
||||||
$this->uploadRecordedActionParam($show_instance_id, $file_id);
|
$this->uploadRecordedActionParam($show_instance_id, $file_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
// The paramterized version of the uploadRecordedAction controller. We want this controller's action
|
// The paramterized version of the uploadRecordedAction controller.
|
||||||
// to be invokable from other controllers instead being of only through http
|
// 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)
|
public function uploadRecordedActionParam($show_instance_id, $file_id)
|
||||||
{
|
{
|
||||||
$showCanceled = false;
|
$showCanceled = false;
|
||||||
|
@ -430,10 +436,10 @@ class ApiController extends Zend_Controller_Action
|
||||||
|
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
//we've reached here probably because the show was
|
//we've reached here probably because the show was
|
||||||
//cancelled, and therefore the show instance does not
|
//cancelled, and therefore the show instance does not exist
|
||||||
//exist anymore (ShowInstance constructor threw this error).
|
//anymore (ShowInstance constructor threw this error). We've
|
||||||
//We've done all we can do (upload the file and put it in
|
//done all we can do (upload the file and put it in the
|
||||||
//the library), now lets just return.
|
//library), now lets just return.
|
||||||
$showCanceled = true;
|
$showCanceled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -444,7 +450,7 @@ class ApiController extends Zend_Controller_Action
|
||||||
|
|
||||||
if (!$showCanceled && Application_Model_Preference::GetAutoUploadRecordedShowToSoundcloud()) {
|
if (!$showCanceled && Application_Model_Preference::GetAutoUploadRecordedShowToSoundcloud()) {
|
||||||
$id = $file->getId();
|
$id = $file->getId();
|
||||||
$res = exec("/usr/lib/airtime/utils/soundcloud-uploader $id > /dev/null &");
|
Application_Model_Soundcloud::uploadSoundcloud($id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -469,7 +469,7 @@ class LibraryController extends Zend_Controller_Action
|
||||||
public function uploadFileSoundcloudAction()
|
public function uploadFileSoundcloudAction()
|
||||||
{
|
{
|
||||||
$id = $this->_getParam('id');
|
$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
|
// we should die with ui info
|
||||||
die();
|
die();
|
||||||
}
|
}
|
||||||
|
|
|
@ -217,7 +217,7 @@ class ScheduleController extends Zend_Controller_Action
|
||||||
|
|
||||||
$file = $show_inst->getRecordedFile();
|
$file = $show_inst->getRecordedFile();
|
||||||
$id = $file->getId();
|
$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
|
// we should die with ui info
|
||||||
die();
|
die();
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,8 +77,21 @@ class Application_Model_Datatables
|
||||||
// map that maps dbname to searchTerm
|
// map that maps dbname to searchTerm
|
||||||
$dbname2searchTerm = array();
|
$dbname2searchTerm = array();
|
||||||
foreach ($current2dbname as $currentPos => $dbname) {
|
foreach ($current2dbname as $currentPos => $dbname) {
|
||||||
$dbname2searchTerm[$dbname] =
|
$new_index = $librarySetting($currentPos);
|
||||||
$orig2searchTerm[$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();
|
$where = array();
|
||||||
|
|
|
@ -1101,7 +1101,7 @@ class Application_Model_Preference
|
||||||
} else {
|
} else {
|
||||||
$ds = unserialize($v);
|
$ds = unserialize($v);
|
||||||
return function ($x) use ($ds) {
|
return function ($x) use ($ds) {
|
||||||
if ( in_array($x, $ds['ColReorder'] ) ) {
|
if ( array_key_exists($x, $ds['ColReorder'] ) ) {
|
||||||
return $ds['ColReorder'][$x];
|
return $ds['ColReorder'][$x];
|
||||||
} else {
|
} else {
|
||||||
Logging::warn("Index $x does not exist preferences");
|
Logging::warn("Index $x does not exist preferences");
|
||||||
|
|
|
@ -2060,8 +2060,6 @@ SQL;
|
||||||
// been specified
|
// been specified
|
||||||
if ($timeEnd == "") {
|
if ($timeEnd == "") {
|
||||||
$timeEnd = "'$timeStart' + INTERVAL '2 days'";
|
$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
|
//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 si.starts < :timeEnd::timestamp
|
||||||
AND modified_instance != TRUE
|
AND modified_instance != TRUE
|
||||||
ORDER BY si.starts
|
ORDER BY si.starts
|
||||||
LIMIT :lim
|
|
||||||
SQL;
|
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,
|
':timeStart' => $timeStart,
|
||||||
':timeEnd' => $timeEnd,
|
':timeEnd' => $timeEnd,
|
||||||
':lim' => $limit), 'all');
|
':lim' => $limit);
|
||||||
|
} else {
|
||||||
|
$params = array(
|
||||||
|
':timeStart' => $timeStart,
|
||||||
|
':timeEnd' => $timeEnd);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Application_Common_Database::prepareAndExecute( $sql, $params, 'all');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -189,10 +189,13 @@ class Application_Model_ShowBuilder
|
||||||
$row["record"] = true;
|
$row["record"] = true;
|
||||||
|
|
||||||
if (Application_Model_Preference::GetUploadToSoundcloudOption()) {
|
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)) {
|
if (isset($file)) {
|
||||||
$sid = $file->getSoundCloudId();
|
$sid = $file->getSoundCloudId();
|
||||||
$row["soundcloud_id"] = $sid;
|
$row['soundcloud_id'] = $sid;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -440,9 +443,12 @@ class Application_Model_ShowBuilder
|
||||||
|
|
||||||
//make the last footer if there were any scheduled items.
|
//make the last footer if there were any scheduled items.
|
||||||
if (count($scheduled_items) > 0) {
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,7 +52,6 @@ class Application_Model_Soundcloud
|
||||||
|
|
||||||
//YYYY-MM-DD-HH-mm-SS
|
//YYYY-MM-DD-HH-mm-SS
|
||||||
$release = explode("-", $release);
|
$release = explode("-", $release);
|
||||||
|
|
||||||
$track_data['track[release_year]'] = $release[0];
|
$track_data['track[release_year]'] = $release[0];
|
||||||
$track_data['track[release_month]'] = $release[1];
|
$track_data['track[release_month]'] = $release[1];
|
||||||
$track_data['track[release_day]'] = $release[2];
|
$track_data['track[release_day]'] = $release[2];
|
||||||
|
@ -87,6 +86,13 @@ class Application_Model_Soundcloud
|
||||||
throw new NoSoundCloundToken();
|
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 {}
|
class NoSoundCloundToken extends Exception {}
|
||||||
|
|
|
@ -407,11 +407,12 @@ SQL;
|
||||||
*/
|
*/
|
||||||
public function getFileExtension()
|
public function getFileExtension()
|
||||||
{
|
{
|
||||||
|
return "";
|
||||||
// TODO : what's the point of having this function? Can we not just use
|
// TODO : what's the point of having this function? Can we not just use
|
||||||
// the extension from the file_path column from cc_files?
|
// the extension from the file_path column from cc_files?
|
||||||
$mime = $this->_file->getDbMime();
|
$mime = $this->_file->getDbMime();
|
||||||
|
|
||||||
if ($mime == "audio/vorbis" || $mime == "application/ogg") {
|
if ($mime == "audio/ogg" || $mime == "application/ogg") {
|
||||||
return "ogg";
|
return "ogg";
|
||||||
} elseif ($mime == "audio/mp3" || $mime == "audio/mpeg") {
|
} elseif ($mime == "audio/mp3" || $mime == "audio/mpeg") {
|
||||||
return "mp3";
|
return "mp3";
|
||||||
|
@ -505,8 +506,6 @@ SQL;
|
||||||
*/
|
*/
|
||||||
public function getRelativeFileUrl($baseUrl)
|
public function getRelativeFileUrl($baseUrl)
|
||||||
{
|
{
|
||||||
Logging::info("getting media!");
|
|
||||||
|
|
||||||
return $baseUrl."/api/get-media/file/".$this->getId().".".$this->getFileExtension();
|
return $baseUrl."/api/get-media/file/".$this->getId().".".$this->getFileExtension();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -106,12 +106,12 @@ class Application_Model_StreamSetting
|
||||||
public static function getStreamData($p_streamId)
|
public static function getStreamData($p_streamId)
|
||||||
{
|
{
|
||||||
$con = Propel::getConnection();
|
$con = Propel::getConnection();
|
||||||
|
$streamId = pg_escape_string($p_streamId);
|
||||||
$sql = "SELECT * "
|
$sql = "SELECT * "
|
||||||
."FROM cc_stream_setting "
|
."FROM cc_stream_setting "
|
||||||
."WHERE keyname LIKE :stream_id";
|
."WHERE keyname LIKE '{$streamId}_%'";
|
||||||
|
|
||||||
$stmt = $con->prepare($sql);
|
$stmt = $con->prepare($sql);
|
||||||
$stmt->bindParam(':stream_id', "${p_streamId}_%");
|
|
||||||
|
|
||||||
if ($stmt->execute()) {
|
if ($stmt->execute()) {
|
||||||
$rows = $stmt->fetchAll();
|
$rows = $stmt->fetchAll();
|
||||||
|
|
|
@ -85,7 +85,7 @@ if ($item['type'] == 2) {
|
||||||
</div>
|
</div>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<?php if ($item['type'] == 2) {?>
|
<?php if ($item['type'] == 2) {?>
|
||||||
<ul style='display:none' id="block_<?php echo $item["id"]?>_info" class="smart-block-info"></ul>
|
<ul style='display:none' id="block_<?php echo $item["id"]?>_info" class="smart-block-info expand-block-separate"></ul>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
</li>
|
</li>
|
||||||
<?php $i = $i+1; ?>
|
<?php $i = $i+1; ?>
|
||||||
|
|
|
@ -573,3 +573,6 @@ li.spl_empty {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding-right: 6px;
|
padding-right: 6px;
|
||||||
}
|
}
|
||||||
|
.expand-block-separate {
|
||||||
|
border-top: 1px solid #5B5B5B;
|
||||||
|
}
|
|
@ -369,7 +369,6 @@ var AIRTIME = (function(AIRTIME){
|
||||||
$.each($(".big_play"), function(index, value){
|
$.each($(".big_play"), function(index, value){
|
||||||
if ($(value).attr('blockId') === undefined) {
|
if ($(value).attr('blockId') === undefined) {
|
||||||
var mime = $(value).attr("data-mime-type");
|
var mime = $(value).attr("data-mime-type");
|
||||||
console.log($(value));
|
|
||||||
if (isAudioSupported(mime)) {
|
if (isAudioSupported(mime)) {
|
||||||
$(value).bind("click", openAudioPreview);
|
$(value).bind("click", openAudioPreview);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -215,6 +215,15 @@ class AirtimeInstall
|
||||||
$database = $CC_CONFIG['dsn']['database'];
|
$database = $CC_CONFIG['dsn']['database'];
|
||||||
$username = $CC_CONFIG['dsn']['username'];
|
$username = $CC_CONFIG['dsn']['username'];
|
||||||
#$command = "echo \"CREATE DATABASE $database OWNER $username\" | su postgres -c psql 2>/dev/null";
|
#$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\"";
|
$command = "su postgres -c \"createdb $database --encoding UTF8 --owner $username\"";
|
||||||
|
|
||||||
@exec($command, $output, $results);
|
@exec($command, $output, $results);
|
||||||
|
@ -320,7 +329,8 @@ class AirtimeInstall
|
||||||
{
|
{
|
||||||
$con = Propel::getConnection();
|
$con = Propel::getConnection();
|
||||||
// we need to run php as commandline because we want to get the timezone in cli php.ini file
|
// 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("php -r 'echo date_default_timezone_get().PHP_EOL;'");
|
||||||
|
$defaultTimezone = exec("cat /etc/timezone");
|
||||||
$defaultTimezone = trim($defaultTimezone);
|
$defaultTimezone = trim($defaultTimezone);
|
||||||
if((!in_array($defaultTimezone, DateTimeZone::listIdentifiers()))){
|
if((!in_array($defaultTimezone, DateTimeZone::listIdentifiers()))){
|
||||||
$defaultTimezone = "UTC";
|
$defaultTimezone = "UTC";
|
||||||
|
|
|
@ -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/StoredFile.php');
|
||||||
require_once($CC_CONFIG['phpDir'].'/application/models/Preference.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/models/MusicDir.php');
|
||||||
|
require_once($CC_CONFIG['phpDir'].'/application/common/OsPath.php');
|
||||||
|
|
||||||
set_include_path($CC_CONFIG['phpDir'].'/library' . PATH_SEPARATOR . get_include_path());
|
set_include_path($CC_CONFIG['phpDir'].'/library' . PATH_SEPARATOR . get_include_path());
|
||||||
require_once($CC_CONFIG['phpDir'].'/application/models/Soundcloud.php');
|
require_once($CC_CONFIG['phpDir'].'/application/models/Soundcloud.php');
|
||||||
|
|
Loading…
Reference in New Issue