diff options
Diffstat (limited to 'includes')
-rw-r--r-- | includes/admin/views/giglog_admin_page.php | 10 | ||||
-rw-r--r-- | includes/admin/views/giglog_import_gigs.php | 3 | ||||
-rw-r--r-- | includes/venue.php | 75 |
3 files changed, 73 insertions, 15 deletions
diff --git a/includes/admin/views/giglog_admin_page.php b/includes/admin/views/giglog_admin_page.php index b7d8397..5fdcc6b 100644 --- a/includes/admin/views/giglog_admin_page.php +++ b/includes/admin/views/giglog_admin_page.php @@ -60,7 +60,7 @@ if ( !class_exists( 'GiglogAdmin_AdminPage' ) ) { { $select = '<select name="selectvenue">'; foreach ( GiglogAdmin_Venue::all_venues() AS $venue ) { - $select .= '<option value="' . $venue -> id. '">'.$venue->vname; + $select .= '<option value="' . $venue->id() . '">'. $venue->name(); $select .='</option>'; } $select .= '</select>'; @@ -98,7 +98,13 @@ if ( !class_exists( 'GiglogAdmin_AdminPage' ) ) { if ( $selected_city != "ALL" ) { //second drop down for venue - $venues = array_merge([[0, "ALL"]], GiglogAdmin_Venue::venues_in_city($selected_city)); + $venues = GiglogAdmin_Venue::venues_in_city($selected_city); + $venue_list = array_merge( + [0, "ALL"], + array_map( + function($v) { return [$v->id(), $v->name()]; }, + $venues)); + $selected_venue = filter_input(INPUT_POST, "selectvenue", FILTER_SANITIZE_SPECIAL_CHARS) || $venues[0]; diff --git a/includes/admin/views/giglog_import_gigs.php b/includes/admin/views/giglog_import_gigs.php index 5874ef8..2423c74 100644 --- a/includes/admin/views/giglog_import_gigs.php +++ b/includes/admin/views/giglog_import_gigs.php @@ -85,7 +85,8 @@ if ( !class_exists( 'GiglogAdmin_ImportGigsPage' ) ) { if (is_numeric($venue)) $newconcert[1] = $venue; else { - $newconcert[1] = GiglogAdmin_Venue::find_or_create($venue); + $v = GiglogAdmin_Venue::find_or_create($venue); + $newconcert[1] = $v->id(); } //not sure how to check dates, hopefully manual verification of files will take care of it diff --git a/includes/venue.php b/includes/venue.php index 4951d6b..08e8bb5 100644 --- a/includes/venue.php +++ b/includes/venue.php @@ -19,26 +19,50 @@ if ( !class_exists('GiglogAdmin_Venue') ) { class GiglogAdmin_Venue { - static function create($name) + private $id; + private $name; + private $city; + private $address; + private $webpage; + + /* + * Constructs a new venue object from an array of attributes. + * The attributes are expected to be named as in the database, + * so this constructor can be used to construct the object + * directly from the database row. + */ + private function __construct($attrs) { - global $wpdb; + $this->id = isset($attrs->id) ? $attrs->id : NULL; + $this->name = isset($attrs->wpgvenue_name) ? $attrs->wpgvenue_name : NULL; + $this->city = isset($attrs->wpgvenue_city) ? $attrs->wpgvenue_city : NULL; + $this->address = isset($attrs->wpgvenue_address) ? $attrs->wpgvenue_address : NULL; + $this->webpage = isset($attrs->wpgvenue_webpage) ? $attrs->wpgvenue_webpage : NULL; + } - $wpdb->insert('wpg_venues', array( - 'id' => '', - 'wpgvenue_name' => $name - )); + static function create($name) + { + $attrs = new stdClass(); + $attrs->wpgvenue_name = $name; + $venue = new GiglogAdmin_Venue($attrs); + $venue->save(); - return $wpdb->insert_id; + return $venue; } static function find_or_create($name) { global $wpdb; - $venuesql = 'SELECT id FROM wpg_venues WHERE upper(wpgvenue_name)="' . $name . '"'; + $venuesql = 'SELECT * FROM wpg_venues WHERE upper(wpgvenue_name)="' . $name . '"'; $results = $wpdb->get_results($venuesql); - return $results ? $results[0]->id : GiglogAdmin_Venue::create($name); + if ($results) { + return new GiglogAdmin_Venue($results[0]); + } + else { + return GiglogAdmin_Venue::create($name); + } } static function all_cities() @@ -53,9 +77,9 @@ if ( !class_exists('GiglogAdmin_Venue') ) { { global $wpdb; - $results = $wpdb->get_results("select id, CONCAT( IFNULL(wpgvenue_name,''),'-',IFNULL(wpgvenue_city,'')) as vname from wpg_venues"); + $results = $wpdb->get_results("select * from wpg_venues"); - return ($results); + return array_map(function ($r) { return new GiglogAdmin_Venue($r); }, $results); } @@ -66,7 +90,34 @@ if ( !class_exists('GiglogAdmin_Venue') ) { "select id, wpgvenue_name from wpg_venues where wpgvenue_city=?", $city); $results = $wpdb->get_results($q); - return array_map(function ($r) { return [$r->id, $r->wpgvenue_name]; }, $results); + return array_map(function ($r) { return new GiglogAdmin_Venue($r); }, $results); + } + + public function save() + { + global $wpdb; + + $wpdb->insert('wpg_venues', array( + 'id' => '', + 'wpgvenue_name' => $this->name + )); + + $this->id = $wpdb->insert_id; + } + + public function id() + { + return $this->id; + } + + public function name() + { + return $this->name; + } + + public function city() + { + return $this->city; } } } |