diff options
author | Harald Eilertsen <haraldei@anduin.net> | 2021-03-07 20:00:06 +0100 |
---|---|---|
committer | Harald Eilertsen <haraldei@anduin.net> | 2021-03-07 20:00:06 +0100 |
commit | b5622ca47e975370d22912ae1ee6d76d33447a27 (patch) | |
tree | a6561325308aa802a88e4c9b7f53620b506543ff /includes/admin | |
parent | b2784f4bcb9724786dde19b31304f86918f6fb95 (diff) | |
download | gigologadmin-b5622ca47e975370d22912ae1ee6d76d33447a27.tar.gz gigologadmin-b5622ca47e975370d22912ae1ee6d76d33447a27.tar.bz2 gigologadmin-b5622ca47e975370d22912ae1ee6d76d33447a27.zip |
Implement upload of gig data files.
Diffstat (limited to 'includes/admin')
-rw-r--r-- | includes/admin/views/giglog_import_gigs.php | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/includes/admin/views/giglog_import_gigs.php b/includes/admin/views/giglog_import_gigs.php index 953fa62..e04d0e6 100644 --- a/includes/admin/views/giglog_import_gigs.php +++ b/includes/admin/views/giglog_import_gigs.php @@ -19,7 +19,47 @@ if ( !class_exists( 'GiglogAdmin_ImportGigsPage' ) ) { class GiglogAdmin_ImportGigsPage { static function render_html() { - echo '<div class="wrap"><h1>Let\'s import some gigs!</h1></div>'; + ?> + <div class="wrap"> + <h1>Import gigs</h1> + <p>Import gig data from a tab separated data file.</p> + <form action="<?php menu_page_url( 'giglog_import' ) ?>" enctype="multipart/form-data" method="post"> + <?php wp_nonce_field( plugin_basename( __FILE__ ), 'giglog_import_nonce' ); ?> + <label for="giglog_import_file">File: </label> + <input type="file" name="giglog_import_file" id="giglog_import_file"> + <?php submit_button(); ?> + </form> + </div> + <?php + echo giglogadmin_getunprocessed(); + } + + static function submit_form() { + if ('POST' === $_SERVER['REQUEST_METHOD'] && current_user_can('upload_files') && !empty($_FILES['giglog_import_file']['tmp_name'])) { + $nonce = $_POST['giglog_import_nonce']; + $valid_nonce = isset($nonce) && wp_verify_nonce($nonce); + GiglogAdmin_ImportGigsPage::process_upload($_FILES['giglog_import_file']); + } + } + + static function process_upload($file) { + global $wpdb; + + $table = 'wpg_files'; + $fo = new SplFileObject($file['tmp_name']); + $r = 0; + + foreach ($fo as $newconcert) { + $row = array( + 'filename' => $fo, + 'rowid' => $r++, + 'rowcontent' => $newconcert + ); + + if ($wpdb->insert($table, $row) === false) { + $wpdb->bail(); + } + } } } } |