PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.6.0
GiveWP – Donation Plugin and Fundraising Platform v2.6.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 6 years ago DonationsVsIncome.php 6 years ago Endpoint.php 6 years ago FormPerformance.php 6 years ago Income.php 6 years ago IncomeBreakdown.php 6 years ago PaymentMethods.php 6 years ago PaymentStatuses.php 6 years ago RecentDonations.php 6 years ago TopDonors.php 6 years ago TotalDonors.php 6 years ago TotalIncome.php 6 years ago TotalRefunds.php 6 years ago
FormPerformance.php
139 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 protected $payments;
14
15 public function __construct() {
16 $this->endpoint = 'form-performance';
17 }
18
19 public function get_report( $request ) {
20
21 // Check if a cached version exists
22 $cached_report = $this->get_cached_report( $request );
23 if ( $cached_report !== null ) {
24 // Bail and return the cached version
25 return new \WP_REST_Response(
26 [
27 'data' => $cached_report,
28 ]
29 );
30 }
31
32 $start = date_create( $request['start'] );
33 $end = date_create( $request['end'] );
34 $diff = date_diff( $start, $end );
35
36 $data = $this->get_data( $start, $end );
37
38 // Cache the report data
39 $result = $this->cache_report( $request, $data );
40 $status = $this->get_give_status();
41
42 return new \WP_REST_Response(
43 [
44 'data' => $data,
45 'status' => $status,
46 ]
47 );
48 }
49
50 public function get_data( $start, $end ) {
51
52 $this->payments = $this->get_payments( $start->format( 'Y-m-d' ), $end->format( 'Y-m-d' ), 'date', -1 );
53
54 $forms = [];
55 $labels = [];
56 $tooltips = [];
57
58 if ( count( $this->payments ) > 0 ) {
59
60 foreach ( $this->payments as $payment ) {
61 if ( $payment->status === 'publish' || $payment->status === 'give_subscription' ) {
62 $forms[ $payment->form_id ]['income'] = isset( $forms[ $payment->form_id ]['income'] ) ? $forms[ $payment->form_id ]['income'] += $payment->total : $payment->total;
63 $forms[ $payment->form_id ]['donations'] = isset( $forms[ $payment->form_id ]['donations'] ) ? $forms[ $payment->form_id ]['donations'] += 1 : 1;
64 $forms[ $payment->form_id ]['title'] = $payment->form_title;
65 }
66 }
67
68 $sorted = usort(
69 $forms,
70 function ( $a, $b ) {
71 if ( $a['income'] == $b['income'] ) {
72 return 0;
73 }
74 return ( $a['income'] > $b['income'] ) ? -1 : 1;
75 }
76 );
77
78 if ( $sorted === true ) {
79 $forms = array_slice( $forms, 0, 5 );
80
81 foreach ( $forms as $key => $value ) {
82 $tooltips[] = [
83 'title' => give_currency_filter( give_format_amount( $value['income'] ), [ 'decode_currency' => true ] ),
84 'body' => $value['donations'] . ' ' . __( 'Donations', 'give' ),
85 'footer' => $value['title'],
86 ];
87 $labels[] = $value['title'];
88 $forms[ $key ] = $value['income'];
89 }
90
91 $forms = array_values( $forms );
92 }
93 } else {
94
95 $formsQuery = new \Give_Forms_Query(
96 [
97 'posts_per_page' => 5,
98 ]
99 );
100
101 $allForms = $formsQuery->get_forms();
102
103 foreach ( $allForms as $form ) {
104 $forms[ $form->ID ]['income'] = 0;
105 $forms[ $form->ID ]['donations'] = 0;
106 $forms[ $form->ID ]['title'] = $form->post_title;
107 }
108
109 foreach ( $forms as $key => $value ) {
110 $tooltips[] = [
111 'title' => give_currency_filter( give_format_amount( $value['income'] ), [ 'decode_currency' => true ] ),
112 'body' => $value['donations'] . ' ' . __( 'Donations', 'give' ),
113 'footer' => $value['title'],
114 ];
115 $labels[] = $value['title'];
116 $forms[ $key ] = $value['income'];
117 }
118
119 $forms = array_values( $forms );
120
121 }
122
123 // Create data objec to be returned, with 'highlights' object containing total and average figures to display
124 $data = [
125 'forms' => $allForms,
126 'datasets' => [
127 [
128 'data' => $forms,
129 'tooltips' => $tooltips,
130 'labels' => $labels,
131 ],
132 ],
133 ];
134
135 return $data;
136
137 }
138 }
139