Merge branch 'master' of dev.sourcefabric.org:campcaster
This commit is contained in:
commit
5100613049
|
@ -104,8 +104,6 @@ class ApiController extends Zend_Controller_Action
|
||||||
}
|
}
|
||||||
|
|
||||||
public function liveInfoAction(){
|
public function liveInfoAction(){
|
||||||
global $CC_CONFIG;
|
|
||||||
|
|
||||||
// disable the view and the layout
|
// disable the view and the layout
|
||||||
$this->view->layout()->disableLayout();
|
$this->view->layout()->disableLayout();
|
||||||
$this->_helper->viewRenderer->setNoRender(true);
|
$this->_helper->viewRenderer->setNoRender(true);
|
||||||
|
@ -126,6 +124,22 @@ class ApiController extends Zend_Controller_Action
|
||||||
echo $_GET['callback'].'('.json_encode($result).')';
|
echo $_GET['callback'].'('.json_encode($result).')';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function weekInfoAction(){
|
||||||
|
// disable the view and the layout
|
||||||
|
$this->view->layout()->disableLayout();
|
||||||
|
$this->_helper->viewRenderer->setNoRender(true);
|
||||||
|
|
||||||
|
$dow = array("sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday");
|
||||||
|
|
||||||
|
$result = array();
|
||||||
|
for ($i=0; $i<7; $i++){
|
||||||
|
$result[$dow[$i]] = Show_DAL::GetShowsByDayOfWeek($i);
|
||||||
|
}
|
||||||
|
|
||||||
|
header("Content-type: text/javascript");
|
||||||
|
echo $_GET['callback'].'('.json_encode($result).')';
|
||||||
|
}
|
||||||
|
|
||||||
public function scheduleAction()
|
public function scheduleAction()
|
||||||
{
|
{
|
||||||
global $CC_CONFIG;
|
global $CC_CONFIG;
|
||||||
|
|
|
@ -466,6 +466,30 @@ class Schedule {
|
||||||
{
|
{
|
||||||
global $CC_CONFIG, $CC_DBC;
|
global $CC_CONFIG, $CC_DBC;
|
||||||
|
|
||||||
|
$sql = "SELECT DISTINCT"
|
||||||
|
." pt.name,"
|
||||||
|
." ft.track_title,"
|
||||||
|
." ft.artist_name,"
|
||||||
|
." ft.album_title,"
|
||||||
|
." st.starts,"
|
||||||
|
." st.ends,"
|
||||||
|
." st.clip_length,"
|
||||||
|
." st.media_item_played,"
|
||||||
|
." st.group_id,"
|
||||||
|
." show.name as show_name,"
|
||||||
|
." st.instance_id"
|
||||||
|
." FROM $CC_CONFIG[scheduleTable] st"
|
||||||
|
." LEFT JOIN $CC_CONFIG[filesTable] ft"
|
||||||
|
." ON st.file_id = ft.id"
|
||||||
|
." LEFT JOIN $CC_CONFIG[playListTable] pt"
|
||||||
|
." ON st.playlist_id = pt.id"
|
||||||
|
." LEFT JOIN $CC_CONFIG[showInstances] si"
|
||||||
|
." ON st.instance_id = si.id"
|
||||||
|
." LEFT JOIN $CC_CONFIG[showTable] show"
|
||||||
|
." ON si.show_id = show.id"
|
||||||
|
." WHERE st.starts < si.ends";
|
||||||
|
|
||||||
|
/*
|
||||||
$sql = "SELECT DISTINCT pt.name, ft.track_title, ft.artist_name, ft.album_title, st.starts, st.ends, st.clip_length, st.media_item_played, st.group_id, show.name as show_name, st.instance_id"
|
$sql = "SELECT DISTINCT pt.name, ft.track_title, ft.artist_name, ft.album_title, st.starts, st.ends, st.clip_length, st.media_item_played, st.group_id, show.name as show_name, st.instance_id"
|
||||||
." FROM $CC_CONFIG[scheduleTable] st, $CC_CONFIG[filesTable] ft, $CC_CONFIG[playListTable] pt, $CC_CONFIG[showInstances] si, $CC_CONFIG[showTable] show"
|
." FROM $CC_CONFIG[scheduleTable] st, $CC_CONFIG[filesTable] ft, $CC_CONFIG[playListTable] pt, $CC_CONFIG[showInstances] si, $CC_CONFIG[showTable] show"
|
||||||
." WHERE st.playlist_id = pt.id"
|
." WHERE st.playlist_id = pt.id"
|
||||||
|
@ -473,6 +497,7 @@ class Schedule {
|
||||||
." AND st.instance_id = si.id"
|
." AND st.instance_id = si.id"
|
||||||
." AND si.show_id = show.id"
|
." AND si.show_id = show.id"
|
||||||
." AND st.starts < si.ends";
|
." AND st.starts < si.ends";
|
||||||
|
*/
|
||||||
|
|
||||||
if ($timePeriod < 0){
|
if ($timePeriod < 0){
|
||||||
$sql .= " AND st.ends < TIMESTAMP '$timeStamp'"
|
$sql .= " AND st.ends < TIMESTAMP '$timeStamp'"
|
||||||
|
@ -628,17 +653,24 @@ class Schedule {
|
||||||
* @param string $p_toDateTime
|
* @param string $p_toDateTime
|
||||||
* In the format "YYYY-MM-DD-HH-mm-SS"
|
* In the format "YYYY-MM-DD-HH-mm-SS"
|
||||||
*/
|
*/
|
||||||
public static function GetScheduledPlaylists()
|
public static function GetScheduledPlaylists($p_fromDateTime = null, $p_toDateTime = null)
|
||||||
{
|
{
|
||||||
global $CC_CONFIG, $CC_DBC;
|
global $CC_CONFIG, $CC_DBC;
|
||||||
|
|
||||||
$t1 = new DateTime();
|
if (is_null($p_fromDateTime)) {
|
||||||
$range_start = $t1->format("Y-m-d H:i:s");
|
$t1 = new DateTime();
|
||||||
|
$range_start = $t1->format("Y-m-d H:i:s");
|
||||||
$t2 = new DateTime();
|
} else {
|
||||||
$t2->add(new DateInterval("PT24H"));
|
$range_start = Schedule::PypoTimeToAirtimeTime($p_fromDateTime);
|
||||||
$range_end = $t2->format("Y-m-d H:i:s");
|
}
|
||||||
|
if (is_null($p_fromDateTime)) {
|
||||||
|
$t2 = new DateTime();
|
||||||
|
$t2->add(new DateInterval("PT24H"));
|
||||||
|
$range_end = $t2->format("Y-m-d H:i:s");
|
||||||
|
} else {
|
||||||
|
$range_end = Schedule::PypoTimeToAirtimeTime($p_toDateTime);
|
||||||
|
}
|
||||||
|
|
||||||
// Scheduler wants everything in a playlist
|
// Scheduler wants everything in a playlist
|
||||||
$data = Schedule::GetItems($range_start, $range_end, true);
|
$data = Schedule::GetItems($range_start, $range_end, true);
|
||||||
$playlists = array();
|
$playlists = array();
|
||||||
|
|
|
@ -948,7 +948,31 @@ class Show_DAL {
|
||||||
." OR (si.starts < TIMESTAMP '$timeNow' + INTERVAL '$end seconds' AND si.ends > TIMESTAMP '$timeNow' + INTERVAL '$end seconds'))"
|
." OR (si.starts < TIMESTAMP '$timeNow' + INTERVAL '$end seconds' AND si.ends > TIMESTAMP '$timeNow' + INTERVAL '$end seconds'))"
|
||||||
//checking for st.starts IS NULL so that the query also returns shows that do not have any items scheduled.
|
//checking for st.starts IS NULL so that the query also returns shows that do not have any items scheduled.
|
||||||
." AND (st.starts < si.ends OR st.starts IS NULL)"
|
." AND (st.starts < si.ends OR st.starts IS NULL)"
|
||||||
." ORDER BY st.starts";
|
." ORDER BY si.starts, st.starts";
|
||||||
|
|
||||||
|
return $CC_DBC->GetAll($sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function GetShowsByDayOfWeek($day){
|
||||||
|
//DOW FROM TIMESTAMP
|
||||||
|
//The day of the week (0 - 6; Sunday is 0) (for timestamp values only)
|
||||||
|
|
||||||
|
//SELECT EXTRACT(DOW FROM TIMESTAMP '2001-02-16 20:38:40');
|
||||||
|
//Result: 5
|
||||||
|
|
||||||
|
global $CC_CONFIG, $CC_DBC;
|
||||||
|
$sql = "SELECT"
|
||||||
|
." si.starts as show_starts,"
|
||||||
|
." si.ends as show_ends,"
|
||||||
|
." s.name as show_name,"
|
||||||
|
." s.url as url"
|
||||||
|
." FROM $CC_CONFIG[showInstances] si"
|
||||||
|
." LEFT JOIN $CC_CONFIG[showTable] s"
|
||||||
|
." ON si.show_id = s.id"
|
||||||
|
." WHERE EXTRACT(DOW FROM si.starts) = $day"
|
||||||
|
." AND EXTRACT(WEEK FROM si.starts) = EXTRACT(WEEK FROM localtimestamp)";
|
||||||
|
|
||||||
|
//echo $sql;
|
||||||
|
|
||||||
return $CC_DBC->GetAll($sql);
|
return $CC_DBC->GetAll($sql);
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
sourceDomain: "http://localhost/", //where to get show status from
|
sourceDomain: "http://localhost/", //where to get show status from
|
||||||
};
|
};
|
||||||
var options = $.extend(defaults, options);
|
var options = $.extend(defaults, options);
|
||||||
|
options.sourceDomain = addEndingBackslash(options.sourceDomain);
|
||||||
|
|
||||||
return this.each(function() {
|
return this.each(function() {
|
||||||
var obj = $(this);
|
var obj = $(this);
|
||||||
|
@ -58,7 +59,7 @@
|
||||||
$.ajax({ url: options.sourceDomain + "api/live-info/", dataType:"jsonp", success:function(data){
|
$.ajax({ url: options.sourceDomain + "api/live-info/", dataType:"jsonp", success:function(data){
|
||||||
processData(data);
|
processData(data);
|
||||||
}, error:function(jqXHR, textStatus, errorThrown){}});
|
}, error:function(jqXHR, textStatus, errorThrown){}});
|
||||||
setTimeout(getServerData, defaults.updatePeriod*1000);
|
setTimeout(getServerData, options.updatePeriod*1000);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -71,9 +72,10 @@
|
||||||
var defaults = {
|
var defaults = {
|
||||||
updatePeriod: 5, //seconds
|
updatePeriod: 5, //seconds
|
||||||
sourceDomain: "http://localhost/", //where to get show status from
|
sourceDomain: "http://localhost/", //where to get show status from
|
||||||
audioStreamSource: "" //where to get audio stream from
|
audioStreamSource: "http://localhost:8000/airtime.mp3" //where to get audio stream from
|
||||||
};
|
};
|
||||||
var options = $.extend(defaults, options);
|
var options = $.extend(defaults, options);
|
||||||
|
options.sourceDomain = addEndingBackslash(options.sourceDomain);
|
||||||
|
|
||||||
return this.each(function() {
|
return this.each(function() {
|
||||||
var obj = $(this);
|
var obj = $(this);
|
||||||
|
@ -106,7 +108,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
obj.empty();
|
obj.empty();
|
||||||
obj.append("<a id='listenWadrLive'><span>Listen WADR Live</span></a>");
|
obj.append("<a id='listenWadrLive' href='"+options.audioStreamSource+"'><span>Listen WADR Live</span></a>");
|
||||||
obj.append("<h4>"+showStatus+" >></h4>");
|
obj.append("<h4>"+showStatus+" >></h4>");
|
||||||
obj.append("<ul class='widget no-playing-bar'>" +
|
obj.append("<ul class='widget no-playing-bar'>" +
|
||||||
"<li class='current'>Current: "+currentShowName+
|
"<li class='current'>Current: "+currentShowName+
|
||||||
|
@ -129,12 +131,111 @@
|
||||||
$.ajax({ url: options.sourceDomain + "api/live-info/", dataType:"jsonp", success:function(data){
|
$.ajax({ url: options.sourceDomain + "api/live-info/", dataType:"jsonp", success:function(data){
|
||||||
processData(data);
|
processData(data);
|
||||||
}, error:function(jqXHR, textStatus, errorThrown){}});
|
}, error:function(jqXHR, textStatus, errorThrown){}});
|
||||||
setTimeout(getServerData, defaults.updatePeriod*1000);
|
setTimeout(getServerData, options.updatePeriod*1000);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
})(jQuery);
|
})(jQuery);
|
||||||
|
|
||||||
|
(function($){
|
||||||
|
$.fn.airtimeWeekSchedule = function(options) {
|
||||||
|
|
||||||
|
var defaults = {
|
||||||
|
sourceDomain: "http://localhost/", //where to get show status from
|
||||||
|
updatePeriod: 600,
|
||||||
|
dowText: {monday:"Monday", tuesday:"Tuesday", wednesday:"Wednesday", thursday:"Thursday", friday:"Friday", saturday:"Saturday", sunday:"Sunday"},
|
||||||
|
miscText: {time:"Time", programName:"Program Name", details:"Details", readMore:"Read More"}
|
||||||
|
};
|
||||||
|
var options = $.extend(defaults, options);
|
||||||
|
options.sourceDomain = addEndingBackslash(options.sourceDomain);
|
||||||
|
|
||||||
|
return this.each(function() {
|
||||||
|
var obj = $(this);
|
||||||
|
obj.empty();
|
||||||
|
|
||||||
|
obj.attr("class", "ui-tabs");
|
||||||
|
|
||||||
|
var dow = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"];
|
||||||
|
|
||||||
|
var html = '<ul>';
|
||||||
|
for (var i=0; i<dow.length; i++){
|
||||||
|
html += '<li><a href="#'+dow[i]+'">'+options.dowText[dow[i]]+'</a></li>';
|
||||||
|
}
|
||||||
|
html += '</ul>';
|
||||||
|
|
||||||
|
for (var i=0; i<dow.length; i++){
|
||||||
|
html += '<div id="'+dow[i]+'" class="ui-tabs-hide"></div>'
|
||||||
|
}
|
||||||
|
obj.append(html);
|
||||||
|
getServerData();
|
||||||
|
|
||||||
|
function updateWidget(data){
|
||||||
|
for (var i=0; i<dow.length; i++){
|
||||||
|
var html =
|
||||||
|
'<table class="widget widget no-playing-list">'+
|
||||||
|
'<colgroup>'+
|
||||||
|
'<col width="150" />'+
|
||||||
|
'<col width="350" />'+
|
||||||
|
'<col width="240" />'+
|
||||||
|
'</colgroup>'+
|
||||||
|
'<thead>'+
|
||||||
|
'<tr>'+
|
||||||
|
'<td>'+options.miscText.time+'</td>'+
|
||||||
|
'<td>'+options.miscText.programName+'</td>'+
|
||||||
|
'<td>'+options.miscText.details+'</td>'+
|
||||||
|
'</tr>'+
|
||||||
|
'</thead>'+
|
||||||
|
'<tfoot>'+
|
||||||
|
'<tr>'+
|
||||||
|
'<td></td>'+
|
||||||
|
'</tr>'+
|
||||||
|
'</tfoot>'+
|
||||||
|
'<tbody>';
|
||||||
|
var daySchedule = data[dow[i]];
|
||||||
|
for (var j=0; j<daySchedule.length; j++){
|
||||||
|
var url = daySchedule[j].url;
|
||||||
|
html +=
|
||||||
|
'<tr>'+
|
||||||
|
'<td>'+getTime(daySchedule[j].show_starts)+ " - " + getTime(daySchedule[j].show_ends)+'</td>'+
|
||||||
|
'<td>'+
|
||||||
|
'<h4>'+daySchedule[j].show_name+'</h4>'+
|
||||||
|
'</td>'+
|
||||||
|
'<td>'+
|
||||||
|
'<ul>'+
|
||||||
|
'<li>'+(url.length > 0 ? '<a href="'+url+'">'+options.miscText.readMore+'</a>':'')+'</li>'+
|
||||||
|
'</ul>'+
|
||||||
|
'</td>'+
|
||||||
|
'</tr>';
|
||||||
|
}
|
||||||
|
html +=
|
||||||
|
'</tbody>'+
|
||||||
|
'</table>';
|
||||||
|
|
||||||
|
$("#"+dow[i]).empty();
|
||||||
|
$("#"+dow[i]).append(html);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function processData(data){
|
||||||
|
updateWidget(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getServerData(){
|
||||||
|
$.ajax({ url: options.sourceDomain + "api/week-info/", dataType:"jsonp", success:function(data){
|
||||||
|
processData(data);
|
||||||
|
}, error:function(jqXHR, textStatus, errorThrown){}});
|
||||||
|
setTimeout(getServerData, options.updatePeriod*1000);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
})(jQuery);
|
||||||
|
|
||||||
|
function addEndingBackslash(str){
|
||||||
|
if (str.charAt(str.length-1) != '/')
|
||||||
|
return str+'/';
|
||||||
|
else return str;
|
||||||
|
}
|
||||||
|
|
||||||
/* ScheduleData class BEGIN */
|
/* ScheduleData class BEGIN */
|
||||||
function ScheduleData(data){
|
function ScheduleData(data){
|
||||||
this.data = data;
|
this.data = data;
|
||||||
|
|
Loading…
Reference in New Issue