PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 2.17.0
GiveWP – Donation Plugin and Fundraising Platform v2.17.0
4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 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 All 253 releases
give / src / API / Endpoints / Reports / FormPerformance.php

FormPerformance.php in GiveWP – Donation Plugin and Fundraising Platform 2.17.0, at src/API/Endpoints/Reports/FormPerformance.php

125 lines 3.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 getReport( $request ) {
20 $start = date_create( $request->get_param( 'start' ) );
21 $end = date_create( $request->get_param( 'end' ) );
22 $diff = date_diff( $start, $end );
23
24 $data = $this->get_data( $start, $end );
25
26 return $data;
27 }
28
29 public function get_data( $start, $end ) {
30
31 $paymentObjects = $this->getPayments( $start->format( 'Y-m-d' ), $end->format( 'Y-m-d' ), 'date', -1 );
32
33 $forms = [];
34 $labels = [];
35 $tooltips = [];
36
37 if ( count( $paymentObjects ) > 0 ) {
38
39 foreach ( $paymentObjects as $paymentObject ) {
40 if ( $paymentObject->status === 'publish' || $paymentObject->status === 'give_subscription' ) {
41 $forms[ $paymentObject->form_id ]['income'] = isset( $forms[ $paymentObject->form_id ]['income'] ) ? $forms[ $paymentObject->form_id ]['income'] += $paymentObject->total : $paymentObject->total;
42 $forms[ $paymentObject->form_id ]['donations'] = isset( $forms[ $paymentObject->form_id ]['donations'] ) ? $forms[ $paymentObject->form_id ]['donations'] += 1 : 1;
43 $forms[ $paymentObject->form_id ]['title'] = $paymentObject->form_title;
44 }
45 }
46
47 $sorted = usort(
48 $forms,
49 function ( $a, $b ) {
50 if ( $a['income'] == $b['income'] ) {
51 return 0;
52 }
53 return ( $a['income'] > $b['income'] ) ? -1 : 1;
54 }
55 );
56
57 if ( $sorted === true ) {
58 $forms = array_slice( $forms, 0, 5 );
59
60 foreach ( $forms as $key => $value ) {
61 $tooltips[] = [
62 'title' => give_currency_filter(
63 give_format_amount( $value['income'] ),
64 [
65 'currency_code' => $this->currency,
66 'decode_currency' => true,
67 'sanitize' => false,
68 ]
69 ),
70 'body' => $value['donations'] . ' ' . __( 'Donations', 'give' ),
71 'footer' => $value['title'],
72 ];
73 $labels[] = $value['title'];
74 $forms[ $key ] = $value['income'];
75 }
76
77 $forms = array_values( $forms );
78 }
79 } else {
80
81 $formsQuery = new \Give_Forms_Query( [ 'posts_per_page' => 5 ] );
82
83 $allForms = $formsQuery->get_forms();
84
85 foreach ( $allForms as $form ) {
86 $forms[ $form->ID ]['income'] = 0;
87 $forms[ $form->ID ]['donations'] = 0;
88 $forms[ $form->ID ]['title'] = $form->post_title;
89 }
90
91 foreach ( $forms as $key => $value ) {
92 $tooltips[] = [
93 'title' => give_currency_filter(
94 give_format_amount( $value['income'] ),
95 [
96 'currency_code' => $this->currency,
97 'decode_currency' => true,
98 'sanitize' => false,
99 ]
100 ),
101 'body' => $value['donations'] . ' ' . __( 'Donations', 'give' ),
102 'footer' => $value['title'],
103 ];
104 $labels[] = $value['title'];
105 $forms[ $key ] = $value['income'];
106 }
107
108 $forms = array_values( $forms );
109
110 }
111
112 // Create data object to be returned, with 'highlights' object containing total and average figures to display
113 return [
114 'datasets' => [
115 [
116 'data' => $forms,
117 'tooltips' => $tooltips,
118 'labels' => $labels,
119 ],
120 ],
121 ];
122
123 }
124 }
125