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; } }