summaryrefslogtreecommitdiffstats
path: root/includes/admin/views/giglog_import_gigs.php
diff options
context:
space:
mode:
authorAndreaChirulescu <andrea.chirulescu@gmail.com>2022-02-27 13:35:59 +0100
committerAndreaChirulescu <andrea.chirulescu@gmail.com>2022-02-27 13:35:59 +0100
commitc5d786a1c72911e4352a6e40ea19aff98711d353 (patch)
tree968f723281aa31d043731dc34f84cdfc2a164ed2 /includes/admin/views/giglog_import_gigs.php
parent0775b984af29855d0a31ba38a30552f997ecf0b7 (diff)
downloadgigologadmin-c5d786a1c72911e4352a6e40ea19aff98711d353.tar.gz
gigologadmin-c5d786a1c72911e4352a6e40ea19aff98711d353.tar.bz2
gigologadmin-c5d786a1c72911e4352a6e40ea19aff98711d353.zip
iCal file download fixes to generate one file per concert
giglog import fixes to catch errors and ignore old concerts
Diffstat (limited to 'includes/admin/views/giglog_import_gigs.php')
-rw-r--r--includes/admin/views/giglog_import_gigs.php102
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');
}
}
}
-}