PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.16.0
GiveWP – Donation Plugin and Fundraising Platform v3.16.0
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / API / Endpoints / Reports / FormPerformance.php
give / src / API / Endpoints / Reports Last commit date
AverageDonation.php 4 years ago DonationsVsIncome.php 4 years ago Endpoint.php 4 years ago FormPerformance.php 4 years ago Income.php 4 years ago IncomeBreakdown.php 4 years ago PaymentMethods.php 4 years ago PaymentStatuses.php 4 years ago RecentDonations.php 4 years ago TopDonors.php 4 years ago TotalDonors.php 4 years ago TotalIncome.php 4 years ago TotalRefunds.php 4 years ago
FormPerformance.php
125 lines
1 <?php
2
3 /**
4 * Form Performance endpoint
5 *
6 * @package Give
7 */
8
9 namespace Give\API\Endpoints\Reports;
10
11 class FormPerformance extends Endpoint
12 {
13
14 protected $payments;
15
16 public function __construct()
17 {
18 $this->endpoint = 'form-performance';
19 }
20
21 public function getReport($request)
22 {
23 $start = date_create($request->get_param('start'));
24 $end = date_create($request->get_param('end'));
25 $diff = date_diff($start, $end);
26
27 $data = $this->get_data($start, $end);
28
29 return $data;
30 }
31
32 public function get_data($start, $end)
33 {
34 $paymentObjects = $this->getPayments($start->format('Y-m-d'), $end->format('Y-m-d'), 'date', -1);
35
36 $forms = [];
37 $labels = [];
38 $tooltips = [];
39
40 if (count($paymentObjects) > 0) {
41 foreach ($paymentObjects as $paymentObject) {
42 if ($paymentObject->status === 'publish' || $paymentObject->status === 'give_subscription') {
43 $forms[$paymentObject->form_id]['income'] = isset($forms[$paymentObject->form_id]['income']) ? $forms[$paymentObject->form_id]['income'] += $paymentObject->total : $paymentObject->total;
44 $forms[$paymentObject->form_id]['donations'] = isset($forms[$paymentObject->form_id]['donations']) ? $forms[$paymentObject->form_id]['donations'] += 1 : 1;
45 $forms[$paymentObject->form_id]['title'] = $paymentObject->form_title;
46 }
47 }
48
49 $sorted = usort(
50 $forms,
51 function ($a, $b) {
52 if ($a['income'] == $b['income']) {
53 return 0;
54 }
55
56 return ($a['income'] > $b['income']) ? -1 : 1;
57 }
58 );
59
60 if ($sorted === true) {
61 $forms = array_slice($forms, 0, 5);
62
63 foreach ($forms as $key => $value) {
64 $tooltips[] = [
65 'title' => give_currency_filter(
66 give_format_amount($value['income']),
67 [
68 'currency_code' => $this->currency,
69 'decode_currency' => true,
70 'sanitize' => false,
71 ]
72 ),
73 'body' => $value['donations'] . ' ' . __('Donations', 'give'),
74 'footer' => $value['title'],
75 ];
76 $labels[] = $value['title'];
77 $forms[$key] = $value['income'];
78 }
79
80 $forms = array_values($forms);
81 }
82 } else {
83 $formsQuery = new \Give_Forms_Query(['posts_per_page' => 5]);
84
85 $allForms = $formsQuery->get_forms();
86
87 foreach ($allForms as $form) {
88 $forms[$form->ID]['income'] = 0;
89 $forms[$form->ID]['donations'] = 0;
90 $forms[$form->ID]['title'] = $form->post_title;
91 }
92
93 foreach ($forms as $key => $value) {
94 $tooltips[] = [
95 'title' => give_currency_filter(
96 give_format_amount($value['income']),
97 [
98 'currency_code' => $this->currency,
99 'decode_currency' => true,
100 'sanitize' => false,
101 ]
102 ),
103 'body' => $value['donations'] . ' ' . __('Donations', 'give'),
104 'footer' => $value['title'],
105 ];
106 $labels[] = $value['title'];
107 $forms[$key] = $value['income'];
108 }
109
110 $forms = array_values($forms);
111 }
112
113 // Create data object to be returned, with 'highlights' object containing total and average figures to display
114 return [
115 'datasets' => [
116 [
117 'data' => $forms,
118 'tooltips' => $tooltips,
119 'labels' => $labels,
120 ],
121 ],
122 ];
123 }
124 }
125