diff --git a/api/app/Http/Controllers/ProgramController.php b/api/app/Http/Controllers/ProgramController.php index 18612c0..3fd535b 100644 --- a/api/app/Http/Controllers/ProgramController.php +++ b/api/app/Http/Controllers/ProgramController.php @@ -10,7 +10,7 @@ ini_set('display_errors', true); class ProgramController extends Controller { private static $SCHEDULE_SQL = << $program->id]); + AND `programs_users`.`active` = 1 + ORDER BY `name`", ['program' => $program->id]); foreach($hosts as $host) { $program->hosts[] = new \Model\ProgramHost($host); } @@ -129,7 +130,7 @@ QUERY sort($next); rsort($recent); - return ['recent' => array_reverse(array_splice($recent, 0, 2)), 'next' => $next, 'iscurrent' => $isCurrent]; + return ['recent' => array_reverse(array_splice($recent, 0, 2)), 'next' => count($next) ? $next[0] : null, 'iscurrent' => $isCurrent]; } /** @@ -174,7 +175,7 @@ QUERY $startMaandag = $start->modify('Monday this week'); foreach($programmas as $programma) { if($programma->suffix) $programma->name .= ' ' . $programma->suffix; - $programmaInfo[$programma->id] = new \Model\Program($programma); + $programmaInfo[$programma->scheduleid] = new \Model\Program($programma); $programmaStart = $startMaandag->add(\DateInterval::createFromDateString(($programma->startday - 1) % 7 . ' days')); $programmaEinde = $startMaandag->add(\DateInterval::createFromDateString(($programma->endday - 1) % 7 . ' days')); @@ -199,8 +200,8 @@ QUERY && (($programma->enddate == null) || ($programmaStart <= (new \DateTimeImmutable($programma->enddate))->setTime(23,59,59))) && (($programmaEinde >= $start) && ($programmaStart <= $einde))) { - $startEinde[] = [$programmaStart, PROGRAMMA_START, $programma]; - $startEinde[] = [$programmaEinde, PROGRAMMA_EINDE, $programma]; + $startEinde[] = [$programmaStart, PROGRAMMA_START, $programma->scheduleid]; + $startEinde[] = [$programmaEinde, PROGRAMMA_EINDE, $programma->scheduleid]; } $programmaStart = $programmaStart->add($oneWeek); @@ -215,7 +216,8 @@ QUERY $fouten = []; $index = -1; foreach($startEinde as $programmaWissel) { - $programma = $programmaWissel[PW_PROGRAMMA]; + $scheduleId = $programmaWissel[PW_PROGRAMMA]; + $programma = $programmaInfo[$scheduleId]; $tijdstip = $programmaWissel[PW_TIJDSTIP]; if($programmaWissel[PW_TIJDSTIP] < $start) { $tijdstip = $start; } if($programmaWissel[PW_TIJDSTIP] > $einde) { $tijdstip = $einde; } @@ -226,11 +228,11 @@ QUERY $fouten[] = [$tijdstip, "Begin van {$programma->name} maar {$actieveProgrammas[$programma->priority]->name} is nog actief."]; } - $actieveProgrammas[$programma->priority] = $programma; + $actieveProgrammas[$programma->priority] = $scheduleId; for($prio = $programma->priority; $prio >= 0; --$prio) { if($actieveProgrammas[$prio] != null) { if(($index == -1) || ($schema[$index]['starttime'] != $tijdstip)) { $index++; } - $schema[$index] = ['starttime' => $tijdstip, 'endtime' => null, 'program' => $programmaInfo[$actieveProgrammas[$prio]->id]]; + $schema[$index] = ['starttime' => $tijdstip, 'endtime' => null, 'program' => $programmaInfo[$actieveProgrammas[$prio]]]; break; } } @@ -240,7 +242,7 @@ QUERY $schema[$index] = ['starttime' => $tijdstip, 'program' => null]; for($prio = $programma->priority; $prio < count($actieveProgrammas); ++$prio) { if($actieveProgrammas[$prio] != null) { - $schema[$index] = ['starttime' => $tijdstip, 'endtime' => null, 'program' => $programmaInfo[$actieveProgrammas[$prio]->id]]; + $schema[$index] = ['starttime' => $tijdstip, 'endtime' => null, 'program' => $programmaInfo[$actieveProgrammas[$prio]]]; break; } } diff --git a/common/classes/Program.php b/common/classes/Program.php index 7230bd8..8953bd8 100644 --- a/common/classes/Program.php +++ b/common/classes/Program.php @@ -7,7 +7,7 @@ class Program extends Model { public $name; public $description; public $email; - public $isSpecial; + public $priority; // TODO: Implementeren public $hosts; @@ -15,9 +15,14 @@ class Program extends Model { public function __construct($data) { parent::__construct($data); + if($this->schedule && $this->schedule->next && $this->schedule->next->time) { + parent::ConvertToDateTime($this->schedule->next->time); + } - if(!isset($data->isSpecial) && isset($data->priority)) { - $this->isSpecial = ($data->priority < 2); + if($this->schedule && $this->schedule->recent) { + foreach($this->schedule->recent as &$recent) { + parent::ConvertToDateTime($recent->time); + } } if(($mailComma = strpos($data->email, ',')) !== false) {