Skip to content

Commit

Permalink
cc-2344: wrong song displayed
Browse files Browse the repository at this point in the history
-fixed
  • Loading branch information
martin authored and martin committed Jun 3, 2011
1 parent 19e52e8 commit c9c9ecf
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 10 deletions.
18 changes: 11 additions & 7 deletions airtime_mvc/application/models/Dashboard.php
Expand Up @@ -10,14 +10,16 @@ public static function GetPreviousItem($p_timeNow){
//name. Else return the last item from the schedule.

$showInstance = ShowInstance::GetLastShowInstance($p_timeNow);
$row = Schedule::GetLastScheduleItem($p_timeNow);
$instanceId = $showInstance->getShowId();
$row = Schedule::GetLastScheduleItem($p_timeNow, $instanceId);

if (is_null($showInstance)){
if (count($row) == 0){
return null;
} else {
//should never reach here. Doesnt make sense to have
//a schedule item not within a show_instance.
return array("name"=>$row[0]["artist_name"]." - ".$row[0]["track_title"],
"starts"=>$row[0]["starts"],
"ends"=>$row[0]["ends"]);
}
} else {
if (count($row) == 0){
Expand Down Expand Up @@ -47,7 +49,8 @@ public static function GetCurrentItem($p_timeNow){
//name. Else return the last item from the schedule.

$showInstance = ShowInstance::GetCurrentShowInstance($p_timeNow);
$row = Schedule::GetCurrentScheduleItem($p_timeNow);
$instanceId = $showInstance->getShowId();
$row = Schedule::GetCurrentScheduleItem($p_timeNow, $instanceId);

if (is_null($showInstance)){
if (count($row) == 0){
Expand All @@ -62,8 +65,8 @@ public static function GetCurrentItem($p_timeNow){
return array("name"=>$showInstance->getName(),
"starts"=>$showInstance->getShowStart(),
"ends"=>$showInstance->getShowEnd(),
"media_item_played"=>false, //TODO
"record"=>$showInstance->isRecorded()); //TODO
"media_item_played"=>false,
"record"=>$showInstance->isRecorded());
} else {
return array("name"=>$row[0]["artist_name"]." - ".$row[0]["track_title"],
"starts"=>$row[0]["starts"],
Expand All @@ -81,7 +84,8 @@ public static function GetNextItem($p_timeNow){
//name. Else return the last item from the schedule.

$showInstance = ShowInstance::GetNextShowInstance($p_timeNow);
$row = Schedule::GetNextScheduleItem($p_timeNow);
$instanceId = $showInstance->getShowId();
$row = Schedule::GetNextScheduleItem($p_timeNow, $instanceId);

if (is_null($showInstance)){
if (count($row) == 0){
Expand Down
17 changes: 14 additions & 3 deletions airtime_mvc/application/models/Schedule.php
Expand Up @@ -378,14 +378,15 @@ public static function GetPlayOrderRange($prev = 1, $next = 1)
"apiKey"=>$CC_CONFIG['apiKey'][0]);
}

public static function GetLastScheduleItem($p_timeNow){
public static function GetLastScheduleItem($p_timeNow, $p_instanceId){
global $CC_CONFIG, $CC_DBC;

$sql = "SELECT *"
." FROM $CC_CONFIG[scheduleTable] st"
." LEFT JOIN $CC_CONFIG[filesTable] ft"
." ON st.file_id = ft.id"
." WHERE st.ends < TIMESTAMP '$p_timeNow'"
." AND st.instance_id = $p_instanceId"
." ORDER BY st.ends DESC"
." LIMIT 1";

Expand All @@ -394,29 +395,39 @@ public static function GetLastScheduleItem($p_timeNow){
}


public static function GetCurrentScheduleItem($p_timeNow){
public static function GetCurrentScheduleItem($p_timeNow, $p_instanceId){
global $CC_CONFIG, $CC_DBC;

/* Note that usually there will be one result returned. In some
* rare cases two songs are returned. This happens when a track
* that was overbooked from a previous show appears as if it
* hasnt ended yet (track end time hasn't been reached yet). For
* this reason, we need to get the track that starts later, as
* this is the *real* track that is currently playing. So this
* is why we are ordering by track start time. */
$sql = "SELECT *"
." FROM $CC_CONFIG[scheduleTable] st"
." LEFT JOIN $CC_CONFIG[filesTable] ft"
." ON st.file_id = ft.id"
." WHERE st.starts <= TIMESTAMP '$p_timeNow'"
." AND st.instance_id = $p_instanceId"
." AND st.ends > TIMESTAMP '$p_timeNow'"
." ORDER BY st.starts DESC"
." LIMIT 1";

$row = $CC_DBC->GetAll($sql);
return $row;
}

public static function GetNextScheduleItem($p_timeNow){
public static function GetNextScheduleItem($p_timeNow, $p_instanceId){
global $CC_CONFIG, $CC_DBC;

$sql = "SELECT *"
." FROM $CC_CONFIG[scheduleTable] st"
." LEFT JOIN $CC_CONFIG[filesTable] ft"
." ON st.file_id = ft.id"
." WHERE st.starts > TIMESTAMP '$p_timeNow'"
." AND st.instance_id = $p_instanceId"
." ORDER BY st.starts"
." LIMIT 1";

Expand Down

0 comments on commit c9c9ecf

Please sign in to comment.