summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Eilertsen <haraldei@anduin.net>2021-01-17 21:50:20 +0100
committerHarald Eilertsen <haraldei@anduin.net>2021-01-17 21:50:20 +0100
commit6ecbb6d833d435c10cf4b1413945054cfad4895b (patch)
treecd676b94009e721542adca016b3bbed7213a15f1
parent540b1b93817378550aeeb02370ca845d97430534 (diff)
downloadgigologadmin-6ecbb6d833d435c10cf4b1413945054cfad4895b.tar.gz
gigologadmin-6ecbb6d833d435c10cf4b1413945054cfad4895b.tar.bz2
gigologadmin-6ecbb6d833d435c10cf4b1413945054cfad4895b.zip
Add shortcodes to display and process uploads.
-rw-r--r--giglogadmin.php2
-rw-r--r--includes/public/shortcodes/giglog_display_unprocessed.php153
2 files changed, 155 insertions, 0 deletions
diff --git a/giglogadmin.php b/giglogadmin.php
index b5c45f9..da35bf7 100644
--- a/giglogadmin.php
+++ b/giglogadmin.php
@@ -19,12 +19,14 @@
if ( !class_exists( 'GiglogAdmin_Plugin' ) ) {
require_once __DIR__ . '/includes/public/shortcodes/giglog_bands.php';
+ require_once __DIR__ . '/includes/public/shortcodes/giglog_display_unprocessed.php';
class GiglogAdmin_Plugin
{
static public function init() {
add_shortcode('giglog_cities', 'giglogadmin_getfilters');
add_shortcode('giglog_bands', 'giglogadmin_getconcerts');
+ add_shortcode('giglog_unprocessed', 'giglogadmin_display_unprocessed');
}
static function activate() {
diff --git a/includes/public/shortcodes/giglog_display_unprocessed.php b/includes/public/shortcodes/giglog_display_unprocessed.php
new file mode 100644
index 0000000..ac121b0
--- /dev/null
+++ b/includes/public/shortcodes/giglog_display_unprocessed.php
@@ -0,0 +1,153 @@
+<?php
+/*
+ * I kinda overloaded this snippet. Added comments for each function. But this
+ * is used in the giglog admin page, which should only be available to admin
+ * users. After the file is being uploaded into the concertlists folder, its
+ * content is written into wpg_files. Then the content is split into lines and
+ * each line is transformed intoa concert
+ */
+
+/* this checks th wpg_files table to see if any file is uploaded but hasn't
+ * gone through the processing process - aka fetching each line and
+ * transforming it into a concert line
+ */
+function giglogadmin_getunprocessed()
+{
+ global $wpdb;
+
+ $content = '<br /><h3> UNPROCESSED ROWS</h3><table>';
+ $content .= '</tr><th>Filerow</th><th>FILENAME</th><th>DATE</TH><th>UploadedContent</th>';
+ $query = 'SELECT rowid,filename,filedate,rowcontent from wpg_files where processed="N"';
+ $results = $wpdb->get_results($query);
+ foreach ($results AS $row) {
+ $content .= '<tr>';
+ $content .= '<td>' . $row->rowid . '</td>';
+ $content .= '<td>' . $row->filename . '</td>';
+ $content .= '<td>' . $row->filedate . '</td>';
+ $content .= '<td>' . $row->rowcontent . '</td>';
+ $content .= '</tr>';
+ }
+ $content .= '</table>';
+ return $content;
+}
+
+/* function that goes through each line of the unprocessed file. Each line is
+ * checked against the concerts table. if it exists - concert and date and
+ * venue - it does nothing with it. If it doesn't exist, it checks if band or
+ * venue exists. If they don't, they get created, if they do, their ID from
+ * their table is fetchd and used in concerts table
+ */
+function giglogadmin_insertconcerts()
+{
+ global $wpdb;
+ $concertlist = '<p>Inserted the following:</p>';
+ $newconcert= [];
+ $query1 = 'SELECT id,rowid,filename,filedate,rowcontent from wpg_files where processed="N"';
+ $cresults = $wpdb->get_results($query1);
+ foreach ($cresults AS $row) {
+ $rowfileid = $row->id;
+ $resultArray = explode("\t", $row->rowcontent);
+ $band = $resultArray[0];
+ $venue = $resultArray[1];
+ $condate = date('Y-m-d', strtotime($resultArray[2]));
+ $ticketlink = $resultArray[3];
+ $eventlink = $resultArray[4];
+ //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];
+
+ //processing band
+ $bandsql = 'SELECT id FROM wpg_bands WHERE upper(wpgband_name)="' . $band . '"';
+ $results = $wpdb->get_results($bandsql);
+ if ($results)
+ $newconcert[0] = $results[0]->id;
+ else {
+ $wpdb->insert('wpg_bands', array(
+ 'id' => '',
+ 'wpgband_name' => $band
+ ));
+ echo ($wpdb->last_error);
+ $newconcert[0] = $wpdb->insert_id;
+ }
+ //done processing band
+
+ //processing venue
+ if (is_numeric($venue))
+ $newconcert[1] = $venue;
+ else {
+ $venuesql = 'SELECT id FROM wpg_venues WHERE upper(wpgvenue_name)="' . $venue . '"';
+ $results = $wpdb->get_results($venuesql);
+ if ($results)
+ $newconcert[1] = $results[0]->id;
+ else {
+ $wpdb->insert('wpg_venues', array(
+ 'id' => '',
+ 'wpgvenue_name' => $venue
+ ));
+ echo ($wpdb->last_error);
+ $newconcert[1] = $wpdb->insert_id;
+ }
+ }
+ //done processing venue
+
+ //not sure how to check dates, hopefully manual verification of files will take care of it
+
+ //check if concert already exists and return ID if it does. Not checking by date, to be considered
+ $csql = 'SELECT id from wpg_concerts where band = ' . $newconcert[0] . ' and venue = ' . $newconcert[1] . ' and wpgconcert_date ="' . $condate . '"';
+
+ $cresults = $wpdb->get_results($csql);
+ if ($cresults) {
+ $usql = 'UPDATE wpg_files SET processed="D", wpgc_id = ' . $cresults[0]->id . ' WHERE id = ' . $rowfileid;
+
+ $uresults = $wpdb->get_results($usql);
+ $concertlist .= 'DUPLICATE ROW detected BAND ' . $band . ' with band ID ' . $newconcert[0];
+ $concertlist .= ', VENUE ' . $venue . ' with venue ID ' . $newconcert[1];
+ $concertlist .= ', CONCERTDATE ' . $condate;
+ $concertlist .= ' <br />';
+ } else {
+ $wpdb->insert('wpg_concerts', array(
+ 'id' => '',
+ 'band' => $newconcert[0],
+ 'venue' => $newconcert[1],
+ 'wpgconcert_date' => $condate,
+ 'wpgconcert_tickets' => $ticketlink,
+ 'wpgconcert_event' => $eventlink
+ ));
+ echo ($wpdb->last_error);
+ $newconcertid = $wpdb->insert_id;
+
+ $usql = 'UPDATE wpg_files SET processed="Y", wpgc_id = ' . $newconcertid . ' WHERE id = ' . $rowfileid;
+
+ $uresults = $wpdb->get_results($usql);
+ $concertlist .= 'BAND ' . $band . ' with band ID ' . $newconcert[0];
+ $concertlist .= ', VENUE ' . $venue . ' with venue ID ' . $newconcert[1];
+ $concertlist .= ', CONCERTDATE ' . $condate . ', Ticket LINK ' . $ticketlink . ', event LINK' . $eventlink;
+ $concertlist .= ' <br />';
+
+ }
+
+ //end check if concert exists
+
+
+ //remember to add the concert ID when displaying
+
+
+ } //end looping through unprocessed rows
+
+ return $concertlist;
+}
+
+function giglogadmin_display_unprocessed() {
+ $output = giglogadmin_getunprocessed();
+
+ $output .= '<form method="POST" action=""><input type="submit" name="ProcessConcerts" value="ProcessConcerts"/></form>';
+
+
+ if (isset($_POST['ProcessConcerts'])) {
+ $output .= giglogadmin_insertconcerts();
+
+ //$url2 = $_SERVER['REQUEST_URI'];
+ //header("Refresh: 5; URL=$url2"); //reload page
+ } //end if button for process concerts is pressed
+
+ return $output;
+}