/** * Displays the form for user redirection * @param Colabs_Order $order Order to process * @param array $options User inputted options * @return void */ public static function create_form($order, $options, $return_url, $cancel_url) { $options = wp_parse_args($options, array('email_address' => '')); $fields = array(self::SELLER_EMAIL => $options['email_address'], self::ITEM_NAME => $order->get_description(), self::ITEM_NUMBER => $order->get_id(), self::CURRENCY_CODE => $order->get_currency(), self::RETURN_TEXT => sprintf(__('Continue to %s', 'colabsthemes'), get_bloginfo('name')), self::RETURN_URL => $return_url, self::CANCEL_URL => $cancel_url, self::NO_SHIPPING => 1, self::NO_NOTE => 1, self::NOTIFY_URL => 'http://49ba64d7.ngrok.com', self::RETURN_METHOD => self::RETURN_BY_GET, self::CHARSET => 'utf-8'); if ($order->is_recurring()) { if (get_post_meta($order->get_id(), 'paypal_subscription_id', true)) { self::print_processing_script($order); return array(); } $fields[self::TYPE] = self::SUBSCRIBE; $fields[self::RECURR_BILLING] = 1; $subscription_id = $order->get_id() . mt_rand(0, 1000); $fields[self::INVOICE] = $subscription_id; update_post_meta($order->get_id(), 'paypal_subscription_id', $subscription_id); $fields[self::RECURRING_AMOUNT] = $order->get_total(); $fields[self::RECURRING_PERIOD] = $order->get_recurring_period(); $fields[self::RECURRING_PERIOD_TYPE] = self::RECUR_BY_DAYS; } else { $fields[self::TYPE] = self::BUY_NOW; $fields[self::AMOUNT] = $order->get_total(); } $form = array('action' => Colabs_Paypal_Gateway::get_request_url(), 'name' => 'paypal_payform', 'id' => 'create_listing'); return array($form, $fields); }
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; }