Documentatie bijgewerkt; Begonnen aan /programma/details
This commit is contained in:
@@ -10,7 +10,7 @@ ini_set('display_errors', true);
|
|||||||
class ProgramController extends Controller
|
class ProgramController extends Controller
|
||||||
{
|
{
|
||||||
private static $SCHEDULE_SQL = <<<QUERY
|
private static $SCHEDULE_SQL = <<<QUERY
|
||||||
SELECT `schedule`.`id`, `programs`.`longname`, `schedule`.`priority`,
|
SELECT `programs`.`id`, `programs`.`longname` AS `name`, `programs`.`description` AS `description`, `schedule`.`priority`,
|
||||||
`schedule`.`startdate`, `schedule`.`startday`, `schedule`.`starttime`,
|
`schedule`.`startdate`, `schedule`.`startday`, `schedule`.`starttime`,
|
||||||
`schedule`.`enddate`, `schedule`.`endday`, `schedule`.`endtime`
|
`schedule`.`enddate`, `schedule`.`endday`, `schedule`.`endtime`
|
||||||
FROM `programs_schedule` AS `schedule` LEFT JOIN `programs` ON `schedule`.`program` = `programs`.`id`
|
FROM `programs_schedule` AS `schedule` LEFT JOIN `programs` ON `schedule`.`program` = `programs`.`id`
|
||||||
@@ -31,6 +31,102 @@ QUERY;
|
|||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Details over een specifiek programma, inclusief schema en podcasts
|
||||||
|
*/
|
||||||
|
public function details($id) {
|
||||||
|
$programs = app('db')->select("SELECT `id`, `longname`, `description`, `email` FROM `programs` WHERE `id` = :id", ['id' => (int)$id]);
|
||||||
|
if(count($programs) != 1) {
|
||||||
|
return abort(404);
|
||||||
|
}
|
||||||
|
|
||||||
|
$program = $programs[0];
|
||||||
|
|
||||||
|
$hosts = app('db')->select("SELECT `programs_users`.`user` AS `id`, `medewerkers`.`adressering` AS `name`, `user_emailaddresses`.`email` AS `email`
|
||||||
|
FROM `programs_users`
|
||||||
|
LEFT JOIN `users` ON `programs_users`.`user` = `users`.`id`
|
||||||
|
LEFT JOIN `medewerkers` ON `users`.`medewerkersid` = `medewerkers`.`id`
|
||||||
|
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]);
|
||||||
|
foreach($hosts as $host) {
|
||||||
|
$program->hosts[] = new \Model\ProgramHost($host);
|
||||||
|
}
|
||||||
|
|
||||||
|
$schedule = app('db')->select(<<<QUERY
|
||||||
|
SELECT `schedule`.`startdate`, `schedule`.`startday`, `schedule`.`starttime`, `schedule`.`enddate`, `schedule`.`endday`, `schedule`.`endtime`
|
||||||
|
FROM `programs_schedule` AS `schedule`
|
||||||
|
WHERE (schedule.`program` = :program) AND (`schedule`.`active` = 1) AND (`schedule`.`final` = 1) AND
|
||||||
|
-- ((`schedule`.`startdate` IS NULL) OR (`schedule`.`startdate` < :enddate)) AND
|
||||||
|
-- ((`schedule`.`enddate` IS NULL) OR (`schedule`.`enddate` >= :startdate)) AND
|
||||||
|
1=1
|
||||||
|
ORDER BY `schedule`.`priority` DESC, MOD(`startday` + 6, 7) + 1, `schedule`.`starttime` ASC
|
||||||
|
QUERY
|
||||||
|
, ['program' => $program->id] );
|
||||||
|
$recentSchedule = $this->recent($schedule);
|
||||||
|
$program->schedule = $recentSchedule;
|
||||||
|
|
||||||
|
return response()->json($program);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function recent($schedule) {
|
||||||
|
$now = new \DateTimeImmutable();
|
||||||
|
$ONE_DAY = \DateInterval::createFromDateString('1 day');
|
||||||
|
$ONE_WEEK = \DateInterval::createFromDateString('1 week');
|
||||||
|
$recent = [];
|
||||||
|
$next = [];
|
||||||
|
|
||||||
|
// Vind voor elke regel in de uitzendmomenten de eerstvolgende en twee meest recente.
|
||||||
|
$isCurrent = false;
|
||||||
|
foreach($schedule as $broadcast) {
|
||||||
|
$startTijd = new \DateTimeImmutable($broadcast->starttime);
|
||||||
|
$endDate = ($broadcast->enddate == null) ? $now : new \DateTimeImmutable($broadcast->enddate);
|
||||||
|
$endDate = $endDate->setTime($startTijd->format('H'), $startTijd->format('i'), $startTijd->format('s'));
|
||||||
|
$endDateWeekday = $endDate->format('N');
|
||||||
|
|
||||||
|
// Zoek de laatste uitzending voor de einddatum (of voor het huidige tijdstip), op de juiste weekdag
|
||||||
|
while($endDateWeekday != $broadcast->startday) {
|
||||||
|
$endDate = $endDate->sub($ONE_DAY);
|
||||||
|
if(--$endDateWeekday < 0) { $endDateWeekday += 7; }
|
||||||
|
}
|
||||||
|
|
||||||
|
$eindTijd = new \DateTimeImmutable($broadcast->endtime);
|
||||||
|
$endOfBroadcast = $endDate->setTime($eindTijd->format('H'), $eindTijd->format('i'), $eindTijd->format('s'));
|
||||||
|
if($endOfBroadcast < $endDate) { $endOfBroadcast = $endOfBroadcast->add($ONE_DAY); }
|
||||||
|
|
||||||
|
if($isInProgress = (($endDate <= $now) && ($endOfBroadcast > $now))) {
|
||||||
|
$isCurrent = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Als de uitzending niet al afgelopen is, telt hij als volgende.
|
||||||
|
// Dit gebeurt als de uitzending later vandaag is of nu loopt.
|
||||||
|
if($endOfBroadcast >= $now) {
|
||||||
|
$next[] = $endDate;
|
||||||
|
$endDate = $endDate->sub($ONE_WEEK);
|
||||||
|
$endOfBroadcast = $endOfBroadcast->sub($ONE_WEEK);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(($broadcast->startdate == null) || ($broadcast->startdate <= $endDate)) {
|
||||||
|
$recent[] = $endDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
$previous = $endDate->sub($ONE_WEEK);
|
||||||
|
if(($broadcast->startdate == null) || ($broadcast->startdate <= $previous)) {
|
||||||
|
$recent[] = $previous;
|
||||||
|
}
|
||||||
|
|
||||||
|
$following = $endDate->add($ONE_WEEK);
|
||||||
|
if(($broadcast->enddate == null) || ($broadcast->enddate >= $following)) {
|
||||||
|
$next[] = $following;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sort($next);
|
||||||
|
rsort($recent);
|
||||||
|
return ['recent' => array_splice($recent, 0, 2), 'next' => array_splice($next, 0, 1), 'iscurrent' => $isCurrent];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Programmas nu en straks (24 uur vooruit)
|
* Programmas nu en straks (24 uur vooruit)
|
||||||
*/
|
*/
|
||||||
@@ -46,7 +142,8 @@ QUERY;
|
|||||||
* Programmaschema per week
|
* Programmaschema per week
|
||||||
*/
|
*/
|
||||||
public function schedule(Request $request, $weeksAhead = null) {
|
public function schedule(Request $request, $weeksAhead = null) {
|
||||||
if($weeksAhead <= 0) { $weeksAhead = 1; }
|
if($weeksAhead === null) { $weeksAhead = 1; }
|
||||||
|
else if($weeksAhead <= 0) { return abort(400); }
|
||||||
$start = new \DateTimeImmutable('Monday this week');
|
$start = new \DateTimeImmutable('Monday this week');
|
||||||
$einde = $start->add(\DateInterval::createFromDateString((int)$weeksAhead . ' weeks'));
|
$einde = $start->add(\DateInterval::createFromDateString((int)$weeksAhead . ' weeks'));
|
||||||
|
|
||||||
@@ -67,12 +164,15 @@ QUERY;
|
|||||||
|
|
||||||
|
|
||||||
$programmas = app('db')->select(self::$SCHEDULE_SQL,
|
$programmas = app('db')->select(self::$SCHEDULE_SQL,
|
||||||
['enddate' => $einde->format('Y-m-d'), 'startdate' => $start->format('Y-m-d')]);
|
['enddate' => $einde->format('Y-m-d'), 'startdate' => $start->format('Y-m-d')]);
|
||||||
|
$programmaInfo = [];
|
||||||
|
|
||||||
// Maak een lijstje van alle start en eindtijden en welk programma dan begint/eindigt
|
// Maak een lijstje van alle start en eindtijden en welk programma dan begint/eindigt
|
||||||
$startEinde = [];
|
$startEinde = [];
|
||||||
$startMaandag = $start->modify('Monday this week');
|
$startMaandag = $start->modify('Monday this week');
|
||||||
foreach($programmas as $programma) {
|
foreach($programmas as $programma) {
|
||||||
|
$programmaInfo[$programma->id] = new \Model\Program($programma);
|
||||||
|
|
||||||
$programmaStart = $startMaandag->add(\DateInterval::createFromDateString(($programma->startday - 1) % 7 . ' days'));
|
$programmaStart = $startMaandag->add(\DateInterval::createFromDateString(($programma->startday - 1) % 7 . ' days'));
|
||||||
$programmaEinde = $startMaandag->add(\DateInterval::createFromDateString(($programma->endday - 1) % 7 . ' days'));
|
$programmaEinde = $startMaandag->add(\DateInterval::createFromDateString(($programma->endday - 1) % 7 . ' days'));
|
||||||
|
|
||||||
@@ -120,24 +220,24 @@ QUERY;
|
|||||||
|
|
||||||
if($programmaWissel[PW_TYPE] == PROGRAMMA_START) {
|
if($programmaWissel[PW_TYPE] == PROGRAMMA_START) {
|
||||||
if($actieveProgrammas[$programma->priority] != null) {
|
if($actieveProgrammas[$programma->priority] != null) {
|
||||||
$fouten[] = [$tijdstip, "Begin van {$programma->longname} maar {$actieveProgrammas[$programma->priority]->longname} is nog actief."];
|
$fouten[] = [$tijdstip, "Begin van {$programma->name} maar {$actieveProgrammas[$programma->priority]->name} is nog actief."];
|
||||||
}
|
}
|
||||||
|
|
||||||
$actieveProgrammas[$programma->priority] = $programma;
|
$actieveProgrammas[$programma->priority] = $programma;
|
||||||
for($prio = $programma->priority; $prio >= 0; --$prio) {
|
for($prio = $programma->priority; $prio >= 0; --$prio) {
|
||||||
if($actieveProgrammas[$prio] != null) {
|
if($actieveProgrammas[$prio] != null) {
|
||||||
if(($index == -1) || ($schema[$index]['tijdstip'] != $tijdstip)) { $index++; }
|
if(($index == -1) || ($schema[$index]['time'] != $tijdstip)) { $index++; }
|
||||||
$schema[$index] = ['tijdstip' => $tijdstip, 'programma' => $actieveProgrammas[$prio]];
|
$schema[$index] = ['time' => $tijdstip, 'program' => $programmaInfo[$actieveProgrammas[$prio]->id]];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else /*if($programmaWissel[PW_TYPE] == PROGRAMMA_EINDE)*/ {
|
} else /*if($programmaWissel[PW_TYPE] == PROGRAMMA_EINDE)*/ {
|
||||||
$actieveProgrammas[$programma->priority] = null;
|
$actieveProgrammas[$programma->priority] = null;
|
||||||
if(($index == -1) || ($schema[$index]['programma'] != null)) { $index++; }
|
if(($index == -1) || ($schema[$index]['program'] != null)) { $index++; }
|
||||||
$schema[$index] = ['tijdstip' => $tijdstip, 'programma' => null];
|
$schema[$index] = ['time' => $tijdstip, 'program' => null];
|
||||||
for($prio = $programma->priority; $prio < count($actieveProgrammas); ++$prio) {
|
for($prio = $programma->priority; $prio < count($actieveProgrammas); ++$prio) {
|
||||||
if($actieveProgrammas[$prio] != null) {
|
if($actieveProgrammas[$prio] != null) {
|
||||||
$schema[$index] = ['tijdstip' => $tijdstip, 'programma' => $actieveProgrammas[$prio]];
|
$schema[$index] = ['time' => $tijdstip, 'program' => $programmaInfo[$actieveProgrammas[$prio]->id]];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -146,12 +246,12 @@ QUERY;
|
|||||||
|
|
||||||
if(false) {
|
if(false) {
|
||||||
for($i = 1; $i <= count($schema); $i++) {
|
for($i = 1; $i <= count($schema); $i++) {
|
||||||
$eindTijd = ($i == count($schema)) ? $einde : $schema[$i]['tijdstip'];
|
$eindTijd = ($i == count($schema)) ? $einde : $schema[$i]['time'];
|
||||||
$programma = $schema[$i-1]['programma'];
|
$programma = $schema[$i-1]['program'];
|
||||||
print $schema[$i-1]['tijdstip']->format('D d-m-Y, H:i:s') . " - " . $eindTijd->format('D d-m-Y, H:i:s') . ": " . ($programma != null ? $programma->longname : "NULL") . "\n";
|
print $schema[$i-1]['time']->format('D d-m-Y, H:i:s') . " - " . $eindTijd->format('D d-m-Y, H:i:s') . ": " . ($programma != null ? $programma->name : "NULL") . "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ['startdate' => $start, 'enddate' => $einde, 'schema' => $schema, 'fouten' => $fouten];
|
return ['startdate' => $start, 'enddate' => $einde, 'schedule' => $schema, 'errors' => $fouten];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ paths:
|
|||||||
200:
|
200:
|
||||||
description: 'Success'
|
description: 'Success'
|
||||||
schema:
|
schema:
|
||||||
type: 'object'
|
type: object
|
||||||
properties:
|
properties:
|
||||||
page:
|
page:
|
||||||
type: integer
|
type: integer
|
||||||
@@ -150,14 +150,14 @@ paths:
|
|||||||
200:
|
200:
|
||||||
description: 'Success'
|
description: 'Success'
|
||||||
schema:
|
schema:
|
||||||
type: 'object'
|
type: object
|
||||||
properties:
|
properties:
|
||||||
items:
|
items:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
$ref: '#/definitions/AgendaItem'
|
$ref: '#/definitions/AgendaItem'
|
||||||
days:
|
days:
|
||||||
type: 'object'
|
type: object
|
||||||
description: 'Eigenschapnamen zijn datum binnen gegeven maand in yyyy-mm-dd formaat'
|
description: 'Eigenschapnamen zijn datum binnen gegeven maand in yyyy-mm-dd formaat'
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: array
|
type: array
|
||||||
@@ -194,14 +194,14 @@ paths:
|
|||||||
200:
|
200:
|
||||||
description: 'Success'
|
description: 'Success'
|
||||||
schema:
|
schema:
|
||||||
type: 'object'
|
type: object
|
||||||
properties:
|
properties:
|
||||||
items:
|
items:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
$ref: '#/definitions/AgendaItem'
|
$ref: '#/definitions/AgendaItem'
|
||||||
days:
|
days:
|
||||||
type: 'object'
|
type: object
|
||||||
description: 'Eigenschapnamen zijn datum binnen gegeven maand in yyyy-mm-dd formaat'
|
description: 'Eigenschapnamen zijn datum binnen gegeven maand in yyyy-mm-dd formaat'
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: array
|
type: array
|
||||||
@@ -258,7 +258,7 @@ paths:
|
|||||||
200:
|
200:
|
||||||
description: 'Success'
|
description: 'Success'
|
||||||
schema:
|
schema:
|
||||||
type: 'object'
|
type: object
|
||||||
properties:
|
properties:
|
||||||
page:
|
page:
|
||||||
type: integer
|
type: integer
|
||||||
@@ -327,6 +327,103 @@ paths:
|
|||||||
404:
|
404:
|
||||||
description: 'Podcast ID of authorisatiesleutel is ongeldig'
|
description: 'Podcast ID of authorisatiesleutel is ongeldig'
|
||||||
|
|
||||||
|
'/programma/schema/nustraks':
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- 'programma'
|
||||||
|
summary: 'Programmas nu en straks'
|
||||||
|
description: 'Geeft een overzicht van de programmas in de komende 24 tot 48 uur. Let op: van de programmas zijn de podcasts en het uitzendschema niet ingevuld.'
|
||||||
|
responses:
|
||||||
|
200:
|
||||||
|
description: 'Success'
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
startdate:
|
||||||
|
$ref: '#/definitions/DateTime'
|
||||||
|
enddate:
|
||||||
|
$ref: '#/definitions/DateTime'
|
||||||
|
schedule:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
time:
|
||||||
|
$ref: '#/definitions/DateTime'
|
||||||
|
program:
|
||||||
|
$ref: '#/definitions/Program'
|
||||||
|
errors:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
'/programma/schema/week':
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- 'programma'
|
||||||
|
summary: 'Programmaschema van de huidige week'
|
||||||
|
description: 'Geeft een overzicht van de programmas in de huidige week. De week begint op maandag.'
|
||||||
|
responses:
|
||||||
|
200:
|
||||||
|
description: 'Success'
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
startdate:
|
||||||
|
$ref: '#/definitions/DateTime'
|
||||||
|
enddate:
|
||||||
|
$ref: '#/definitions/DateTime'
|
||||||
|
schedule:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
time:
|
||||||
|
$ref: '#/definitions/DateTime'
|
||||||
|
program:
|
||||||
|
$ref: '#/definitions/Program'
|
||||||
|
errors:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
'/programma/schema/week/{weken}':
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- 'programma'
|
||||||
|
summary: 'Programmaschema van de huidige week en één of meer weken vooruit'
|
||||||
|
description: 'Geeft een overzicht van de programmas voor een aantal weken vooruit, beginnend op maandag van de huidige week.'
|
||||||
|
parameters:
|
||||||
|
- name: weken
|
||||||
|
in: path
|
||||||
|
description: 'Het aantal op te vragen weken'
|
||||||
|
required: true
|
||||||
|
type: integer
|
||||||
|
responses:
|
||||||
|
400:
|
||||||
|
description: 'Parameter ''weken'' heeft geen geldige waarde.'
|
||||||
|
200:
|
||||||
|
description: 'Success'
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
startdate:
|
||||||
|
$ref: '#/definitions/DateTime'
|
||||||
|
enddate:
|
||||||
|
$ref: '#/definitions/DateTime'
|
||||||
|
schedule:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
time:
|
||||||
|
$ref: '#/definitions/DateTime'
|
||||||
|
program:
|
||||||
|
$ref: '#/definitions/Program'
|
||||||
|
errors:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
|
||||||
#securityDefinitions:
|
#securityDefinitions:
|
||||||
#petstore_auth:
|
#petstore_auth:
|
||||||
@@ -342,7 +439,7 @@ paths:
|
|||||||
# in: 'header'
|
# in: 'header'
|
||||||
definitions:
|
definitions:
|
||||||
DateTime:
|
DateTime:
|
||||||
type: 'object'
|
type: object
|
||||||
properties:
|
properties:
|
||||||
date:
|
date:
|
||||||
type: string
|
type: string
|
||||||
@@ -355,7 +452,7 @@ definitions:
|
|||||||
type: string
|
type: string
|
||||||
example: 'Europe/Amsterdam'
|
example: 'Europe/Amsterdam'
|
||||||
NewsSource:
|
NewsSource:
|
||||||
type: 'object'
|
type: object
|
||||||
properties:
|
properties:
|
||||||
title:
|
title:
|
||||||
type: string
|
type: string
|
||||||
@@ -364,7 +461,7 @@ definitions:
|
|||||||
show:
|
show:
|
||||||
type: 'boolean'
|
type: 'boolean'
|
||||||
NewsImage:
|
NewsImage:
|
||||||
type: 'object'
|
type: object
|
||||||
properties:
|
properties:
|
||||||
id:
|
id:
|
||||||
type: integer
|
type: integer
|
||||||
@@ -374,7 +471,7 @@ definitions:
|
|||||||
type: string
|
type: string
|
||||||
|
|
||||||
NewsItem:
|
NewsItem:
|
||||||
type: 'object'
|
type: object
|
||||||
properties:
|
properties:
|
||||||
id:
|
id:
|
||||||
type: integer
|
type: integer
|
||||||
@@ -410,7 +507,7 @@ definitions:
|
|||||||
type: string
|
type: string
|
||||||
|
|
||||||
AgendaItem:
|
AgendaItem:
|
||||||
type: 'object'
|
type: object
|
||||||
properties:
|
properties:
|
||||||
id:
|
id:
|
||||||
type: integer
|
type: integer
|
||||||
@@ -432,7 +529,7 @@ definitions:
|
|||||||
type: string
|
type: string
|
||||||
|
|
||||||
Podcast:
|
Podcast:
|
||||||
type: 'object'
|
type: object
|
||||||
properties:
|
properties:
|
||||||
id:
|
id:
|
||||||
type: integer
|
type: integer
|
||||||
@@ -450,7 +547,7 @@ definitions:
|
|||||||
description: 'Link om de podcast als MP3 te streamen of te downloaden. Voeg hiervoor /podcast/stream/ of /podcast/download/ toe voor de url, bijvoorbeeld: /podcast/stream/213723/6fm-podcast-titel-slug?auth=15ff823563323fe3342812937b4013984218'
|
description: 'Link om de podcast als MP3 te streamen of te downloaden. Voeg hiervoor /podcast/stream/ of /podcast/download/ toe voor de url, bijvoorbeeld: /podcast/stream/213723/6fm-podcast-titel-slug?auth=15ff823563323fe3342812937b4013984218'
|
||||||
|
|
||||||
Program:
|
Program:
|
||||||
type: 'object'
|
type: object
|
||||||
properties:
|
properties:
|
||||||
id:
|
id:
|
||||||
type: integer
|
type: integer
|
||||||
@@ -458,23 +555,35 @@ definitions:
|
|||||||
type: string
|
type: string
|
||||||
description:
|
description:
|
||||||
type: string
|
type: string
|
||||||
|
email:
|
||||||
|
type: string
|
||||||
|
description: 'Het (hoofd)mailadres van het programma, zonder @6fm.nl'
|
||||||
|
example: 'vroegeroflater'
|
||||||
hosts:
|
hosts:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
type: string # Voor nu
|
$ref: '#/definitions/ProgramHost'
|
||||||
description: 'NOT IMPLEMENTED YET!'
|
|
||||||
required: false
|
required: false
|
||||||
schedule:
|
listenagain:
|
||||||
type: array
|
type: array
|
||||||
description: 'NOT IMPLEMENTED YET!'
|
description: 'NOT IMPLEMENTED YET!'
|
||||||
required: false
|
required: false
|
||||||
podcasts:
|
next:
|
||||||
type: array
|
type: string
|
||||||
items:
|
description: 'NOT IMPLEMENTED YET!'
|
||||||
$ref: '#/definitions/Podcast'
|
|
||||||
description: 'Podcasts in deze lijst hebben geen {programma} ingevuld.'
|
|
||||||
required: false
|
required: false
|
||||||
|
|
||||||
|
ProgramHost:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
email:
|
||||||
|
type: string
|
||||||
|
description: 'Het (hoofd)mailadres van de gebruiker, zonder @6fm.nl. (Verwacht maximaal één adres met preference 0).'
|
||||||
|
|
||||||
#externalDocs:
|
#externalDocs:
|
||||||
# description: 'Find out more about Swagger'
|
# description: 'Find out more about Swagger'
|
||||||
# url: 'http://swagger.io'
|
# url: 'http://swagger.io'
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ $app->get('podcast/stream/{id:\d+}/[{title}]', 'PodcastController@stream' );
|
|||||||
|
|
||||||
$app->get('programma/schema/nustraks', 'ProgramController@comingup' );
|
$app->get('programma/schema/nustraks', 'ProgramController@comingup' );
|
||||||
$app->get('programma/schema/week[/{weeksAhead:\d+}]', 'ProgramController@schedule' );
|
$app->get('programma/schema/week[/{weeksAhead:\d+}]', 'ProgramController@schedule' );
|
||||||
// programma/details/{id:\d+}
|
$app->get('/programma/details/{id:\d+}', 'ProgramController@details' );
|
||||||
|
|
||||||
// live/onair
|
// live/onair
|
||||||
// live/stream
|
// live/stream
|
||||||
|
|||||||
@@ -6,13 +6,15 @@ class Program extends Model {
|
|||||||
public $id;
|
public $id;
|
||||||
public $name;
|
public $name;
|
||||||
public $description;
|
public $description;
|
||||||
|
public $email;
|
||||||
|
|
||||||
// TODO: Implementeren
|
// TODO: Implementeren
|
||||||
public $hosts;
|
public $hosts;
|
||||||
public $schedule;
|
public $schedule;
|
||||||
public $podcasts;
|
|
||||||
|
|
||||||
public function __construct($data) {
|
public function __construct($data) {
|
||||||
parent::__construct($data);
|
parent::__construct($data);
|
||||||
|
|
||||||
|
$this->email = explode(',', $data->email);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
10
common/classes/ProgramHost.php
Normal file
10
common/classes/ProgramHost.php
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Model;
|
||||||
|
|
||||||
|
class ProgramHost extends Model {
|
||||||
|
public $id;
|
||||||
|
public $name;
|
||||||
|
public $email;
|
||||||
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user