diff options
Diffstat (limited to 'includes/admin/views/giglog_import_gigs.php')
-rw-r--r-- | includes/admin/views/giglog_import_gigs.php | 96 |
1 files changed, 45 insertions, 51 deletions
diff --git a/includes/admin/views/giglog_import_gigs.php b/includes/admin/views/giglog_import_gigs.php index c6b6a56..505e4bd 100644 --- a/includes/admin/views/giglog_import_gigs.php +++ b/includes/admin/views/giglog_import_gigs.php @@ -5,7 +5,7 @@ // // SPDX-License-Identifier: AGPL-3.0-or-later -if ( !class_exists( 'GiglogAdmin_ImportGigsPage' ) ) { +if ( ! class_exists( 'GiglogAdmin_ImportGigsPage' ) ) { require_once __DIR__ . '/../../concert.php'; require_once __DIR__ . '/../../venue.php'; @@ -15,7 +15,7 @@ if ( !class_exists( 'GiglogAdmin_ImportGigsPage' ) ) { <div class="wrap"> <h1>Import gigs</h1> <p>Import gig data from a tab separated data file.</p> - <form action="<?php menu_page_url( 'giglog_import' ) ?>" enctype="multipart/form-data" method="post"> + <form action="<?php menu_page_url( 'giglog_import' ); ?>" enctype="multipart/form-data" method="post"> <?php wp_nonce_field( plugin_basename( __FILE__ ), 'giglog_import_nonce' ); ?> <label for="giglog_import_file">File: </label> <input type="file" name="giglog_import_file" id="giglog_import_file"> @@ -26,13 +26,12 @@ if ( !class_exists( 'GiglogAdmin_ImportGigsPage' ) ) { } static function submit_form(): void { - if ('POST' === $_SERVER['REQUEST_METHOD'] && current_user_can('upload_files') && !empty($_FILES['giglog_import_file']['tmp_name'])) { - if (isset($_POST['giglog_import_nonce']) && wp_verify_nonce($_POST['giglog_import_nonce'], plugin_basename( __FILE__ )) ) { - GiglogAdmin_ImportGigsPage::process_upload($_FILES['giglog_import_file']); - } - else { - header("{$_SERVER['SERVER_PROTOCOL']} 403 Forbidden"); - wp_die('CSRF validation failed.', 403); + if ( 'POST' === $_SERVER['REQUEST_METHOD'] && current_user_can( 'upload_files' ) && ! empty( $_FILES['giglog_import_file']['tmp_name'] ) ) { + if ( isset( $_POST['giglog_import_nonce'] ) && wp_verify_nonce( $_POST['giglog_import_nonce'], plugin_basename( __FILE__ ) ) ) { + self::process_upload( $_FILES['giglog_import_file'] ); + } else { + header( "{$_SERVER['SERVER_PROTOCOL']} 403 Forbidden" ); + wp_die( 'CSRF validation failed.', 403 ); } } } @@ -55,85 +54,80 @@ if ( !class_exists( 'GiglogAdmin_ImportGigsPage' ) ) { * * @param array<int, mixed> $file */ - static function process_upload(array $file): void - { - $fo = new SplFileObject($file['tmp_name']); - $importerrors = []; - $rid=0; + static function process_upload( array $file ): void { + $fo = new SplFileObject( $file['tmp_name'] ); + $importerrors = array(); + $rid = 0; - foreach ($fo as $line) { + foreach ( $fo as $line ) { $rid++; $line = trim( $line ); - if ( !empty($line) ) { + if ( ! empty( $line ) ) { try { self::process_line( $line ); - } - catch (Exception $e) { + } catch ( Exception $e ) { $importerrors[] = "Error importing line {$rid}: {$e->getMessage()}"; } } } - if (!empty($importerrors)) { - echo implode("<br>", $importerrors); - } - else { - echo ('All rows imported ok'); + if ( ! empty( $importerrors ) ) { + echo implode( '<br>', $importerrors ); + } else { + echo ( 'All rows imported ok' ); } } - static function process_line( string $line ) : void - { - $resultArray = explode("\t", $line); + 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 ( 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 ( ! 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[0] ) ) ) { + throw new Exception( 'missing concert name' ); } - if (empty(trim($resultArray[1]))) { - throw new Exception("missing venue"); + if ( empty( trim( $resultArray[1] ) ) ) { + throw new Exception( 'missing venue' ); } - if (empty(trim($resultArray[2]))) { - throw new Exception("missing city"); + if ( empty( trim( $resultArray[2] ) ) ) { + throw new Exception( 'missing city' ); } - $condate = date('Y-m-d', strtotime($resultArray[3])); + $condate = date( 'Y-m-d', strtotime( $resultArray[3] ) ); - if ($condate<date("Y-m-d")) { - throw new Exception("has date in the past: " . esc_html($resultArray[3])); + if ( $condate < date( 'Y-m-d' ) ) { + throw new Exception( 'has date in the past: ' . esc_html( $resultArray[3] ) ); } - $cname = trim($resultArray[0]); - $venue = trim($resultArray[1]); + $cname = trim( $resultArray[0] ); + $venue = trim( $resultArray[1] ); - if (is_numeric($venue)) { - $venue = GiglogAdmin_Venue::get(intval($venue)); - if (!$venue) { - throw new Exception("invalid venue id: {$venue}"); + if ( is_numeric( $venue ) ) { + $venue = GiglogAdmin_Venue::get( intval( $venue ) ); + if ( ! $venue ) { + throw new Exception( "invalid venue id: {$venue}" ); } - } - else { - $venue = GiglogAdmin_Venue::find_or_create($venue,trim($resultArray[2])); + } else { + $venue = GiglogAdmin_Venue::find_or_create( $venue, trim( $resultArray[2] ) ); } - $ticketlink = trim($resultArray[4]); - $eventlink = trim($resultArray[5]); + $ticketlink = trim( $resultArray[4] ); + $eventlink = trim( $resultArray[5] ); - GiglogAdmin_Concert::create($cname, $venue->id(), $condate, $ticketlink, $eventlink); + GiglogAdmin_Concert::create( $cname, $venue->id(), $condate, $ticketlink, $eventlink ); } } } |