Example #1
0
 /**
  * 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);
 }
Example #2
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;
}
 /**
  * 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;
 }