|
@@ -1,157 +1,109 @@
|
|
|
-<?php
|
|
|
|
|
-
|
|
|
|
|
-// Handles import functionality for InPrint and Delivered protocols.
|
|
|
|
|
-// visualized
|
|
|
|
|
-class Import_Manager {
|
|
|
|
|
- public function __construct() {
|
|
|
|
|
- add_action('admin_menu', array($this, 'add_import_submenu'));
|
|
|
|
|
- add_action('admin_post_import_inprint_protocol', array($this, 'handle_import_inprint_protocol'));
|
|
|
|
|
- add_action('admin_post_import_delivered_protocol', array($this, 'handle_import_delivered_protocol'));
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- public function add_import_submenu() {
|
|
|
|
|
- add_submenu_page(
|
|
|
|
|
- 'woocommerce',
|
|
|
|
|
- __('Import Protocols', 'studiou-wc-ord-print-statuses'),
|
|
|
|
|
- __('Import Protocols', 'studiou-wc-ord-print-statuses'),
|
|
|
|
|
- 'manage_woocommerce',
|
|
|
|
|
- 'studiou-import-protocols',
|
|
|
|
|
- array($this, 'render_import_page')
|
|
|
|
|
- );
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- public function render_import_page() {
|
|
|
|
|
- ?>
|
|
|
|
|
- <div class="wrap">
|
|
|
|
|
- <h1><?php echo esc_html(get_admin_page_title()); ?></h1>
|
|
|
|
|
-
|
|
|
|
|
- <h2><?php _e('Import InPrint Protocol', 'studiou-wc-ord-print-statuses'); ?></h2>
|
|
|
|
|
- <form method="post" action="<?php echo esc_url(admin_url('admin-post.php')); ?>" enctype="multipart/form-data">
|
|
|
|
|
- <input type="hidden" name="action" value="import_inprint_protocol">
|
|
|
|
|
- <?php wp_nonce_field('import_inprint_protocol', 'import_inprint_protocol_nonce'); ?>
|
|
|
|
|
- <input type="file" name="inprint_csv" accept=".csv" required>
|
|
|
|
|
- <?php submit_button(__('Import InPrint Protocol', 'studiou-wc-ord-print-statuses')); ?>
|
|
|
|
|
- </form>
|
|
|
|
|
-
|
|
|
|
|
- <h2><?php _e('Import Delivered Protocol', 'studiou-wc-ord-print-statuses'); ?></h2>
|
|
|
|
|
- <form method="post" action="<?php echo esc_url(admin_url('admin-post.php')); ?>" enctype="multipart/form-data">
|
|
|
|
|
- <input type="hidden" name="action" value="import_delivered_protocol">
|
|
|
|
|
- <?php wp_nonce_field('import_delivered_protocol', 'import_delivered_protocol_nonce'); ?>
|
|
|
|
|
- <input type="file" name="delivered_csv" accept=".csv" required>
|
|
|
|
|
- <?php submit_button(__('Import Delivered Protocol', 'studiou-wc-ord-print-statuses')); ?>
|
|
|
|
|
- </form>
|
|
|
|
|
- </div>
|
|
|
|
|
- <?php
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- public function handle_import_inprint_protocol() {
|
|
|
|
|
- if (!current_user_can('manage_woocommerce')) {
|
|
|
|
|
- wp_die(__('You do not have sufficient permissions to access this page.', 'studiou-wc-ord-print-statuses'));
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- check_admin_referer('import_inprint_protocol', 'import_inprint_protocol_nonce');
|
|
|
|
|
-
|
|
|
|
|
- if (!isset($_FILES['inprint_csv'])) {
|
|
|
|
|
- wp_die(__('No file uploaded.', 'studiou-wc-ord-print-statuses'));
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- $file = $_FILES['inprint_csv'];
|
|
|
|
|
- $csv_data = $this->parse_csv($file['tmp_name']);
|
|
|
|
|
-
|
|
|
|
|
- if (!$csv_data) {
|
|
|
|
|
- wp_die(__('Error parsing CSV file.', 'studiou-wc-ord-print-statuses'));
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- $updated_count = 0;
|
|
|
|
|
- $errors = array();
|
|
|
|
|
-
|
|
|
|
|
- foreach ($csv_data as $row) {
|
|
|
|
|
- if (!isset($row['order_no']) || !isset($row['externalorder']) || !isset($row['externalorderdate'])) {
|
|
|
|
|
- $errors[] = __('Invalid row format in CSV.', 'studiou-wc-ord-print-statuses');
|
|
|
|
|
- continue;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- $order = wc_get_order($row['order_no']);
|
|
|
|
|
- if (!$order) {
|
|
|
|
|
- $errors[] = sprintf(__('Order %s not found.', 'studiou-wc-ord-print-statuses'), $row['order_no']);
|
|
|
|
|
- continue;
|
|
|
|
|
- }
|
|
|
|
|
- $order->update_status('in-print');
|
|
|
|
|
- $order->update_meta_data('in_print_date', current_time('mysql'));
|
|
|
|
|
- $order->update_meta_data('external_ref_ord_no', $row['externalorder']);
|
|
|
|
|
- $order->update_meta_data('external_ref_ord_date', $row['externalorderdate']);
|
|
|
|
|
- $order->save();
|
|
|
|
|
-
|
|
|
|
|
- $updated_count++;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- $message = sprintf(__('%d orders updated successfully.', 'studiou-wc-ord-print-statuses'), $updated_count);
|
|
|
|
|
- if (!empty($errors)) {
|
|
|
|
|
- $message .= ' ' . sprintf(__('%d errors occurred: %s', 'studiou-wc-ord-print-statuses'), count($errors), implode(', ', $errors));
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- wp_redirect(add_query_arg('message', urlencode($message), admin_url('admin.php?page=studiou-import-protocols')));
|
|
|
|
|
- //exit;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- public function handle_import_delivered_protocol() {
|
|
|
|
|
- if (!current_user_can('manage_woocommerce')) {
|
|
|
|
|
- wp_die(__('You do not have sufficient permissions to access this page.', 'studiou-wc-ord-print-statuses'));
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- check_admin_referer('import_delivered_protocol', 'import_delivered_protocol_nonce');
|
|
|
|
|
-
|
|
|
|
|
- if (!isset($_FILES['delivered_csv'])) {
|
|
|
|
|
- wp_die(__('No file uploaded.', 'studiou-wc-ord-print-statuses'));
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- $file = $_FILES['delivered_csv'];
|
|
|
|
|
- $csv_data = $this->parse_csv($file['tmp_name']);
|
|
|
|
|
-
|
|
|
|
|
- if (!$csv_data) {
|
|
|
|
|
- wp_die(__('Error parsing CSV file.', 'studiou-wc-ord-print-statuses'));
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- $updated_count = 0;
|
|
|
|
|
- $errors = array();
|
|
|
|
|
-
|
|
|
|
|
- foreach ($csv_data as $row) {
|
|
|
|
|
- if (!isset($row['order_no'])) {
|
|
|
|
|
- $errors[] = __('Invalid row format in CSV.', 'studiou-wc-ord-print-statuses');
|
|
|
|
|
- continue;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- $order = wc_get_order($row['order_no']);
|
|
|
|
|
- if (!$order) {
|
|
|
|
|
- $errors[] = sprintf(__('Order %s not found.', 'studiou-wc-ord-print-statuses'), $row['order_no']);
|
|
|
|
|
- continue;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- $order->update_status('completed');
|
|
|
|
|
- $order->update_meta_data('external_ref_ord_delivered', current_time('mysql'));
|
|
|
|
|
- $order->save();
|
|
|
|
|
-
|
|
|
|
|
- $updated_count++;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- $message = sprintf(__('%d orders updated successfully.', 'studiou-wc-ord-print-statuses'), $updated_count);
|
|
|
|
|
- if (!empty($errors)) {
|
|
|
|
|
- $message .= ' ' . sprintf(__('%d errors occurred: %s', 'studiou-wc-ord-print-statuses'), count($errors), implode(', ', $errors));
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- wp_redirect(add_query_arg('message', urlencode($message), admin_url('admin.php?page=studiou-import-protocols')));
|
|
|
|
|
- //exit;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- private function parse_csv($file_path) {
|
|
|
|
|
- $csv_data = array();
|
|
|
|
|
- if (($handle = fopen($file_path, "r")) !== FALSE) {
|
|
|
|
|
- $headers = fgetcsv($handle, 1000, ",");
|
|
|
|
|
- while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
|
|
|
|
|
- $csv_data[] = array_combine($headers, $data);
|
|
|
|
|
- }
|
|
|
|
|
- fclose($handle);
|
|
|
|
|
- }
|
|
|
|
|
- return $csv_data;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+<?php
|
|
|
|
|
+// Handles import functionality for InPrint and Delivered protocols.
|
|
|
|
|
+// visualized
|
|
|
|
|
+class Import_Manager {
|
|
|
|
|
+ public function __construct() {
|
|
|
|
|
+ add_action('admin_menu', array($this, 'add_import_submenu'));
|
|
|
|
|
+ add_action('admin_post_import_inprint_protocol', array($this, 'handle_import_inprint_protocol'));
|
|
|
|
|
+ add_action('admin_post_import_delivered_protocol', array($this, 'handle_import_delivered_protocol'));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public function add_import_submenu() {
|
|
|
|
|
+ add_submenu_page(
|
|
|
|
|
+ 'woocommerce',
|
|
|
|
|
+ __('Import Protocols', 'studiou-wc-ord-print-statuses'),
|
|
|
|
|
+ __('Import Protocols', 'studiou-wc-ord-print-statuses'),
|
|
|
|
|
+ 'manage_woocommerce',
|
|
|
|
|
+ 'studiou-import-protocols',
|
|
|
|
|
+ array($this, 'render_import_page')
|
|
|
|
|
+ );
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public function render_import_page() {
|
|
|
|
|
+ ?>
|
|
|
|
|
+ <div class="wrap">
|
|
|
|
|
+ <h1><?php echo esc_html(get_admin_page_title()); ?></h1>
|
|
|
|
|
+
|
|
|
|
|
+ <h2><?php _e('Import InPrint Protocol', 'studiou-wc-ord-print-statuses'); ?></h2>
|
|
|
|
|
+ <form method="post" action="<?php echo esc_url(admin_url('admin-post.php')); ?>" enctype="multipart/form-data">
|
|
|
|
|
+ <input type="hidden" name="action" value="import_inprint_protocol">
|
|
|
|
|
+ <?php wp_nonce_field('import_inprint_protocol', 'import_inprint_protocol_nonce'); ?>
|
|
|
|
|
+ <input type="file" name="inprint_csv" accept=".csv" required>
|
|
|
|
|
+ <?php submit_button(__('Import InPrint Protocol', 'studiou-wc-ord-print-statuses')); ?>
|
|
|
|
|
+ </form>
|
|
|
|
|
+
|
|
|
|
|
+ <h2><?php _e('Import Delivered Protocol', 'studiou-wc-ord-print-statuses'); ?></h2>
|
|
|
|
|
+ <form method="post" action="<?php echo esc_url(admin_url('admin-post.php')); ?>" enctype="multipart/form-data">
|
|
|
|
|
+ <input type="hidden" name="action" value="import_delivered_protocol">
|
|
|
|
|
+ <?php wp_nonce_field('import_delivered_protocol', 'import_delivered_protocol_nonce'); ?>
|
|
|
|
|
+ <input type="file" name="delivered_csv" accept=".csv" required>
|
|
|
|
|
+ <?php submit_button(__('Import Delivered Protocol', 'studiou-wc-ord-print-statuses')); ?>
|
|
|
|
|
+ </form>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <?php
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public function handle_import_inprint_protocol() {
|
|
|
|
|
+ if (!current_user_can('manage_woocommerce')) {
|
|
|
|
|
+ wp_die(__('You do not have sufficient permissions to access this page.', 'studiou-wc-ord-print-statuses'));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ check_admin_referer('import_inprint_protocol', 'import_inprint_protocol_nonce');
|
|
|
|
|
+
|
|
|
|
|
+ if (!isset($_FILES['inprint_csv'])) {
|
|
|
|
|
+ wp_die(__('No file uploaded.', 'studiou-wc-ord-print-statuses'));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ $file = $_FILES['inprint_csv'];
|
|
|
|
|
+ $csv_data = Studiou_DB_Manager::parse_csv($file['tmp_name']);
|
|
|
|
|
+
|
|
|
|
|
+ if (!$csv_data) {
|
|
|
|
|
+ wp_die(__('Error parsing CSV file.', 'studiou-wc-ord-print-statuses'));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // Process the import using DB Manager
|
|
|
|
|
+ $result = Studiou_DB_Manager::import_inprint_protocol($csv_data);
|
|
|
|
|
+ $updated_count = $result['updated_count'];
|
|
|
|
|
+ $errors = $result['errors'];
|
|
|
|
|
+
|
|
|
|
|
+ $message = sprintf(__('%d orders updated successfully.', 'studiou-wc-ord-print-statuses'), $updated_count);
|
|
|
|
|
+ if (!empty($errors)) {
|
|
|
|
|
+ $message .= ' ' . sprintf(__('%d errors occurred: %s', 'studiou-wc-ord-print-statuses'), count($errors), implode(', ', $errors));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ wp_redirect(add_query_arg('message', urlencode($message), admin_url('admin.php?page=studiou-import-protocols')));
|
|
|
|
|
+ exit;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public function handle_import_delivered_protocol() {
|
|
|
|
|
+ if (!current_user_can('manage_woocommerce')) {
|
|
|
|
|
+ wp_die(__('You do not have sufficient permissions to access this page.', 'studiou-wc-ord-print-statuses'));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ check_admin_referer('import_delivered_protocol', 'import_delivered_protocol_nonce');
|
|
|
|
|
+
|
|
|
|
|
+ if (!isset($_FILES['delivered_csv'])) {
|
|
|
|
|
+ wp_die(__('No file uploaded.', 'studiou-wc-ord-print-statuses'));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ $file = $_FILES['delivered_csv'];
|
|
|
|
|
+ $csv_data = Studiou_DB_Manager::parse_csv($file['tmp_name']);
|
|
|
|
|
+
|
|
|
|
|
+ if (!$csv_data) {
|
|
|
|
|
+ wp_die(__('Error parsing CSV file.', 'studiou-wc-ord-print-statuses'));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // Process the import using DB Manager
|
|
|
|
|
+ $result = Studiou_DB_Manager::import_delivered_protocol($csv_data);
|
|
|
|
|
+ $updated_count = $result['updated_count'];
|
|
|
|
|
+ $errors = $result['errors'];
|
|
|
|
|
+
|
|
|
|
|
+ $message = sprintf(__('%d orders updated successfully.', 'studiou-wc-ord-print-statuses'), $updated_count);
|
|
|
|
|
+ if (!empty($errors)) {
|
|
|
|
|
+ $message .= ' ' . sprintf(__('%d errors occurred: %s', 'studiou-wc-ord-print-statuses'), count($errors), implode(', ', $errors));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ wp_redirect(add_query_arg('message', urlencode($message), admin_url('admin.php?page=studiou-import-protocols')));
|
|
|
|
|
+ exit;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|