private function _create_order_meta($old_id, $new_id)
 {
     global $wpdb;
     $keys = array('_learn_press_transaction_method' => '_payment_method', '_learn_press_customer_id' => '_user_id', '_learn_press_customer_ip' => '_user_ip_address', '_learn_press_order_items' => null, '_learn_press_transaction_method_id' => '_transaction_id');
     $order_meta = self::get_post_meta($old_id, array_keys($keys));
     if ($order_meta) {
         foreach ($order_meta as $meta) {
             if ('_learn_press_order_items' == $meta['meta_key']) {
                 $order_data = maybe_unserialize($meta['meta_value']);
                 if (isset($order_data->total)) {
                     add_post_meta($new_id, '_order_total', $order_data->total);
                 } else {
                     add_post_meta($new_id, '_order_total', 0);
                 }
                 if (isset($order_data->sub_total)) {
                     add_post_meta($new_id, '_order_subtotal', $order_data->sub_total);
                 } else {
                     add_post_meta($new_id, '_order_subtotal', 0);
                 }
                 if (isset($order_data->currency)) {
                     add_post_meta($new_id, '_order_currency', $order_data->currency);
                 } else {
                     add_post_meta($new_id, '', 'USD');
                 }
                 if (isset($order_data->products)) {
                     foreach ($order_data->products as $order_item) {
                         $old_course_id = $order_item['id'];
                         $new_course_id = isset(self::$courses_map[$old_course_id]) ? self::$courses_map[$old_course_id]['id'] : 0;
                         if ($new_course_id) {
                             $new_course = get_post($new_course_id);
                             $r = $wpdb->insert($wpdb->prefix . 'learnpress_order_items', array('order_item_name' => isset($order_item['product_name']) ? $order_item['product_name'] : $new_course->post_title, 'order_id' => $new_id));
                             $order_item_id = $wpdb->insert_id;
                             learn_press_add_order_item_meta($order_item_id, '_course_id', $new_course->ID);
                             learn_press_add_order_item_meta($order_item_id, '_quantity', $order_item['quantity']);
                             learn_press_add_order_item_meta($order_item_id, '_subtotal', $order_item['product_subtotal']);
                             learn_press_add_order_item_meta($order_item_id, '_total', $order_item['product_subtotal']);
                         }
                         if (empty(self::$course_order_map[$old_course_id])) {
                             self::$course_order_map[$old_course_id] = array();
                         }
                         self::$course_order_map[$old_course_id][] = $old_id;
                     }
                 }
                 add_post_meta($new_id, '_prices_include_tax', 'no');
                 add_post_meta($new_id, '_user_agent', '');
                 add_post_meta($new_id, '_order_key', '');
                 add_post_meta($new_id, '_transaction_fee', '0');
                 continue;
             }
             $new_key = $keys[$meta['meta_key']];
             $new_value = $meta['meta_value'];
             if ('_payment_method' == $new_key) {
                 $method_title = preg_replace('!-!', ' ', $new_value);
                 $method_title = ucwords($method_title);
                 add_post_meta($new_id, '_payment_method_title', $method_title);
             }
             add_post_meta($new_id, $new_key, $new_value);
         }
     }
 }
Example #2
0
 /**
  * Add a new item to order
  *
  * @param       $item
  * @param int   $quantity
  * @param array $meta
  *
  * @return bool
  */
 function add_item($item, $quantity = 1, $meta = array())
 {
     $item_id = learn_press_add_order_item($this->id, $item);
     if (!$item_id) {
         return false;
     }
     learn_press_add_order_item_meta($item_id, '_course_id', $item['item_id']);
     learn_press_add_order_item_meta($item_id, '_quantity', $item['quantity']);
     learn_press_add_order_item_meta($item_id, '_subtotal', $item['subtotal']);
     learn_press_add_order_item_meta($item_id, '_total', $item['total']);
     return $item_id;
 }
 /**
  * Add new course to order
  */
 static function add_item_to_order()
 {
     // ensure that user has permission
     if (!current_user_can('edit_lp_orders')) {
         die(__('Permission denied', 'learn_press'));
     }
     // verify nonce
     $nonce = learn_press_get_request('nonce');
     if (!wp_verify_nonce($nonce, 'add_item_to_order')) {
         die(__('Check nonce failed', 'learn_press'));
     }
     // validate order
     $order_id = learn_press_get_request('order_id');
     if (!is_numeric($order_id) || get_post_type($order_id) != 'lp_order') {
         die(__('Order invalid', 'learn_press'));
     }
     // validate item
     $item_id = learn_press_get_request('item_id');
     $post = get_post($item_id);
     if (!$post || 'lp_course' !== $post->post_type) {
         die(__('Course invalid', 'learn_press'));
     }
     $course = learn_press_get_course($post->ID);
     $order = learn_press_get_order($order_id);
     $item = array('course_id' => $course->id, 'name' => $course->get_title(), 'quantity' => 1, 'subtotal' => $course->get_price(), 'total' => $course->get_price());
     // Add item
     $item_id = learn_press_add_order_item($order_id, array('order_item_name' => $item['name']));
     $item['id'] = $item_id;
     // Add item meta
     if ($item_id) {
         $item = apply_filters('learn_press_ajax_order_item', $item);
         learn_press_add_order_item_meta($item_id, '_course_id', $item['course_id']);
         learn_press_add_order_item_meta($item_id, '_quantity', $item['quantity']);
         learn_press_add_order_item_meta($item_id, '_subtotal', $item['subtotal']);
         learn_press_add_order_item_meta($item_id, '_total', $item['total']);
         do_action('learn_press_ajax_add_order_item_meta', $item);
     }
     $order_data = learn_press_update_order_items($order_id);
     $currency_symbol = learn_press_get_currency_symbol($order_data['currency']);
     $order_data['subtotal_html'] = learn_press_format_price($order_data['subtotal'], $currency_symbol);
     $order_data['total_html'] = learn_press_format_price($order_data['total'], $currency_symbol);
     ob_start();
     include learn_press_get_admin_view('meta-boxes/order/order-item.php');
     $item_html = ob_get_clean();
     learn_press_send_json(array('result' => 'success', 'item_html' => $item_html, 'order_data' => $order_data));
 }