PluginProbe
Elementor Website Builder – more than just a page builder / 3.17.2
Elementor Website Builder – more than just a page builder v3.17.2
4.3.0 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 All 453 releases
← All changes | core/admin/admin-notices.php +61 -382 4.3.0-beta23.17.2 View file →
@@ -3,15 +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\Utils\Hints;
8 -use Elementor\Core\Utils\Promotions\Filtered_Promotions_Manager;
9 7 use Elementor\Plugin;
10 8 use Elementor\Tracker;
11 9 use Elementor\User;
12 10 use Elementor\Utils;
13 11 use Elementor\Core\Admin\Notices\Base_Notice;
12 +use Elementor\Core\Admin\Notices\Elementor_Dev_Notice;
14 13
15 14 if ( ! defined( 'ABSPATH' ) ) {
16 15 exit; // Exit if accessed directly.
17 16 }
@@ -19,19 +18,16 @@
19 18 class Admin_Notices extends Module {
20 19
21 20 const DEFAULT_EXCLUDED_PAGES = [ 'plugins.php', 'plugin-install.php', 'plugin-editor.php' ];
22 21
23 - const EXIT_EARLY_FOR_BACKWARD_COMPATIBILITY = false;
24 -
25 22 private $plain_notices = [
26 23 'api_notice',
27 24 'api_upgrade_plugin',
28 25 'tracker',
29 - 'tracker_last_update',
30 26 'rate_us_feedback',
31 27 'role_manager_promote',
32 - 'plugin_image_optimization',
33 - 'ally_pages_promotion',
28 + 'experiment_promotion',
29 + 'design_not_appearing',
34 30 ];
35 31
36 32 private $elementor_pages_count = null;
37 33
@@ -39,8 +35,12 @@
39 35
40 36 private $current_screen_id = null;
41 37
42 38 private function get_notices() {
39 + $notices = [
40 + new Elementor_Dev_Notice(),
41 + ];
42 +
43 43 /**
44 44 * Admin notices.
45 45 *
46 46 * Filters Elementor admin notices.
@@ -45,13 +45,13 @@
45 45 *
46 46 * Filters Elementor admin notices.
47 47 *
48 48 * This hook can be used by external developers to manage existing
49 - * admin notice or to add new notices for Elementor add-ons.
49 + * admin notice or to add new notices for Elementor addons.
50 50 *
51 51 * @param array $notices A list of notice classes.
52 52 */
53 - $notices = apply_filters( 'elementor/core/admin/notices', [] );
53 + $notices = apply_filters( 'elementor/core/admin/notices', $notices );
54 54
55 55 return $notices;
56 56 }
57 57
@@ -91,9 +91,9 @@
91 91 if ( ! current_user_can( 'update_plugins' ) ) {
92 92 return false;
93 93 }
94 94
95 - if ( ! $this->is_elementor_admin_screen_with_system_info() ) {
95 + if ( ! in_array( $this->current_screen_id, [ 'toplevel_page_elementor', 'edit-elementor_library', 'elementor_page_elementor-system-info', 'dashboard' ], true ) ) {
96 96 return false;
97 97 }
98 98
99 99 // Check for upgrades.
@@ -131,16 +131,16 @@
131 131 $message = sprintf(
132 132 /* translators: 1: Details URL, 2: Accessibility text, 3: Version number, 4: Update URL, 5: Accessibility text. */
133 133 __( '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' ),
134 134 esc_url( $details_url ),
135 - sprintf(
135 + esc_attr( sprintf(
136 136 /* translators: %s: Elementor version. */
137 - esc_attr__( 'View Elementor version %s details', 'elementor' ),
137 + __( 'View Elementor version %s details', 'elementor' ),
138 138 $new_version
139 - ),
139 + ) ),
140 140 $new_version,
141 141 esc_url( $upgrade_url ),
142 - esc_attr__( 'Update Now', 'elementor' )
142 + esc_attr( esc_html__( 'Update Now', 'elementor' ) )
143 143 );
144 144
145 145 $options = [
146 146 'title' => esc_html__( 'Update Notification', 'elementor' ),
@@ -167,9 +167,9 @@
167 167 if ( ! current_user_can( 'manage_options' ) ) {
168 168 return false;
169 169 }
170 170
171 - if ( ! $this->is_elementor_admin_screen_with_system_info() ) {
171 + if ( ! in_array( $this->current_screen_id, [ 'toplevel_page_elementor', 'edit-elementor_library', 'elementor_page_elementor-system-info', 'dashboard' ], true ) ) {
172 172 return false;
173 173 }
174 174
175 175 $notice_id = 'admin_notice_api_' . $admin_notice['notice_id'];
@@ -213,9 +213,9 @@
213 213 // TODO: Skip for development env.
214 214 $optin_url = wp_nonce_url( add_query_arg( 'elementor_tracker', 'opt_into' ), 'opt_into' );
215 215 $optout_url = wp_nonce_url( add_query_arg( 'elementor_tracker', 'opt_out' ), 'opt_out' );
216 216
217 - $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' );
217 + $tracker_description_text = esc_html__( 'Become a super contributor by opting in to share non-sensitive plugin data and to receive periodic email updates from us.', 'elementor' );
218 218
219 219 /**
220 220 * Tracker admin description text.
221 221 *
@@ -229,11 +229,10 @@
229 229
230 230 $message = esc_html( $tracker_description_text ) . ' <a href="https://go.elementor.com/usage-data-tracking/" target="_blank">' . esc_html__( 'Learn more.', 'elementor' ) . '</a>';
231 231
232 232 $options = [
233 - 'title' => esc_html__( 'Want to shape the future of web creation?', 'elementor' ),
233 + 'title' => esc_html__( 'Love using Elementor?', 'elementor' ),
234 234 'description' => $message,
235 - 'dismissible' => false,
236 235 'button' => [
237 236 'text' => esc_html__( 'Sure! I\'d love to help', 'elementor' ),
238 237 'url' => $optin_url,
239 238 'type' => 'cta',
@@ -250,49 +249,8 @@
250 249
251 250 return true;
252 251 }
253 252
254 - private function notice_tracker_last_update() {
255 - if ( ! current_user_can( 'manage_options' ) ) {
256 - return false;
257 - }
258 -
259 - if ( ! Tracker::has_terms_changed() ) {
260 - return false;
261 - }
262 -
263 - $notice_id = 'tracker_last_update_' . Tracker::LAST_TERMS_UPDATED;
264 -
265 - if ( User::is_user_notice_viewed( $notice_id ) ) {
266 - return false;
267 - }
268 -
269 - $optin_url = wp_nonce_url( add_query_arg( 'elementor_tracker', 'opt_into' ), 'opt_into' );
270 -
271 - $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' );
272 -
273 - $options = [
274 - 'id' => $notice_id,
275 - 'title' => esc_html__( 'Update regarding usage data collection', 'elementor' ),
276 - 'description' => $message,
277 - 'button' => [
278 - 'text' => esc_html__( 'Opt in', 'elementor' ),
279 - 'url' => $optin_url,
280 - 'type' => 'cta',
281 - ],
282 - 'button_secondary' => [
283 - 'text' => esc_html__( 'Learn more', 'elementor' ),
284 - 'url' => 'https://go.elementor.com/wp-dash-update-usage-notice/',
285 - 'new_tab' => true,
286 - 'type' => 'cta',
287 - ],
288 - ];
289 -
290 - $this->print_admin_notice( $options );
291 -
292 - return true;
293 - }
294 -
295 253 private function notice_rate_us_feedback() {
296 254 $notice_id = 'rate_us_feedback';
297 255
298 256 if ( ! current_user_can( 'manage_options' ) ) {
@@ -309,9 +267,8 @@
309 267
310 268 $dismiss_url = add_query_arg( [
311 269 'action' => 'elementor_set_admin_notice_viewed',
312 270 'notice_id' => esc_attr( $notice_id ),
313 - '_wpnonce' => wp_create_nonce( 'elementor_set_admin_notice_viewed' ),
314 271 ], admin_url( 'admin-post.php' ) );
315 272
316 273 $options = [
317 274 'title' => esc_html__( 'Congrats!', 'elementor' ),
@@ -373,139 +330,44 @@
373 330 'type' => 'cta',
374 331 ],
375 332 ];
376 333
377 - $options = Filtered_Promotions_Manager::get_filtered_promotion_data( $options, 'core/admin/notice_role_manager_promote', 'button', 'url' );
378 -
379 334 $this->print_admin_notice( $options );
380 335
381 336 return true;
382 337 }
383 338
384 - private function get_installed_form_plugin_name() {
385 - static $detected_form_plugin = null;
339 + private function notice_experiment_promotion() {
340 + $notice_id = 'experiment_promotion';
386 341
387 - if ( null !== $detected_form_plugin ) {
388 - return $detected_form_plugin;
389 - }
390 -
391 - $form_plugins_constants_to_name_mapper = [
392 - 'WPFORMS_VERSION' => 'WPForms',
393 - 'WPCF7_VERSION' => 'Contact Form 7',
394 - ];
395 -
396 - foreach ( $form_plugins_constants_to_name_mapper as $constant => $name ) {
397 - if ( defined( $constant ) ) {
398 - $detected_form_plugin = $name;
399 - return $detected_form_plugin;
400 - }
401 - }
402 -
403 - $form_plugins_classes_to_name_mapper = [
404 - '\GFCommon' => 'Gravity Forms',
405 - '\Ninja_Forms' => 'Ninja Forms',
406 - ];
407 -
408 - foreach ( $form_plugins_classes_to_name_mapper as $class => $name ) {
409 - if ( class_exists( $class ) ) {
410 - $detected_form_plugin = $name;
411 - return $detected_form_plugin;
412 - }
413 - }
414 -
415 - $detected_form_plugin = false;
416 - return $detected_form_plugin;
417 - }
418 -
419 - private function notice_ally_pages_promotion() {
420 - global $pagenow;
421 - $notice_id = 'ally_pages_promotion';
422 -
423 - if ( 'edit.php' !== $pagenow || empty( $_GET['post_type'] ) || 'page' !== $_GET['post_type'] ) {
342 + if ( ! current_user_can( 'manage_options' ) || User::is_user_notice_viewed( $notice_id ) ) {
424 343 return false;
425 344 }
426 345
427 - if ( ! current_user_can( 'manage_options' ) ) {
428 - return false;
429 - }
346 + $experiments = Plugin::$instance->experiments;
347 + $is_all_performance_features_active = (
348 + $experiments->is_feature_active( 'e_dom_optimization' ) &&
349 + $experiments->is_feature_active( 'additional_custom_breakpoints' ) &&
350 + $experiments->is_feature_active( 'e_optimized_css_loading' ) &&
351 + $experiments->is_feature_active( 'e_optimized_assets_loading' )
352 + );
430 353
431 - if ( User::is_user_notice_viewed( $notice_id ) ) {
354 + if ( $is_all_performance_features_active ) {
432 355 return false;
433 356 }
434 357
435 - $plugin_slug = 'pojo-accessibility';
436 - $plugin_file_path = 'pojo-accessibility/pojo-accessibility.php';
437 -
438 - $one_subscription = Hints::is_plugin_connected_to_one_subscription();
439 - $is_installed = Hints::is_plugin_installed( $plugin_slug );
440 - $is_active = Hints::is_plugin_active( $plugin_slug );
441 -
442 - if ( $is_active ) {
443 - return false;
444 - }
445 -
446 - if ( $one_subscription ) {
447 - $learn_more_url = 'https://go.elementor.com/acc-plg-learn-more-one';
448 -
449 - if ( ! $is_installed ) {
450 - $description = esc_html__( 'Make sure your site has an accessibility statement page. Install Web Accessibility, included in ONE, to create it in a few clicks.', 'elementor' );
451 - $button_text = esc_html__( 'Install now', 'elementor' );
452 - $button_url = $this->get_plugin_button_install_url( $plugin_slug );
453 - $campaign_data = [
454 - 'name' => 'elementor_ea11y_campaign',
455 - 'campaign' => 'acc-statement-plg-pages-one-install',
456 - 'source' => 'wp-pages-one-install',
457 - 'medium' => 'wp-dash-one',
458 - ];
459 - } elseif ( ! $is_active ) {
460 - $description = esc_html__( 'Your ONE subscription includes Web Accessibility. Activate it to create your accessibility statement page quickly.', 'elementor' );
461 - $button_text = esc_html__( 'Activate now', 'elementor' );
462 - $button_url = $this->get_plugin_button_activate_url( $plugin_file_path );
463 - $campaign_data = [
464 - 'name' => 'elementor_ea11y_campaign',
465 - 'campaign' => 'acc-statement-plg-pages-one-activate',
466 - 'source' => 'wp-pages-one-activate',
467 - 'medium' => 'wp-dash-one',
468 - ];
469 - }
470 - } else {
471 - $description = esc_html__( "Create a more inclusive site experience for all your visitors. With Web Accessibility, it's easy to add your statement page in just a few clicks.", 'elementor' );
472 - $learn_more_url = 'https://go.elementor.com/acc-plg-learn-more';
473 -
474 - if ( ! $is_installed ) {
475 - $button_text = esc_html__( 'Install now', 'elementor' );
476 - $button_url = $this->get_plugin_button_install_url( $plugin_slug );
477 - $campaign_data = [
478 - 'name' => 'elementor_ea11y_campaign',
479 - 'campaign' => 'acc-statement-plg-pages-install',
480 - 'source' => 'wp-pages-install',
481 - 'medium' => 'wp-dash',
482 - ];
483 - } elseif ( ! $is_active ) {
484 - $button_text = esc_html__( 'Activate now', 'elementor' );
485 - $button_url = $this->get_plugin_button_activate_url( $plugin_file_path );
486 - $campaign_data = [
487 - 'name' => 'elementor_ea11y_campaign',
488 - 'campaign' => 'acc-statement-plg-pages-activate',
489 - 'source' => 'wp-pages-activate',
490 - 'medium' => 'wp-dash',
491 - ];
492 - }
493 - }
494 -
495 358 $options = [
496 - 'title' => esc_html__( 'Make sure your site has an accessibility statement page', 'elementor' ),
497 - 'description' => $description,
359 + 'title' => esc_html__( 'Improve your site’s performance score.', 'elementor' ),
360 + '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' ),
498 361 'id' => $notice_id,
499 - 'type' => 'cta',
500 362 'button' => [
501 - 'text' => $button_text,
502 - 'url' => self::add_plg_campaign_data( $button_url, $campaign_data ),
363 + 'text' => esc_html__( 'Try it out', 'elementor' ),
364 + 'url' => admin_url( 'admin.php?page=elementor#tab-experiments' ),
503 365 'type' => 'cta',
504 366 ],
505 367 'button_secondary' => [
506 368 'text' => esc_html__( 'Learn more', 'elementor' ),
507 - 'url' => $learn_more_url,
369 + 'url' => 'https://go.elementor.com/wp-dash-experiment-promotion/',
508 370 'new_tab' => true,
509 371 'type' => 'cta',
510 372 ],
511 373 ];
@@ -514,65 +376,26 @@
514 376
515 377 return true;
516 378 }
517 379
518 - private function is_elementor_page(): bool {
519 - return 0 === strpos( $this->current_screen_id, 'elementor_page' );
520 - }
380 + private function notice_design_not_appearing() {
381 + $installs_history = get_option( 'elementor_install_history', [] );
382 + $is_first_install = 1 === count( $installs_history );
521 383
522 - private function is_elementor_admin_screen(): bool {
523 - return in_array( $this->current_screen_id, [ 'toplevel_page_elementor', 'edit-elementor_library' ], true );
524 - }
525 -
526 - private function is_elementor_admin_screen_with_system_info(): bool {
527 - return in_array( $this->current_screen_id, [ 'toplevel_page_elementor', 'edit-elementor_library', 'elementor_page_elementor-system-info', 'dashboard' ], true );
528 - }
529 - private function get_plugin_button_install_url( $plugin_slug ) {
530 - return wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=' . $plugin_slug ), 'install-plugin_' . $plugin_slug );
531 - }
532 -
533 - private function get_plugin_button_activate_url( $plugin_file_path ) {
534 - 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 );
535 - }
536 -
537 - private function get_plugin_button_connect_url( $plugin_settings_page ) {
538 - return self_admin_url( $plugin_settings_page );
539 - }
540 -
541 - private function get_plugin_cta_data( $plugin_slug, $plugin_file_path ) {
542 - if ( Hints::is_plugin_active( $plugin_slug ) ) {
384 + if ( $is_first_install || ! current_user_can( 'update_plugins' ) ) {
543 385 return false;
544 386 }
545 387
546 - if ( Hints::is_plugin_installed( $plugin_slug ) ) {
547 - $url = $this->get_plugin_button_activate_url( $plugin_file_path );
548 - $cta_text = esc_html__( 'Activate now', 'elementor' );
549 - } else {
550 - $url = $this->get_plugin_button_install_url( $plugin_slug );
551 - $cta_text = esc_html__( 'Install now', 'elementor' );
552 - }
388 + $notice_id = 'design_not_appearing';
389 + $notice = User::get_user_notices()[ $notice_id ] ?? [];
390 + $notice_version = $notice['meta']['version'] ?? null;
391 + $is_version_changed = $this->get_elementor_version() !== $notice_version;
553 392
554 - return [
555 - 'url' => $url,
556 - 'text' => $cta_text,
557 - ];
558 - }
559 -
560 - /**
561 - * For testing purposes
562 - */
563 - public function get_elementor_version() {
564 - return ELEMENTOR_VERSION;
565 - }
566 -
567 - private function notice_plugin_image_optimization() {
568 - $notice_id = 'plugin_image_optimization';
569 -
570 - if ( 'upload' !== $this->current_screen_id ) {
571 - return false;
393 + if ( $is_version_changed ) {
394 + User::set_user_notice( $notice_id, false, [ 'version' => $this->get_elementor_version() ] );
572 395 }
573 396
574 - if ( ! current_user_can( 'manage_options' ) ) {
397 + if ( ! in_array( $this->current_screen_id, [ 'toplevel_page_elementor', 'edit-elementor_library', 'elementor_page_elementor-system-info', 'dashboard', 'update-core', 'plugins' ], true ) ) {
575 398 return false;
576 399 }
577 400
578 401 if ( User::is_user_notice_viewed( $notice_id ) ) {
@@ -578,97 +401,29 @@
578 401 if ( User::is_user_notice_viewed( $notice_id ) ) {
579 402 return false;
580 403 }
581 404
582 - $attachments = new \WP_Query( [
583 - 'post_type' => 'attachment',
584 - 'post_status' => 'any',
585 - 'fields' => 'ids',
586 - ] );
587 -
588 - if ( 1 > $attachments->found_posts ) {
589 - return false;
590 - }
591 -
592 - $plugin_slug = 'image-optimization';
593 - $plugin_file_path = 'image-optimization/image-optimization.php';
594 -
595 - $one_subscription = Hints::is_plugin_connected_to_one_subscription();
596 - $is_installed = Hints::is_plugin_installed( $plugin_slug );
597 - $is_active = Hints::is_plugin_active( $plugin_slug );
598 -
599 - if ( $is_active ) {
600 - return false;
601 - }
602 -
603 - if ( $one_subscription ) {
604 - if ( ! $is_installed ) {
605 - $description = esc_html__( 'Automatically optimize images to improve site speed and performance. Included with your ONE subscription.', 'elementor' );
606 - $button_text = esc_html__( 'Install now', 'elementor' );
607 - $button_url = $this->get_plugin_button_install_url( $plugin_slug );
608 - $campaign_data = [
609 - 'name' => 'elementor_image_optimization_campaign',
610 - 'campaign' => 'io-plg-one',
611 - 'source' => 'io-wp-media-library-one-install',
612 - 'medium' => 'wp-dash-one',
613 - ];
614 - } elseif ( ! $is_active ) {
615 - $description = esc_html__( 'Your ONE subscription includes Image Optimization. Activate it to optimize images and improve site performance.', 'elementor' );
616 - $button_text = esc_html__( 'Activate now', 'elementor' );
617 - $button_url = $this->get_plugin_button_activate_url( $plugin_file_path );
618 - $campaign_data = [
619 - 'name' => 'elementor_image_optimization_campaign',
620 - 'campaign' => 'io-plg-one',
621 - 'source' => 'io-wp-media-library-one-activate',
622 - 'medium' => 'wp-dash-one',
623 - ];
624 - }
625 - } else {
626 - $description = esc_html__( 'Automatically compress and optimize images, resize larger files, or convert to WebP. Optimize images individually, in bulk, or on upload.', 'elementor' );
627 -
628 - if ( ! $is_installed ) {
629 - $button_text = esc_html__( 'Install now', 'elementor' );
630 - $button_url = $this->get_plugin_button_install_url( $plugin_slug );
631 - $campaign_data = [
632 - 'name' => 'elementor_image_optimization_campaign',
633 - 'campaign' => 'io-plg',
634 - 'source' => 'io-wp-media-library-install',
635 - 'medium' => 'wp-dash',
636 - ];
637 - } elseif ( ! $is_active ) {
638 - $button_text = esc_html__( 'Activate now', 'elementor' );
639 - $button_url = $this->get_plugin_button_activate_url( $plugin_file_path );
640 - $campaign_data = [
641 - 'name' => 'elementor_image_optimization_campaign',
642 - 'campaign' => 'io-plg',
643 - 'source' => 'io-wp-media-library-activate',
644 - 'medium' => 'wp-dash',
645 - ];
646 - }
647 - }
648 -
649 405 $options = [
650 - 'title' => esc_html__( 'Speed up your website with Image Optimization', 'elementor' ),
651 - 'description' => $description,
406 + 'title' => esc_html__( 'The version was updated successfully!', 'elementor' ),
407 + 'description' => sprintf(
408 + esc_html__( 'Encountering issues after updating the version? Don’t worry - we’ve collected all the fixes for troubleshooting common issues. %1$sFind a solution%2$s', 'elementor' ),
409 + '<a href="https://go.elementor.com/wp-dash-changes-do-not-appear-online/" target="_blank">',
410 + '</a>'
411 + ),
652 412 'id' => $notice_id,
653 - 'type' => 'cta',
654 - 'button' => [
655 - 'text' => $button_text,
656 - 'url' => self::add_plg_campaign_data( $button_url, $campaign_data ),
657 - 'type' => 'cta',
658 - 'data' => [
659 - 'campaign' => $campaign_data['campaign'],
660 - 'source' => $campaign_data['source'],
661 - 'medium' => $campaign_data['medium'],
662 - ],
663 - ],
664 413 ];
665 414
666 - $this->print_admin_notice( $options );
415 + $excluded_pages = [];
416 + $this->print_admin_notice( $options, $excluded_pages );
667 417
668 418 return true;
669 419 }
670 420
421 + // For testing purposes
422 + public function get_elementor_version() {
423 + return ELEMENTOR_VERSION;
424 + }
425 +
671 426 public function print_admin_notice( array $options, $exclude_pages = self::DEFAULT_EXCLUDED_PAGES ) {
672 427 global $pagenow;
673 428
674 429 if ( in_array( $pagenow, $exclude_pages, true ) ) {
@@ -681,9 +436,9 @@
681 436 'description' => '',
682 437 'classes' => [ 'notice', 'e-notice' ], // We include WP's default notice class so it will be properly handled by WP's js handler
683 438 'type' => '',
684 439 'dismissible' => true,
685 - 'icon' => 'eicon-elementor-circle',
440 + 'icon' => 'eicon-elementor',
686 441 'button' => [],
687 442 'button_secondary' => [],
688 443 ];
689 444
@@ -696,19 +451,12 @@
696 451 if ( $options['type'] ) {
697 452 $notice_classes[] = 'e-notice--' . $options['type'];
698 453 }
699 454
700 - $wrapper_attributes = [
701 - 'role' => 'region',
702 - 'aria-label' => esc_html__( 'Elementor notice', 'elementor' ),
703 - ];
704 -
705 455 if ( $options['dismissible'] ) {
706 456 $label = esc_html__( 'Dismiss this notice.', 'elementor' );
707 457 $notice_classes[] = 'e-notice--dismissible';
708 458 $dismiss_button = '<i class="e-notice__dismiss" role="button" aria-label="' . $label . '" tabindex="0"></i>';
709 -
710 - $wrapper_attributes['data-nonce'] = wp_create_nonce( 'elementor_set_admin_notice_viewed' );
711 459 }
712 460
713 461 if ( $options['icon'] ) {
714 462 $notice_classes[] = 'e-notice--extended';
@@ -714,17 +462,15 @@
714 462 $notice_classes[] = 'e-notice--extended';
715 463 $icon = '<div class="e-notice__icon-wrapper"><i class="' . esc_attr( $options['icon'] ) . '" aria-hidden="true"></i></div>';
716 464 }
717 465
718 - $wrapper_attributes['class'] = $notice_classes;
466 + $wrapper_attributes = [
467 + 'class' => $notice_classes,
468 + ];
719 469
720 470 if ( $options['id'] ) {
721 471 $wrapper_attributes['data-notice_id'] = $options['id'];
722 472 }
723 -
724 - if ( ! empty( $options['source'] ) ) {
725 - $wrapper_attributes['data-source'] = $options['source'];
726 - }
727 473 ?>
728 474 <div <?php Utils::print_html_attributes( $wrapper_attributes ); ?>>
729 475 <?php echo $dismiss_button; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
730 476 <div class="e-notice__aside">
@@ -741,9 +487,8 @@
741 487
742 488 <?php if ( ! empty( $options['button']['text'] ) || ! empty( $options['button_secondary']['text'] ) ) { ?>
743 489 <div class="e-notice__actions">
744 490 <?php
745 - $one_subscription = Hints::is_plugin_connected_to_one_subscription();
746 491 foreach ( [ $options['button'], $options['button_secondary'] ] as $index => $button_settings ) {
747 492 if ( empty( $button_settings['variant'] ) && $index ) {
748 493 $button_settings['variant'] = 'outline';
749 494 }
@@ -751,20 +496,8 @@
751 496 if ( empty( $button_settings['text'] ) ) {
752 497 continue;
753 498 }
754 499
755 - if ( $one_subscription ) {
756 - if ( ! isset( $button_settings['classes'] ) ) {
757 - $button_settings['classes'] = [];
758 - }
759 - if ( ! is_array( $button_settings['classes'] ) ) {
760 - $button_settings['classes'] = [ $button_settings['classes'] ];
761 - }
762 - // index 0 = button, index 1 = button_secondary
763 - $button_class = ( 0 === $index ) ? 'button-primary' : 'button-secondary';
764 - $button_settings['classes'][] = $button_class;
765 - }
766 -
767 500 $button = new Button( $button_settings );
768 501 $button->print_button();
769 502 } ?>
770 503 </div>
@@ -796,60 +529,8 @@
796 529 return;
797 530 }
798 531 }
799 532
800 - public function maybe_log_campaign() {
801 - if ( empty( $_GET['plg_campaign'] ) || empty( $_GET['plg_campaign_name'] ) ) {
802 - return;
803 - }
804 -
805 - $allowed_plgs = [
806 - 'elementor_image_optimization_campaign',
807 - 'elementor_ea11y_campaign',
808 - ];
809 -
810 - if ( ! in_array( $_GET['plg_campaign_name'], $allowed_plgs, true ) ) {
811 - return;
812 - }
813 -
814 - if ( ! isset( $_GET['plg_campaign_nonce'] ) || ! wp_verify_nonce( sanitize_key( $_GET['plg_campaign_nonce'] ), sanitize_key( $_GET['plg_campaign_name'] ) ) ) {
815 - return;
816 - }
817 -
818 - if ( ! current_user_can( 'manage_options' ) ) {
819 - return;
820 - }
821 -
822 - if ( empty( $_GET['plg_source'] ) || empty( $_GET['plg_medium'] ) ) {
823 - return;
824 - }
825 -
826 - $campaign_data = [
827 - 'source' => sanitize_key( $_GET['plg_source'] ),
828 - 'campaign' => sanitize_key( $_GET['plg_campaign'] ),
829 - 'medium' => sanitize_key( $_GET['plg_medium'] ),
830 - ];
831 -
832 - set_transient( sanitize_key( $_GET['plg_campaign_name'] ), $campaign_data, 30 * DAY_IN_SECONDS );
833 - }
834 -
835 - public static function add_plg_campaign_data( $url, $campaign_data ) {
836 -
837 - foreach ( [ 'name', 'campaign' ] as $key ) {
838 - if ( empty( $campaign_data[ $key ] ) ) {
839 - return $url;
840 - }
841 - }
842 -
843 - return add_query_arg( [
844 - 'plg_campaign_name' => $campaign_data['name'],
845 - 'plg_campaign' => $campaign_data['campaign'],
846 - 'plg_source' => empty( $campaign_data['source'] ) ? '' : $campaign_data['source'],
847 - 'plg_medium' => empty( $campaign_data['medium'] ) ? '' : $campaign_data['medium'],
848 - 'plg_campaign_nonce' => wp_create_nonce( $campaign_data['name'] ),
849 - ], $url );
850 - }
851 -
852 533 /**
853 534 * @since 2.9.0
854 535 * @access public
855 536 */
@@ -854,10 +535,8 @@
854 535 * @access public
855 536 */
856 537 public function __construct() {
857 538 add_action( 'admin_notices', [ $this, 'admin_notices' ], 20 );
858 - add_action( 'admin_action_install-plugin', [ $this, 'maybe_log_campaign' ] );
859 - add_action( 'admin_action_activate', [ $this, 'maybe_log_campaign' ] );
860 539 }
861 540
862 541 /**
863 542 * Get module name.