summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreaChirulescu <andrea.chirulescu@gmail.com>2021-04-18 20:31:38 +0200
committerAndreaChirulescu <andrea.chirulescu@gmail.com>2021-04-18 20:31:38 +0200
commit106ca5e5247d542b62efa9034ad2d0427cb6fc5c (patch)
tree02e655a92c252f5f50286725184464a35c370e0a
parentd4af42336c745bb743560370bbbfc39c350ad51c (diff)
parenta851dd35b8ead5e4688062ff0c6e94d83133b006 (diff)
downloadgigologadmin-106ca5e5247d542b62efa9034ad2d0427cb6fc5c.tar.gz
gigologadmin-106ca5e5247d542b62efa9034ad2d0427cb6fc5c.tar.bz2
gigologadmin-106ca5e5247d542b62efa9034ad2d0427cb6fc5c.zip
Merge branch 'dev' of https://code.volse.net/wordpress/plugins/gigologadmin.git into andreaschanges
-rw-r--r--includes/admin/views/giglog_import_gigs.php6
-rw-r--r--includes/band.php54
-rw-r--r--tests/BandTest.php30
3 files changed, 63 insertions, 27 deletions
diff --git a/includes/admin/views/giglog_import_gigs.php b/includes/admin/views/giglog_import_gigs.php
index ca1c7b8..17b1cbd 100644
--- a/includes/admin/views/giglog_import_gigs.php
+++ b/includes/admin/views/giglog_import_gigs.php
@@ -61,7 +61,7 @@ if ( !class_exists( 'GiglogAdmin_ImportGigsPage' ) ) {
}
$resultArray = explode("\t", $line);
- $band = trim($resultArray[0]);
+ $bandname = trim($resultArray[0]);
$venue = trim($resultArray[1]);
$condate = date('Y-m-d', strtotime($resultArray[2]));
$ticketlink = trim($resultArray[3]);
@@ -69,7 +69,7 @@ if ( !class_exists( 'GiglogAdmin_ImportGigsPage' ) ) {
//first item in the row should be band $resultArray[0]; second should be venue $resultArray[1]; third should be concert date $resultArray[2];
//fourth item is ticketlink $resultArray[3]; fifth item is eventlink $resultArray[4];
- $newconcert[0] = GiglogAdmin_Band::create($band,'');
+ $band = GiglogAdmin_Band::create($bandname);
if (is_numeric($venue))
$newconcert[1] = $venue;
@@ -81,7 +81,7 @@ if ( !class_exists( 'GiglogAdmin_ImportGigsPage' ) ) {
//not sure how to check dates, hopefully manual verification of files will take care of it
GiglogAdmin_Concert::create(
- $newconcert[0],
+ $band->id(),
$newconcert[1],
$condate,
$ticketlink,
diff --git a/includes/band.php b/includes/band.php
index ad5ce28..47b663c 100644
--- a/includes/band.php
+++ b/includes/band.php
@@ -20,37 +20,43 @@ if ( !class_exists('GiglogAdmin_Band') ) {
$this->country = isset($attrs->country) ? $attrs->country : 'NO';
}
- static function create($bandname, $country)
+ static function create($bandname, $country = 'NO')
{
- global $wpdb;
- if (empty($country)) $country = 'NO';
- $bandsql = 'SELECT id FROM wpg_bands WHERE upper(wpgband_name)="' . $bandname . '" and wpgband_country = "'.$country.'"';
- $results = $wpdb->get_results($bandsql);
- $attrs = new stdClass();
- $attrs->bandname = $bandname;
- $attrs->country = $country;
-
- if ($results)
- {
- $attrs->id = $results[0]->id;
- $bid = new GiglogAdmin_Band($attrs);
+ $band = GiglogAdmin_Band::find($bandname, $country);
+
+ if ( ! $band ) {
+ $band = new GiglogAdmin_Band((object) [
+ 'bandname' => $bandname,
+ 'country' => $country,
+ ]);
+
+ $band->save();
+
+ error_log( 'NEW BAND ADDED: '
+ . ' ID: ' . $band->id()
+ . ' BAND NAME ' . $band->bandname()
+ . ', COUNTRY ' . $band->country());
}
- else
- {
- $attrs->id = '';
+ return $band;
+ }
+
+ static function find($name, $country)
+ {
+ global $wpdb;
- $bid = new GiglogAdmin_Band($attrs);
- $bid->save();
+ $q = 'SELECT * FROM wpg_bands '
+ . 'WHERE upper(wpgband_name)="' . $name
+ . '" and wpgband_country = "' . $country.'"';
+ $results = $wpdb->get_results($q);
- error_log( 'NEW BAND ADDED: '
- . ' ID: ' . $bid -> id()
- . ' BAND NAME ' . $bandname
- . ', COUNTRY ' . $country);
+ if ($results) {
+ return new GiglogAdmin_Band($results[0]);
+ }
+ else {
+ return NULL;
}
- return ($bid->id());
-
}
diff --git a/tests/BandTest.php b/tests/BandTest.php
new file mode 100644
index 0000000..d3feb51
--- /dev/null
+++ b/tests/BandTest.php
@@ -0,0 +1,30 @@
+<?php
+// SPDX-FileCopyrightText: 2021 Andrea Chirulescu <andrea.chirulescu@gmail.com>
+// SPDX-FileCopyrightText: 2021 Harald Eilertsen <haraldei@anduin.net>
+//
+// SPDX-License-Identifier: AGPL-3.0-or-later
+
+declare(strict_types=1);
+
+require __DIR__ . '/../includes/band.php';
+
+final class BandTest extends WP_UnitTestCase
+{
+ public function testCreatingBandWithName() : void
+ {
+ $count = count(GiglogAdmin_Band::all_bands());
+
+ $band = GiglogAdmin_Band::create("The Flamboyant Blasphemers");
+
+ $this->assertEquals("The Flamboyant Blasphemers", $band->bandname());
+ $this->assertEquals($count + 1, count(GiglogAdmin_Band::all_bands()));
+ }
+
+ public function testCreateExistingBand() : void
+ {
+ $band1 = GiglogAdmin_Band::create("The Flamboyant Blasphemers");
+ $band2 = GiglogAdmin_Band::create("The Flamboyant Blasphemers");
+
+ $this->assertEquals($band1->id(), $band2->id());
+ }
+}