| @@ -4,8 +4,10 @@ | ||
| 4 | 4 | * |
| 5 | 5 | * @since 3.0.0 |
| 6 | 6 | */ |
| 7 | 7 | |
| 8 | +use LearnPress\Models\UserItems\UserCourseModel; | |
| 9 | + | |
| 8 | 10 | defined( 'ABSPATH' ) || exit(); |
| 9 | 11 | |
| 10 | 12 | class LP_Order_CURD extends LP_Object_Data_CURD implements LP_Interface_CURD { |
| 11 | 13 | |
| @@ -28,20 +30,22 @@ | ||
| 28 | 30 | if ( ! $order instanceof LP_Order ) { |
| 29 | 31 | return false; |
| 30 | 32 | } |
| 31 | 33 | |
| 32 | - $order->set_order_date( current_time( 'mysql' ) ); | |
| 34 | + //$order->set_order_date( time() ); | |
| 33 | 35 | $order->set_order_key( learn_press_generate_order_key() ); |
| 36 | + $status = $this->format_status_save_db( $order ); | |
| 37 | + $lp_time = new LP_Datetime( time() ); | |
| 34 | 38 | |
| 35 | 39 | $order_data = array( |
| 36 | 40 | 'post_author' => get_current_user_id(), |
| 37 | 41 | 'post_parent' => $order->get_parent_id(), |
| 38 | 42 | 'post_type' => LP_ORDER_CPT, |
| 39 | - 'post_status' => $order->get_order_status(), | |
| 43 | + 'post_status' => $status, | |
| 40 | 44 | 'ping_status' => 'closed', |
| 41 | 45 | 'post_title' => $order->get_title(), |
| 42 | - 'post_date' => $order->get_order_date( 'edit' )->toSql( true ), | |
| 43 | - 'post_date_gmt' => $order->get_order_date( 'edit' )->toSql( false ), | |
| 46 | + 'post_date' => $lp_time->toSql( true ), | |
| 47 | + 'post_date_gmt' => $lp_time->toSql(), | |
| 44 | 48 | 'post_excerpt' => $order->get_customer_note(), |
| 45 | 49 | ); |
| 46 | 50 | |
| 47 | 51 | $order_data = apply_filters( 'learn-press/order/new-data', $order_data ); |
| @@ -46,11 +50,17 @@ | ||
| 46 | 50 | |
| 47 | 51 | $order_data = apply_filters( 'learn-press/order/new-data', $order_data ); |
| 48 | 52 | |
| 49 | 53 | $id = wp_insert_post( $order_data, true ); |
| 50 | - | |
| 51 | 54 | if ( $id && ! is_wp_error( $id ) ) { |
| 52 | 55 | $order->set_id( $id ); |
| 56 | + // Update title oder when order is have just create. | |
| 57 | + wp_update_post( | |
| 58 | + array( | |
| 59 | + 'ID' => $id, | |
| 60 | + 'post_title' => learn_press_transaction_order_number( $id ), | |
| 61 | + ) | |
| 62 | + ); | |
| 53 | 63 | $this->_updates( $order ); |
| 54 | 64 | } |
| 55 | 65 | |
| 56 | 66 | return $id; |
| @@ -56,10 +66,89 @@ | ||
| 56 | 66 | return $id; |
| 57 | 67 | } |
| 58 | 68 | |
| 59 | 69 | /** |
| 70 | + * Update order. | |
| 71 | + * | |
| 60 | 72 | * @param LP_Order $order |
| 73 | + * | |
| 74 | + * @return int | |
| 75 | + * @Todo tungnx - check method | |
| 61 | 76 | */ |
| 77 | + public function update( &$order ) { | |
| 78 | + if ( ! $order instanceof LP_Order ) { | |
| 79 | + return false; | |
| 80 | + } | |
| 81 | + | |
| 82 | + $post = get_post( $order->get_id() ); | |
| 83 | + $status = $this->format_status_save_db( $order ); | |
| 84 | + $post_data = array( | |
| 85 | + 'post_status' => $status, | |
| 86 | + ); | |
| 87 | + | |
| 88 | + // For case edit Order on Backend. | |
| 89 | + if ( isset( $_POST['order-date'] ) ) { | |
| 90 | + // Data time submit edit order will is local time | |
| 91 | + $order_date = LP_Request::get_param( 'order-date' ); | |
| 92 | + $order_hour = LP_Request::get_param( 'order-hour', '00' ); | |
| 93 | + $order_min = LP_Request::get_param( 'order-minute', '00' ); | |
| 94 | + $date_time_local = $order_date . ' ' . $order_hour . ':' . $order_min . ':00'; | |
| 95 | + | |
| 96 | + // Date GMT | |
| 97 | + $lpDateTimeLocal = new LP_Datetime( $date_time_local ); | |
| 98 | + $date_time_gmt = $lpDateTimeLocal->to_gmt_string( $lpDateTimeLocal ); | |
| 99 | + $post_data['post_date'] = $date_time_local; | |
| 100 | + $post_data['post_date_gmt'] = $date_time_gmt; | |
| 101 | + } elseif ( $post->post_status === 'auto-draft' | |
| 102 | + && $post->post_date_gmt === '0000-00-00 00:00:00' ) { | |
| 103 | + $date_time_gmt = get_gmt_from_date( $post->post_date ); | |
| 104 | + $post_data['post_date_gmt'] = $date_time_gmt; | |
| 105 | + } | |
| 106 | + | |
| 107 | + $post_data = apply_filters( 'learn-press/order/update-data', $post_data, $order->get_id() ); | |
| 108 | + | |
| 109 | + /** | |
| 110 | + * When updating this object, to prevent infinite loops, use $wpdb | |
| 111 | + * to update data, since wp_update_post spawns more calls to the | |
| 112 | + * save_post action. | |
| 113 | + * | |
| 114 | + * This ensures hooks are fired by either WP itself (admin screen save), | |
| 115 | + * or an update purely from CRUD. | |
| 116 | + */ | |
| 117 | + if ( doing_action( 'save_post' ) ) { | |
| 118 | + $GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, $post_data, array( 'ID' => $order->get_id() ) ); | |
| 119 | + clean_post_cache( $order->get_id() ); | |
| 120 | + } else { | |
| 121 | + wp_update_post( array_merge( array( 'ID' => $order->get_id() ), $post_data ) ); | |
| 122 | + } | |
| 123 | + $this->_updates( $order ); | |
| 124 | + | |
| 125 | + return $order->get_id(); | |
| 126 | + } | |
| 127 | + | |
| 128 | + /** | |
| 129 | + * Format status of LP Order before save DB. | |
| 130 | + * | |
| 131 | + * @param LP_Order $lp_order | |
| 132 | + * | |
| 133 | + * @return string | |
| 134 | + */ | |
| 135 | + private function format_status_save_db( LP_Order $lp_order ): string { | |
| 136 | + $status = ! empty( $lp_order->get_status() ) ? $lp_order->get_status() : LP_ORDER_PENDING; | |
| 137 | + if ( $status === LP_ORDER_TRASH || $status === 'auto-draft' ) { | |
| 138 | + return $status; | |
| 139 | + } | |
| 140 | + | |
| 141 | + if ( ! preg_match( '/^lp-/', $status ) ) { | |
| 142 | + $status = 'lp-' . $status; | |
| 143 | + } | |
| 144 | + | |
| 145 | + return $status; | |
| 146 | + } | |
| 147 | + | |
| 148 | + /** | |
| 149 | + * @param LP_Order $order | |
| 150 | + */ | |
| 62 | 151 | public function _updates( &$order ) { |
| 63 | 152 | $this->update_post_meta( $order ); |
| 64 | 153 | $order->update_meta(); |
| 65 | 154 | } |
| @@ -74,9 +163,9 @@ | ||
| 74 | 163 | '_user_id' => $order->get_user_id(), |
| 75 | 164 | '_order_subtotal' => $order->get_subtotal(), |
| 76 | 165 | '_order_total' => $order->get_total(), |
| 77 | 166 | '_order_key' => $order->get_order_key(), |
| 78 | - '_payment_method' => $order->get_payment_method_title(), | |
| 167 | + '_payment_method' => $order->get_data( 'payment_method', '' ), | |
| 79 | 168 | '_payment_method_title' => $order->get_payment_method_title(), |
| 80 | 169 | '_user_ip_address' => $order->get_user_ip_address(), |
| 81 | 170 | '_user_agent' => $order->get_user_agent(), |
| 82 | 171 | '_order_version' => '3.0.0', |
| @@ -100,9 +189,9 @@ | ||
| 100 | 189 | * |
| 101 | 190 | * @return mixed |
| 102 | 191 | */ |
| 103 | 192 | /* |
| 104 | - old function - comment by tungnx | |
| 193 | + old function - comment by tungnx | |
| 105 | 194 | public function read_items( $order ) { |
| 106 | 195 | global $wpdb; |
| 107 | 196 | $screen = function_exists('get_current_screen')? get_current_screen():null; |
| 108 | 197 | $query = $wpdb->prepare( " |
| @@ -142,10 +231,17 @@ | ||
| 142 | 231 | * @param LP_Order $order |
| 143 | 232 | * |
| 144 | 233 | * @return mixed |
| 145 | 234 | * @author tungnx |
| 235 | + * Todo: review to rewrite. | |
| 146 | 236 | */ |
| 147 | 237 | public function read_items( $order ) { |
| 238 | + $key = "order/{$order->get_id()}/{$order->get_status()}/items"; | |
| 239 | + $items = LP_Cache::cache_load_first( 'get', $key ); | |
| 240 | + if ( false !== $items ) { | |
| 241 | + return $items; | |
| 242 | + } | |
| 243 | + | |
| 148 | 244 | global $wpdb; |
| 149 | 245 | |
| 150 | 246 | $table_order_items = $wpdb->learnpress_order_items; |
| 151 | 247 | $table_order_item_meta = $wpdb->learnpress_order_itemmeta; |
| @@ -190,8 +286,10 @@ | ||
| 190 | 286 | $items[ $order_item_meta->order_item_id ][ $order_item_meta->meta_key ] = $order_item_meta->meta_value; |
| 191 | 287 | } |
| 192 | 288 | } |
| 193 | 289 | |
| 290 | + LP_Cache::cache_load_first( 'set', $key, $items ); | |
| 291 | + | |
| 194 | 292 | return $items; // apply_filters( 'learn_press_order_get_items', $items, $this ); |
| 195 | 293 | } |
| 196 | 294 | |
| 197 | 295 | /** |
| @@ -257,64 +355,20 @@ | ||
| 257 | 355 | |
| 258 | 356 | return $items; // apply_filters( 'learn_press_order_get_items', $items, $this ); |
| 259 | 357 | } |
| 260 | 358 | |
| 261 | - public function getTotalItem() { | |
| 359 | + /*public function getTotalItem() { | |
| 360 | + }*/ | |
| 262 | 361 | |
| 263 | - } | |
| 264 | - | |
| 265 | - public function get_item_meta( &$item ) { | |
| 362 | + /*public function get_item_meta( &$item ) { | |
| 266 | 363 | $metas = get_metadata( 'learnpress_order_item', $item['id'] ); |
| 267 | 364 | if ( $metas ) { |
| 268 | 365 | foreach ( $metas as $k => $v ) { |
| 269 | 366 | $item[ preg_replace( '!^_!', '', $k ) ] = LP_Helper::maybe_unserialize( $v[0] ); |
| 270 | 367 | } |
| 271 | - }; | |
| 272 | - } | |
| 273 | - | |
| 274 | - /** | |
| 275 | - * Update order. | |
| 276 | - * | |
| 277 | - * @param LP_Order $order | |
| 278 | - * | |
| 279 | - * @return int | |
| 280 | - */ | |
| 281 | - public function update( &$order ) { | |
| 282 | - | |
| 283 | - // If there is no items in the order then set it status to Pending | |
| 284 | - $status = $order->get_status() ? $order->get_status() : learn_press_default_order_status(); | |
| 285 | - /*if ( in_array( $status, array( 'completed', 'processing' ) ) && ! $order->get_items() ) { | |
| 286 | - $status = 'pending'; | |
| 287 | - }*/ | |
| 288 | - | |
| 289 | - $post_data = array( | |
| 290 | - 'post_date' => $order->get_order_date( 'edit' )->toSql(), | |
| 291 | - 'post_date_gmt' => $order->get_order_date( 'edit' )->toSql( false ), | |
| 292 | - 'post_status' => 'lp-' . $status, | |
| 293 | - 'post_parent' => $order->get_parent_id(), | |
| 294 | - ); | |
| 295 | - | |
| 296 | - $post_data = apply_filters( 'learn-press/order/update-data', $post_data, $order->get_id() ); | |
| 297 | - | |
| 298 | - /** | |
| 299 | - * When updating this object, to prevent infinite loops, use $wpdb | |
| 300 | - * to update data, since wp_update_post spawns more calls to the | |
| 301 | - * save_post action. | |
| 302 | - * | |
| 303 | - * This ensures hooks are fired by either WP itself (admin screen save), | |
| 304 | - * or an update purely from CRUD. | |
| 305 | - */ | |
| 306 | - if ( doing_action( 'save_post' ) ) { | |
| 307 | - $GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, $post_data, array( 'ID' => $order->get_id() ) ); | |
| 308 | - clean_post_cache( $order->get_id() ); | |
| 309 | - } else { | |
| 310 | - wp_update_post( array_merge( array( 'ID' => $order->get_id() ), $post_data ) ); | |
| 311 | 368 | } |
| 312 | - $this->_updates( $order ); | |
| 369 | + }*/ | |
| 313 | 370 | |
| 314 | - return $order->get_id(); | |
| 315 | - } | |
| 316 | - | |
| 317 | 371 | public function delete( &$object ) { |
| 318 | 372 | // TODO: Implement delete() method. |
| 319 | 373 | } |
| 320 | 374 | |
| @@ -321,10 +375,12 @@ | ||
| 321 | 375 | /** |
| 322 | 376 | * @param LP_Order $order |
| 323 | 377 | * |
| 324 | 378 | * @return LP_Order |
| 379 | + * @deprecated 4.2.3.5 | |
| 325 | 380 | */ |
| 326 | - public function cln( $order ) { | |
| 381 | + /*public function cln( $order ) { | |
| 382 | + _deprecated_function( __METHOD__, '4.2.3.5' ); | |
| 327 | 383 | |
| 328 | 384 | $cloned = clone $order; |
| 329 | 385 | |
| 330 | 386 | $cloned->set_id( 0 ); |
| @@ -350,9 +406,9 @@ | ||
| 350 | 406 | |
| 351 | 407 | $this->cln_items( $order->get_id(), $cloned->get_id() ); |
| 352 | 408 | |
| 353 | 409 | return $cloned; |
| 354 | - } | |
| 410 | + }*/ | |
| 355 | 411 | |
| 356 | 412 | /** |
| 357 | 413 | * Clone items from an order to another |
| 358 | 414 | * |
| @@ -359,10 +415,12 @@ | ||
| 359 | 415 | * @param int $from |
| 360 | 416 | * @param int $to |
| 361 | 417 | * |
| 362 | 418 | * @return mixed |
| 419 | + * @deprecated 4.2.3.5 | |
| 363 | 420 | */ |
| 364 | - public function cln_items( $from, $to ) { | |
| 421 | + /*public function cln_items( $from, $to ) { | |
| 422 | + _deprecated_function( __METHOD__, '4.2.3.5' ); | |
| 365 | 423 | $order = learn_press_get_order( $from ); |
| 366 | 424 | global $wpdb; |
| 367 | 425 | |
| 368 | 426 | $query = $wpdb->prepare( |
| @@ -370,9 +428,9 @@ | ||
| 370 | 428 | SELECT * |
| 371 | 429 | FROM {$wpdb->learnpress_order_items} oi |
| 372 | 430 | INNER JOIN {$wpdb->learnpress_order_itemmeta} oim ON oi.order_item_id = oim.learnpress_order_item_id |
| 373 | 431 | WHERE order_id = %d |
| 374 | - ", | |
| 432 | + ", | |
| 375 | 433 | $from |
| 376 | 434 | ); |
| 377 | 435 | |
| 378 | 436 | $items = $order->get_items(); |
| @@ -419,9 +477,9 @@ | ||
| 419 | 477 | } |
| 420 | 478 | $this->read_items( $order ); |
| 421 | 479 | |
| 422 | 480 | return true; |
| 423 | - } | |
| 481 | + }*/ | |
| 424 | 482 | |
| 425 | 483 | /** |
| 426 | 484 | * Load order data |
| 427 | 485 | * |
| @@ -453,27 +511,29 @@ | ||
| 453 | 511 | } else { |
| 454 | 512 | $users = 0; |
| 455 | 513 | } |
| 456 | 514 | |
| 457 | - $order->set_data_via_methods( | |
| 458 | - array( | |
| 459 | - 'user_id' => $users, | |
| 460 | - 'order_date' => new LP_Datetime( $post->post_date ), | |
| 461 | - 'date_modified' => new LP_Datetime( $post->post_modified ), | |
| 462 | - 'status' => str_replace( 'lp-', '', $post->post_status ), | |
| 463 | - 'parent_id' => $post->post_parent, | |
| 464 | - 'created_via' => get_post_meta( $post->ID, '_created_via', true ), | |
| 465 | - 'total' => get_post_meta( $post->ID, '_order_total', true ), | |
| 466 | - 'subtotal' => get_post_meta( $post->ID, '_order_subtotal', true ), | |
| 467 | - 'order_key' => get_post_meta( $post->ID, '_order_key', true ), | |
| 468 | - 'user_ip_address' => get_post_meta( $post->ID, '_user_ip_address', true ), | |
| 469 | - 'user_agent' => get_post_meta( $post->ID, '_user_agent', true ), | |
| 470 | - 'checkout_email' => get_post_meta( $post->ID, '_checkout_email', true ), | |
| 471 | - 'currency' => get_post_meta( $post->ID, '_order_currency', true ), | |
| 472 | - ) | |
| 473 | - ); | |
| 515 | + $lpDateTimeGmt = new LP_Datetime( $post->post_date_gmt ); | |
| 516 | + $date_local = $lpDateTimeGmt->toSql( true ); | |
| 517 | + $order->set_order_date( new LP_Datetime( $date_local ) ); | |
| 474 | 518 | |
| 475 | - $order->get_items(); | |
| 519 | + $order->set_user_id( $users ); | |
| 520 | + $order->set_date_modified( new LP_Datetime( $post->post_modified ) ); | |
| 521 | + $order->set_status( str_replace( 'lp-', '', $post->post_status ) ); | |
| 522 | + $order->set_parent_id( $post->post_parent ); | |
| 523 | + $order->set_created_via( get_post_meta( $post->ID, '_created_via', true ) ); | |
| 524 | + $order->set_total( get_post_meta( $post->ID, '_order_total', true ) ); | |
| 525 | + $order->set_subtotal( get_post_meta( $post->ID, '_order_subtotal', true ) ); | |
| 526 | + $order->set_order_key( get_post_meta( $post->ID, '_order_key', true ) ); | |
| 527 | + $order->set_user_ip_address( get_post_meta( $post->ID, '_user_ip_address', true ) ); | |
| 528 | + $order->set_user_agent( get_post_meta( $post->ID, '_user_agent', true ) ); | |
| 529 | + $order->set_checkout_email( get_post_meta( $post->ID, '_checkout_email', true ) ); | |
| 530 | + $order->set_currency( get_post_meta( $post->ID, '_order_currency', true ) ); | |
| 531 | + $order->set_data( 'order_subtotal', get_post_meta( $post->ID, '_order_subtotal', true ) ); | |
| 532 | + $order->set_data( 'order_total', get_post_meta( $post->ID, '_order_total', true ) ); | |
| 533 | + $order->set_data( 'payment_method', get_post_meta( $post->ID, '_payment_method', true ) ); | |
| 534 | + $order->set_data( 'payment_method_title', get_post_meta( $post->ID, '_payment_method_title', true ) ); | |
| 535 | + //$order->get_items(); | |
| 476 | 536 | $order->read_meta(); |
| 477 | 537 | } |
| 478 | 538 | |
| 479 | 539 | return true; |
| @@ -492,23 +552,23 @@ | ||
| 492 | 552 | $order = $this->get_order_by_key( $order_key ); |
| 493 | 553 | |
| 494 | 554 | // Validations |
| 495 | 555 | if ( ! $order ) { |
| 496 | - throw new Exception( esc_html__( 'Invalid order.', 'learnpress' ) ); | |
| 556 | + throw new Exception( esc_html__( 'Invalid Order key.', 'learnpress' ) ); | |
| 497 | 557 | } |
| 498 | 558 | |
| 499 | 559 | if ( ! $order->is_guest() ) { |
| 500 | - throw new Exception( esc_html__( 'Order is already assigned.', 'learnpress' ) ); | |
| 560 | + throw new Exception( esc_html__( 'Order key is already assigned.', 'learnpress' ) ); | |
| 501 | 561 | } |
| 502 | 562 | |
| 503 | 563 | $user = learn_press_get_user( $user_id ); |
| 504 | 564 | |
| 505 | 565 | if ( ! $user || $user instanceof LP_User_Guest ) { |
| 506 | - throw new Exception( esc_html__( 'User invalid!.', 'learnpress' ) ); | |
| 566 | + throw new Exception( esc_html__( 'Invalid User!', 'learnpress' ) ); | |
| 507 | 567 | } |
| 508 | 568 | |
| 509 | 569 | if ( $order->get_checkout_email() !== $user->get_email() ) { |
| 510 | - throw new Exception( esc_html__( 'Order key invalid with Email!', 'learnpress' ) ); | |
| 570 | + throw new Exception( esc_html__( 'Invalid order key with Email!', 'learnpress' ) ); | |
| 511 | 571 | } |
| 512 | 572 | |
| 513 | 573 | // Set user to order and update |
| 514 | 574 | $order->set_user_id( $user_id ); |
| @@ -515,13 +575,20 @@ | ||
| 515 | 575 | $order->save(); |
| 516 | 576 | |
| 517 | 577 | // Update user_id of lp_user_item |
| 518 | 578 | if ( $order->is_completed() ) { |
| 519 | - $lp_user_items_db = LP_User_Items_DB::getInstance(); | |
| 520 | - $filter = new LP_User_Items_Filter(); | |
| 521 | - $filter->user_id = $user_id; | |
| 522 | - $filter->ref_id = $order->get_id(); | |
| 523 | - $lp_user_items_db->update_user_id_by_order( $filter ); | |
| 579 | + $user_item_db = LP_User_Items_DB::getInstance(); | |
| 580 | + $filter = new LP_User_Items_Filter(); | |
| 581 | + $filter->ref_id = $order->get_id(); | |
| 582 | + $filter->limit = -1; | |
| 583 | + $userItemModels = $user_item_db->get_user_items( $filter ); | |
| 584 | + if ( ! empty( $userItemModels ) ) { | |
| 585 | + foreach ( $userItemModels as $userItemModelObj ) { | |
| 586 | + $userItemModel = new UserCourseModel( $userItemModelObj ); | |
| 587 | + $userItemModel->user_id = $user_id; | |
| 588 | + $userItemModel->save(); | |
| 589 | + } | |
| 590 | + } | |
| 524 | 591 | } |
| 525 | 592 | |
| 526 | 593 | // Trigger action |
| 527 | 594 | do_action( 'learn-press/order/recovered-successful', $order->get_id(), $user_id ); |
| @@ -558,45 +625,8 @@ | ||
| 558 | 625 | $order = learn_press_get_order( $order_id ); |
| 559 | 626 | } |
| 560 | 627 | |
| 561 | 628 | return $order; |
| 562 | - } | |
| 563 | - | |
| 564 | - /** | |
| 565 | - * Get all child orders of an order by id | |
| 566 | - * | |
| 567 | - * @param int $order_id | |
| 568 | - * | |
| 569 | - * @return array|bool|mixed | |
| 570 | - */ | |
| 571 | - public function get_child_orders( $order_id ) { | |
| 572 | - global $wpdb; | |
| 573 | - | |
| 574 | - $orders = LP_Object_Cache::get( 'order-' . $order_id, 'lp-child-orders' ); | |
| 575 | - | |
| 576 | - if ( false === $orders ) { | |
| 577 | - $query = $wpdb->prepare( | |
| 578 | - " | |
| 579 | - SELECT * | |
| 580 | - FROM {$wpdb->posts} | |
| 581 | - WHERE post_parent = %d | |
| 582 | - ", | |
| 583 | - $order_id | |
| 584 | - ); | |
| 585 | - | |
| 586 | - $posts = $wpdb->get_results( $query ); | |
| 587 | - if ( $posts ) { | |
| 588 | - foreach ( $posts as $order ) { | |
| 589 | - new WP_Post( $order ); | |
| 590 | - $orders[] = $order->ID; | |
| 591 | - } | |
| 592 | - } else { | |
| 593 | - $orders = array(); | |
| 594 | - } | |
| 595 | - LP_Object_Cache::set( 'order-' . $order_id, $orders, 'lp-child-orders' ); | |
| 596 | - } | |
| 597 | - | |
| 598 | - return $orders; | |
| 599 | 629 | } |
| 600 | 630 | |
| 601 | 631 | public function duplicate( &$order, $args = array() ) { |
| 602 | 632 | // TODO: Implement duplicate() method. |