PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.12.0
GiveWP – Donation Plugin and Fundraising Platform v4.12.0
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 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 / Campaigns / Actions / CacheCampaignData.php
give / src / Campaigns / Actions Last commit date
AddCampaignFormFromRequest.php 1 year ago AddNewBadgeToAdminMenuItem.php 1 year ago ArchiveCampaignFormsAsDraftStatus.php 1 year ago ArchiveCampaignPagesAsDraftStatus.php 1 year ago AssignDuplicatedFormToCampaign.php 1 year ago AssociateCampaignPageWithCampaign.php 1 year ago CacheCampaignData.php 9 months ago ConvertQueryDataToCampaign.php 1 year ago CreateCampaignPage.php 1 year ago CreateDefaultCampaignForm.php 1 year ago CreateDefaultLayoutForCampaignPage.php 1 year ago EnqueueCampaignPageEditorAssets.php 1 year ago FormInheritsCampaignGoal.php 1 year ago LoadCampaignAdminOptions.php 11 months ago LoadCampaignDetailsAssets.php 1 year ago LoadCampaignPublicOptions.php 11 months ago LoadCampaignsListTableAssets.php 11 months ago PreventDeleteDefaultForm.php 1 year ago RedirectLegacyCreateFormToCreateCampaign.php 1 year ago RegisterCampaignBlocks.php 11 months ago RegisterCampaignEntity.php 1 year ago RegisterCampaignIdRestField.php 1 year ago RegisterCampaignShortcodes.php 10 months ago RenderDonateButton.php 9 months ago ReplaceGiveFormsCptLabels.php 1 year ago UnarchiveCampaignFormAsPublishStatus.php 1 year ago
CacheCampaignData.php
171 lines
1 <?php
2
3 namespace Give\Campaigns\Actions;
4
5 use Give\Campaigns\CampaignsDataQuery;
6 use Give\Campaigns\Models\Campaign;
7 use Give\Donations\Models\Donation;
8
9 /**
10 * @since 4.8.0
11 *
12 * @uses give_insert_payment hook
13 * @uses give_update_payment_status hook
14 * @uses give_recurring_add_subscription_payment hook
15 *
16 * Action used to update campaign's stats data
17 *
18 */
19 class CacheCampaignData
20 {
21 /**
22 * @since 4.8.0
23 */
24 public function __invoke(int $donationId): void
25 {
26 $donation = Donation::find($donationId);
27
28 if (!$donation) {
29 return;
30 }
31
32 if ($donation->status->isComplete() || $donation->status->isRenewal()) {
33 as_enqueue_async_action('givewp_cache_campaign_data', [$donation->campaignId], 'givewp_campaigns_cache');
34 }
35
36 }
37
38 /**
39 * Handle campaign cache
40 * @since 4.8.0
41 */
42 public function handleCache(int $campaignId): void
43 {
44 $campaign = Campaign::find($campaignId);
45
46 if (!$campaign) {
47 return;
48 }
49
50 $campaignsData = get_option('give_campaigns_data', []);
51 $campaignsSubscriptionData = get_option('give_campaigns_subscription_data', []);
52
53 // Prefill cache structure to ensure keys exist
54 $campaignsData = array_merge([
55 'amounts' => [],
56 'donationsCount' => [],
57 'donorsCount' => []
58 ], $campaignsData);
59
60 $campaignsSubscriptionData = array_merge([
61 'amounts' => [],
62 'donationsCount' => [],
63 'donorsCount' => []
64 ], $campaignsSubscriptionData);
65
66 $donations = CampaignsDataQuery::donations([$campaign->id]);
67
68 $isCached = $isSubscriptionCached = false;
69
70 // Update cache only if it exists for this campaign
71 foreach ($campaignsData['amounts'] as $i => $data) {
72 if ($data['campaign_id'] == $campaign->id) {
73 $isCached = true;
74
75 $campaignsData['amounts'][$i] = $donations->collectIntendedAmounts()[0];
76 break;
77 }
78 }
79
80 foreach ($campaignsData['donationsCount'] as $i => $data) {
81 if ($data['campaign_id'] == $campaign->id) {
82 $campaignsData['donationsCount'][$i] = $donations->collectDonations()[0];
83 break;
84 }
85 }
86
87 foreach ($campaignsData['donorsCount'] as $i => $data) {
88 if ($data['campaign_id'] == $campaign->id) {
89 $campaignsData['donorsCount'][$i] = $donations->collectDonors()[0];
90 break;
91 }
92 }
93
94
95 // Update campaign subscriptions data
96 if (defined('GIVE_RECURRING_VERSION')) {
97
98 $subscriptions = CampaignsDataQuery::subscriptions([$campaign->id]);
99
100 foreach ($campaignsSubscriptionData['amounts'] as $i => $data) {
101 if ($data['campaign_id'] == $campaign->id) {
102 $isSubscriptionCached = true;
103
104 $campaignsSubscriptionData['amounts'][$i] = $subscriptions->collectInitialAmounts()[0];
105 break;
106 }
107 }
108
109 foreach ($campaignsSubscriptionData['donationsCount'] as $i => $data) {
110 if ($data['campaign_id'] == $campaign->id) {
111 $campaignsSubscriptionData['donationsCount'][$i] = $subscriptions->collectDonations()[0];
112 break;
113 }
114 }
115
116 foreach ($campaignsSubscriptionData['donorsCount'] as $i => $data) {
117 if ($data['campaign_id'] == $campaign->id) {
118 $campaignsSubscriptionData['donorsCount'][$i] = $subscriptions->collectDonors()[0];
119 break;
120 }
121 }
122 }
123
124
125 // Save updated cache
126 if ($isCached) {
127 update_option('give_campaigns_data', $campaignsData);
128 }
129
130 if ($isSubscriptionCached) {
131 update_option('give_campaigns_subscriptions_data', $campaignsSubscriptionData);
132 }
133
134 if ($isCached || $isSubscriptionCached) {
135 return;
136 }
137
138 update_option('give_campaigns_data', [
139 'amounts' => array_merge(
140 $campaignsData['amounts'] ?? [],
141 $donations->collectIntendedAmounts()
142 ),
143 'donationsCount' => array_merge(
144 $campaignsData['donationsCount'] ?? [],
145 $donations->collectDonations()
146 ),
147 'donorsCount' => array_merge(
148 $campaignsData['donorsCount'] ?? [],
149 $donations->collectDonors()
150 ),
151 ]);
152
153 if (defined('GIVE_RECURRING_VERSION')) {
154 update_option('give_campaigns_subscriptions_data', [
155 'amounts' => array_merge(
156 $campaignsSubscriptionData['amounts'] ?? [],
157 $subscriptions->collectIntendedAmounts()
158 ),
159 'donationsCount' => array_merge(
160 $campaignsSubscriptionData['donationsCount'] ?? [],
161 $subscriptions->collectDonations()
162 ),
163 'donorsCount' => array_merge(
164 $campaignsSubscriptionData['donorsCount'] ?? [],
165 $subscriptions->collectDonors()
166 ),
167 ]);
168 }
169 }
170 }
171