prepare_to_printing_export($post_ids, $redirect_to); break; case 'set_status_to_prepare_to_printing': $redirect_to = $this->set_status_to_prepare_to_printing($post_ids, $redirect_to); break; case 'set_status_to_in_printing': $redirect_to = $this->set_status_to_in_printing($post_ids, $redirect_to); break; } return $redirect_to; } private function prepare_to_printing_export($post_ids, $redirect_to) { global $wpdb; $orders_data = $wpdb->get_results("SELECT * FROM `vsu_orders_car_prod_qty_img` WHERE order_no IN (" . implode(',', array_map('intval', $post_ids)) . ")"); $this->set_status_to_prepare_to_printing($post_ids, $redirect_to); UtilsLog::log('Order statuses set to "to-print" after export.'); UtilsLog::message('Order statuses (' . count($orders_data) . ') set to "to-print" after export.', 'info' ); if (!empty($orders_data)) { $csv_data = $this->generate_csv($orders_data); UtilsLog::log('file prepare_to_printing_export.csv exported'); $this->output_csv($csv_data, 'prepare_to_printing_export.csv'); } return $redirect_to; } private function set_status_to_prepare_to_printing($post_ids, $redirect_to) { foreach ($post_ids as $post_id) { UtilsLog::log('Setting status Order #' . $post_id . ' to "to-print"'); $order = wc_get_order($post_id); if ($order) { $order->update_status('to-print'); update_post_meta($post_id, 'to_print_date', current_time('mysql')); UtilsLog::log('Order #' . $post_id . ' marked as "to-print"'); UtilsLog::message('Order #' . $post_id . ' marked as "to-print"' ); } else{ UtilsLog::log('Order #' . $post_id . ' not found'); } } $redirect_to = add_query_arg('bulk_action', 'marked_prepare_to_printing', $redirect_to); return $redirect_to; } private function set_status_to_in_printing($post_ids, $redirect_to) { foreach ($post_ids as $post_id) { $order = wc_get_order($post_id); if ($order) { $order->update_status('in-print'); update_post_meta($post_id, 'in_print_date', current_time('mysql')); UtilsLog::message('Order #' . $post_id . ' marked as "in-print"' ); } } $redirect_to = add_query_arg('bulk_action', 'marked_in_printing', $redirect_to); return $redirect_to; } private function generate_csv($data) { $output = fopen('php://temp', 'w'); fputcsv($output, array_keys((array)$data[0]),','); // Headers foreach ($data as $row) { fputcsv($output, (array)$row, ','); } rewind($output); $csv = stream_get_contents($output); fclose($output); return $csv; } private function output_csv($csv_data, $filename) { header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename="' . $filename . '"'); echo $csv_data; exit; } }