PluginProbe
WP Reset / 1.82
WP Reset v1.82
trunk 1.0 1.1 1.11 1.20 1.25 1.30 1.35 1.40 1.45 1.50 1.55 1.60 1.65 1.70 1.75 1.77 1.80 1.81 1.82 1.83 1.84 1.85 1.86 1.90 All 42 releases
wp-reset / wp301 / wp301.php

wp301.php in WP Reset 1.82, at wp301/wp301.php

296 lines 14.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Campaign for WP 301 Redirects PRO
5 * (c) WebFactory Ltd, 2020
6 */
7
8
9 if (false == class_exists('wf_wp301')) {
10 class wf_wp301
11 {
12 var $plugin_file = '';
13 var $plugin_slug = '';
14 var $plugin_screen = '';
15 var $options = '';
16 var $disable_dashboard = false;
17
18
19 function __construct($plugin_file, $plugin_screen)
20 {
21 $this->plugin_file = $plugin_file;
22 $this->plugin_slug = basename(dirname($plugin_file));
23 $this->plugin_screen = $plugin_screen;
24 $this->options = get_option('wp301promo', array());
25
26 if (!is_admin() || !empty($this->options['email_submitted']) || date('Y-m-d') > '2020-12-15') {
27 return;
28 } else {
29 add_action('admin_init', array($this, 'init'));
30 }
31 } // __construct
32
33
34 function init()
35 {
36 add_action('wp_dashboard_setup', array($this, 'add_widget'));
37 add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts'));
38 add_action('wp_ajax_wp301_promo_submit', array($this, 'ajax_submit'));
39 add_action('wp_ajax_wp301_promo_dismiss', array($this, 'ajax_dismiss'));
40 add_action('admin_footer', array($this, 'admin_footer'));
41 } // init
42
43
44 function admin_enqueue_scripts()
45 {
46 $screen = get_current_screen();
47
48 if ($screen->base != 'dashboard' && $screen->id != $this->plugin_screen) {
49 return;
50 }
51
52 if ($screen->base == 'dashboard' && (!empty($this->options['popup_dismissed_dashboard']) || !empty($this->disable_dashboard))) {
53 return;
54 }
55
56 if ($screen->id == $this->plugin_screen) {
57 wp_enqueue_style('wp-jquery-ui-dialog');
58 wp_enqueue_script('jquery-ui-dialog');
59 }
60
61 wp_enqueue_script('wp301_promo', plugin_dir_url($this->plugin_file) . 'wp301/wp301.js');
62
63 $js_vars = array(
64 'nonce_wp301_promo_submit' => wp_create_nonce('wp301_submit'),
65 'nonce_wp301_promo_dismiss' => wp_create_nonce('wp301_dismiss'),
66 );
67
68 if (empty($this->options['popup_dismissed_' . $this->plugin_slug])) {
69 $js_vars['open_popup'] = true;
70 }
71
72 wp_localize_script('wp301_promo', 'wp301_promo', $js_vars);
73 } // admin_enqueue_scripts
74
75
76 function ajax_dismiss()
77 {
78 if (!wp_verify_nonce(@$_GET['_ajax_nonce'], 'wp301_dismiss')) {
79 wp_send_json_error('Something is not right. Please reload the page and try again.');
80 }
81
82 $slug = substr(strip_tags(trim(@$_GET['slug'])), 0, 64);
83
84 $this->options['popup_dismissed_' . $slug] = true;
85 $tmp = update_option('wp301promo', $this->options);
86
87 if ($tmp) {
88 wp_send_json_success();
89 } else {
90 wp_send_json_error();
91 }
92 } // ajax_dismiss
93
94
95 function ajax_submit()
96 {
97 if (!wp_verify_nonce(@$_GET['_ajax_nonce'], 'wp301_submit')) {
98 wp_send_json_error('Something is not right. Please reload the page and try again.');
99 }
100
101 $email = strip_tags(trim(@$_GET['email']));
102 $name = strip_tags(trim(@$_GET['name']));
103 $plugin = strip_tags(trim(@$_GET['plugin'])) . '-' . strip_tags(trim(@$_GET['position']));
104
105 if (!is_email($email)) {
106 wp_send_json_error('Please enter a valid email address.');
107 }
108
109 $url = add_query_arg(array('name' => $name, 'email' => $email, 'plugin' => $plugin), 'https://wp301redirects.com/subscribe/');
110
111 $response = wp_remote_get($url, array('timeout' => 25));
112
113 if (is_wp_error($response)) {
114 wp_send_json_error('Something is not right. Please reload the page and try again.');
115 }
116
117 $body = @json_decode(wp_remote_retrieve_body($response), true);
118 if (empty($body['success'])) {
119 wp_send_json_error('Something is not right. Please reload the page and try again.');
120 }
121
122 $this->options['email_submitted'] = true;
123 update_option('wp301promo', $this->options);
124 wp_send_json_success('Thank you for trusting us with your email! You\'ll hear from us soon 🚀');
125 } // ajax_submit
126
127
128 function add_widget()
129 {
130 if (!empty($this->options['popup_dismissed_dashboard']) || !empty($this->disable_dashboard)) {
131 return;
132 }
133
134 add_meta_box('wp301promo_widget', 'Get a WP 301 Redirects PRO license for FREE <del>$158</del>', array($this, 'widget_content'), 'dashboard', 'side', 'high');
135 } // add_widget
136
137
138 function widget_content()
139 {
140 $out = '';
141
142 $out .= '<style>';
143 $out .= '#wp301promo_widget .disabled { pointer-events: none; }';
144 $out .= '#wp301promo_widget label { font-weight: normal; display: inline-block; width: 15%; margin-bottom: 10px; }';
145 $out .= '#wp301promo_widget input { width: 74%; margin-bottom: 10px; }';
146 $out .= '#wp301promo_widget .button-primary { padding: 14px 28px; text-decoration: none; line-height: 1; }';
147 $out .= '#wp301promo_dismiss { font-style: italic; display: inline-block; color: #444; text-decoration: none; margin: 8px 0 0 0; }';
148 $out .= '#wp301promo_dismiss:hover { text-decoration: underline; }';
149 $out .= '#wp301promo_widget, #wp301promo_widget p { font-size: 14px; }';
150 $out .= '#wp301promo_widget .title301 { font-weight: 600; margin: 10px 0 -10px 0; }';
151 $out .= '#wp301promo_widget img { max-width: 45%; max-height: 80px; }';
152 $out .= '#wp301promo_widget .center { text-align: center; }';
153 $out .= '#wp301promo_email { margin-bottom: 0 !important; }';
154 $out .= '#wp301promo_widget { background-color: #fafafa; }';
155 $out .= '#wp301promo_widget li a { text-decoration: underline; }';
156 $out .= '#wp301promo_widget .wp301inside { padding: 25px 12px 0px 12px; position: relative; }';
157 $out .= '#wp301promo_widget p { margin-top: 14px; line-height: 1.5; }';
158 $out .= '#wp301promo_widget small { margin-left: 17%; }';
159 $out .= '#wp301promo_widget ul { font-size: 14px; margin: 0 0 20px 0; list-style-type: disc; list-style-position: inside; }';
160 $out .= '#wp301promo_widget li { margin-bottom: 3px; }';
161 $out .= '#wp301promo_submit span { display: none; text-decoration: none; margin-right: 10px; animation: wf-spin-animation 1.5s infinite linear; }';
162 $out .= '#wp301promo_submit.disabled span { display: inline-block; }';
163 $out .= '@keyframes wf-spin-animation {
164 from { transform: rotate(0deg); }
165 to { transform: rotate(360deg); }
166 }';
167 $out .= '#wp301promo_widget .inside { overflow: hidden; margin: 0; }
168 #wp301promo_widget .ribbon { margin: 0; padding: 11px 20px 10px 20px; background: #007cba; color: #FFF; font-weight: 800; position: absolute; top: -17px; right: -17px; transform: translateX(30%) translateY(0%) rotate(45deg); transform-origin: top left; letter-spacing: 1px; }
169 #wp301promo_widget .ribbon:before, #wp301promo_widget .ribbon:after { content: ""; position: absolute; top:0; margin: 0 -1px; width: 100%; height: 100%; background: #007cba; }
170 #wp301promo_widget .ribbon:before { right:100%; }
171 #wp301promo_widget .ribbon:after { left:100%; }';
172 $out .= '</style>';
173
174 $plugin_url = plugin_dir_url($this->plugin_file);
175
176 $out .= '<div class="ribbon">FREE</div>';
177 $out .= '<div class="wp301inside">';
178
179 $out .= '<div class="center"><a href="https://wp301redirects.com/free-license/?ref=free-' . $this->plugin_slug . '-dashboard" target="_blank"><img src="' . $plugin_url . 'wp301/wp301-logo.png' . '" alt="WP 301 Redirects PRO" title="WP 301 Redirects PRO"></a></div>';
180
181 $out .= '<p>On November 6th <a href="https://www.webfactoryltd.com/" target="_blank">WebFactory Ltd</a> will give away a limited number of lifetime WP 301 Redirect PRO licenses, <b>each for 10 sites</b>. A $158 retail value! 🚀 Leave your email, we\'ll send you a link &amp; download your copy.</p><p style="margin-bottom: 0;"><b>What do I get?</b></p>';
182
183 $out .= '<ul>';
184 $out .= '<li>Automatically fix 404 errors &amp; URL typos</li>';
185 $out .= '<li>Create advanced redirect rules &amp; control affiliate links</li>';
186 $out .= '<li>Detailed log of all redirects &amp; 404s</li>';
187 $out .= '<li>Manage all sites\' licenses from a central Dashboard</li>';
188 $out .= '<li>Lifetime license for 10 sites. <a href="https://wp301redirects.com/free-license/?ref=free-' . $this->plugin_slug . '-dashboard" target="_blank">See all features</a></li>';
189 $out .= '</ul>';
190
191 $out .= '
192 <div>
193 <label for="wp301promo_name">Name:</label>
194 <input type="text" name="wp301promo_name" id="wp301promo_name" placeholder="How shall we call you?"><br>
195 <label for="wp301promo_email">Email:</label>
196 <input type="text" name="wp301promo_email" id="wp301promo_email" placeholder="Your best email address to get the plugin"><br>
197 <small>We hate spam as much as you do and never send it!</small>
198 <input type="hidden" id="wp301promo_plugin" value="' . $this->plugin_slug . '">
199 <input type="hidden" id="wp301promo_position" value="dashboard">
200 </div>
201
202 <p class="center">
203 <a id="wp301promo_submit" class="button button-primary" href="#"><span class="dashicons dashicons-update"></span>I Want My FREE License <del>$158</del></a><br>
204 <a id="wp301promo_dismiss" class="" href="#" data-plugin-slug="dashboard">I don\'t want a free license; don\'t show this again</a>
205 </p>
206 </div>';
207
208 echo $out;
209 } // widget_content
210
211
212 function admin_footer()
213 {
214 $screen = get_current_screen();
215 if ($screen->id != $this->plugin_screen) {
216 return;
217 }
218
219 $out = '';
220
221 $out .= '<style>';
222 $out .= '#wp301promo_widget .disabled { pointer-events: none; }';
223 $out .= '.wp301-dialog .ui-dialog-titlebar-close { visibility: hidden; }';
224 $out .= '#wp301-dialog label { font-weight: normal; display: inline-block; width: 15%; margin-bottom: 10px; }';
225 $out .= '#wp301-dialog input { width: 74%; margin-bottom: 10px; }';
226 $out .= '#wp301-dialog .button-primary { padding: 14px 28px; text-decoration: none; line-height: 1; }';
227 $out .= '#wp301-dialog, #wp301-dialog p { font-size: 14px; }';
228 $out .= '#wp301-dialog .title301 { font-size: 1.3em; font-weight: 600; margin: 10px 0 -10px 0; }';
229 $out .= '#wp301-dialog img { max-width: 60%; }';
230 $out .= '#wp301-dialog li a { text-decoration: underline; }';
231 $out .= '#wp301-dialog small { margin-left: 16%; }';
232 $out .= '#wp301-dialog .center { text-align: center; }';
233 $out .= '#wp301-dialog, .wp301-dialog .ui-dialog-titlebar { background-color: #fafafa; }';
234 $out .= '#wp301-dialog .wp301inside { padding: 12px 12px 0px 12px; }';
235 $out .= '#wp301-dialog p { margin-top: 14px; line-height: 1.5; }';
236 $out .= '#wp301-dialog ul { margin: 0 0 20px 0; list-style-type: disc; list-style-position: inside; }';
237 $out .= '#wp301-dialog li { margin-bottom: 3px; }';
238 $out .= '#wp301promo_dismiss { display: inline-block; color: #444; text-decoration: none; margin: 8px 0 0 0; }';
239 $out .= '#wp301promo_dismiss:hover { text-decoration: underline; }';
240 $out .= '#wp301promo_submit span { display: none; text-decoration: none; margin-right: 10px; animation: wf-spin-animation 1.5s infinite linear; }';
241 $out .= '#wp301promo_submit.disabled span { display: inline-block; }';
242 $out .= '@keyframes wf-spin-animation {
243 from { transform: rotate(0deg); }
244 to { transform: rotate(360deg); }
245 }';
246 $out .= '#wp301-dialog .inside { overflow: hidden; margin: 0; }
247 #wp301-dialog .ribbon { margin: 0; padding: 11px 20px 10px 20px; background: #007cba; color: #FFF; font-weight: 800; position: absolute; top: -17px; right: -17px; transform: translateX(30%) translateY(0%) rotate(45deg); transform-origin: top left; letter-spacing: 1px; }
248 #wp301-dialog .ribbon:before, #wp301-dialog .ribbon:after { content: ""; position: absolute; top:0; margin: 0 -1px; width: 100%; height: 100%; background: #007cba; }
249 #wp301-dialog .ribbon:before { right:100%; }
250 #wp301-dialog .ribbon:after { left:100%; }';
251 $out .= '</style>';
252
253 $out .= '<div id="wp301-dialog" style="display: none;" title="Get a WP 301 Redirects PRO license for FREE"><span class="ui-helper-hidden-accessible"><input type="text"/></span>';
254
255 $plugin_url = plugin_dir_url($this->plugin_file);
256
257 $out .= '<div class="wp301inside">';
258 $out .= '<div class="ribbon">FREE</div>';
259
260 $out .= '<div class="center"><a href="https://wp301redirects.com/free-license/?ref=free-' . $this->plugin_slug . '-popup" target="_blank"><img src="' . $plugin_url . 'wp301/wp301-logo.png' . '" alt="WP 301 Redirects PRO" title="WP 301 Redirects PRO"></a></div>';
261
262 $out .= '<p>On November 6th <a href="https://www.webfactoryltd.com/" target="_blank">WebFactory Ltd</a> will give away a limited number of lifetime WP 301 Redirect PRO licenses, <b>each for 10 sites</b>. A $158 retail value! 🚀 Leave your email, we\'ll send you a link &amp; download your copy.</p><p style="margin-bottom: 0;"><b>What do I get?</b></p>';
263
264 $out .= '<ul>';
265 $out .= '<li>Automatically fix 404 errors &amp; URL typos</li>';
266 $out .= '<li>Create advanced redirect rules &amp; control affiliate links</li>';
267 $out .= '<li>Detailed log of all redirects &amp; 404s</li>';
268 $out .= '<li>Manage all sites\' licenses from a central Dashboard</li>';
269 $out .= '<li>Lifetime license for 10 sites. <a href="https://wp301redirects.com/free-license/?ref=free-' . $this->plugin_slug . '-popup" target="_blank">See all features</a></li>';
270 $out .= '</ul>';
271
272 $out .= '
273 <div>
274 <label for="wp301promo_name">Name:</label>
275 <input type="text" name="wp301promo_name" id="wp301promo_name" placeholder="How shall we call you?"><br>
276 <label for="wp301promo_email">Email:</label>
277 <input type="text" name="wp301promo_email" id="wp301promo_email" placeholder="Your best email address to get the plugin"><br>
278 <small>We hate spam as much as you do and never send it!</small>
279 <input type="hidden" id="wp301promo_plugin" value="' . $this->plugin_slug . '">
280 <input type="hidden" id="wp301promo_position" value="popup">
281 </div>
282
283 <p class="center">
284 <a id="wp301promo_submit" class="button button-primary" href="#"><span class="dashicons dashicons-update"></span>I Want My FREE License <del>$158</del></a><br>
285 <a id="wp301promo_dismiss" class="" href="#" data-plugin-slug="' . $this->plugin_slug . '">I don\'t want a free license; don\'t show this again</a>
286 </p>
287
288 </div>';
289
290 $out .= '</div>';
291
292 echo $out;
293 } // wp_footer
294 } // wf_wp301
295 }
296