PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.1.0
GiveWP – Donation Plugin and Fundraising Platform v4.1.0
4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 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 All 253 releases
give / src / Tracking / TrackingServiceProvider.php
TrackingServiceProvider.php
119 lines 4.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Give\Tracking;
4
5 use Give\Helpers\Hooks;
6 use Give\ServiceProviders\ServiceProvider;
7 use Give\Tracking\Events\DonationFormsTracking;
8 use Give\Tracking\Events\DonationMetricsTracking;
9 use Give\Tracking\Events\EditedDonationFormsTracking;
10 use Give\Tracking\Events\GivePluginSettingsTracking;
11 use Give\Tracking\Events\PluginsTracking;
12 use Give\Tracking\Events\ThemeTracking;
13 use Give\Tracking\Events\WebsiteTracking;
14 use Give\Tracking\Helpers\Track;
15
16 /**
17 * Class TrackingServiceProvider
18 * @package Give\Tracking
19 *
20 * @since 2.10.0
21 */
22 class TrackingServiceProvider implements ServiceProvider
23 {
24 /**
25 * @inheritdoc
26 */
27 public function register()
28 {
29 give()->singleton(TrackRegisterer::class);
30 }
31
32 /**
33 * @inheritdoc
34 *
35 * @since 3.0.0 Enable tracking if request is made by form builder
36 */
37 public function boot()
38 {
39 $isTrackingEnabled = Track::isTrackingEnabled();
40
41 if ($isTrackingEnabled) {
42 Hooks::addAction(TrackJobScheduler::CRON_JOB_HOOK_NAME, TrackJob::class, 'send');
43 }
44
45 // Enable telemetry for Visual Form Builder
46 add_action('rest_api_init', function () use ($isTrackingEnabled) {
47 $restRoute = $GLOBALS['wp']->query_vars['rest_route'] ?? '';
48 if (empty($restRoute)) {
49 return;
50 }
51
52 $isV3FormRoute = strpos($restRoute, 'givewp/v3/form') !== false;
53 if ($isTrackingEnabled && $isV3FormRoute) {
54 $this->enableTracking();
55 }
56 });
57
58 if (is_admin()) {
59 if ($isTrackingEnabled) {
60 $this->enableTracking();
61 }
62
63 if (Track::checkEnvironment()) {
64 Hooks::addFilter('give_get_settings_advanced', AdminSettings::class, 'addSettings');
65 Hooks::addAction('give_opt_in_into_tracking', AdminActionHandler::class, 'optInToUsageTracking');
66 Hooks::addAction(
67 'give_hide_opt_in_notice_shortly',
68 AdminActionHandler::class,
69 'optOutFromUsageTracking'
70 );
71 Hooks::addAction(
72 'give_hide_opt_in_notice_permanently',
73 AdminActionHandler::class,
74 'optOutFromUsageTracking'
75 );
76 Hooks::addAction(
77 'update_option_give_settings',
78 AdminActionHandler::class,
79 'optInToUsageTrackingAdminGrantManually',
80 10,
81 2
82 );
83 Hooks::addAction('give_setup_page_before_sections', UsageTrackingOnBoarding::class, 'addNotice', 0);
84 Hooks::addAction('admin_notices', UsageTrackingOnBoarding::class, 'addNotice');
85 }
86 }
87 }
88
89 /**
90 * @since 3.0.0
91 */
92 private function enableTracking()
93 {
94 $this->registerTrackEvents();
95 Hooks::addAction('shutdown', TrackJobScheduler::class, 'schedule', 999);
96 }
97
98 /**
99 * Register track events.
100 *
101 * 'give_send_tracking_data' action hook that will be triggered track routine cron job.
102 *
103 * @since 3.0.0 Add support for v3 forms
104 * @since 2.10.0
105 */
106 private function registerTrackEvents()
107 {
108 Hooks::addAction('givewp_form_builder_updated', EditedDonationFormsTracking::class, 'formBuilderUpdatedHookHandler');
109 Hooks::addAction('save_post_give_forms', EditedDonationFormsTracking::class, 'savePostHookHandler');
110 Hooks::addAction('save_post_give_payment', DonationFormsTracking::class, 'record');
111 Hooks::addAction('save_post_give_payment', DonationMetricsTracking::class, 'record');
112 Hooks::addAction('upgrader_process_complete', ThemeTracking::class, 'themeUpdateTrackingHandler', 10, 2);
113 Hooks::addAction('shutdown', WebsiteTracking::class, 'websiteUpdateTrackingHandler');
114 Hooks::addAction('update_option_give_settings', GivePluginSettingsTracking::class, 'record');
115 Hooks::addAction('update_option_active_plugins', PluginsTracking::class, 'record');
116 Hooks::addAction('switch_theme', ThemeTracking::class, 'record');
117 }
118 }
119