Program ID instead of Schedule ID, convert next and recent to DateTime
This commit is contained in:
@@ -10,7 +10,7 @@ ini_set('display_errors', true);
|
||||
class ProgramController extends Controller
|
||||
{
|
||||
private static $SCHEDULE_SQL = <<<QUERY
|
||||
SELECT `schedule`.`id`, `programs`.`longname` AS `name`, `programs`.`description` AS `description`, `programs`.`email`, `schedule`.`priority`,
|
||||
SELECT `schedule`.`id` AS `scheduleid`, `programs`.`id` AS `id`, `programs`.`longname` AS `name`, `programs`.`description` AS `description`, `programs`.`email`, `schedule`.`priority`,
|
||||
`schedule`.`startdate`, `schedule`.`startday`, `schedule`.`starttime`,
|
||||
`schedule`.`enddate`, `schedule`.`endday`, `schedule`.`endtime`, `schedule`.`shortnamesuffix` AS `suffix`
|
||||
FROM `programs_schedule` AS `schedule` LEFT JOIN `programs` ON `schedule`.`program` = `programs`.`id`
|
||||
@@ -49,7 +49,8 @@ QUERY;
|
||||
LEFT JOIN `user_emailaddresses` ON `user_emailaddresses`.`user` = `users`.`id`
|
||||
WHERE `programs_users`.`program` = :program
|
||||
AND `user_emailaddresses`.`preference` = 0
|
||||
AND `programs_users`.`active` = 1", ['program' => $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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user