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