67 lines
No EOL
1.9 KiB
PHP
67 lines
No EOL
1.9 KiB
PHP
<?php
|
|
|
|
return function($newPage, $oldPage) {
|
|
if ($newPage->isMapadoEvent() != 'true') return;
|
|
$request = [
|
|
"requestEndPoint" => "ticketings/" . $newPage->mapadoId()->value(),
|
|
"requestParams" => [],
|
|
"requestFields" => [
|
|
["name" => "title"],
|
|
["name" => "address"],
|
|
["name" => "slug"],
|
|
[
|
|
"name" => "eventDateList",
|
|
"subfields" => [
|
|
["name" => "startDate"],
|
|
["name" => "endDate"],
|
|
["name" => "bookableStock"]
|
|
]
|
|
],
|
|
]
|
|
];
|
|
|
|
$mapadoEvent = fetchMapadoEvent($request);
|
|
$duration = null;
|
|
$sessionsToSave = [];
|
|
|
|
if ($mapadoEvent->{"@type"} === 'hydra:Error') {
|
|
|
|
$error = null;
|
|
if ($newPage->mapadoId()->isEmpty()) {
|
|
$error = 'Entrez l\'identifiant de l\'événement Mapado dans l\'onglet "Réglages".';
|
|
} else {
|
|
$error = 'Aucun événement Mapado ne correspond à l\'identifiant ' . $newPage->mapado()->value() . '. En êtes-vous sûr•e ?';
|
|
}
|
|
|
|
throw new Exception($error, 1);
|
|
}
|
|
|
|
|
|
foreach ($mapadoEvent->eventDateList as $session) {
|
|
|
|
$sessionMonth = substr($session->startDate, 0, 7);
|
|
|
|
$day = intval(substr($session->startDate, 8, 2));
|
|
$startTime = substr($session->startDate, 11, 5);
|
|
$eventDateId = explode('/', $session->{'@id'});
|
|
$eventDateId = $eventDateId[count($eventDateId) - 1];
|
|
$ticketingUrl = option('ticketingUrl') . 'event/' . $mapadoEvent->slug . '?eventDate=' . $eventDateId;
|
|
|
|
if (isset($session->endDate) && !$duration) {
|
|
$endTime = substr($session->endDate, 11 , 5);
|
|
$duration = getTimeDifference($startTime, $endTime);
|
|
}
|
|
|
|
$sessionsToSave[] = [
|
|
"date" => substr($session->startDate, 0, 10),
|
|
"time" => str_replace(':', 'h', $startTime),
|
|
'ticketingUrl' => $ticketingUrl
|
|
];
|
|
}
|
|
|
|
$newPage->update([
|
|
"mapadoSlug" => $mapadoEvent->slug,
|
|
"remoteDuration" => $duration,
|
|
"remoteSessions" => $sessionsToSave
|
|
]);
|
|
}; |