|
1
|
|
|
<?php |
|
|
|
|
|
|
2
|
|
|
/** |
|
3
|
|
|
* Graphing Functions |
|
4
|
|
|
* |
|
5
|
|
|
* @package Give |
|
6
|
|
|
* @subpackage Admin/Reports |
|
7
|
|
|
* @copyright Copyright (c) 2016, WordImpress |
|
8
|
|
|
* @license https://opensource.org/licenses/gpl-license GNU Public License |
|
9
|
|
|
* @since 1.0 |
|
10
|
|
|
*/ |
|
11
|
|
|
|
|
12
|
|
|
// Exit if accessed directly. |
|
13
|
|
|
if ( ! defined( 'ABSPATH' ) ) { |
|
14
|
|
|
exit; |
|
15
|
|
|
} |
|
16
|
|
|
|
|
17
|
|
|
/** |
|
18
|
|
|
* Show report graphs |
|
19
|
|
|
* |
|
20
|
|
|
* @since 1.0 |
|
21
|
|
|
* @return void |
|
22
|
|
|
*/ |
|
23
|
|
|
function give_reports_graph() { |
|
24
|
|
|
// Retrieve the queried dates |
|
25
|
|
|
$dates = give_get_report_dates(); |
|
26
|
|
|
|
|
27
|
|
|
// Determine graph options |
|
28
|
|
|
switch ( $dates['range'] ) : |
|
29
|
|
|
case 'today' : |
|
30
|
|
|
case 'yesterday' : |
|
31
|
|
|
$day_by_day = true; |
|
32
|
|
|
break; |
|
33
|
|
|
case 'last_year' : |
|
34
|
|
|
case 'this_year' : |
|
35
|
|
|
case 'last_quarter' : |
|
36
|
|
|
case 'this_quarter' : |
|
37
|
|
|
$day_by_day = false; |
|
38
|
|
|
break; |
|
39
|
|
|
case 'other' : |
|
40
|
|
|
if ( $dates['m_end'] - $dates['m_start'] >= 2 || $dates['year_end'] > $dates['year'] && ( $dates['m_start'] != '12' && $dates['m_end'] != '1' ) ) { |
|
41
|
|
|
$day_by_day = false; |
|
42
|
|
|
} else { |
|
43
|
|
|
$day_by_day = true; |
|
44
|
|
|
} |
|
45
|
|
|
break; |
|
46
|
|
|
default: |
|
47
|
|
|
$day_by_day = true; |
|
48
|
|
|
break; |
|
49
|
|
|
endswitch; |
|
50
|
|
|
|
|
51
|
|
|
$earnings_totals = 0.00; // Total earnings for time period shown |
|
52
|
|
|
$sales_totals = 0; // Total sales for time period shown |
|
53
|
|
|
|
|
54
|
|
|
$earnings_data = array(); |
|
55
|
|
|
$sales_data = array(); |
|
56
|
|
|
|
|
57
|
|
|
if ( $dates['range'] == 'today' || $dates['range'] == 'yesterday' ) { |
|
58
|
|
|
// Hour by hour |
|
59
|
|
|
$hour = 1; |
|
60
|
|
|
$month = date( 'n', current_time( 'timestamp' ) ); |
|
61
|
|
|
while ( $hour <= 23 ) : |
|
62
|
|
|
|
|
63
|
|
|
$sales = give_get_sales_by_date( $dates['day'], $month, $dates['year'], $hour ); |
|
64
|
|
|
$earnings = give_get_earnings_by_date( $dates['day'], $month, $dates['year'], $hour ); |
|
65
|
|
|
|
|
66
|
|
|
$sales_totals += $sales; |
|
67
|
|
|
$earnings_totals += $earnings; |
|
68
|
|
|
|
|
69
|
|
|
$date = mktime( $hour, 0, 0, $month, $dates['day'], $dates['year'] ) * 1000; |
|
70
|
|
|
$sales_data[] = array( $date, $sales ); |
|
71
|
|
|
$earnings_data[] = array( $date, $earnings ); |
|
72
|
|
|
|
|
73
|
|
|
$hour ++; |
|
74
|
|
|
endwhile; |
|
75
|
|
|
|
|
76
|
|
|
} elseif ( $dates['range'] == 'this_week' || $dates['range'] == 'last_week' ) { |
|
77
|
|
|
|
|
78
|
|
|
// Day by day |
|
79
|
|
|
$day = $dates['day']; |
|
80
|
|
|
$day_end = $dates['day_end']; |
|
81
|
|
|
$month = $dates['m_start']; |
|
82
|
|
|
while ( $day <= $day_end ) : |
|
83
|
|
|
$sales = give_get_sales_by_date( $day, $month, $dates['year'] ); |
|
84
|
|
|
$sales_totals += $sales; |
|
85
|
|
|
|
|
86
|
|
|
$earnings = give_get_earnings_by_date( $day, $month, $dates['year'] ); |
|
87
|
|
|
$earnings_totals += $earnings; |
|
88
|
|
|
|
|
89
|
|
|
$date = mktime( 0, 0, 0, $month, $day, $dates['year'] ) * 1000; |
|
90
|
|
|
$sales_data[] = array( $date, $sales ); |
|
91
|
|
|
$earnings_data[] = array( $date, $earnings ); |
|
92
|
|
|
$day ++; |
|
93
|
|
|
endwhile; |
|
94
|
|
|
|
|
95
|
|
|
} else { |
|
96
|
|
|
|
|
97
|
|
|
$y = $dates['year']; |
|
98
|
|
|
while ( $y <= $dates['year_end'] ) : |
|
99
|
|
|
|
|
100
|
|
|
if ( $dates['year'] == $dates['year_end'] ) { |
|
101
|
|
|
$month_start = $dates['m_start']; |
|
102
|
|
|
$month_end = $dates['m_end']; |
|
103
|
|
|
} elseif ( $y == $dates['year'] ) { |
|
104
|
|
|
$month_start = $dates['m_start']; |
|
105
|
|
|
$month_end = 12; |
|
106
|
|
|
} elseif ( $y == $dates['year_end'] ) { |
|
107
|
|
|
$month_start = 1; |
|
108
|
|
|
$month_end = $dates['m_end']; |
|
109
|
|
|
} else { |
|
110
|
|
|
$month_start = 1; |
|
111
|
|
|
$month_end = 12; |
|
112
|
|
|
} |
|
113
|
|
|
|
|
114
|
|
|
$i = $month_start; |
|
115
|
|
|
while ( $i <= $month_end ) : |
|
116
|
|
|
|
|
117
|
|
|
if ( $day_by_day ) { |
|
118
|
|
|
|
|
119
|
|
|
if ( $i == $month_end ) { |
|
120
|
|
|
|
|
121
|
|
|
$num_of_days = $dates['day_end']; |
|
122
|
|
|
|
|
123
|
|
|
} else { |
|
124
|
|
|
|
|
125
|
|
|
$num_of_days = cal_days_in_month( CAL_GREGORIAN, $i, $y ); |
|
126
|
|
|
|
|
127
|
|
|
} |
|
128
|
|
|
|
|
129
|
|
|
$d = $dates['day']; |
|
130
|
|
|
|
|
131
|
|
|
while ( $d <= $num_of_days ) : |
|
132
|
|
|
|
|
133
|
|
|
$sales = give_get_sales_by_date( $d, $i, $y ); |
|
134
|
|
|
$sales_totals += $sales; |
|
135
|
|
|
|
|
136
|
|
|
$earnings = give_get_earnings_by_date( $d, $i, $y ); |
|
137
|
|
|
$earnings_totals += $earnings; |
|
138
|
|
|
|
|
139
|
|
|
$date = mktime( 0, 0, 0, $i, $d, $y ) * 1000; |
|
140
|
|
|
$sales_data[] = array( $date, $sales ); |
|
141
|
|
|
$earnings_data[] = array( $date, $earnings ); |
|
142
|
|
|
$d ++; |
|
143
|
|
|
|
|
144
|
|
|
endwhile; |
|
145
|
|
|
|
|
146
|
|
|
} else { |
|
147
|
|
|
|
|
148
|
|
|
$sales = give_get_sales_by_date( null, $i, $y ); |
|
149
|
|
|
$sales_totals += $sales; |
|
150
|
|
|
|
|
151
|
|
|
$earnings = give_get_earnings_by_date( null, $i, $y ); |
|
152
|
|
|
$earnings_totals += $earnings; |
|
153
|
|
|
|
|
154
|
|
|
if ( $i == $month_end ) { |
|
155
|
|
|
|
|
156
|
|
|
$num_of_days = cal_days_in_month( CAL_GREGORIAN, $i, $y ); |
|
157
|
|
|
|
|
158
|
|
|
} else { |
|
159
|
|
|
|
|
160
|
|
|
$num_of_days = 1; |
|
161
|
|
|
|
|
162
|
|
|
} |
|
163
|
|
|
|
|
164
|
|
|
$date = mktime( 0, 0, 0, $i, $num_of_days, $y ) * 1000; |
|
165
|
|
|
$sales_data[] = array( $date, $sales ); |
|
166
|
|
|
$earnings_data[] = array( $date, $earnings ); |
|
167
|
|
|
|
|
168
|
|
|
} |
|
169
|
|
|
|
|
170
|
|
|
$i ++; |
|
171
|
|
|
|
|
172
|
|
|
endwhile; |
|
173
|
|
|
|
|
174
|
|
|
$y ++; |
|
175
|
|
|
endwhile; |
|
176
|
|
|
|
|
177
|
|
|
} |
|
178
|
|
|
|
|
179
|
|
|
$data = array( |
|
180
|
|
|
esc_html__( 'Income', 'give' ) => $earnings_data, |
|
181
|
|
|
esc_html__( 'Donations', 'give' ) => $sales_data |
|
182
|
|
|
); |
|
183
|
|
|
|
|
184
|
|
|
// start our own output buffer |
|
185
|
|
|
ob_start(); |
|
186
|
|
|
?> |
|
187
|
|
|
|
|
188
|
|
|
<div id="give-dashboard-widgets-wrap"> |
|
189
|
|
|
<div class="metabox-holder" style="padding-top: 0;"> |
|
190
|
|
|
<div class="postbox"> |
|
191
|
|
|
<div class="inside"> |
|
192
|
|
|
<?php give_reports_graph_controls(); ?> |
|
193
|
|
|
<?php |
|
194
|
|
|
$graph = new Give_Graph( $data, array( 'dataType' => array( 'amount', 'count' ) ) ); |
|
195
|
|
|
$graph->set( 'x_mode', 'time' ); |
|
196
|
|
|
$graph->set( 'multiple_y_axes', true ); |
|
197
|
|
|
$graph->display(); |
|
198
|
|
|
|
|
199
|
|
|
if ( 'this_month' == $dates['range'] ) { |
|
200
|
|
|
$estimated = give_estimated_monthly_stats(); |
|
201
|
|
|
} |
|
202
|
|
|
?> |
|
203
|
|
|
</div> |
|
204
|
|
|
</div> |
|
205
|
|
|
<table class="widefat reports-table alignleft" style="max-width:450px"> |
|
206
|
|
|
<tbody> |
|
207
|
|
|
<tr> |
|
208
|
|
|
<th scope="row"><strong><?php esc_html_e( 'Total income for period:', 'give' ); ?></strong></th> |
|
209
|
|
|
<td><?php echo give_currency_filter( give_format_amount( $earnings_totals ) ); ?></td> |
|
210
|
|
|
</tr> |
|
211
|
|
|
<tr class="alternate"> |
|
212
|
|
|
<th scope="row"><strong><?php esc_html_e( 'Total donations for period:', 'give' ); ?><strong></th> |
|
213
|
|
|
<td><?php echo $sales_totals; ?></td> |
|
214
|
|
|
</tr> |
|
215
|
|
|
<?php if ( 'this_month' == $dates['range'] ) : ?> |
|
216
|
|
|
<tr> |
|
217
|
|
|
<th scope="row"><strong><?php esc_html_e( 'Estimated monthly income:', 'give' ); ?></strong></th> |
|
218
|
|
|
<td><?php echo give_currency_filter( give_format_amount( $estimated['earnings'] ) ); ?></td> |
|
|
|
|
|
|
219
|
|
|
</tr> |
|
220
|
|
|
<tr class="alternate"> |
|
221
|
|
|
<th scope="row"><strong><?php esc_html_e( 'Estimated monthly donations:', 'give' ); ?></strong></th> |
|
222
|
|
|
<td><?php echo floor( $estimated['sales'] ); ?></td> |
|
223
|
|
|
</tr> |
|
224
|
|
|
<?php endif; ?> |
|
225
|
|
|
</table> |
|
226
|
|
|
|
|
227
|
|
|
<?php |
|
228
|
|
|
/** |
|
229
|
|
|
* Fires on report graphs widget. |
|
230
|
|
|
* |
|
231
|
|
|
* Allows you to add additional stats to the widget. |
|
232
|
|
|
* |
|
233
|
|
|
* @since 1.0 |
|
234
|
|
|
*/ |
|
235
|
|
|
do_action( 'give_reports_graph_additional_stats' ); |
|
236
|
|
|
?> |
|
237
|
|
|
|
|
238
|
|
|
</div> |
|
239
|
|
|
</div> |
|
240
|
|
|
<?php |
|
241
|
|
|
// get output buffer contents and end our own buffer |
|
242
|
|
|
$output = ob_get_contents(); |
|
243
|
|
|
ob_end_clean(); |
|
244
|
|
|
|
|
245
|
|
|
echo $output; |
|
246
|
|
|
} |
|
247
|
|
|
|
|
248
|
|
|
/** |
|
249
|
|
|
* Show report graphs of a specific product |
|
250
|
|
|
* |
|
251
|
|
|
* @since 1.0 |
|
252
|
|
|
* @return void |
|
253
|
|
|
*/ |
|
254
|
|
|
function give_reports_graph_of_form( $form_id = 0 ) { |
|
255
|
|
|
// Retrieve the queried dates |
|
256
|
|
|
$dates = give_get_report_dates(); |
|
257
|
|
|
|
|
258
|
|
|
// Determine graph options |
|
259
|
|
|
switch ( $dates['range'] ) : |
|
260
|
|
|
case 'today' : |
|
261
|
|
|
case 'yesterday' : |
|
262
|
|
|
$day_by_day = true; |
|
263
|
|
|
break; |
|
264
|
|
|
case 'last_year' : |
|
265
|
|
|
$day_by_day = false; |
|
266
|
|
|
break; |
|
267
|
|
|
case 'this_year' : |
|
268
|
|
|
$day_by_day = false; |
|
269
|
|
|
break; |
|
270
|
|
|
case 'last_quarter' : |
|
271
|
|
|
$day_by_day = false; |
|
272
|
|
|
break; |
|
273
|
|
|
case 'this_quarter' : |
|
274
|
|
|
$day_by_day = false; |
|
275
|
|
|
break; |
|
276
|
|
|
case 'other' : |
|
277
|
|
|
if ( $dates['m_end'] - $dates['m_start'] >= 2 || $dates['year_end'] > $dates['year'] ) { |
|
278
|
|
|
$day_by_day = false; |
|
279
|
|
|
} else { |
|
280
|
|
|
$day_by_day = true; |
|
281
|
|
|
} |
|
282
|
|
|
break; |
|
283
|
|
|
default: |
|
284
|
|
|
$day_by_day = true; |
|
285
|
|
|
break; |
|
286
|
|
|
endswitch; |
|
287
|
|
|
|
|
288
|
|
|
$earnings_totals = (float) 0.00; // Total earnings for time period shown |
|
289
|
|
|
$sales_totals = 0; // Total sales for time period shown |
|
290
|
|
|
|
|
291
|
|
|
$earnings_data = array(); |
|
292
|
|
|
$sales_data = array(); |
|
293
|
|
|
$stats = new Give_Payment_Stats; |
|
294
|
|
|
|
|
295
|
|
|
if ( $dates['range'] == 'today' || $dates['range'] == 'yesterday' ) { |
|
296
|
|
|
|
|
297
|
|
|
// Hour by hour |
|
298
|
|
|
$month = $dates['m_start']; |
|
299
|
|
|
$hour = 1; |
|
300
|
|
|
$minute = 0; |
|
301
|
|
|
$second = 0; |
|
302
|
|
|
while ( $hour <= 23 ) : |
|
303
|
|
|
|
|
304
|
|
|
if ( $hour == 23 ) { |
|
305
|
|
|
$minute = $second = 59; |
|
306
|
|
|
} |
|
307
|
|
|
|
|
308
|
|
|
$date = mktime( $hour, $minute, $second, $month, $dates['day'], $dates['year'] ); |
|
309
|
|
|
$date_end = mktime( $hour + 1, $minute, $second, $month, $dates['day'], $dates['year'] ); |
|
310
|
|
|
|
|
311
|
|
|
$sales = $stats->get_sales( $form_id, $date, $date_end ); |
|
312
|
|
|
$sales_totals += $sales; |
|
313
|
|
|
|
|
314
|
|
|
$earnings = $stats->get_earnings( $form_id, $date, $date_end ); |
|
315
|
|
|
$earnings_totals += $earnings; |
|
316
|
|
|
|
|
317
|
|
|
$sales_data[] = array( $date * 1000, $sales ); |
|
318
|
|
|
$earnings_data[] = array( $date * 1000, $earnings ); |
|
319
|
|
|
|
|
320
|
|
|
$hour ++; |
|
321
|
|
|
endwhile; |
|
322
|
|
|
|
|
323
|
|
|
} elseif ( $dates['range'] == 'this_week' || $dates['range'] == 'last_week' ) { |
|
324
|
|
|
|
|
325
|
|
|
//Day by day |
|
326
|
|
|
$day = $dates['day']; |
|
327
|
|
|
$day_end = $dates['day_end']; |
|
328
|
|
|
$month = $dates['m_start']; |
|
329
|
|
|
while ( $day <= $day_end ) : |
|
330
|
|
|
|
|
331
|
|
|
$date = mktime( 0, 0, 0, $month, $day, $dates['year'] ); |
|
332
|
|
|
$date_end = mktime( 0, 0, 0, $month, $day + 1, $dates['year'] ); |
|
333
|
|
|
$sales = $stats->get_sales( $form_id, $date, $date_end ); |
|
334
|
|
|
$sales_totals += $sales; |
|
335
|
|
|
|
|
336
|
|
|
$earnings = $stats->get_earnings( $form_id, $date, $date_end ); |
|
337
|
|
|
$earnings_totals += $earnings; |
|
338
|
|
|
|
|
339
|
|
|
$sales_data[] = array( $date * 1000, $sales ); |
|
340
|
|
|
$earnings_data[] = array( $date * 1000, $earnings ); |
|
341
|
|
|
|
|
342
|
|
|
$day ++; |
|
343
|
|
|
endwhile; |
|
344
|
|
|
|
|
345
|
|
|
} else { |
|
346
|
|
|
|
|
347
|
|
|
$y = $dates['year']; |
|
348
|
|
|
|
|
349
|
|
|
while ( $y <= $dates['year_end'] ) : |
|
350
|
|
|
|
|
351
|
|
|
$last_year = false; |
|
352
|
|
|
|
|
353
|
|
|
if ( $dates['year'] == $dates['year_end'] ) { |
|
354
|
|
|
$month_start = $dates['m_start']; |
|
355
|
|
|
$month_end = $dates['m_end']; |
|
356
|
|
|
$last_year = true; |
|
357
|
|
|
} elseif ( $y == $dates['year'] ) { |
|
358
|
|
|
$month_start = $dates['m_start']; |
|
359
|
|
|
$month_end = 12; |
|
360
|
|
|
} else { |
|
361
|
|
|
$month_start = 1; |
|
362
|
|
|
$month_end = 12; |
|
363
|
|
|
} |
|
364
|
|
|
|
|
365
|
|
|
$i = $month_start; |
|
366
|
|
|
while ( $i <= $month_end ) : |
|
367
|
|
|
|
|
368
|
|
|
if ( $day_by_day ) { |
|
369
|
|
|
|
|
370
|
|
|
if ( $i == $month_end && $last_year ) { |
|
371
|
|
|
|
|
372
|
|
|
$num_of_days = $dates['day_end']; |
|
373
|
|
|
|
|
374
|
|
|
} else { |
|
375
|
|
|
|
|
376
|
|
|
$num_of_days = cal_days_in_month( CAL_GREGORIAN, $i, $y ); |
|
377
|
|
|
|
|
378
|
|
|
} |
|
379
|
|
|
|
|
380
|
|
|
$d = $dates['day']; |
|
381
|
|
|
while ( $d <= $num_of_days ) : |
|
382
|
|
|
|
|
383
|
|
|
$date = mktime( 0, 0, 0, $i, $d, $y ); |
|
384
|
|
|
$end_date = mktime( 23, 59, 59, $i, $d, $y ); |
|
385
|
|
|
|
|
386
|
|
|
$sales = $stats->get_sales( $form_id, $date, $end_date ); |
|
387
|
|
|
$sales_totals += $sales; |
|
388
|
|
|
|
|
389
|
|
|
$earnings = $stats->get_earnings( $form_id, $date, $end_date ); |
|
390
|
|
|
$earnings_totals += $earnings; |
|
391
|
|
|
|
|
392
|
|
|
$sales_data[] = array( $date * 1000, $sales ); |
|
393
|
|
|
$earnings_data[] = array( $date * 1000, $earnings ); |
|
394
|
|
|
$d ++; |
|
395
|
|
|
|
|
396
|
|
|
endwhile; |
|
397
|
|
|
|
|
398
|
|
|
} else { |
|
399
|
|
|
|
|
400
|
|
|
$num_of_days = cal_days_in_month( CAL_GREGORIAN, $i, $y ); |
|
401
|
|
|
|
|
402
|
|
|
$date = mktime( 0, 0, 0, $i, 1, $y ); |
|
403
|
|
|
$end_date = mktime( 23, 59, 59, $i, $num_of_days, $y ); |
|
404
|
|
|
|
|
405
|
|
|
$sales = $stats->get_sales( $form_id, $date, $end_date ); |
|
406
|
|
|
$sales_totals += $sales; |
|
407
|
|
|
|
|
408
|
|
|
$earnings = $stats->get_earnings( $form_id, $date, $end_date ); |
|
409
|
|
|
$earnings_totals += $earnings; |
|
410
|
|
|
|
|
411
|
|
|
$sales_data[] = array( $date * 1000, $sales ); |
|
412
|
|
|
$earnings_data[] = array( $date * 1000, $earnings ); |
|
413
|
|
|
|
|
414
|
|
|
} |
|
415
|
|
|
|
|
416
|
|
|
$i ++; |
|
417
|
|
|
|
|
418
|
|
|
endwhile; |
|
419
|
|
|
|
|
420
|
|
|
$y ++; |
|
421
|
|
|
endwhile; |
|
422
|
|
|
|
|
423
|
|
|
} |
|
424
|
|
|
|
|
425
|
|
|
$data = array( |
|
426
|
|
|
esc_html__( 'Income', 'give' ) => $earnings_data, |
|
427
|
|
|
esc_html__( 'Donations', 'give' ) => $sales_data |
|
428
|
|
|
); |
|
429
|
|
|
|
|
430
|
|
|
?> |
|
431
|
|
|
<h3><span><?php |
|
432
|
|
|
printf( |
|
433
|
|
|
/* translators: %s: form title */ |
|
434
|
|
|
esc_html__( 'Income Report for %s', 'give' ), |
|
435
|
|
|
get_the_title( $form_id ) |
|
436
|
|
|
); |
|
437
|
|
|
?></span></h3> |
|
438
|
|
|
<div id="give-dashboard-widgets-wrap"> |
|
439
|
|
|
<div class="metabox-holder" style="padding-top: 0;"> |
|
440
|
|
|
<div class="postbox"> |
|
441
|
|
|
<div class="inside"> |
|
442
|
|
|
<?php give_reports_graph_controls(); ?> |
|
443
|
|
|
<?php |
|
444
|
|
|
$graph = new Give_Graph( $data, array( 'dataType' => array( 'amount', 'count' ) ) ); |
|
445
|
|
|
$graph->set( 'x_mode', 'time' ); |
|
446
|
|
|
$graph->set( 'multiple_y_axes', true ); |
|
447
|
|
|
$graph->display(); |
|
448
|
|
|
?> |
|
449
|
|
|
</div> |
|
450
|
|
|
</div> |
|
451
|
|
|
<!--/.postbox --> |
|
452
|
|
|
<table class="widefat reports-table alignleft" style="max-width:450px"> |
|
453
|
|
|
<tbody> |
|
454
|
|
|
<tr> |
|
455
|
|
|
<th scope="row"><strong><?php esc_html_e( 'Total income for period:', 'give' ); ?></strong></th> |
|
456
|
|
|
<td><?php echo give_currency_filter( give_format_amount( $earnings_totals ) ); ?></td> |
|
457
|
|
|
</tr> |
|
458
|
|
|
<tr class="alternate"> |
|
459
|
|
|
<th scope="row"><strong><?php esc_html_e( 'Total donations for period:', 'give' ); ?></strong></th> |
|
460
|
|
|
<td><?php echo $sales_totals; ?></td> |
|
461
|
|
|
</tr> |
|
462
|
|
|
<tr> |
|
463
|
|
|
<th scope="row"><strong><?php esc_html_e( 'Average monthly income:', 'give' ); ?></strong></th> |
|
464
|
|
|
<td><?php echo give_currency_filter( give_format_amount( give_get_average_monthly_form_earnings( $form_id ) ) ); ?></td> |
|
465
|
|
|
</tr> |
|
466
|
|
|
<tr class="alternate"> |
|
467
|
|
|
<th scope="row"><strong><?php esc_html_e( 'Average monthly donations:', 'give' ); ?></strong></th> |
|
468
|
|
|
<td><?php echo number_format( give_get_average_monthly_form_sales( $form_id ), 0 ); ?></td> |
|
469
|
|
|
</tr> |
|
470
|
|
|
</tbody> |
|
471
|
|
|
</table> |
|
472
|
|
|
</div> |
|
473
|
|
|
</div> |
|
474
|
|
|
<?php |
|
475
|
|
|
echo ob_get_clean(); |
|
476
|
|
|
} |
|
477
|
|
|
|
|
478
|
|
|
/** |
|
479
|
|
|
* Show report graph date filters |
|
480
|
|
|
* |
|
481
|
|
|
* @since 1.0.0 |
|
482
|
|
|
* @since 1.8.0 The hidden `view` field is replaced with `tab` field. |
|
483
|
|
|
* |
|
484
|
|
|
* @return void |
|
485
|
|
|
*/ |
|
486
|
|
|
function give_reports_graph_controls() { |
|
487
|
|
|
$date_options = apply_filters( 'give_report_date_options', array( |
|
488
|
|
|
'today' => esc_html__( 'Today', 'give' ), |
|
489
|
|
|
'yesterday' => esc_html__( 'Yesterday', 'give' ), |
|
490
|
|
|
'this_week' => esc_html__( 'This Week', 'give' ), |
|
491
|
|
|
'last_week' => esc_html__( 'Last Week', 'give' ), |
|
492
|
|
|
'this_month' => esc_html__( 'This Month', 'give' ), |
|
493
|
|
|
'last_month' => esc_html__( 'Last Month', 'give' ), |
|
494
|
|
|
'this_quarter' => esc_html__( 'This Quarter', 'give' ), |
|
495
|
|
|
'last_quarter' => esc_html__( 'Last Quarter', 'give' ), |
|
496
|
|
|
'this_year' => esc_html__( 'This Year', 'give' ), |
|
497
|
|
|
'last_year' => esc_html__( 'Last Year', 'give' ), |
|
498
|
|
|
'other' => esc_html__( 'Custom', 'give' ) |
|
499
|
|
|
) ); |
|
500
|
|
|
|
|
501
|
|
|
$dates = give_get_report_dates(); |
|
502
|
|
|
$display = $dates['range'] == 'other' ? '' : 'display: none;'; |
|
503
|
|
|
$tab = isset( $_GET['tab'] ) ? sanitize_text_field( $_GET['tab'] ) : 'earnings'; |
|
504
|
|
|
|
|
505
|
|
|
if ( empty( $dates['day_end'] ) ) { |
|
506
|
|
|
$dates['day_end'] = cal_days_in_month( CAL_GREGORIAN, date( 'n' ), date( 'Y' ) ); |
|
507
|
|
|
} |
|
508
|
|
|
|
|
509
|
|
|
/** |
|
510
|
|
|
* Fires before displaying report graph date filters. |
|
511
|
|
|
* |
|
512
|
|
|
* @since 1.0 |
|
513
|
|
|
*/ |
|
514
|
|
|
do_action( 'give_report_graph_controls_before' ); |
|
515
|
|
|
?> |
|
516
|
|
|
<form id="give-graphs-filter" method="get"> |
|
517
|
|
|
<div class="tablenav top"> |
|
518
|
|
|
<div class="actions"> |
|
519
|
|
|
|
|
520
|
|
|
<input type="hidden" name="post_type" value="give_forms" /> |
|
521
|
|
|
<input type="hidden" name="page" value="give-reports" /> |
|
522
|
|
|
<input type="hidden" name="tab" value="<?php echo esc_attr( $tab ); ?>" /> |
|
523
|
|
|
|
|
524
|
|
|
<?php if ( isset( $_GET['form-id'] ) ) : ?> |
|
525
|
|
|
<input type="hidden" name="form-id" value="<?php echo absint( $_GET['form-id'] ); ?>" /> |
|
526
|
|
|
<?php endif; ?> |
|
527
|
|
|
|
|
528
|
|
|
<div id="give-graphs-date-options-wrap"> |
|
529
|
|
|
<select id="give-graphs-date-options" name="range"> |
|
530
|
|
|
<?php foreach ( $date_options as $key => $option ) : ?> |
|
531
|
|
|
<option value="<?php echo esc_attr( $key ); ?>"<?php selected( $key, $dates['range'] ); ?>><?php echo esc_html( $option ); ?></option> |
|
532
|
|
|
<?php endforeach; ?> |
|
533
|
|
|
</select> |
|
534
|
|
|
|
|
535
|
|
|
<div id="give-date-range-options" style="<?php echo esc_attr( $display ); ?>"> |
|
536
|
|
|
<span class="screen-reader-text"><?php esc_html_e( 'From', 'give' ); ?> </span> |
|
537
|
|
|
<select id="give-graphs-month-start" name="m_start" aria-label="Start Month"> |
|
538
|
|
|
<?php for ( $i = 1; $i <= 12; $i ++ ) : ?> |
|
539
|
|
|
<option value="<?php echo absint( $i ); ?>" <?php echo esc_attr( selected( $i, $dates['m_start'] ) ); ?>><?php echo esc_html( give_month_num_to_name( $i ) ); ?></option> |
|
540
|
|
|
<?php endfor; ?> |
|
541
|
|
|
</select> |
|
542
|
|
|
<select id="give-graphs-day-start" name="day" aria-label="Start Day"> |
|
543
|
|
|
<?php for ( $i = 1; $i <= 31; $i ++ ) : ?> |
|
544
|
|
|
<option value="<?php echo absint( $i ); ?>" <?php echo esc_attr( selected( $i, $dates['day'] ) ); ?>><?php echo esc_html( $i ); ?></option> |
|
545
|
|
|
<?php endfor; ?> |
|
546
|
|
|
</select> |
|
547
|
|
|
<select id="give-graphs-year-start" name="year" aria-label="Start Year"> |
|
548
|
|
|
<?php for ( $i = 2007; $i <= date( 'Y' ); $i ++ ) : ?> |
|
549
|
|
|
<option value="<?php echo absint( $i ); ?>" <?php echo esc_attr( selected( $i, $dates['year'] ) ); ?>><?php echo esc_html( $i ); ?></option> |
|
550
|
|
|
<?php endfor; ?> |
|
551
|
|
|
</select> |
|
552
|
|
|
<span class="screen-reader-text"><?php esc_html_e( 'To', 'give' ); ?> </span> |
|
553
|
|
|
<span>–</span> |
|
554
|
|
|
<select id="give-graphs-month-end" name="m_end" aria-label="End Month"> |
|
555
|
|
|
<?php for ( $i = 1; $i <= 12; $i ++ ) : ?> |
|
556
|
|
|
<option value="<?php echo absint( $i ); ?>" <?php echo esc_attr( selected( $i, $dates['m_end'] ) ); ?>><?php echo esc_html( give_month_num_to_name( $i ) ); ?></option> |
|
557
|
|
|
<?php endfor; ?> |
|
558
|
|
|
</select> |
|
559
|
|
|
<select id="give-graphs-day-end" name="day_end" aria-label="End Day"> |
|
560
|
|
|
<?php for ( $i = 1; $i <= 31; $i ++ ) : ?> |
|
561
|
|
|
<option value="<?php echo absint( $i ); ?>" <?php echo esc_attr( selected( $i, $dates['day_end'] ) ); ?>><?php echo esc_html( $i ); ?></option> |
|
562
|
|
|
<?php endfor; ?> |
|
563
|
|
|
</select> |
|
564
|
|
|
<select id="give-graphs-year-end" name="year_end" aria-label="End Year"> |
|
565
|
|
|
<?php for ( $i = 2007; $i <= date( 'Y' ); $i ++ ) : ?> |
|
566
|
|
|
<option value="<?php echo absint( $i ); ?>" <?php echo esc_attr( selected( $i, $dates['year_end'] ) ); ?>><?php echo esc_html( $i ); ?></option> |
|
567
|
|
|
<?php endfor; ?> |
|
568
|
|
|
</select> |
|
569
|
|
|
</div> |
|
570
|
|
|
|
|
571
|
|
|
<input type="submit" class="button-secondary" value="<?php esc_attr_e( 'Filter', 'give' ); ?>" /> |
|
572
|
|
|
</div> |
|
573
|
|
|
|
|
574
|
|
|
<input type="hidden" name="give_action" value="filter_reports" /> |
|
575
|
|
|
</div> |
|
576
|
|
|
</div> |
|
577
|
|
|
</form> |
|
578
|
|
|
<?php |
|
579
|
|
|
/** |
|
580
|
|
|
* Fires after displaying report graph date filters. |
|
581
|
|
|
* |
|
582
|
|
|
* @since 1.0 |
|
583
|
|
|
*/ |
|
584
|
|
|
do_action( 'give_report_graph_controls_after' ); |
|
585
|
|
|
} |
|
586
|
|
|
|
|
587
|
|
|
/** |
|
588
|
|
|
* Sets up the dates used to filter graph data |
|
589
|
|
|
* |
|
590
|
|
|
* Date sent via $_GET is read first and then modified (if needed) to match the |
|
591
|
|
|
* selected date-range (if any) |
|
592
|
|
|
* |
|
593
|
|
|
* @since 1.0 |
|
594
|
|
|
* @return array |
|
595
|
|
|
*/ |
|
596
|
|
|
function give_get_report_dates() { |
|
597
|
|
|
$dates = array(); |
|
598
|
|
|
|
|
599
|
|
|
$current_time = current_time( 'timestamp' ); |
|
600
|
|
|
|
|
601
|
|
|
$dates['range'] = isset( $_GET['range'] ) ? $_GET['range'] : 'this_month'; |
|
602
|
|
|
$dates['year'] = isset( $_GET['year'] ) ? $_GET['year'] : date( 'Y' ); |
|
603
|
|
|
$dates['year_end'] = isset( $_GET['year_end'] ) ? $_GET['year_end'] : date( 'Y' ); |
|
604
|
|
|
$dates['m_start'] = isset( $_GET['m_start'] ) ? $_GET['m_start'] : 1; |
|
605
|
|
|
$dates['m_end'] = isset( $_GET['m_end'] ) ? $_GET['m_end'] : 12; |
|
606
|
|
|
$dates['day'] = isset( $_GET['day'] ) ? $_GET['day'] : 1; |
|
607
|
|
|
$dates['day_end'] = isset( $_GET['day_end'] ) ? $_GET['day_end'] : cal_days_in_month( CAL_GREGORIAN, $dates['m_end'], $dates['year'] ); |
|
608
|
|
|
|
|
609
|
|
|
// Modify dates based on predefined ranges |
|
610
|
|
|
switch ( $dates['range'] ) : |
|
611
|
|
|
|
|
612
|
|
|
case 'this_month' : |
|
613
|
|
|
$dates['m_start'] = date( 'n', $current_time ); |
|
614
|
|
|
$dates['m_end'] = date( 'n', $current_time ); |
|
615
|
|
|
$dates['day'] = 1; |
|
616
|
|
|
$dates['day_end'] = cal_days_in_month( CAL_GREGORIAN, $dates['m_end'], $dates['year'] ); |
|
617
|
|
|
$dates['year'] = date( 'Y' ); |
|
618
|
|
|
$dates['year_end'] = date( 'Y' ); |
|
619
|
|
|
break; |
|
620
|
|
|
|
|
621
|
|
|
case 'last_month' : |
|
622
|
|
|
if ( date( 'n' ) == 1 ) { |
|
623
|
|
|
$dates['m_start'] = 12; |
|
624
|
|
|
$dates['m_end'] = 12; |
|
625
|
|
|
$dates['year'] = date( 'Y', $current_time ) - 1; |
|
626
|
|
|
$dates['year_end'] = date( 'Y', $current_time ) - 1; |
|
627
|
|
|
} else { |
|
628
|
|
|
$dates['m_start'] = date( 'n' ) - 1; |
|
629
|
|
|
$dates['m_end'] = date( 'n' ) - 1; |
|
630
|
|
|
$dates['year_end'] = $dates['year']; |
|
631
|
|
|
} |
|
632
|
|
|
$dates['day_end'] = cal_days_in_month( CAL_GREGORIAN, $dates['m_end'], $dates['year'] ); |
|
633
|
|
|
break; |
|
634
|
|
|
|
|
635
|
|
|
case 'today' : |
|
636
|
|
|
$dates['day'] = date( 'd', $current_time ); |
|
637
|
|
|
$dates['m_start'] = date( 'n', $current_time ); |
|
638
|
|
|
$dates['m_end'] = date( 'n', $current_time ); |
|
639
|
|
|
$dates['year'] = date( 'Y', $current_time ); |
|
640
|
|
|
break; |
|
641
|
|
|
|
|
642
|
|
|
case 'yesterday' : |
|
643
|
|
|
|
|
644
|
|
|
$year = date( 'Y', $current_time ); |
|
645
|
|
|
$month = date( 'n', $current_time ); |
|
646
|
|
|
$day = date( 'd', $current_time ); |
|
647
|
|
|
|
|
648
|
|
|
if ( $month == 1 && $day == 1 ) { |
|
649
|
|
|
|
|
650
|
|
|
$year -= 1; |
|
651
|
|
|
$month = 12; |
|
652
|
|
|
$day = cal_days_in_month( CAL_GREGORIAN, $month, $year ); |
|
653
|
|
|
|
|
654
|
|
|
} elseif ( $month > 1 && $day == 1 ) { |
|
655
|
|
|
|
|
656
|
|
|
$month -= 1; |
|
657
|
|
|
$day = cal_days_in_month( CAL_GREGORIAN, $month, $year ); |
|
658
|
|
|
|
|
659
|
|
|
} else { |
|
660
|
|
|
|
|
661
|
|
|
$day -= 1; |
|
662
|
|
|
|
|
663
|
|
|
} |
|
664
|
|
|
|
|
665
|
|
|
$dates['day'] = $day; |
|
666
|
|
|
$dates['m_start'] = $month; |
|
667
|
|
|
$dates['m_end'] = $month; |
|
668
|
|
|
$dates['year'] = $year; |
|
669
|
|
|
$dates['year_end'] = $year; |
|
670
|
|
|
break; |
|
671
|
|
|
|
|
672
|
|
|
case 'this_week' : |
|
673
|
|
|
$dates['day'] = date( 'd', $current_time - ( date( 'w', $current_time ) - 1 ) * 60 * 60 * 24 ) - 1; |
|
674
|
|
|
$dates['day'] += get_option( 'start_of_week' ); |
|
675
|
|
|
$dates['day_end'] = $dates['day'] + 6; |
|
676
|
|
|
$dates['m_start'] = date( 'n', $current_time ); |
|
677
|
|
|
$dates['m_end'] = date( 'n', $current_time ); |
|
678
|
|
|
$dates['year'] = date( 'Y', $current_time ); |
|
679
|
|
|
break; |
|
680
|
|
|
|
|
681
|
|
|
case 'last_week' : |
|
682
|
|
|
$dates['day'] = date( 'd', $current_time - ( date( 'w' ) - 1 ) * 60 * 60 * 24 ) - 8; |
|
683
|
|
|
$dates['day'] += get_option( 'start_of_week' ); |
|
684
|
|
|
$dates['day_end'] = $dates['day'] + 6; |
|
685
|
|
|
$dates['year'] = date( 'Y' ); |
|
686
|
|
|
|
|
687
|
|
|
if ( date( 'j', $current_time ) <= 7 ) { |
|
688
|
|
|
$dates['m_start'] = date( 'n', $current_time ) - 1; |
|
689
|
|
|
$dates['m_end'] = date( 'n', $current_time ) - 1; |
|
690
|
|
|
if ( $dates['m_start'] <= 1 ) { |
|
691
|
|
|
$dates['year'] = date( 'Y', $current_time ) - 1; |
|
692
|
|
|
$dates['year_end'] = date( 'Y', $current_time ) - 1; |
|
693
|
|
|
} |
|
694
|
|
|
} else { |
|
695
|
|
|
$dates['m_start'] = date( 'n', $current_time ); |
|
696
|
|
|
$dates['m_end'] = date( 'n', $current_time ); |
|
697
|
|
|
} |
|
698
|
|
|
break; |
|
699
|
|
|
|
|
700
|
|
|
case 'this_quarter' : |
|
701
|
|
|
$month_now = date( 'n', $current_time ); |
|
702
|
|
|
|
|
703
|
|
|
if ( $month_now <= 3 ) { |
|
704
|
|
|
|
|
705
|
|
|
$dates['m_start'] = 1; |
|
706
|
|
|
$dates['m_end'] = 4; |
|
707
|
|
|
$dates['year'] = date( 'Y', $current_time ); |
|
708
|
|
|
|
|
709
|
|
|
} else if ( $month_now <= 6 ) { |
|
710
|
|
|
|
|
711
|
|
|
$dates['m_start'] = 4; |
|
712
|
|
|
$dates['m_end'] = 7; |
|
713
|
|
|
$dates['year'] = date( 'Y', $current_time ); |
|
714
|
|
|
|
|
715
|
|
|
} else if ( $month_now <= 9 ) { |
|
716
|
|
|
|
|
717
|
|
|
$dates['m_start'] = 7; |
|
718
|
|
|
$dates['m_end'] = 10; |
|
719
|
|
|
$dates['year'] = date( 'Y', $current_time ); |
|
720
|
|
|
|
|
721
|
|
|
} else { |
|
722
|
|
|
|
|
723
|
|
|
$dates['m_start'] = 10; |
|
724
|
|
|
$dates['m_end'] = 1; |
|
725
|
|
|
$dates['year'] = date( 'Y', $current_time ); |
|
726
|
|
|
$dates['year_end'] = date( 'Y', $current_time ) + 1; |
|
727
|
|
|
|
|
728
|
|
|
} |
|
729
|
|
|
break; |
|
730
|
|
|
|
|
731
|
|
|
case 'last_quarter' : |
|
732
|
|
|
$month_now = date( 'n' ); |
|
733
|
|
|
|
|
734
|
|
|
if ( $month_now <= 3 ) { |
|
735
|
|
|
|
|
736
|
|
|
$dates['m_start'] = 10; |
|
737
|
|
|
$dates['m_end'] = 12; |
|
738
|
|
|
$dates['year'] = date( 'Y', $current_time ) - 1; // Previous year |
|
739
|
|
|
$dates['year_end'] = date( 'Y', $current_time ) - 1; // Previous year |
|
740
|
|
|
|
|
741
|
|
|
} else if ( $month_now <= 6 ) { |
|
742
|
|
|
|
|
743
|
|
|
$dates['m_start'] = 1; |
|
744
|
|
|
$dates['m_end'] = 3; |
|
745
|
|
|
$dates['year'] = date( 'Y', $current_time ); |
|
746
|
|
|
|
|
747
|
|
|
} else if ( $month_now <= 9 ) { |
|
748
|
|
|
|
|
749
|
|
|
$dates['m_start'] = 4; |
|
750
|
|
|
$dates['m_end'] = 6; |
|
751
|
|
|
$dates['year'] = date( 'Y', $current_time ); |
|
752
|
|
|
|
|
753
|
|
|
} else { |
|
754
|
|
|
|
|
755
|
|
|
$dates['m_start'] = 7; |
|
756
|
|
|
$dates['m_end'] = 9; |
|
757
|
|
|
$dates['year'] = date( 'Y', $current_time ); |
|
758
|
|
|
|
|
759
|
|
|
} |
|
760
|
|
|
break; |
|
761
|
|
|
|
|
762
|
|
|
case 'this_year' : |
|
763
|
|
|
$dates['m_start'] = 1; |
|
764
|
|
|
$dates['m_end'] = 12; |
|
765
|
|
|
$dates['year'] = date( 'Y', $current_time ); |
|
766
|
|
|
break; |
|
767
|
|
|
|
|
768
|
|
|
case 'last_year' : |
|
769
|
|
|
$dates['m_start'] = 1; |
|
770
|
|
|
$dates['m_end'] = 12; |
|
771
|
|
|
$dates['year'] = date( 'Y', $current_time ) - 1; |
|
772
|
|
|
$dates['year_end'] = date( 'Y', $current_time ) - 1; |
|
773
|
|
|
break; |
|
774
|
|
|
|
|
775
|
|
|
endswitch; |
|
776
|
|
|
|
|
777
|
|
|
return apply_filters( 'give_report_dates', $dates ); |
|
778
|
|
|
} |
|
779
|
|
|
|
|
780
|
|
|
/** |
|
781
|
|
|
* Grabs all of the selected date info and then redirects appropriately |
|
782
|
|
|
* |
|
783
|
|
|
* @since 1.0.0 |
|
784
|
|
|
* @since 1.8.0 The `tab` query arg is added to the redirect. |
|
785
|
|
|
* |
|
786
|
|
|
* @param $data |
|
787
|
|
|
*/ |
|
788
|
|
|
function give_parse_report_dates( $data ) { |
|
|
|
|
|
|
789
|
|
|
$dates = give_get_report_dates(); |
|
790
|
|
|
|
|
791
|
|
|
$view = give_get_reporting_view(); |
|
792
|
|
|
$tab = isset( $_GET['tab'] ) ? sanitize_text_field( $_GET['tab'] ) : 'earnings'; |
|
793
|
|
|
$id = isset( $_GET['form-id'] ) ? $_GET['form-id'] : null; |
|
794
|
|
|
|
|
795
|
|
|
wp_redirect( add_query_arg( $dates, admin_url( 'edit.php?post_type=give_forms&page=give-reports&tab=' . esc_attr( $tab ) . '&view=' . esc_attr( $view ) . '&form-id=' . absint( $id ) ) ) ); |
|
796
|
|
|
give_die(); |
|
797
|
|
|
} |
|
798
|
|
|
|
|
799
|
|
|
add_action( 'give_filter_reports', 'give_parse_report_dates' ); |
|
800
|
|
|
|
|
801
|
|
|
|
|
802
|
|
|
/** |
|
803
|
|
|
* Give Reports Refresh Button |
|
804
|
|
|
* |
|
805
|
|
|
* Outputs a "Refresh Reports" button for graphs |
|
806
|
|
|
* |
|
807
|
|
|
* @since 1.3 |
|
808
|
|
|
*/ |
|
809
|
|
|
function give_reports_refresh_button() { |
|
810
|
|
|
|
|
811
|
|
|
$url = wp_nonce_url( add_query_arg( array( |
|
812
|
|
|
'give_action' => 'refresh_reports_transients', |
|
813
|
|
|
'give-message' => 'refreshed-reports' |
|
814
|
|
|
) ), 'give-refresh-reports' ); |
|
815
|
|
|
|
|
816
|
|
|
echo '<a href="' |
|
817
|
|
|
. esc_url_raw( $url ) |
|
818
|
|
|
. '" data-tooltip="'. esc_attr__( 'Clicking this will clear the reports cache.', 'give' ) |
|
819
|
|
|
. '" data-tooltip-my-position="right center" data-tooltip-target-position="left center" class="button alignright give-admin-button give-tooltip">' |
|
820
|
|
|
. '<span class="give-admin-button-icon give-admin-button-icon-update"></span>' |
|
821
|
|
|
. esc_html__( 'Refresh Report Data', 'give' ) |
|
822
|
|
|
. '</a>'; |
|
823
|
|
|
|
|
824
|
|
|
} |
|
825
|
|
|
|
|
826
|
|
|
add_action( 'give_reports_graph_additional_stats', 'give_reports_refresh_button' ); |
|
827
|
|
|
|
|
828
|
|
|
/** |
|
829
|
|
|
* Trigger the refresh of reports transients |
|
830
|
|
|
* |
|
831
|
|
|
* @since 1.3 |
|
832
|
|
|
* |
|
833
|
|
|
* @param array $data Parameters sent from Settings page |
|
834
|
|
|
* |
|
835
|
|
|
* @return void |
|
836
|
|
|
*/ |
|
837
|
|
|
function give_run_refresh_reports_transients( $data ) { |
|
838
|
|
|
|
|
839
|
|
|
if ( ! wp_verify_nonce( $data['_wpnonce'], 'give-refresh-reports' ) ) { |
|
840
|
|
|
return; |
|
841
|
|
|
} |
|
842
|
|
|
|
|
843
|
|
|
// Monthly stats. |
|
844
|
|
|
Give_Cache::delete( Give_Cache::get_key( 'give_estimated_monthly_stats' ) ); |
|
845
|
|
|
|
|
846
|
|
|
// Total earning. |
|
847
|
|
|
delete_option( 'give_earnings_total' ); |
|
848
|
|
|
|
|
849
|
|
|
// @todo: Refresh only range related stat cache |
|
850
|
|
|
give_delete_donation_stats(); |
|
851
|
|
|
} |
|
852
|
|
|
|
|
853
|
|
|
add_action( 'give_refresh_reports_transients', 'give_run_refresh_reports_transients' ); |
The PSR-1: Basic Coding Standard recommends that a file should either introduce new symbols, that is classes, functions, constants or similar, or have side effects. Side effects are anything that executes logic, like for example printing output, changing ini settings or writing to a file.
The idea behind this recommendation is that merely auto-loading a class should not change the state of an application. It also promotes a cleaner style of programming and makes your code less prone to errors, because the logic is not spread out all over the place.
To learn more about the PSR-1, please see the PHP-FIG site on the PSR-1.