/** * Checks for action to cancel an existing pre order and if needed it gets executed * * @since 1.0.3 */ public function check_cancel_pre_order() { global $woocommerce; if (!isset($_GET['order_id']) || !isset($_GET['status'])) { return; } if (!isset($_GET['_wpnonce']) || !wp_verify_nonce($_GET['_wpnonce'], absint($_GET['order_id']))) { return; } WC_Pre_Orders_Manager::cancel_pre_order(absint($_GET['order_id'])); $string = __('Your pre-order has been cancelled.', 'wc-pre-orders'); // Backwards compatible (pre 2.1) for outputting notice if (function_exists('wc_add_notice')) { wc_add_notice($string); } else { $woocommerce->add_message($string); } }
/** * Handle actions for both individual items and bulk edit * * @since 1.0 */ public function process_actions() { // get the current action (if any) $action = $this->current_action(); // get the set of orders to operate on $order_ids = isset($_REQUEST['order_id']) ? array_map('absint', $_REQUEST['order_id']) : array(); $message = $this->get_current_customer_message(); // no action, or invalid action if (isset($_GET['page']) && 'wc_pre_orders' == $_GET['page']) { if (false === $action || empty($order_ids)) { if (!empty($_REQUEST['_wp_http_referer'])) { // remove _wp_http_referer/_wp_nonce/action params wp_redirect(remove_query_arg(array('_wp_http_referer', '_wpnonce', 'action', 'action2'), stripslashes($_SERVER['REQUEST_URI']))); exit; } return; } $success_count = $error_count = 0; // process the orders foreach ($order_ids as $order_id) { $order = new WC_Order($order_id); // perform the action switch ($action) { case 'cancel': if (WC_Pre_Orders_Manager::can_pre_order_be_changed_to('cancelled', $order)) { $success_count++; WC_Pre_Orders_Manager::cancel_pre_order($order, $message); } else { $error_count++; } break; case 'complete': if (WC_Pre_Orders_Manager::can_pre_order_be_changed_to('completed', $order)) { $success_count++; WC_Pre_Orders_Manager::complete_pre_order($order, $message); } else { $error_count++; } break; case 'message': WC_Pre_Orders_Manager::email_pre_order_customer($order_id, $message); break; } } $messages = array(); switch ($action) { case 'cancel': if ($success_count > 0) { $messages[] = sprintf(_n('%d pre-order cancelled.', '%s pre-orders cancelled.', $success_count, 'wc-pre-orders'), $success_count); } if ($error_count > 0) { $messages[] = sprintf(_n('%d pre-order could not be cancelled.', '%s pre-orders could not be cancelled.', $error_count, 'wc-pre-orders'), $error_count); } break; case 'complete': if ($success_count > 0) { $messages[] = sprintf(_n('%d pre-order completed.', '%s pre-orders completed.', $success_count, 'wc-pre-orders'), $success_count); } if ($error_count > 0) { $messages[] = sprintf(_n('%d pre-order could not be completed.', '%s pre-orders could not be completed.', $error_count, 'wc-pre-orders'), $error_count); } break; case 'message': $messages[] = sprintf(_n('%d email dispatched.', '%s emails dispatched.', count($order_ids), 'wc-pre-orders'), count($order_ids)); break; } $message_nonce = wp_create_nonce(__FILE__); set_transient($this->message_transient_prefix . $message_nonce, array('messages' => implode(' ', $messages)), 60 * 60); // get our next destination, stripping out all actions and other unneeded parameters if (isset($_REQUEST['_wp_http_referer'])) { $redirect_url = $_REQUEST['_wp_http_referer']; } else { $redirect_url = remove_query_arg(array('_wp_http_referer', '_wpnonce', 'action', 'action2', 'order_id', 'customer_message', 'customer_message2'), stripslashes($_SERVER['REQUEST_URI'])); } wp_redirect(add_query_arg('message', $message_nonce, $redirect_url)); exit; } }
/** * Checks for action to cancel an existing pre order and if needed it gets executed * * @since 1.0.3 */ public function check_cancel_pre_order() { global $woocommerce; if (!isset($_GET['order_id']) || !isset($_GET['status'])) { return; } if (!isset($_GET['_wpnonce']) || !wp_verify_nonce($_GET['_wpnonce'], absint($_GET['order_id']))) { return; } WC_Pre_Orders_Manager::cancel_pre_order(absint($_GET['order_id'])); $woocommerce->add_message(__('Your pre-order has been cancelled.', WC_Pre_Orders::TEXT_DOMAIN)); }