function colabs_handle_new_order() { if (!isset($_POST['action']) || !empty($_POST['goback'])) { return; } if (empty($_POST['ID'])) { return false; } $property = get_post(intval($_POST['ID'])); $property_id = intval($_POST['ID']); if (!empty($_POST['order_id'])) { $order_id = intval($_POST['order_id']); $order = colabs_get_order($order_id); } if (get_option('colabs_cost_to_feature') > 0 && is_sticky($property_id)) { $additional_price = get_option('colabs_cost_to_feature'); } else { $additional_price = 0; } if ('relist-property' == $_POST['action'] && colabs_allow_relist()) { $price = get_option('colabs_property_relisting_cost'); } else { $price = get_option('colabs_property_listing_cost'); } $items = array('_post_type_id' => $property_id, 'price' => $price, 'additional_price' => $additional_price); $new_order = true; if (empty($order)) { $order = Colabs_Order::create($items); colabs_new_order_notify_admin($order); colabs_new_order_notify_owner($order); } else { $new_order = false; } do_action('colabs_create_order', $order, $property); $args = array('order_id' => $order->get_id(), 'property_id' => $property_id); // is the property being relisted? if (!empty($_POST['relist'])) { $args['property_relist'] = $property->ID; } // move form to next step if (!empty($_POST['step'])) { $args['step'] = intval($_POST['step']) + 1; } $args['referer'] = urlencode($_SERVER['REDIRECT_URL']); // redirect to next step wp_redirect(add_query_arg($args, COLABS_SUBMIT_PAGE)); exit; }
/** * Upgrade Orders */ public function upgrade_orders() { global $wpdb; $legacy_orders = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}colabs_orders"); // old => new $status_relation = array('completed' => COLABS_ORDER_COMPLETED, 'pending_payment' => COLABS_ORDER_PENDING, 'cancelled' => COLABS_ORDER_FAILED); // old => new $gateways_relation = array('paypal' => 'paypal', 'authorize.net' => 'authorize-net', '2checkout' => '2checkout', 'google' => 'google-wallet', 'manual' => 'bank-transfer'); $errors_total = 0; if ($legacy_orders) { foreach ($legacy_orders as $legacy_order) { // payment type $payment_type = strtolower($legacy_order->payment_type); if ($payment_type && isset($gateways_relation[$payment_type])) { $payment_type = $gateways_relation[$payment_type]; } else { $payment_type = __('N/A', 'colabsthemes'); } // status if (!isset($status_relation[$legacy_order->status])) { $legacy_order->status = 'cancelled'; } // If featured if ($legacy_order->featured == true) { $additional_price = get_option('colabs_cost_to_feature', 0); } else { $additional_price = 0; } $items = array('_post_type_id' => $legacy_order->property_id, 'price' => $legacy_order->cost, 'additional_price' => $additional_price); $order = Colabs_Order::create($items); if ($legacy_order->property_id) { $post_id = $legacy_order->property_id; } else { $post_id = 0; } if (empty($post_id)) { $post_id = $order->get_id(); } if ($post_id != $order->get_id()) { // restore trashed posts from cancelled orders and set their status to 'expired', instead if (COLABS_ORDER_FAILED == $status_relation[$legacy_order->status]) { wp_untrash_post($post_id); _colabs_expire_property($post_id, $canceled = true, 'order_failed'); } } $order_post_data = array('ID' => $order->get_id(), 'post_type' => COLABS_ORDER_POST_TYPE, 'post_status' => $status_relation[$legacy_order->status], 'post_author' => $legacy_order->user_id, 'post_date' => $legacy_order->order_date); $updated_post_id = wp_insert_post($order_post_data, true); if (is_wp_error($updated_post_id)) { // Colabs_log()->write_log( sprintf( 'Upgrade Orders: Error updating Order - %d - "%s"', $order->get_id(), $updated_post_id->get_error_message() ) ); $this->errors->add('upgrade-error', sprintf('Upgrade Orders: Error updating Order - %d -', $order->get_id())); $errors_total++; continue; } if ($order) { update_post_meta($order->get_id(), 'gateway', $payment_type); } } } if ($errors_total) { $this->errors->add('upgrade-error', sprintf('Could not upgrade all legacy orders')); return $this->errors; } return true; }