PluginProbe
Elementor Website Builder – more than just a page builder / 3.2.2
Elementor Website Builder – more than just a page builder v3.2.2
4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 All 452 releases
← All changes | core/admin/admin-notices.php +132 -679 4.0.73.2.2 View file →
@@ -3,17 +3,14 @@
3 3
4 4 use Elementor\Api;
5 5 use Elementor\Core\Admin\UI\Components\Button;
6 6 use Elementor\Core\Base\Module;
7 -use Elementor\Core\Upgrade\Manager;
8 -use Elementor\Core\Utils\Hints;
9 -use Elementor\Core\Utils\Promotions\Filtered_Promotions_Manager;
10 7 use Elementor\Plugin;
11 -use Elementor\Settings;
12 8 use Elementor\Tracker;
13 9 use Elementor\User;
14 10 use Elementor\Utils;
15 11 use Elementor\Core\Admin\Notices\Base_Notice;
12 +use Elementor\Core\Admin\Notices\Elementor_Dev_Notice;
16 13
17 14 if ( ! defined( 'ABSPATH' ) ) {
18 15 exit; // Exit if accessed directly.
19 16 }
@@ -19,26 +16,18 @@
19 16 }
20 17
21 18 class Admin_Notices extends Module {
22 19
23 - const DEFAULT_EXCLUDED_PAGES = [ 'plugins.php', 'plugin-install.php', 'plugin-editor.php' ];
24 - const LOCAL_GOOGLE_FONTS_DISABLED_NOTICE_ID = 'local_google_fonts_disabled';
25 - const LOCAL_GOOGLE_FONTS_NOTICE_MIN_VERSION = '3.33.3';
26 -
27 - const EXIT_EARLY_FOR_BACKWARD_COMPATIBILITY = false;
28 -
29 20 private $plain_notices = [
30 21 'api_notice',
31 22 'api_upgrade_plugin',
32 23 'tracker',
33 - 'tracker_last_update',
34 24 'rate_us_feedback',
25 + 'woocommerce_promote',
26 + 'cf7_promote',
27 + 'mc4wp_promote',
28 + 'popup_maker_promote',
35 29 'role_manager_promote',
36 - 'experiment_promotion',
37 - 'site_mailer_promotion',
38 - 'plugin_image_optimization',
39 - 'ally_pages_promotion',
40 - self::LOCAL_GOOGLE_FONTS_DISABLED_NOTICE_ID,
41 30 ];
42 31
43 32 private $elementor_pages_count = null;
44 33
@@ -46,21 +35,13 @@
46 35
47 36 private $current_screen_id = null;
48 37
49 38 private function get_notices() {
50 - /**
51 - * Admin notices.
52 - *
53 - * Filters Elementor admin notices.
54 - *
55 - * This hook can be used by external developers to manage existing
56 - * admin notice or to add new notices for Elementor add-ons.
57 - *
58 - * @param array $notices A list of notice classes.
59 - */
60 - $notices = apply_filters( 'elementor/core/admin/notices', [] );
39 + $notices = [
40 + new Elementor_Dev_Notice(),
41 + ];
61 42
62 - return $notices;
43 + return apply_filters( 'elementor/core/admin/notices', $notices );
63 44 }
64 45
65 46 private function get_install_time() {
66 47 if ( null === $this->install_time ) {
@@ -72,9 +53,8 @@
72 53
73 54 private function get_elementor_pages_count() {
74 55 if ( null === $this->elementor_pages_count ) {
75 56 $elementor_pages = new \WP_Query( [
76 - 'no_found_rows' => true,
77 57 'post_type' => 'any',
78 58 'post_status' => 'publish',
79 59 'fields' => 'ids',
80 60 'update_post_meta_cache' => false,
@@ -98,13 +78,13 @@
98 78 if ( ! current_user_can( 'update_plugins' ) ) {
99 79 return false;
100 80 }
101 81
102 - if ( ! $this->is_elementor_admin_screen_with_system_info() ) {
82 + if ( ! in_array( $this->current_screen_id, [ 'toplevel_page_elementor', 'edit-elementor_library', 'elementor_page_elementor-system-info', 'dashboard' ], true ) ) {
103 83 return false;
104 84 }
105 85
106 - // Check for upgrades.
86 + // Check if have any upgrades.
107 87 $update_plugins = get_site_transient( 'update_plugins' );
108 88
109 89 $has_remote_update_package = ! ( empty( $update_plugins ) || empty( $update_plugins->response[ ELEMENTOR_PLUGIN_BASE ] ) || empty( $update_plugins->response[ ELEMENTOR_PLUGIN_BASE ]->package ) );
110 90
@@ -124,9 +104,9 @@
124 104
125 105 $new_version = $upgrade_notice['version'];
126 106 }
127 107
128 - // Check if upgrade messages should be shown.
108 + // Check if have upgrade notices to show.
129 109 if ( version_compare( ELEMENTOR_VERSION, $upgrade_notice['version'], '>=' ) ) {
130 110 return false;
131 111 }
132 112
@@ -135,27 +115,27 @@
135 115 return false;
136 116 }
137 117
138 118 $message = sprintf(
139 - /* translators: 1: Details URL, 2: Accessibility text, 3: Version number, 4: Update URL, 5: Accessibility text. */
119 + /* translators: 1: Details URL, 2: Accessibility text, 3: Version number, 4: Update URL, 5: Accessibility text */
140 120 __( 'There is a new version of Elementor Page Builder available. <a href="%1$s" class="thickbox open-plugin-details-modal" aria-label="%2$s">View version %3$s details</a> or <a href="%4$s" class="update-link" aria-label="%5$s">update now</a>.', 'elementor' ),
141 121 esc_url( $details_url ),
142 - sprintf(
143 - /* translators: %s: Elementor version. */
144 - esc_attr__( 'View Elementor version %s details', 'elementor' ),
122 + esc_attr( sprintf(
123 + /* translators: %s: Elementor version */
124 + __( 'View Elementor version %s details', 'elementor' ),
145 125 $new_version
146 - ),
126 + ) ),
147 127 $new_version,
148 128 esc_url( $upgrade_url ),
149 - esc_attr__( 'Update Now', 'elementor' )
129 + esc_attr( __( 'Update Elementor Now', 'elementor' ) )
150 130 );
151 131
152 132 $options = [
153 - 'title' => esc_html__( 'Update Notification', 'elementor' ),
133 + 'title' => __( 'Update Notification', 'elementor' ),
154 134 'description' => $message,
155 135 'button' => [
156 136 'icon_classes' => 'dashicons dashicons-update',
157 - 'text' => esc_html__( 'Update Now', 'elementor' ),
137 + 'text' => __( 'Update Now', 'elementor' ),
158 138 'url' => $upgrade_url,
159 139 ],
160 140 'id' => $notice_id,
161 141 ];
@@ -174,9 +154,9 @@
174 154 if ( ! current_user_can( 'manage_options' ) ) {
175 155 return false;
176 156 }
177 157
178 - if ( ! $this->is_elementor_admin_screen_with_system_info() ) {
158 + if ( ! in_array( $this->current_screen_id, [ 'toplevel_page_elementor', 'edit-elementor_library', 'elementor_page_elementor-system-info', 'dashboard' ], true ) ) {
179 159 return false;
180 160 }
181 161
182 162 $notice_id = 'admin_notice_api_' . $admin_notice['notice_id'];
@@ -184,9 +164,9 @@
184 164 return false;
185 165 }
186 166
187 167 $options = [
188 - 'title' => esc_html__( 'Update Notification', 'elementor' ),
168 + 'title' => __( 'Update Notification', 'elementor' ),
189 169 'description' => $admin_notice['notice_text'],
190 170 'id' => $notice_id,
191 171 ];
192 172
@@ -220,9 +200,9 @@
220 200 // TODO: Skip for development env.
221 201 $optin_url = wp_nonce_url( add_query_arg( 'elementor_tracker', 'opt_into' ), 'opt_into' );
222 202 $optout_url = wp_nonce_url( add_query_arg( 'elementor_tracker', 'opt_out' ), 'opt_out' );
223 203
224 - $tracker_description_text = esc_html__( 'Become a super contributor by helping us understand how you use our service to enhance your experience and improve our product.', 'elementor' );
204 + $tracker_description_text = __( 'Become a super contributor by opting in to share non-sensitive plugin data and to receive periodic email updates from us.', 'elementor' );
225 205
226 206 /**
227 207 * Tracker admin description text.
228 208 *
@@ -233,21 +213,20 @@
233 213 * @param string $tracker_description_text Description text displayed in admin notice.
234 214 */
235 215 $tracker_description_text = apply_filters( 'elementor/tracker/admin_description_text', $tracker_description_text );
236 216
237 - $message = esc_html( $tracker_description_text ) . ' <a href="https://go.elementor.com/usage-data-tracking/" target="_blank">' . esc_html__( 'Learn more.', 'elementor' ) . '</a>';
217 + $message = esc_html( $tracker_description_text ) . ' <a href="https://go.elementor.com/usage-data-tracking/" target="_blank">' . __( 'Learn more.', 'elementor' ) . '</a>';
238 218
239 219 $options = [
240 - 'title' => esc_html__( 'Want to shape the future of web creation?', 'elementor' ),
220 + 'title' => __( 'Love using Elementor?', 'elementor' ),
241 221 'description' => $message,
242 - 'dismissible' => false,
243 222 'button' => [
244 - 'text' => esc_html__( 'Sure! I\'d love to help', 'elementor' ),
223 + 'text' => __( 'Sure! I\'d love to help', 'elementor' ),
245 224 'url' => $optin_url,
246 225 'type' => 'cta',
247 226 ],
248 227 'button_secondary' => [
249 - 'text' => esc_html__( 'No thanks', 'elementor' ),
228 + 'text' => __( 'No thanks', 'elementor' ),
250 229 'url' => $optout_url,
251 230 'variant' => 'outline',
252 231 'type' => 'cta',
253 232 ],
@@ -257,49 +236,8 @@
257 236
258 237 return true;
259 238 }
260 239
261 - private function notice_tracker_last_update() {
262 - if ( ! current_user_can( 'manage_options' ) ) {
263 - return false;
264 - }
265 -
266 - if ( ! Tracker::has_terms_changed() ) {
267 - return false;
268 - }
269 -
270 - $notice_id = 'tracker_last_update_' . Tracker::LAST_TERMS_UPDATED;
271 -
272 - if ( User::is_user_notice_viewed( $notice_id ) ) {
273 - return false;
274 - }
275 -
276 - $optin_url = wp_nonce_url( add_query_arg( 'elementor_tracker', 'opt_into' ), 'opt_into' );
277 -
278 - $message = esc_html__( 'We\'re updating our Terms and Conditions to include the collection of usage and behavioral data. This information helps us understand how you use Elementor so we can make informed improvements to the product.', 'elementor' );
279 -
280 - $options = [
281 - 'id' => $notice_id,
282 - 'title' => esc_html__( 'Update regarding usage data collection', 'elementor' ),
283 - 'description' => $message,
284 - 'button' => [
285 - 'text' => esc_html__( 'Opt in', 'elementor' ),
286 - 'url' => $optin_url,
287 - 'type' => 'cta',
288 - ],
289 - 'button_secondary' => [
290 - 'text' => esc_html__( 'Learn more', 'elementor' ),
291 - 'url' => 'https://go.elementor.com/wp-dash-update-usage-notice/',
292 - 'new_tab' => true,
293 - 'type' => 'cta',
294 - ],
295 - ];
296 -
297 - $this->print_admin_notice( $options );
298 -
299 - return true;
300 - }
301 -
302 240 private function notice_rate_us_feedback() {
303 241 $notice_id = 'rate_us_feedback';
304 242
305 243 if ( ! current_user_can( 'manage_options' ) ) {
@@ -316,23 +254,23 @@
316 254
317 255 $dismiss_url = add_query_arg( [
318 256 'action' => 'elementor_set_admin_notice_viewed',
319 257 'notice_id' => esc_attr( $notice_id ),
320 - '_wpnonce' => wp_create_nonce( 'elementor_set_admin_notice_viewed' ),
321 258 ], admin_url( 'admin-post.php' ) );
322 259
323 260 $options = [
324 - 'title' => esc_html__( 'Congrats!', 'elementor' ),
325 - 'description' => esc_html__( 'You created over 10 pages with Elementor. Great job! If you can spare a minute, please help us by leaving a five star review on WordPress.org.', 'elementor' ),
261 + 'title' => __( 'Congrats!', 'elementor' ),
262 + 'description' => __( 'You created over 10 pages with Elementor. Great job! If you can spare a minute,
263 + please help us by leaving a five star review on WordPress.org.', 'elementor' ),
326 264 'id' => $notice_id,
327 265 'button' => [
328 - 'text' => esc_html__( 'Happy To Help', 'elementor' ),
266 + 'text' => __( 'Happy To Help', 'elementor' ),
329 267 'url' => 'https://go.elementor.com/admin-review/',
330 268 'new_tab' => true,
331 269 'type' => 'cta',
332 270 ],
333 271 'button_secondary' => [
334 - 'text' => esc_html__( 'Hide Notification', 'elementor' ),
272 + 'text' => __( 'Hide Notification', 'elementor' ),
335 273 'classes' => [ 'e-notice-dismiss' ],
336 274 'url' => esc_url_raw( $dismiss_url ),
337 275 'new_tab' => true,
338 276 'type' => 'cta',
@@ -343,168 +281,80 @@
343 281
344 282 return true;
345 283 }
346 284
347 - private function notice_role_manager_promote() {
348 - $notice_id = 'role_manager_promote';
285 + private function notice_woocommerce_promote() {
286 + $notice_id = 'woocommerce_promote';
349 287
350 - if ( Utils::has_pro() ) {
288 + if ( Utils::has_pro() || ! function_exists( 'WC' ) ) {
351 289 return false;
352 290 }
353 291
354 - if ( ! current_user_can( 'manage_options' ) ) {
292 + if ( ! current_user_can( 'install_plugins' ) ) {
355 293 return false;
356 294 }
357 295
358 - if ( 'elementor_page_elementor-role-manager' !== $this->current_screen_id || User::is_user_notice_viewed( $notice_id ) ) {
296 + if ( ! in_array( $this->current_screen_id, [ 'edit-product', 'woocommerce_page_wc-settings' ], true ) || User::is_user_notice_viewed( $notice_id ) ) {
359 297 return false;
360 298 }
361 299
362 - $users = new \WP_User_Query( [
363 - 'fields' => 'ID',
364 - 'number' => 10,
365 - ] );
300 + if ( strtotime( '2019-08-01' ) > $this->get_install_time() ) {
301 + return false;
302 + }
366 303
367 - if ( 5 > $users->get_total() ) {
304 + if ( strtotime( '+24 hours', $this->get_install_time() ) > time() ) {
368 305 return false;
369 306 }
370 307
371 308 $options = [
372 - 'title' => esc_html__( 'Managing a multi-user site?', 'elementor' ),
373 - 'description' => esc_html__( 'With Elementor Pro, you can control user access and make sure no one messes up your design.', 'elementor' ),
309 + 'title' => __( 'Using WooCommerce?', 'elementor' ),
310 + 'description' => __( 'With Elementor Pro’s WooCommerce Builder, you’ll be able to design your store without coding!', 'elementor' ),
374 311 'id' => $notice_id,
375 312
376 313 'button' => [
377 - 'text' => esc_html__( 'Learn More', 'elementor' ),
378 - 'url' => 'https://go.elementor.com/plugin-promotion-role-manager/',
314 + 'text' => __( 'Learn More', 'elementor' ),
315 + 'url' => 'https://go.elementor.com/plugin-promotion-woocommerce/',
379 316 'new_tab' => true,
380 317 'type' => 'cta',
381 318 ],
382 319 ];
383 320
384 - $options = Filtered_Promotions_Manager::get_filtered_promotion_data( $options, 'core/admin/notice_role_manager_promote', 'button', 'url' );
385 -
386 321 $this->print_admin_notice( $options );
387 322
388 323 return true;
389 324 }
390 325
391 - private function notice_experiment_promotion() {
392 - $notice_id = 'experiment_promotion';
326 + private function notice_cf7_promote() {
327 + $notice_id = 'cf7_promote';
393 328
394 - if ( ! current_user_can( 'manage_options' ) || User::is_user_notice_viewed( $notice_id ) ) {
329 + if ( Utils::has_pro() || ! defined( 'WPCF7_VERSION' ) ) {
395 330 return false;
396 331 }
397 332
398 - $experiments = Plugin::$instance->experiments;
399 - $is_all_performance_features_active = (
400 - $experiments->is_feature_active( 'e_font_icon_svg' ) &&
401 - $experiments->is_feature_active( 'e_optimized_markup' )
402 - );
403 -
404 - if ( $is_all_performance_features_active ) {
333 + if ( ! current_user_can( 'install_plugins' ) ) {
405 334 return false;
406 335 }
407 336
408 - $options = [
409 - 'title' => esc_html__( 'Improve your site’s performance score.', 'elementor' ),
410 - 'description' => esc_html__( 'With our experimental speed boosting features you can go faster than ever before. Look for the Performance label on our Experiments page and activate those experiments to improve your site loading speed.', 'elementor' ),
411 - 'id' => $notice_id,
412 - 'button' => [
413 - 'text' => esc_html__( 'Try it out', 'elementor' ),
414 - 'url' => Settings::get_settings_tab_url( 'experiments' ),
415 - 'type' => 'cta',
416 - ],
417 - 'button_secondary' => [
418 - 'text' => esc_html__( 'Learn more', 'elementor' ),
419 - 'url' => 'https://go.elementor.com/wp-dash-experiment-promotion/',
420 - 'new_tab' => true,
421 - 'type' => 'cta',
422 - ],
423 - ];
424 -
425 - $this->print_admin_notice( $options );
426 -
427 - return true;
428 - }
429 -
430 - private function site_has_forms_plugins() {
431 - return defined( 'WPFORMS_VERSION' ) || defined( 'WPCF7_VERSION' ) || defined( 'FLUENTFORM_VERSION' ) || class_exists( '\GFCommon' ) || class_exists( '\Ninja_Forms' ) || function_exists( 'load_formidable_forms' ) || did_action( 'metform/after_load' ) || defined( 'FORMINATOR_PLUGIN_BASENAME' );
432 - }
433 -
434 - private function site_has_woocommerce() {
435 - return class_exists( 'WooCommerce' );
436 - }
437 -
438 - private function get_installed_form_plugin_name() {
439 - static $detected_form_plugin = null;
440 -
441 - if ( null !== $detected_form_plugin ) {
442 - return $detected_form_plugin;
443 - }
444 -
445 - $form_plugins_constants_to_name_mapper = [
446 - 'WPFORMS_VERSION' => 'WPForms',
447 - 'WPCF7_VERSION' => 'Contact Form 7',
448 - ];
449 -
450 - foreach ( $form_plugins_constants_to_name_mapper as $constant => $name ) {
451 - if ( defined( $constant ) ) {
452 - $detected_form_plugin = $name;
453 - return $detected_form_plugin;
454 - }
455 - }
456 -
457 - $form_plugins_classes_to_name_mapper = [
458 - '\GFCommon' => 'Gravity Forms',
459 - '\Ninja_Forms' => 'Ninja Forms',
460 - ];
461 -
462 - foreach ( $form_plugins_classes_to_name_mapper as $class => $name ) {
463 - if ( class_exists( $class ) ) {
464 - $detected_form_plugin = $name;
465 - return $detected_form_plugin;
466 - }
467 - }
468 -
469 - $detected_form_plugin = false;
470 - return $detected_form_plugin;
471 - }
472 -
473 - private function notice_local_google_fonts_disabled() {
474 -
475 - if ( ! $this->is_elementor_page() && ! $this->is_elementor_admin_screen() ) {
337 + if ( ! in_array( $this->current_screen_id, [ 'toplevel_page_wpcf7', 'contact_page_wpcf7-integration' ], true ) || User::is_user_notice_viewed( $notice_id ) ) {
476 338 return false;
477 339 }
478 340
479 - if ( ! Manager::had_install_prior_to( self::LOCAL_GOOGLE_FONTS_NOTICE_MIN_VERSION ) ) {
341 + if ( strtotime( '2019-08-01' ) > $this->get_install_time() ) {
480 342 return false;
481 343 }
482 344
483 - if ( User::is_user_notice_viewed( self::LOCAL_GOOGLE_FONTS_DISABLED_NOTICE_ID ) ) {
345 + if ( strtotime( '+24 hours', $this->get_install_time() ) > time() ) {
484 346 return false;
485 347 }
486 348
487 - $is_local_gf_enabled = (bool) get_option( 'elementor_local_google_fonts', '0' );
349 + $options = [
350 + 'title' => __( 'Using Elementor & Contact Form 7?', 'elementor' ),
351 + 'description' => __( 'Try out Elementor Pro and design your forms visually with one powerful tool.', 'elementor' ),
488 352
489 - if ( $is_local_gf_enabled ) {
490 - return false;
491 - }
492 -
493 - $options = [
494 - 'title' => esc_html__( 'Important: Local Google Fonts Settings in Elementor', 'elementor' ),
495 - 'description' => esc_html__( 'Please note: The "Load Google Fonts Locally" feature has been disabled by default on all websites. To turn it back on, go to Elementor → Settings → Performance → Enable Load Google Fonts Locally.', 'elementor' ),
496 - 'id' => self::LOCAL_GOOGLE_FONTS_DISABLED_NOTICE_ID,
497 - 'type' => '',
353 + 'id' => $notice_id,
498 354 'button' => [
499 - 'text' => esc_html__( 'Take me there', 'elementor' ),
500 - 'url' => '../wp-admin/admin.php?page=elementor-settings#tab-performance',
501 - 'new_tab' => false,
502 - 'type' => 'cta',
503 - ],
504 - 'button_secondary' => [
505 - 'text' => esc_html__( 'Learn more', 'elementor' ),
506 - 'url' => 'https://go.elementor.com/wp-dash-google-fonts-locally-notice/',
355 + 'text' => __( 'Learn More', 'elementor' ),
356 + 'url' => 'https://go.elementor.com/plugin-promotion-contactform7/',
507 357 'new_tab' => true,
508 358 'type' => 'cta',
509 359 ],
510 360 ];
@@ -513,97 +363,40 @@
513 363
514 364 return true;
515 365 }
516 366
517 - private function notice_ally_pages_promotion() {
518 - global $pagenow;
519 - $notice_id = 'ally_pages_promotion';
367 + private function notice_mc4wp_promote() {
368 + $notice_id = 'mc4wp_promote';
520 369
521 - if ( 'edit.php' !== $pagenow || empty( $_GET['post_type'] ) || 'page' !== $_GET['post_type'] ) {
370 + if ( Utils::has_pro() || ! defined( 'MC4WP_VERSION' ) ) {
522 371 return false;
523 372 }
524 373
525 - if ( ! current_user_can( 'manage_options' ) ) {
374 + if ( ! current_user_can( 'install_plugins' ) ) {
526 375 return false;
527 376 }
528 377
529 - if ( User::is_user_notice_viewed( $notice_id ) ) {
378 + if ( ! in_array( $this->current_screen_id, [ 'toplevel_page_mailchimp-for-wp', 'mc4wp_page_mailchimp-for-wp-forms', 'mc4wp_page_mailchimp-for-wp-integrations', 'mc4wp_page_mailchimp-for-wp-other', 'mc4wp_page_mailchimp-for-wp-extensions' ], true ) || User::is_user_notice_viewed( $notice_id ) ) {
530 379 return false;
531 380 }
532 381
533 - $plugin_slug = 'pojo-accessibility';
534 - $plugin_file_path = 'pojo-accessibility/pojo-accessibility.php';
535 -
536 - $one_subscription = Hints::is_plugin_connected_to_one_subscription();
537 - $is_installed = Hints::is_plugin_installed( $plugin_slug );
538 - $is_active = Hints::is_plugin_active( $plugin_slug );
539 -
540 - if ( $is_active ) {
382 + if ( strtotime( '2019-08-01' ) > $this->get_install_time() ) {
541 383 return false;
542 384 }
543 385
544 - if ( $one_subscription ) {
545 - $learn_more_url = 'https://go.elementor.com/acc-plg-learn-more-one';
546 -
547 - if ( ! $is_installed ) {
548 - $description = esc_html__( 'Make sure your site has an accessibility statement page. Install Ally, included in ONE, to create it in a few clicks.', 'elementor' );
549 - $button_text = esc_html__( 'Install now', 'elementor' );
550 - $button_url = $this->get_plugin_button_install_url( $plugin_slug );
551 - $campaign_data = [
552 - 'name' => 'elementor_ea11y_campaign',
553 - 'campaign' => 'acc-statement-plg-pages-one-install',
554 - 'source' => 'wp-pages-one-install',
555 - 'medium' => 'wp-dash-one',
556 - ];
557 - } elseif ( ! $is_active ) {
558 - $description = esc_html__( 'Your ONE subscription includes Ally. Activate it to create your accessibility statement page quickly.', 'elementor' );
559 - $button_text = esc_html__( 'Activate now', 'elementor' );
560 - $button_url = $this->get_plugin_button_activate_url( $plugin_file_path );
561 - $campaign_data = [
562 - 'name' => 'elementor_ea11y_campaign',
563 - 'campaign' => 'acc-statement-plg-pages-one-activate',
564 - 'source' => 'wp-pages-one-activate',
565 - 'medium' => 'wp-dash-one',
566 - ];
567 - }
568 - } else {
569 - $description = esc_html__( "Create a more inclusive site experience for all your visitors. With Ally, it's easy to add your statement page in just a few clicks.", 'elementor' );
570 - $learn_more_url = 'https://go.elementor.com/acc-plg-learn-more';
571 -
572 - if ( ! $is_installed ) {
573 - $button_text = esc_html__( 'Install now', 'elementor' );
574 - $button_url = $this->get_plugin_button_install_url( $plugin_slug );
575 - $campaign_data = [
576 - 'name' => 'elementor_ea11y_campaign',
577 - 'campaign' => 'acc-statement-plg-pages-install',
578 - 'source' => 'wp-pages-install',
579 - 'medium' => 'wp-dash',
580 - ];
581 - } elseif ( ! $is_active ) {
582 - $button_text = esc_html__( 'Activate now', 'elementor' );
583 - $button_url = $this->get_plugin_button_activate_url( $plugin_file_path );
584 - $campaign_data = [
585 - 'name' => 'elementor_ea11y_campaign',
586 - 'campaign' => 'acc-statement-plg-pages-activate',
587 - 'source' => 'wp-pages-activate',
588 - 'medium' => 'wp-dash',
589 - ];
590 - }
386 + if ( strtotime( '+24 hours', $this->get_install_time() ) > time() ) {
387 + return false;
591 388 }
592 389
593 390 $options = [
594 - 'title' => esc_html__( 'Make sure your site has an accessibility statement page', 'elementor' ),
595 - 'description' => $description,
391 + 'title' => __( 'Want to design better MailChimp forms?', 'elementor' ),
392 + 'description' => __( 'Use Elementor Pro and enjoy unlimited integrations, visual design, templates and more.', 'elementor' ),
393 + 'dismissible' => true,
596 394 'id' => $notice_id,
597 - 'type' => 'cta',
395 +
598 396 'button' => [
599 - 'text' => $button_text,
600 - 'url' => self::add_plg_campaign_data( $button_url, $campaign_data ),
601 - 'type' => 'cta',
602 - ],
603 - 'button_secondary' => [
604 - 'text' => esc_html__( 'Learn more', 'elementor' ),
605 - 'url' => $learn_more_url,
397 + 'text' => __( 'Learn More', 'elementor' ),
398 + 'url' => 'https://go.elementor.com/plugin-promotion-mc4wp/',
606 399 'new_tab' => true,
607 400 'type' => 'cta',
608 401 ],
609 402 ];
@@ -612,341 +405,84 @@
612 405
613 406 return true;
614 407 }
615 408
616 - private function notice_site_mailer_promotion() {
617 - $notice_id = 'site_mailer_promotion';
618 - $has_forms = $this->site_has_forms_plugins();
619 - $has_woocommerce = $this->site_has_woocommerce();
409 + private function notice_popup_maker_promote() {
410 + $notice_id = 'popup_maker_promote';
620 411
621 - if ( ! $has_forms && ! $has_woocommerce ) {
412 + if ( Utils::has_pro() || ! class_exists( 'Popup_Maker' ) ) {
622 413 return false;
623 414 }
624 415
625 - if ( ! $this->is_elementor_page() && ! $this->is_elementor_admin_screen() ) {
416 + if ( ! current_user_can( 'install_plugins' ) ) {
626 417 return false;
627 418 }
628 419
629 - if ( ( Utils::has_pro() && ! $has_woocommerce ) || ! current_user_can( 'install_plugins' ) || User::is_user_notice_viewed( $notice_id ) ) {
420 + if ( ! in_array( $this->current_screen_id, [ 'edit-popup', 'popup_page_pum-settings' ], true ) || User::is_user_notice_viewed( $notice_id ) ) {
630 421 return false;
631 422 }
632 423
633 - $plugin_slug = 'site-mailer';
634 - $plugin_file_path = 'site-mailer/site-mailer.php';
635 -
636 - $one_subscription = Hints::is_plugin_connected_to_one_subscription();
637 - $is_woocommerce = $this->should_render_woocommerce_hint( $has_forms, $has_woocommerce );
638 - $is_installed = Hints::is_plugin_installed( $plugin_slug );
639 - $is_active = Hints::is_plugin_active( $plugin_slug );
640 -
641 - if ( $is_active ) {
424 + if ( strtotime( '2019-08-01' ) > $this->get_install_time() ) {
642 425 return false;
643 426 }
644 427
645 - if ( $one_subscription ) {
646 - if ( $is_woocommerce ) {
647 - $title = esc_html__( 'Improve transactional email deliverability', 'elementor' );
648 -
649 - if ( ! $is_installed ) {
650 - $description = esc_html__( 'Use Site Mailer to ensure store emails like purchase confirmations and shipping updates reach the inbox every time. Included in your ONE subscription.', 'elementor' );
651 - $button_text = esc_html__( 'Install now', 'elementor' );
652 - $button_url = $this->get_plugin_button_install_url( $plugin_slug );
653 - $campaign_data = [
654 - 'name' => 'elementor_site_mailer_campaign',
655 - 'campaign' => 'sm-plg-one',
656 - 'source' => 'sm-core-woo-one-install',
657 - 'medium' => 'wp-dash',
658 - ];
659 - } elseif ( ! $is_active ) {
660 - $description = esc_html__( 'Site Mailer is installed and included in your ONE subscription. Activate it to ensure store emails like purchase confirmations and shipping updates reach the inbox every time.', 'elementor' );
661 - $button_text = esc_html__( 'Activate now', 'elementor' );
662 - $button_url = $this->get_plugin_button_activate_url( $plugin_file_path );
663 - $campaign_data = [
664 - 'name' => 'elementor_site_mailer_campaign',
665 - 'campaign' => 'sm-plg-one',
666 - 'source' => 'sm-core-woo-one-activate',
667 - 'medium' => 'wp-dash',
668 - ];
669 - }
670 - } else {
671 - $title = esc_html__( 'Keep your form emails out of the spam folder', 'elementor' );
672 -
673 - if ( ! $is_installed ) {
674 - $description = esc_html__( 'Use Site Mailer to ensure emails reach the inbox and track delivery with built-in logs. Included in your ONE subscription.', 'elementor' );
675 - $button_text = esc_html__( 'Install now', 'elementor' );
676 - $button_url = $this->get_plugin_button_install_url( $plugin_slug );
677 - $campaign_data = [
678 - 'name' => 'elementor_site_mailer_campaign',
679 - 'campaign' => 'sm-plg-one',
680 - 'source' => 'sm-core-form-one-install',
681 - 'medium' => 'wp-dash',
682 - ];
683 - } elseif ( ! $is_active ) {
684 - $description = esc_html__( 'Use Site Mailer to ensure emails reach the inbox and track delivery with built-in logs. Site Mailer is included in your ONE subscription. Activate it to continue.', 'elementor' );
685 - $button_text = esc_html__( 'Activate now', 'elementor' );
686 - $button_url = $this->get_plugin_button_activate_url( $plugin_file_path );
687 - $campaign_data = [
688 - 'name' => 'elementor_site_mailer_campaign',
689 - 'campaign' => 'sm-plg-one',
690 - 'source' => 'sm-core-form-one-activate',
691 - 'medium' => 'wp-dash',
692 - ];
693 - }
694 - }
695 - // phpcs:ignore Universal.ControlStructures.DisallowLonelyIf.Found
696 - } else {
697 - if ( $is_woocommerce ) {
698 - $title = esc_html__( 'Improve Transactional Email Deliverability', 'elementor' );
699 - $description = esc_html__( "Use Elementor's Site Mailer to ensure your store emails like purchase confirmations, shipping updates and more are reliably delivered.", 'elementor' );
700 -
701 - if ( ! $is_installed ) {
702 - $button_text = esc_html__( 'Install now', 'elementor' );
703 - $button_url = $this->get_plugin_button_install_url( $plugin_slug );
704 - $campaign_data = [
705 - 'name' => 'elementor_site_mailer_campaign',
706 - 'campaign' => 'sm-plg',
707 - 'source' => 'sm-core-woo-install',
708 - 'medium' => 'wp-dash',
709 - ];
710 - } elseif ( ! $is_active ) {
711 - $button_text = esc_html__( 'Activate now', 'elementor' );
712 - $button_url = $this->get_plugin_button_activate_url( $plugin_file_path );
713 - $campaign_data = [
714 - 'name' => 'elementor_site_mailer_campaign',
715 - 'campaign' => 'sm-plg',
716 - 'source' => 'sm-core-woo-activate',
717 - 'medium' => 'wp-dash',
718 - ];
719 - }
720 - } else {
721 - $title = esc_html__( 'Ensure your form emails avoid the spam folder!', 'elementor' );
722 - $description = esc_html__( 'Use Site Mailer for improved email deliverability, detailed email logs, and an easy setup.', 'elementor' );
723 -
724 - if ( ! $is_installed ) {
725 - $button_text = esc_html__( 'Install now', 'elementor' );
726 - $button_url = $this->get_plugin_button_install_url( $plugin_slug );
727 - $campaign_data = [
728 - 'name' => 'elementor_site_mailer_campaign',
729 - 'campaign' => 'sm-plg',
730 - 'source' => 'sm-core-form-install',
731 - 'medium' => 'wp-dash',
732 - ];
733 - } elseif ( ! $is_active ) {
734 - $button_text = esc_html__( 'Activate now', 'elementor' );
735 - $button_url = $this->get_plugin_button_activate_url( $plugin_file_path );
736 - $campaign_data = [
737 - 'name' => 'elementor_site_mailer_campaign',
738 - 'campaign' => 'sm-plg',
739 - 'source' => 'sm-core-form-activate',
740 - 'medium' => 'wp-dash',
741 - ];
742 - }
743 - }
428 + if ( strtotime( '+24 hours', $this->get_install_time() ) > time() ) {
429 + return false;
744 430 }
745 431
746 - $learn_more_url = $one_subscription && $is_woocommerce
747 - ? 'https://go.elementor.com/sm-woo-learn-more-one'
748 - : 'https://go.elementor.com/sm-core-form/';
749 -
750 432 $options = [
751 - 'title' => $title,
752 - 'description' => $description,
433 + 'title' => __( 'Using popups on your site?', 'elementor' ),
434 + 'description' => __( 'Build outstanding popups using Elementor Pro and get more leads, sales and subscribers.', 'elementor' ),
435 + 'dismissible' => true,
753 436 'id' => $notice_id,
754 - 'type' => 'cta',
437 +
755 438 'button' => [
756 - 'text' => $button_text,
757 - 'url' => self::add_plg_campaign_data( $button_url, $campaign_data ),
758 - 'type' => 'cta',
759 - 'data' => [
760 - 'campaign' => $campaign_data['campaign'],
761 - 'source' => $campaign_data['source'],
762 - 'medium' => $campaign_data['medium'],
763 - ],
764 - ],
765 - 'button_secondary' => [
766 - 'text' => esc_html__( 'Learn more', 'elementor' ),
767 - 'url' => $learn_more_url,
439 + 'text' => __( 'Learn More', 'elementor' ),
440 + 'url' => 'https://go.elementor.com/plugin-promotion-popupmaker/',
768 441 'new_tab' => true,
769 442 'type' => 'cta',
770 443 ],
771 444 ];
772 445
773 - if ( $is_woocommerce ) {
774 - // We include WP's default notice class so it will be properly handled by WP's js handler
775 - // And add a new one to distinguish between the two types of notices
776 - $options['classes'] = [ 'notice', 'e-notice', 'sm-notice-wc' ];
777 - }
778 -
779 446 $this->print_admin_notice( $options );
780 447
781 448 return true;
782 449 }
783 450
784 - private function should_render_woocommerce_hint( $has_forms, $has_woocommerce ): bool {
785 - if ( ! $has_forms && ! $has_woocommerce ) {
786 - return false;
787 - }
451 + private function notice_role_manager_promote() {
452 + $notice_id = 'role_manager_promote';
788 453
789 - if ( ! $has_forms && $has_woocommerce ) {
790 - return true;
791 - }
792 -
793 - if ( $has_forms && $has_woocommerce && Utils::has_pro() ) {
794 - return true;
795 - }
796 -
797 - if ( ! $has_woocommerce ) {
454 + if ( Utils::has_pro() ) {
798 455 return false;
799 456 }
800 457
801 - return (bool) wp_rand( 0, 1 );
802 - }
803 -
804 - private function is_elementor_page(): bool {
805 - return 0 === strpos( $this->current_screen_id, 'elementor_page' );
806 - }
807 -
808 - private function is_elementor_admin_screen(): bool {
809 - return in_array( $this->current_screen_id, [ 'toplevel_page_elementor', 'edit-elementor_library' ], true );
810 - }
811 -
812 - private function is_elementor_admin_screen_with_system_info(): bool {
813 - return in_array( $this->current_screen_id, [ 'toplevel_page_elementor', 'edit-elementor_library', 'elementor_page_elementor-system-info', 'dashboard' ], true );
814 - }
815 - private function get_plugin_button_install_url( $plugin_slug ) {
816 - return wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=' . $plugin_slug ), 'install-plugin_' . $plugin_slug );
817 - }
818 -
819 - private function get_plugin_button_activate_url( $plugin_file_path ) {
820 - return wp_nonce_url( 'plugins.php?action=activate&amp;plugin=' . $plugin_file_path . '&amp;plugin_status=all&amp;paged=1&amp;s', 'activate-plugin_' . $plugin_file_path );
821 - }
822 -
823 - private function get_plugin_button_connect_url( $plugin_settings_page ) {
824 - return self_admin_url( $plugin_settings_page );
825 - }
826 -
827 - private function get_plugin_cta_data( $plugin_slug, $plugin_file_path ) {
828 - if ( Hints::is_plugin_active( $plugin_slug ) ) {
829 - return false;
830 - }
831 -
832 - if ( Hints::is_plugin_installed( $plugin_slug ) ) {
833 - $url = $this->get_plugin_button_activate_url( $plugin_file_path );
834 - $cta_text = esc_html__( 'Activate now', 'elementor' );
835 - } else {
836 - $url = $this->get_plugin_button_install_url( $plugin_slug );
837 - $cta_text = esc_html__( 'Install now', 'elementor' );
838 - }
839 -
840 - return [
841 - 'url' => $url,
842 - 'text' => $cta_text,
843 - ];
844 - }
845 -
846 - /**
847 - * For testing purposes
848 - */
849 - public function get_elementor_version() {
850 - return ELEMENTOR_VERSION;
851 - }
852 -
853 - private function notice_plugin_image_optimization() {
854 - $notice_id = 'plugin_image_optimization';
855 -
856 - if ( 'upload' !== $this->current_screen_id ) {
857 - return false;
858 - }
859 -
860 458 if ( ! current_user_can( 'manage_options' ) ) {
861 459 return false;
862 460 }
863 461
864 - if ( User::is_user_notice_viewed( $notice_id ) ) {
462 + if ( 'elementor_page_elementor-role-manager' !== $this->current_screen_id || User::is_user_notice_viewed( $notice_id ) ) {
865 463 return false;
866 464 }
867 465
868 - $attachments = new \WP_Query( [
869 - 'post_type' => 'attachment',
870 - 'post_status' => 'any',
871 - 'fields' => 'ids',
466 + $users = new \WP_User_Query( [
467 + 'fields' => 'ID',
468 + 'number' => 10,
872 469 ] );
873 470
874 - if ( 1 > $attachments->found_posts ) {
471 + if ( 5 > $users->get_total() ) {
875 472 return false;
876 473 }
877 474
878 - $plugin_slug = 'image-optimization';
879 - $plugin_file_path = 'image-optimization/image-optimization.php';
880 -
881 - $one_subscription = Hints::is_plugin_connected_to_one_subscription();
882 - $is_installed = Hints::is_plugin_installed( $plugin_slug );
883 - $is_active = Hints::is_plugin_active( $plugin_slug );
884 -
885 - if ( $is_active ) {
886 - return false;
887 - }
888 -
889 - if ( $one_subscription ) {
890 - if ( ! $is_installed ) {
891 - $description = esc_html__( 'Automatically optimize images to improve site speed and performance. Included with your ONE subscription.', 'elementor' );
892 - $button_text = esc_html__( 'Install now', 'elementor' );
893 - $button_url = $this->get_plugin_button_install_url( $plugin_slug );
894 - $campaign_data = [
895 - 'name' => 'elementor_image_optimization_campaign',
896 - 'campaign' => 'io-plg-one',
897 - 'source' => 'io-wp-media-library-one-install',
898 - 'medium' => 'wp-dash-one',
899 - ];
900 - } elseif ( ! $is_active ) {
901 - $description = esc_html__( 'Your ONE subscription includes Image Optimizer. Activate it to optimize images and improve site performance.', 'elementor' );
902 - $button_text = esc_html__( 'Activate now', 'elementor' );
903 - $button_url = $this->get_plugin_button_activate_url( $plugin_file_path );
904 - $campaign_data = [
905 - 'name' => 'elementor_image_optimization_campaign',
906 - 'campaign' => 'io-plg-one',
907 - 'source' => 'io-wp-media-library-one-activate',
908 - 'medium' => 'wp-dash-one',
909 - ];
910 - }
911 - } else {
912 - $description = esc_html__( 'Automatically compress and optimize images, resize larger files, or convert to WebP. Optimize images individually, in bulk, or on upload.', 'elementor' );
913 -
914 - if ( ! $is_installed ) {
915 - $button_text = esc_html__( 'Install now', 'elementor' );
916 - $button_url = $this->get_plugin_button_install_url( $plugin_slug );
917 - $campaign_data = [
918 - 'name' => 'elementor_image_optimization_campaign',
919 - 'campaign' => 'io-plg',
920 - 'source' => 'io-wp-media-library-install',
921 - 'medium' => 'wp-dash',
922 - ];
923 - } elseif ( ! $is_active ) {
924 - $button_text = esc_html__( 'Activate now', 'elementor' );
925 - $button_url = $this->get_plugin_button_activate_url( $plugin_file_path );
926 - $campaign_data = [
927 - 'name' => 'elementor_image_optimization_campaign',
928 - 'campaign' => 'io-plg',
929 - 'source' => 'io-wp-media-library-activate',
930 - 'medium' => 'wp-dash',
931 - ];
932 - }
933 - }
934 -
935 475 $options = [
936 - 'title' => esc_html__( 'Speed up your website with Image Optimizer', 'elementor' ),
937 - 'description' => $description,
476 + 'title' => __( 'Managing a multi-user site?', 'elementor' ),
477 + 'description' => __( 'With Elementor Pro, you can control user access and make sure no one messes up your design.', 'elementor' ),
938 478 'id' => $notice_id,
939 - 'type' => 'cta',
479 +
940 480 'button' => [
941 - 'text' => $button_text,
942 - 'url' => self::add_plg_campaign_data( $button_url, $campaign_data ),
481 + 'text' => __( 'Learn More', 'elementor' ),
482 + 'url' => 'https://go.elementor.com/plugin-promotion-role-manager/',
483 + 'new_tab' => true,
943 484 'type' => 'cta',
944 - 'data' => [
945 - 'campaign' => $campaign_data['campaign'],
946 - 'source' => $campaign_data['source'],
947 - 'medium' => $campaign_data['medium'],
948 - ],
949 485 ],
950 486 ];
951 487
952 488 $this->print_admin_notice( $options );
@@ -953,15 +489,9 @@
953 489
954 490 return true;
955 491 }
956 492
957 - public function print_admin_notice( array $options, $exclude_pages = self::DEFAULT_EXCLUDED_PAGES ) {
958 - global $pagenow;
959 -
960 - if ( in_array( $pagenow, $exclude_pages, true ) ) {
961 - return;
962 - }
963 -
493 + public function print_admin_notice( array $options ) {
964 494 $default_options = [
965 495 'id' => null,
966 496 'title' => '',
967 497 'description' => '',
@@ -967,9 +497,9 @@
967 497 'description' => '',
968 498 'classes' => [ 'notice', 'e-notice' ], // We include WP's default notice class so it will be properly handled by WP's js handler
969 499 'type' => '',
970 500 'dismissible' => true,
971 - 'icon' => 'eicon-elementor-circle',
501 + 'icon' => 'eicon-elementor',
972 502 'button' => [],
973 503 'button_secondary' => [],
974 504 ];
975 505
@@ -982,83 +512,61 @@
982 512 if ( $options['type'] ) {
983 513 $notice_classes[] = 'e-notice--' . $options['type'];
984 514 }
985 515
986 - $wrapper_attributes = [
987 - 'role' => 'region',
988 - 'aria-label' => esc_html__( 'Elementor notice', 'elementor' ),
989 - ];
990 -
991 516 if ( $options['dismissible'] ) {
992 - $label = esc_html__( 'Dismiss this notice.', 'elementor' );
517 + $label = __( 'Dismiss', 'elementor' );
993 518 $notice_classes[] = 'e-notice--dismissible';
994 519 $dismiss_button = '<i class="e-notice__dismiss" role="button" aria-label="' . $label . '" tabindex="0"></i>';
995 -
996 - $wrapper_attributes['data-nonce'] = wp_create_nonce( 'elementor_set_admin_notice_viewed' );
997 520 }
998 521
999 522 if ( $options['icon'] ) {
1000 523 $notice_classes[] = 'e-notice--extended';
1001 - $icon = '<div class="e-notice__icon-wrapper"><i class="' . esc_attr( $options['icon'] ) . '" aria-hidden="true"></i></div>';
524 + $icon = '<div class="e-notice__icon-wrapper"><i class="' . $options['icon'] . '" aria-hidden="true"></i></div>';
1002 525 }
1003 526
1004 - $wrapper_attributes['class'] = $notice_classes;
527 + $wrapper_attributes = [
528 + 'class' => $notice_classes,
529 + ];
1005 530
1006 531 if ( $options['id'] ) {
1007 532 $wrapper_attributes['data-notice_id'] = $options['id'];
1008 533 }
1009 -
1010 - if ( ! empty( $options['source'] ) ) {
1011 - $wrapper_attributes['data-source'] = $options['source'];
1012 - }
1013 534 ?>
1014 - <div <?php Utils::print_html_attributes( $wrapper_attributes ); ?>>
1015 - <?php echo $dismiss_button; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
535 + <div <?php echo Utils::render_html_attributes( $wrapper_attributes ); ?>>
536 + <?php echo $dismiss_button; ?>
1016 537 <div class="e-notice__aside">
1017 - <?php echo $icon; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
538 + <?php echo $icon; ?>
1018 539 </div>
1019 540 <div class="e-notice__content">
1020 - <?php if ( $options['title'] ) { ?>
1021 - <h3><?php echo wp_kses_post( $options['title'] ); ?></h3>
1022 - <?php } ?>
541 + <?php if ( $options['title'] ) { ?>
542 + <h3><?php echo $options['title']; ?></h3>
543 + <?php } ?>
1023 544
1024 - <?php if ( $options['description'] ) { ?>
1025 - <p><?php echo wp_kses_post( $options['description'] ); ?></p>
1026 - <?php } ?>
545 + <?php if ( $options['description'] ) { ?>
546 + <p><?php echo $options['description']; ?></p>
547 + <?php } ?>
1027 548
1028 - <?php if ( ! empty( $options['button']['text'] ) || ! empty( $options['button_secondary']['text'] ) ) { ?>
1029 - <div class="e-notice__actions">
1030 - <?php
1031 - $one_subscription = Hints::is_plugin_connected_to_one_subscription();
1032 - foreach ( [ $options['button'], $options['button_secondary'] ] as $index => $button_settings ) {
1033 - if ( empty( $button_settings['variant'] ) && $index ) {
1034 - $button_settings['variant'] = 'outline';
1035 - }
549 + <?php if ( ! empty( $options['button']['text'] ) || ! empty( $options['button_secondary']['text'] ) ) { ?>
550 + <div class="e-notice__actions">
551 + <?php
552 + foreach ( [ $options['button'], $options['button_secondary'] ] as $index => $button_settings ) {
553 + if ( empty( $button_settings['variant'] ) && $index ) {
554 + $button_settings['variant'] = 'outline';
555 + }
1036 556
1037 - if ( empty( $button_settings['text'] ) ) {
1038 - continue;
1039 - }
557 + if ( empty( $button_settings['text'] ) ) {
558 + continue;
559 + }
1040 560
1041 - if ( $one_subscription ) {
1042 - if ( ! isset( $button_settings['classes'] ) ) {
1043 - $button_settings['classes'] = [];
1044 - }
1045 - if ( ! is_array( $button_settings['classes'] ) ) {
1046 - $button_settings['classes'] = [ $button_settings['classes'] ];
1047 - }
1048 - // index 0 = button, index 1 = button_secondary
1049 - $button_class = ( 0 === $index ) ? 'button-primary' : 'button-secondary';
1050 - $button_settings['classes'][] = $button_class;
1051 - }
1052 -
1053 - $button = new Button( $button_settings );
1054 - $button->print_button();
1055 - } ?>
1056 - </div>
1057 - <?php } ?>
561 + $button = new Button( $button_settings );
562 + $button->print_button();
563 + } ?>
564 + </div>
565 + <?php } ?>
1058 566 </div>
1059 567 </div>
1060 - <?php }
568 + <?php }
1061 569
1062 570 public function admin_notices() {
1063 571 $this->install_time = Plugin::$instance->get_install_time();
1064 572 $this->current_screen_id = get_current_screen()->id;
@@ -1082,61 +590,8 @@
1082 590 return;
1083 591 }
1084 592 }
1085 593
1086 - public function maybe_log_campaign() {
1087 - if ( empty( $_GET['plg_campaign'] ) || empty( $_GET['plg_campaign_name'] ) ) {
1088 - return;
1089 - }
1090 -
1091 - $allowed_plgs = [
1092 - 'elementor_image_optimization_campaign',
1093 - 'elementor_ea11y_campaign',
1094 - 'elementor_site_mailer_campaign',
1095 - ];
1096 -
1097 - if ( ! in_array( $_GET['plg_campaign_name'], $allowed_plgs, true ) ) {
1098 - return;
1099 - }
1100 -
1101 - if ( ! isset( $_GET['plg_campaign_nonce'] ) || ! wp_verify_nonce( sanitize_key( $_GET['plg_campaign_nonce'] ), sanitize_key( $_GET['plg_campaign_name'] ) ) ) {
1102 - return;
1103 - }
1104 -
1105 - if ( ! current_user_can( 'manage_options' ) ) {
1106 - return;
1107 - }
1108 -
1109 - if ( empty( $_GET['plg_source'] ) || empty( $_GET['plg_medium'] ) ) {
1110 - return;
1111 - }
1112 -
1113 - $campaign_data = [
1114 - 'source' => sanitize_key( $_GET['plg_source'] ),
1115 - 'campaign' => sanitize_key( $_GET['plg_campaign'] ),
1116 - 'medium' => sanitize_key( $_GET['plg_medium'] ),
1117 - ];
1118 -
1119 - set_transient( sanitize_key( $_GET['plg_campaign_name'] ), $campaign_data, 30 * DAY_IN_SECONDS );
1120 - }
1121 -
1122 - public static function add_plg_campaign_data( $url, $campaign_data ) {
1123 -
1124 - foreach ( [ 'name', 'campaign' ] as $key ) {
1125 - if ( empty( $campaign_data[ $key ] ) ) {
1126 - return $url;
1127 - }
1128 - }
1129 -
1130 - return add_query_arg( [
1131 - 'plg_campaign_name' => $campaign_data['name'],
1132 - 'plg_campaign' => $campaign_data['campaign'],
1133 - 'plg_source' => empty( $campaign_data['source'] ) ? '' : $campaign_data['source'],
1134 - 'plg_medium' => empty( $campaign_data['medium'] ) ? '' : $campaign_data['medium'],
1135 - 'plg_campaign_nonce' => wp_create_nonce( $campaign_data['name'] ),
1136 - ], $url );
1137 - }
1138 -
1139 594 /**
1140 595 * @since 2.9.0
1141 596 * @access public
1142 597 */
@@ -1141,10 +596,8 @@
1141 596 * @access public
1142 597 */
1143 598 public function __construct() {
1144 599 add_action( 'admin_notices', [ $this, 'admin_notices' ], 20 );
1145 - add_action( 'admin_action_install-plugin', [ $this, 'maybe_log_campaign' ] );
1146 - add_action( 'admin_action_activate', [ $this, 'maybe_log_campaign' ] );
1147 600 }
1148 601
1149 602 /**
1150 603 * Get module name.