diff options
Diffstat (limited to 'includes/admin/views/giglog_import_gigs.php')
-rw-r--r-- | includes/admin/views/giglog_import_gigs.php | 102 |
1 files changed, 72 insertions, 30 deletions
diff --git a/includes/admin/views/giglog_import_gigs.php b/includes/admin/views/giglog_import_gigs.php index 1a72fe1..e523dee 100644 --- a/includes/admin/views/giglog_import_gigs.php +++ b/includes/admin/views/giglog_import_gigs.php @@ -38,51 +38,93 @@ if ( !class_exists( 'GiglogAdmin_ImportGigsPage' ) ) { } /** - * Imports concert data from a file with tab separated values. - * - * The file must contain the following columns each separated by _one_ - * tab character: - * - * 1. Concertname - * 2. Venuename or numeric venue id - * 3. Concert date - * 4. Ticket link - * 5. Event info link - * - * Empty lines are ignored. - * - * @return void - * - * @param array<int, mixed> - */ + * Imports concert data from a file with tab separated values. + * + * The file must contain the following columns each separated by _one_ + * tab character: + * + * 1. Concertname + * 2. Venuename or numeric venue id + * 3. Concert date + * 4. Ticket link + * 5. Event info link + * + * Empty lines are ignored. + * + * @return void + * + * @param array<int, mixed> + */ static function process_upload(array $file): void { + global $wpdb; $newconcert= []; $fo = new SplFileObject($file['tmp_name']); - + $importerrors = ''; + $rid=0; foreach ($fo as $line) { + $rid++; $line = trim( $line ); if ( empty($line) ) { // Skip empty lines continue; } - $resultArray = explode("\t", $line); - $cname = trim($resultArray[0]); - $venue = trim($resultArray[1]); + if (empty(trim($resultArray[0]))) + { $importerrors.= 'Row '.$rid.' is missing concert name!'."<br>"; + continue; + } + else if (empty(trim($resultArray[1]))) + { $importerrors.= 'Row '.$rid.' is missing venue name!'."<br>"; + continue; + } - if (is_numeric($venue)) { - $venue = GiglogAdmin_Venue::get($venue); + else if (empty(trim($resultArray[2]))) + { $importerrors.= 'Row '.$rid.' is missing city name!' ."<br>"; + continue; } + else { - $venue = GiglogAdmin_Venue::find_or_create($venue,'Oslo'); - } + $condate = date('Y-m-d', strtotime($resultArray[3])); + if ($condate<date("Y-m-d")) + {$importerrors.= 'Row '.$rid.' has date in the past!' ."<br>"; + continue; } + + else { + + + $cname = trim($resultArray[0]); + $venue = trim($resultArray[1]); - $condate = date('Y-m-d', strtotime($resultArray[2])); - $ticketlink = trim($resultArray[3]); - $eventlink = trim($resultArray[4]); - GiglogAdmin_Concert::create($cname, $venue->id(), $condate, $ticketlink, $eventlink); + if (is_numeric($venue)) { + $venue = GiglogAdmin_Venue::get($venue); + } + else { + $venue = GiglogAdmin_Venue::find_or_create($venue,trim($resultArray[2])); + } + + + $ticketlink = trim($resultArray[4]); + $eventlink = trim($resultArray[5]); + + + + + try { + GiglogAdmin_Concert::create($cname, $venue->id(), $condate, $ticketlink, $eventlink); + + } + + + catch(Exception $e) { + $importerrors.= 'Row '.$rid.' is duplicate (or failed due unknown error)!'."<br>"; + } + } + } + + } + if (!empty($importerrors)) echo ($importerrors); + else echo ('All rows imported ok'); } } } -} |