Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
 /**
  * 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;
 }