Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/tutor-pro/tools/exporters/OrderExporter.php
Keine Baseline-Datei – Diff nur gegen leer.
1
-
1
+
<?php
2
+
/**
3
+
* Order Exporter.
4
+
*
5
+
* @package TutorPro\Tools
6
+
* @author Themeum<support@themeum.com>
7
+
* @link https://themeum.com
8
+
* @since 3.8.1
9
+
*/
10
+
11
+
namespace TutorPro\Tools;
12
+
13
+
use Tutor\Models\OrderModel;
14
+
use Tutor\Helpers\QueryHelper;
15
+
use Tutor\Models\OrderItemMetaModel;
16
+
17
+
if ( ! defined( 'ABSPATH' ) ) {
18
+
exit;
19
+
}
20
+
21
+
/**
22
+
* Handle order exporting
23
+
*
24
+
* @since 3.8.1
25
+
*/
26
+
class OrderExporter {
27
+
28
+
/**
29
+
* Export orders and related details for given IDs.
30
+
*
31
+
* @since 3.8.1
32
+
*
33
+
* @param int[] $ids Array of IDs (bundle_id/course_id, plan_ids) to export.
34
+
* @param int $course_id Optional. Course ID to calculate earnings. Default is 0.
35
+
*
36
+
* @return array Returns an array of structured order data, including:
37
+
* - 'orders' => Order details.
38
+
* - 'order_items' => Order item details.
39
+
* - 'order_meta' => Meta data for the order.
40
+
* - 'earnings' => Earnings for the order and course.
41
+
*/
42
+
public static function export( array $ids, $course_id = 0 ): array {
43
+
44
+
global $wpdb;
45
+
46
+
if ( empty( $ids ) ) {
47
+
return array();
48
+
}
49
+
50
+
$order_model = new OrderModel();
51
+
$order_item_meta_model = new OrderItemMetaModel();
52
+
$order_items = $order_model->get_order_details( $ids );
53
+
$user_ids = array();
54
+
$result = array();
55
+
56
+
$total_order_column = count( QueryHelper::get_table_schema( $wpdb->tutor_orders ) );
57
+
58
+
// Separate order data, order item data, order_meta and earnings.
59
+
if ( ! empty( $order_items ) ) {
60
+
$result = array_map(
61
+
function ( $item ) use ( $total_order_column, $course_id, &$user_ids, $order_model, $order_item_meta_model ) {
62
+
63
+
if ( ! empty( $course_id ) ) {
64
+
array_push( $user_ids, $item->user_id );
65
+
}
66
+
67
+
$orders = array_slice( (array) $item, 0, $total_order_column );
68
+
$order_items = array_slice( (array) $item, $total_order_column );
69
+
70
+
// Rename 'item_coupon_code' to 'coupon_code' for consistency with `wp_tutor_order_items` table.
71
+
$order_items['coupon_code'] = $order_items['item_coupon_code'];
72
+
unset( $order_items['item_coupon_code'] );
73
+
74
+
return array(
75
+
'orders' => $orders,
76
+
'order_meta' => $order_model->get_order_meta_by_order_id( $orders['id'] ),
77
+
'order_items' => $order_items,
78
+
'order_item_meta' => $order_item_meta_model->get_meta( $order_items['order_items_id'], null, false ),
79
+
'earnings' => $order_model->get_earnings_by_order_and_course( $orders['id'], $course_id ),
80
+
);
81
+
},
82
+
$order_items
83
+
);
84
+
}
85
+
86
+
if ( ! empty( $course_id ) ) {
87
+
update_option( Exporter::OPTION_USER_IDS . $course_id, array_unique( $user_ids ) );
88
+
}
89
+
90
+
return $result;
91
+
}
92
+
}
93
+