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); } } }
/** * 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)); }