diff --git a/src/Tracking/Enum/EventType.php b/src/Tracking/Enum/EventType.php index 09e898cfc9..6af9ebd1ee 100644 --- a/src/Tracking/Enum/EventType.php +++ b/src/Tracking/Enum/EventType.php @@ -20,4 +20,5 @@ final class EventType extends Enum const DONATION_METRICS = 'donation-metrics'; const DONATION_FORM_UPDATED = 'donation-form-updated'; const SITE_UPDATED = 'site-updated'; + const CAMPAIGN_UPDATED = 'campaign-updated'; } diff --git a/src/Tracking/Events/CampaignsTracking.php b/src/Tracking/Events/CampaignsTracking.php new file mode 100644 index 0000000000..da59e425f9 --- /dev/null +++ b/src/Tracking/Events/CampaignsTracking.php @@ -0,0 +1,30 @@ +eventType = new EventType(EventType::CAMPAIGN_UPDATED); + parent::__construct($track); + } +} diff --git a/src/Tracking/TrackingData/CampaignsData.php b/src/Tracking/TrackingData/CampaignsData.php new file mode 100644 index 0000000000..7f94be4783 --- /dev/null +++ b/src/Tracking/TrackingData/CampaignsData.php @@ -0,0 +1,48 @@ +trackEvents = $trackEvents; + } + + /** + * @inheritdoc + */ + public function get() + { + $query = Campaign::query() + ->select('count(forms.form_id) as formCount') + ->leftJoin('give_campaign_forms', 'campaigns.id', 'forms.campaign_id', 'forms') + ->groupBy('campaigns.id'); + + return array_map(function($campaign) { + return [ + 'campaign_id' => $campaign->id, + 'campaign_status' => $campaign->status, + 'campaign_form_count' => $campaign->formCount, + ]; + }, DB::get_results($query->getSQL())); + } +} diff --git a/src/Tracking/TrackingServiceProvider.php b/src/Tracking/TrackingServiceProvider.php index 541ea4e6cd..69e8032710 100644 --- a/src/Tracking/TrackingServiceProvider.php +++ b/src/Tracking/TrackingServiceProvider.php @@ -4,6 +4,7 @@ use Give\Helpers\Hooks; use Give\ServiceProviders\ServiceProvider; +use Give\Tracking\Events\CampaignsTracking; use Give\Tracking\Events\DonationFormsTracking; use Give\Tracking\Events\DonationMetricsTracking; use Give\Tracking\Events\EditedDonationFormsTracking; @@ -114,5 +115,6 @@ private function registerTrackEvents() Hooks::addAction('update_option_give_settings', GivePluginSettingsTracking::class, 'record'); Hooks::addAction('update_option_active_plugins', PluginsTracking::class, 'record'); Hooks::addAction('switch_theme', ThemeTracking::class, 'record'); + Hooks::addAction('givewp_campaign_updated', CampaignsTracking::class, 'record'); } }