// SPDX-FileCopyrightText: 2021 Harald Eilertsen // // SPDX-License-Identifier: AGPL-3.0-or-later if ( !class_exists( 'GiglogAdmin_ImportGigsPage' ) ) { require_once __DIR__ . '/../../concert.php'; require_once __DIR__ . '/../../venue.php'; class GiglogAdmin_ImportGigsPage { static function render_html(): void { ?>

Import gigs

Import gig data from a tab separated data file.

$file */ static function process_upload(array $file): void { $fo = new SplFileObject($file['tmp_name']); $importerrors = []; $rid=0; foreach ($fo as $line) { $rid++; $line = trim( $line ); if ( !empty($line) ) { try { self::process_line( $line ); } catch (Exception $e) { $importerrors[] = "Error importing line {$rid}: {$e->getMessage()}"; } } } if (!empty($importerrors)) { echo implode("
", $importerrors); } else { echo ('All rows imported ok'); } } static function process_line( string $line ) : void { $resultArray = explode("\t", $line); // unsure if this is needed, considering we are also checking if // each individual important field is missing. But if they are not // replaced by tabs, then everything gets shifted so probably best // to check if a value is empty and NOT replaced by tab if (count($resultArray) < 6) { throw new Exception("missing a field"); } if (! preg_match("/\d{4}\-\d{2}-\d{2}/",$resultArray[3])) { throw new Exception("invalid date: " . esc_html($resultArray[3])); } if (empty(trim($resultArray[0]))) { throw new Exception("missing concert name"); } if (empty(trim($resultArray[1]))) { throw new Exception("missing venue"); } if (empty(trim($resultArray[2]))) { throw new Exception("missing city"); } $condate = date('Y-m-d', strtotime($resultArray[3])); if ($condateid(), $condate, $ticketlink, $eventlink); } } }