PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / 4.17.1
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress v4.17.1
4.17.1 4.17.0 4.16.19 4.16.18 4.16.17 4.16.16 trunk 1.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5a 1.1.6 1.1.7 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4 1.4.1 1.4.2 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.1.9 2.2.10 2.2.11 2.2.12 2.2.13 2.2.14 2.2.15 2.2.16 2.2.2 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 3.0 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 3.2.15 3.2.16 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.13.4 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.15.0 4.15.1 4.15.10 4.15.11 4.15.12 4.15.13 4.15.14 4.15.15 4.15.16 4.15.17 4.15.18 4.15.19 4.15.2 4.15.20 4.15.20.1 4.15.21 4.15.22 4.15.23 4.15.24 4.15.25 4.15.3 4.15.4 4.15.5 4.15.6 4.15.7 4.15.8 4.15.9 4.16.0 4.16.1 4.16.10 4.16.11 4.16.12 4.16.13 4.16.14 4.16.15 4.16.2 4.16.3 4.16.4 4.16.5 4.16.6 4.16.7 4.16.8 4.16.9 4.2.0 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.7.0 4.8.0 4.9.0
wp-user-avatar / src / Admin / SettingsPages / Membership / DashboardPage / TopPlans.php
wp-user-avatar / src / Admin / SettingsPages / Membership / DashboardPage Last commit date
AbstractReport.php 3 years ago Orders.php 3 years ago PaymentMethods.php 3 years ago Refunds.php 4 years ago ReportFilterData.php 4 years ago ReportInterval.php 4 years ago Revenue.php 4 years ago SettingsPage.php 1 year ago Taxes.php 4 years ago TopPlans.php 4 years ago index.php 4 years ago
TopPlans.php
124 lines
1 <?php
2
3 namespace ProfilePress\Core\Admin\SettingsPages\Membership\DashboardPage;
4
5 use ProfilePress\Core\Membership\Models\Order\OrderStatus;
6
7 class TopPlans extends AbstractReport
8 {
9 public function get_where_clause($groupBy = false, $start_date = '', $end_date = '')
10 {
11 $start_date = $this->start_date_carbon;
12 $end_date = $this->end_date_carbon;
13
14 $sql = "date_created >= %s AND date_created <= %s";
15
16 $variables = [
17 $start_date->utc()->toDateTimeString(),
18 $end_date->utc()->toDateTimeString()
19 ];
20
21 if ( ! empty($this->plan_id)) {
22 $sql .= " AND plan_id = %d";
23 $variables[] = $this->plan_id;
24 }
25
26 $sql .= " GROUP BY plan_id ORDER BY sales DESC LIMIT 10";
27
28 return $this->wpdb()->prepare($sql, $variables);
29 }
30
31 protected function get_query_data()
32 {
33 static $cache = null;
34
35 if (is_null($cache)) {
36 $cache = $this->wpdb()->get_results(
37 $this->wpdb()->prepare(
38 "SELECT plan_id, SUM(total) as earnings, COUNT(id) as sales FROM {$this->db_table} WHERE status = %s AND {$this->get_where_clause()}",
39 OrderStatus::COMPLETED
40 ),
41 'ARRAY_A'
42 );
43 }
44
45 return $cache;
46 }
47
48 public function get_interval_data($bucket, $plan_id)
49 {
50 return wp_list_filter($bucket, ['plan_id' => $plan_id]);
51 }
52
53 public function get_total($start_date = '', $end_date = '')
54 {
55 return null;
56 }
57
58 public function get_trend()
59 {
60 return 0;
61 }
62
63 public function get_labels()
64 {
65 static $labels = null;
66
67 if (is_null($labels)) {
68
69 $labels = [];
70
71 $query_data = $this->get_query_data();
72
73 if (is_array($query_data) && ! empty($query_data)) {
74 foreach ($query_data as $datum) {
75 $plan_id = $datum['plan_id'];
76 $labels[$plan_id] = ppress_get_plan($plan_id)->name;
77 }
78 }
79 }
80
81 return $labels;
82 }
83
84 public function get_data()
85 {
86 $query_data = $this->get_query_data();
87
88 $sales_dataset = [];
89 $earnings_dataset = [];
90
91 if (is_array($query_data) && ! empty($query_data)) {
92
93 foreach ($this->get_labels() as $plan_id => $label) {
94
95 $data = $this->get_interval_data($query_data, $plan_id);
96
97 $data = reset($data);
98
99 $sales_dataset[] = $data['sales'];
100 $earnings_dataset[] = ppress_sanitize_amount($data['earnings']);
101 }
102 }
103
104 return [
105 [
106 'label' => esc_html__('Sales', 'wp-user-avatar'),
107 'data' => $sales_dataset,
108 'borderColor' => 'rgb(54, 162, 235)',
109 'backgroundColor' => 'rgba(54, 162, 235, 0.5)',
110 'stack' => 'combined',
111 'type' => 'bar',
112 'yAxisID' => 'y'
113 ],
114 [
115 'label' => esc_html__('Earnings', 'wp-user-avatar'),
116 'data' => $earnings_dataset,
117 'borderColor' => 'rgb(255, 99, 132)',
118 'backgroundColor' => 'rgba(255, 99, 132, 0.5)',
119 'stack' => 'combined',
120 'yAxisID' => 'y1'
121 ]
122 ];
123 }
124 }