PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.19.4
GiveWP – Donation Plugin and Fundraising Platform v3.19.4
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 / DonationForms / AsyncData / Actions / GetAsyncFormDataForListView.php
give / src / DonationForms / AsyncData / Actions Last commit date
GetAsyncFormDataForListView.php 1 year ago GiveGoalProgressStats.php 1 year ago LoadAsyncDataAssets.php 1 year ago
GetAsyncFormDataForListView.php
100 lines
1 <?php
2
3 namespace Give\DonationForms\AsyncData\Actions;
4
5 use Give\DonationForms\AsyncData\AdminFormListView\AdminFormListViewOptions;
6 use Give\DonationForms\AsyncData\AsyncDataHelpers;
7 use Give\DonationForms\AsyncData\FormGrid\FormGridViewOptions;
8
9 /**
10 * @since 3.16.0
11 */
12 class GetAsyncFormDataForListView
13 {
14 /**
15 * @since 3.16.0
16 */
17 public function __invoke()
18 {
19 $options = give_clean($_GET);
20
21 if ( ! isset($options['nonce']) || ! check_ajax_referer('GiveDonationFormsAsyncDataAjaxNonce', 'nonce')) {
22 wp_send_json_error([
23 'errorMsg' => __('The current user does not have permission to execute this operation.', 'give'),
24 ]);
25 }
26
27 if ( ! isset($options['formId'])) {
28 wp_send_json_error(['errorMsg' => __('Missing Form ID.', 'give')]);
29 }
30
31 $formId = absint($options['formId']);
32 if ('give_forms' !== get_post_type($formId)) {
33 wp_send_json_error(['errorMsg' => __('Invalid post type.', 'give')]);
34 }
35
36 $transientName = 'give_async_data_for_list_view_form_' . $formId;
37
38 $data = get_transient($transientName);
39
40 if ($data) {
41 wp_send_json_success($data);
42 }
43
44 $amountRaised = 0;
45 $percentComplete = 0;
46 if ($this->isAsyncProgressBar()) {
47 $goalStats = give_goal_progress_stats($formId);
48 $amountRaised = $goalStats['actual'];
49 $percentComplete = ('percentage' === $goalStats['format']) ? str_replace('%', '',
50 $goalStats['actual']) : max(min($goalStats['progress'], 100), 0);
51 }
52
53 $donationsCount = 0;
54 if ($this->isAsyncDonationCount()) {
55 $donationsCount = AsyncDataHelpers::getFormDonationsCountValue($formId);
56 }
57
58 $revenue = $amountRaised;
59 if (0 === $revenue && $this->isAsyncRevenue()) {
60 $revenue = AsyncDataHelpers::getFormRevenueValue($formId);
61 $revenue = give_currency_filter(give_format_amount($revenue));
62 }
63
64 $response = [
65 'amountRaised' => $amountRaised,
66 'percentComplete' => $percentComplete,
67 'donationsCount' => $donationsCount,
68 'revenue' => $revenue,
69 ];
70
71 set_transient($transientName, $response, MINUTE_IN_SECONDS * 5);
72
73 wp_send_json_success($response);
74 }
75
76 /**
77 * @since 3.16.0
78 */
79 private function isAsyncProgressBar(): bool
80 {
81 return AdminFormListViewOptions::isGoalColumnAsync() || FormGridViewOptions::isProgressBarAmountRaisedAsync();
82 }
83
84 /**
85 * @since 3.16.0
86 */
87 private function isAsyncDonationCount(): bool
88 {
89 return AdminFormListViewOptions::isDonationColumnAsync() || FormGridViewOptions::isProgressBarDonationsCountAsync();
90 }
91
92 /**
93 * @since 3.16.0
94 */
95 private function isAsyncRevenue(): bool
96 {
97 return AdminFormListViewOptions::isRevenueColumnAsync();
98 }
99 }
100