$56 GRAYBYTE WORDPRESS FILE MANAGER $67

SERVER : premium201.web-hosting.com #1 SMP Wed Mar 26 12:08:09 UTC 2025
SERVER IP : 172.67.217.254 | ADMIN IP 216.73.216.157
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : mail

/home/bravrvjk/itiministry.org/wp-content/plugins/give/src/Campaigns/Actions/

HOME
Current File : /home/bravrvjk/itiministry.org/wp-content/plugins/give/src/Campaigns/Actions//CacheCampaignData.php
<?php

namespace Give\Campaigns\Actions;

use Give\Campaigns\CampaignsDataQuery;
use Give\Campaigns\Models\Campaign;
use Give\Donations\Models\Donation;

/**
 * @since 4.8.0
 *
 * @uses give_insert_payment hook
 * @uses give_update_payment_status hook
 * @uses give_recurring_add_subscription_payment hook
 * @uses givewp_campaigns_merged hook
 *
 * Action used to update campaign's stats data
 *
 */
class CacheCampaignData
{
    /**
     * @since 4.13.1 added dispatch method
     * @since 4.8.0
     */
    public function __invoke(int $donationId): void
    {
        $donation = Donation::find($donationId);

        if (!$donation) {
            return;
        }

        if ($donation->status->isComplete() || $donation->status->isRenewal()) {
            $this->dispatch($donation->campaignId);
        }
    }

    /**
     * Dispatch the cache campaign data action
     * @since 4.13.1
     */
    public function dispatch(int $campaignId): void
    {
        as_enqueue_async_action('givewp_cache_campaign_data', [$campaignId], 'givewp_campaigns_cache');
    }

    /**
     * Handle campaign cache
     * @since 4.8.0
     */
    public function handleCache(int $campaignId): void
    {
        $campaign = Campaign::find($campaignId);

        if (!$campaign) {
            return;
        }

        $campaignsData = get_option('give_campaigns_data', []);
        $campaignsSubscriptionData = get_option('give_campaigns_subscription_data', []);

        // Prefill cache structure to ensure keys exist
        $campaignsData = array_merge([
            'amounts' => [],
            'donationsCount' => [],
            'donorsCount' => []
        ], $campaignsData);

        $campaignsSubscriptionData = array_merge([
            'amounts' => [],
            'donationsCount' => [],
            'donorsCount' => []
        ], $campaignsSubscriptionData);

        $donations = CampaignsDataQuery::donations([$campaign->id]);

        $isCached = $isSubscriptionCached = false;

        // Update cache only if it exists for this campaign
        foreach ($campaignsData['amounts'] as $i => $data) {
            if ($data['campaign_id'] == $campaign->id) {
                $isCached = true;

                $campaignsData['amounts'][$i] = $donations->collectIntendedAmounts()[0];
                break;
            }
        }

        foreach ($campaignsData['donationsCount'] as $i => $data) {
            if ($data['campaign_id'] == $campaign->id) {
                $campaignsData['donationsCount'][$i] = $donations->collectDonations()[0];
                break;
            }
        }

        foreach ($campaignsData['donorsCount'] as $i => $data) {
            if ($data['campaign_id'] == $campaign->id) {
                $campaignsData['donorsCount'][$i] = $donations->collectDonors()[0];
                break;
            }
        }


        // Update campaign subscriptions data
        if (defined('GIVE_RECURRING_VERSION')) {

            $subscriptions = CampaignsDataQuery::subscriptions([$campaign->id]);

            foreach ($campaignsSubscriptionData['amounts'] as $i => $data) {
                if ($data['campaign_id'] == $campaign->id) {
                    $isSubscriptionCached = true;

                    $campaignsSubscriptionData['amounts'][$i] = $subscriptions->collectInitialAmounts()[0];
                    break;
                }
            }

            foreach ($campaignsSubscriptionData['donationsCount'] as $i => $data) {
                if ($data['campaign_id'] == $campaign->id) {
                    $campaignsSubscriptionData['donationsCount'][$i] = $subscriptions->collectDonations()[0];
                    break;
                }
            }

            foreach ($campaignsSubscriptionData['donorsCount'] as $i => $data) {
                if ($data['campaign_id'] == $campaign->id) {
                    $campaignsSubscriptionData['donorsCount'][$i] = $subscriptions->collectDonors()[0];
                    break;
                }
            }
        }


        // Save updated cache
        if ($isCached) {
            update_option('give_campaigns_data', $campaignsData);
        }

        if ($isSubscriptionCached) {
            update_option('give_campaigns_subscriptions_data', $campaignsSubscriptionData);
        }

        if ($isCached || $isSubscriptionCached) {
            return;
        }

        update_option('give_campaigns_data', [
            'amounts' => array_merge(
                $campaignsData['amounts'] ?? [],
                $donations->collectIntendedAmounts()
            ),
            'donationsCount' => array_merge(
                $campaignsData['donationsCount'] ?? [],
                $donations->collectDonations()
            ),
            'donorsCount' => array_merge(
                $campaignsData['donorsCount'] ?? [],
                $donations->collectDonors()
            ),
        ]);

        if (defined('GIVE_RECURRING_VERSION')) {
            update_option('give_campaigns_subscriptions_data', [
                'amounts' => array_merge(
                    $campaignsSubscriptionData['amounts'] ?? [],
                    $subscriptions->collectIntendedAmounts()
                ),
                'donationsCount' => array_merge(
                    $campaignsSubscriptionData['donationsCount'] ?? [],
                    $subscriptions->collectDonations()
                ),
                'donorsCount' => array_merge(
                    $campaignsSubscriptionData['donorsCount'] ?? [],
                    $subscriptions->collectDonors()
                ),
            ]);
        }
    }
}


Current_dir [ WRITEABLE ] Document_root [ NOT WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
4 Apr 2026 1.57 AM
bravrvjk / bravrvjk
0755
AddCampaignFormFromRequest.php
0.962 KB
31 Mar 2025 11.17 PM
bravrvjk / bravrvjk
0644
AddNewBadgeToAdminMenuItem.php
1.313 KB
31 Mar 2025 11.17 PM
bravrvjk / bravrvjk
0644
AllowGiveRolesToEditCampaignPages.php
5.835 KB
28 Jan 2026 8.00 PM
bravrvjk / bravrvjk
0644
ArchiveCampaignFormsAsDraftStatus.php
1.243 KB
31 Mar 2025 11.17 PM
bravrvjk / bravrvjk
0644
ArchiveCampaignPagesAsDraftStatus.php
0.913 KB
31 Mar 2025 11.17 PM
bravrvjk / bravrvjk
0644
AssignDuplicatedFormToCampaign.php
1.353 KB
31 Mar 2025 11.17 PM
bravrvjk / bravrvjk
0644
AssociateCampaignPageWithCampaign.php
0.477 KB
31 Mar 2025 11.17 PM
bravrvjk / bravrvjk
0644
CacheCampaignData.php
5.497 KB
18 Nov 2025 7.37 PM
bravrvjk / bravrvjk
0644
ConvertQueryDataToCampaign.php
1.583 KB
31 Mar 2025 11.17 PM
bravrvjk / bravrvjk
0644
CreateCampaignPage.php
0.684 KB
1 May 2025 3.56 PM
bravrvjk / bravrvjk
0644
CreateDefaultCampaignForm.php
1.739 KB
25 Feb 2026 10.24 PM
bravrvjk / bravrvjk
0644
CreateDefaultLayoutForCampaignPage.php
2.121 KB
31 Mar 2025 11.17 PM
bravrvjk / bravrvjk
0644
DuplicateCampaign.php
2.754 KB
18 Nov 2025 7.37 PM
bravrvjk / bravrvjk
0644
EnqueueCampaignPageEditorAssets.php
1.586 KB
22 May 2025 12.18 AM
bravrvjk / bravrvjk
0644
FormInheritsCampaignGoal.php
0.643 KB
16 Apr 2025 5.25 PM
bravrvjk / bravrvjk
0644
LoadCampaignAdminOptions.php
2.29 KB
30 Jul 2025 2.55 AM
bravrvjk / bravrvjk
0644
LoadCampaignDetailsAssets.php
1.147 KB
22 May 2025 12.18 AM
bravrvjk / bravrvjk
0644
LoadCampaignPublicOptions.php
0.653 KB
30 Jul 2025 2.55 AM
bravrvjk / bravrvjk
0644
LoadCampaignsListTableAssets.php
1.854 KB
30 Jul 2025 2.55 AM
bravrvjk / bravrvjk
0644
PreventDeleteDefaultForm.php
1.379 KB
16 Apr 2025 5.25 PM
bravrvjk / bravrvjk
0644
RedirectLegacyCreateFormToCreateCampaign.php
3.97 KB
25 Feb 2026 10.24 PM
bravrvjk / bravrvjk
0644
RegisterCampaignBlocks.php
3.059 KB
9 Dec 2025 1.09 AM
bravrvjk / bravrvjk
0644
RegisterCampaignIdRestField.php
0.887 KB
31 Mar 2025 11.17 PM
bravrvjk / bravrvjk
0644
RegisterCampaignShortcodes.php
1.606 KB
20 Aug 2025 6.13 PM
bravrvjk / bravrvjk
0644
RenderDonateButton.php
1.152 KB
10 Sep 2025 5.42 PM
bravrvjk / bravrvjk
0644
ReplaceGiveFormsCptLabels.php
0.412 KB
31 Mar 2025 11.17 PM
bravrvjk / bravrvjk
0644
UnarchiveCampaignFormAsPublishStatus.php
0.689 KB
1 May 2025 3.56 PM
bravrvjk / bravrvjk
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025 CONTACT ME
Static GIF