children(); } function fetchMapadoEvent($request) { $token = site()->mapadoToken(); $requestEndPoint = $request['requestEndPoint']; $requestParams = $request['requestParams']; $requestFields = $request['requestFields']; $url = "https://ticketing.mapado.net/v1/$requestEndPoint?"; $url .= buildParamsString($requestParams); $url .= buildFieldsString($requestFields); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Authorization: Bearer " . $token ]); $responseString = curl_exec($ch); curl_close($ch); $response = json_decode($responseString); return $response; } function fetchMapadoEvents($request) { $token = site()->mapadoToken(); $contractId = site()->mapadoContractId(); $requestEndPoint = $request['requestEndPoint']; $requestParams = $request['requestParams']; $requestFields = $request['requestFields']; $url = "https://ticketing.mapado.net/v1/$requestEndPoint?contract=$contractId&"; $url .= buildParamsString($requestParams); $url .= buildFieldsString($requestFields); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Authorization: Bearer " . $token ]); $responseString = curl_exec($ch); curl_close($ch); $responseJson = json_encode(json_decode($responseString)); return $responseJson; } function createMapadoEventRequest($page) { $request = [ "requestEndPoint" => "ticketings/" . $page->mapadoId()->value(), "requestParams" => [], "requestFields" => [ ["name" => "title"], ["name" => "address"], ["name" => "slug"], [ "name" => "eventDateList", "subfields" => [ ["name" => "startDate"], ["name" => "endDate"], ["name" => "bookableStock"] ] ], ] ]; return $request; } function saveMapadoEvent($mapadoEvent, $page) { $kirby = kirby(); $kirby->impersonate('kirby'); $duration = ''; $sessionsToSave = []; if ($mapadoEvent->{"@type"} === 'hydra:Error') { $error = null; if ($page->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 ' . $page->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, "bookableStock" => $session->bookableStock ]; } $dataToSave = [ "mapadoSlug" => $mapadoEvent->slug, "remoteDuration" => $duration, "remoteSessions" => $sessionsToSave, "eventDateId" => $eventDateId ]; $page->update($dataToSave); return $dataToSave; }