PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.12.3
GiveWP – Donation Plugin and Fundraising Platform v2.12.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 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 / UsageTrackingOnBoarding.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
UsageTrackingOnBoarding.php
134 lines
1 <?php
2 namespace Give\Tracking;
3
4 use Give\Onboarding\Setup\PageView;
5 use Give\Tracking\Repositories\Settings;
6 use Give_Admin_Settings;
7
8 /**
9 * Class OnBoarding
10 * @package Give\Tracking
11 *
12 * This class uses to setup notice nag to website administrator if admin is not opt in for usage tracking and gives admin an option to directly opt-in.
13 *
14 * @since 2.10.0
15 */
16 class UsageTrackingOnBoarding {
17 /**
18 * @var Settings
19 */
20 private $settings;
21
22 /**
23 * UsageTrackingOnBoarding constructor.
24 *
25 * @param Settings $settings
26 */
27 public function __construct( Settings $settings ) {
28 $this->settings = $settings;
29 }
30
31 /**
32 * Register notice.
33 *
34 * @since 2.10.0
35 */
36 public function addNotice() {
37 if ( ! $this->canShowNotice() ) {
38 return;
39 }
40
41 echo $this->getNotice( true );
42 }
43
44 /**
45 * Get option name of notice.
46 *
47 * We use this option key to disable notice nag for specific user for a interval.
48 *
49 * @since 2.10.0
50 * @return string
51 */
52 public function getNoticeOptionKey() {
53 return give()->notices->get_notice_key( 'usage-tracking-nag', 'permanent' );
54 }
55
56 /**
57 * Get notice.
58 *
59 * @param bool $wrapper
60 *
61 * @return string
62 * @since 2.10.0
63 *
64 */
65 public function getNotice( $wrapper = false ) {
66 /* @var PageView $pageView */
67 $pageView = give()->make( PageView::class );
68
69 $notice = $pageView->render_template(
70 'row-item',
71 [
72 'icon' => $pageView->image( 'hands-in.svg' ),
73 'class' => ! $wrapper ? 'usage-tracking' : '',
74 'icon_alt' => esc_html__( 'Anonymous usage tracking icon', 'give' ),
75 'title' => esc_html__( 'Help GiveWP improve your fundraising experience', 'give' ),
76 'description' => sprintf(
77 '%1$s<br><br><a href="https://go.givewp.com/plugin-optin" class="learn-more-link" target="_blank">%2$s</a>',
78 esc_html__( 'Can you help improve GiveWP? With your permission, the GiveWP team uses non-sensitive data from plugin users to optimize donation form conversion rates, increase average donation amounts, and streamline the fundraising experience. This data is never shared with any third party.', 'give' ),
79 esc_html__( 'Learn more about how GiveWP respects user and donor privacy while improving the plugin >', 'give' )
80 ),
81 'action' => sprintf(
82 '<a class="button" href="%1$s">%2$s</a><div class="sub-links"><a href="%3$s" title="%7$s">%4$s</a><a href="%5$s">%6$s</a></div>',
83 add_query_arg( [ 'give_action' => 'opt_in_into_tracking' ] ),
84 esc_html__( 'Glad to Help', 'give' ),
85 add_query_arg( [ 'give_action' => 'hide_opt_in_notice_shortly' ] ),
86 esc_html__( 'Not Right Now', 'give' ),
87 add_query_arg( [ 'give_action' => 'hide_opt_in_notice_permanently' ] ),
88 esc_html__( 'Dismiss Forever', 'give' ),
89 esc_html__( 'Disable notice for 48 hours', 'give' )
90 ),
91 ]
92 );
93
94 return $wrapper ? sprintf( '<div class="usage-tracking notice"><section><main>%1$s</main></section></div>', $notice ) : $notice;
95 }
96
97 /**
98 * Return whether or not user can see notice.
99 *
100 * @since 2.10.0
101 */
102 public function canShowNotice() {
103 if ( ! current_user_can( 'manage_give_settings' ) ) {
104 return false;
105 }
106
107 $section = isset( $_GET['section'] ) ? 'advanced-options' : '';
108 if ( Give_Admin_Settings::is_setting_page( 'advanced', $section ) ) {
109 return false;
110 }
111
112 $optionValue = $this->settings->getUsageTrackingNoticeNagOptionValue();
113
114 if ( is_numeric( $optionValue ) && ( '0' === $optionValue || $optionValue > time() ) ) {
115 return false;
116 }
117
118 return ! give_is_setting_enabled( $this->settings->getUsageTrackingOptionValue() );
119 }
120
121 /**
122 * Disable notice.
123 *
124 * @since 2.10.0
125 *
126 * @param int $timestamp
127 *
128 * @return bool
129 */
130 public function disableNotice( $timestamp ) {
131 return $this->settings->saveUsageTrackingNoticeNagOptionValue( $timestamp );
132 }
133 }
134