PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.7.1
GiveWP – Donation Plugin and Fundraising Platform v4.7.1
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 / Tracking / AdminActionHandler.php
give / src / Tracking Last commit date
Contracts 4 years ago Enum 1 year ago Events 1 year ago Helpers 2 years ago Repositories 4 years ago TrackingData 1 year ago AccessToken.php 4 years ago AdminActionHandler.php 4 years ago AdminSettings.php 4 years ago TrackClient.php 4 years ago TrackJob.php 4 years ago TrackJobScheduler.php 4 years ago TrackRegisterer.php 4 years ago TrackingServiceProvider.php 1 year ago UsageTrackingOnBoarding.php 4 years ago
AdminActionHandler.php
181 lines
1 <?php
2
3 namespace Give\Tracking;
4
5 use Give\Tracking\Events\ActiveDonationFormsFirstTimeTracking;
6 use Give\Tracking\Events\DonationMetricsTracking;
7 use Give\Tracking\Events\GivePluginSettingsTracking;
8 use Give\Tracking\Events\PluginsTracking;
9 use Give\Tracking\Events\ThemeTracking;
10 use Give\Tracking\Repositories\Settings;
11 use Give\Tracking\Repositories\TelemetryAccessDetails;
12 use Give_Admin_Settings;
13
14 /**
15 * Class AdminActionHandler
16 * @package Give\Tracking
17 *
18 * This class uses to handle actions in WP Backed.
19 *
20 * @since 2.10.0
21 */
22 class AdminActionHandler
23 {
24 /**
25 * @var UsageTrackingOnBoarding
26 */
27 private $usageTrackingOnBoarding;
28
29 /**
30 * @var Settings
31 */
32 private $settings;
33
34 /**
35 * @var TelemetryAccessDetails
36 */
37 private $telemetryAccessDetails;
38
39 /**
40 * @var AccessToken
41 */
42 private $accessToken;
43
44 /**
45 * @param UsageTrackingOnBoarding $usageTrackingOnBoarding
46 * @param Settings $settings
47 * @param TelemetryAccessDetails $telemetryAccessDetails
48 * @param AccessToken $accessToken
49 */
50 public function __construct(
51 UsageTrackingOnBoarding $usageTrackingOnBoarding,
52 Settings $settings,
53 TelemetryAccessDetails $telemetryAccessDetails,
54 AccessToken $accessToken
55 ) {
56 $this->usageTrackingOnBoarding = $usageTrackingOnBoarding;
57 $this->settings = $settings;
58 $this->telemetryAccessDetails = $telemetryAccessDetails;
59 $this->accessToken = $accessToken;
60 }
61
62 /**
63 * Handle opt_out_into_tracking give action.
64 *
65 * @since 2.10.0
66 */
67 public function optOutFromUsageTracking()
68 {
69 if ( ! current_user_can('manage_give_settings')) {
70 return;
71 }
72
73 $timestamp = '0'; // zero value disable notice permanently.
74 if ('hide_opt_in_notice_shortly' === $_GET['give_action']) {
75 $timestamp = DAY_IN_SECONDS * 2 + time();
76 }
77
78 $this->usageTrackingOnBoarding->disableNotice($timestamp);
79
80 wp_safe_redirect(esc_url_raw(remove_query_arg('give_action')));
81 exit();
82 }
83
84 /**
85 * Handle opt_in_into_tracking give action.
86 *
87 * @since 2.10.0
88 */
89 public function optInToUsageTracking()
90 {
91 if ( ! current_user_can('manage_give_settings')) {
92 return;
93 }
94
95 $this->settings->saveUsageTrackingOptionValue('enabled');
96 $this->usageTrackingOnBoarding->disableNotice(0);
97
98 if ($this->accessToken->store()) {
99 $this->recordTracks();
100 } else {
101 $this->settings->saveUsageTrackingOptionValue('disabled');
102 }
103
104 wp_safe_redirect(esc_url_raw(remove_query_arg('give_action')));
105 exit();
106 }
107
108 /**
109 * OptIn website to telemetry server when admin grant by changing setting.
110 *
111 * @since 2.10.0
112 *
113 * @param array $oldValue
114 * @param array $newValue
115 *
116 * @return false
117 */
118 public function optInToUsageTrackingAdminGrantManually($oldValue, $newValue)
119 {
120 $class = __CLASS__;
121 add_filter(
122 "give_disable_hook-update_option_give_settings:{$class}@optInToUsageTrackingAdminGrantManually",
123 '__return_true'
124 );
125
126 $section = isset($_GET['section']) ? 'advanced-options' : '';
127 if ( ! Give_Admin_Settings::is_setting_page('advanced', $section)) {
128 return false;
129 }
130
131 $usageTracking = $newValue[Settings::USAGE_TRACKING_OPTION_KEY] ?: 'disabled';
132 $usageTracking = give_is_setting_enabled($usageTracking);
133 $hasAccessToken = $this->telemetryAccessDetails->hasAccessTokenOptionValue();
134
135 // Send plugin information immediately when edit tracking setting.
136 if ($hasAccessToken) {
137 /* @var TrackJob $trackJob */
138 $trackJob = give(TrackJob::class);
139 $trackJob->sendNow([GivePluginSettingsTracking::class]);
140 }
141
142 // Exit if already has access token.
143 if ( ! $usageTracking || $hasAccessToken) {
144 return false;
145 }
146
147 if ($this->accessToken->store()) {
148 $this->recordTracks();
149 } else {
150 $this->settings->saveUsageTrackingOptionValue('disabled');
151 }
152
153 remove_filter(
154 "give_disable_hook-update_option_give_settings:{$class}@optInToUsageTrackingAdminGrantManually",
155 '__return_false'
156 );
157
158 return true;
159 }
160
161 /**
162 * Schedule first set of tracking information.
163 *
164 * @since 2.10.0
165 */
166 private function recordTracks()
167 {
168 /* @var TrackJob $trackJob */
169 $trackJob = give(TrackJob::class);
170 $trackJob->sendNow(
171 [
172 ActiveDonationFormsFirstTimeTracking::class,
173 DonationMetricsTracking::class,
174 ThemeTracking::class,
175 GivePluginSettingsTracking::class,
176 PluginsTracking::class,
177 ]
178 );
179 }
180 }
181