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