PluginProbe
Elementor Website Builder – more than just a page builder / 3.32.0-dev3
Elementor Website Builder – more than just a page builder v3.32.0-dev3
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 4.0.7 All 451 releases
← All changes | core/admin/admin-notices.php +70 -319 4.0.93.32.0-dev3 View file →
@@ -3,10 +3,8 @@
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 7 use Elementor\Core\Utils\Promotions\Filtered_Promotions_Manager;
10 8 use Elementor\Plugin;
11 9 use Elementor\Settings;
12 10 use Elementor\Tracker;
@@ -20,13 +18,9 @@
20 18
21 19 class Admin_Notices extends Module {
22 20
23 21 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 22
27 - const EXIT_EARLY_FOR_BACKWARD_COMPATIBILITY = false;
28 -
29 23 private $plain_notices = [
30 24 'api_notice',
31 25 'api_upgrade_plugin',
32 26 'tracker',
@@ -33,12 +27,12 @@
33 27 'tracker_last_update',
34 28 'rate_us_feedback',
35 29 'role_manager_promote',
36 30 'experiment_promotion',
31 + 'send_app_promotion',
37 32 'site_mailer_promotion',
38 33 'plugin_image_optimization',
39 34 'ally_pages_promotion',
40 - self::LOCAL_GOOGLE_FONTS_DISABLED_NOTICE_ID,
41 35 ];
42 36
43 37 private $elementor_pages_count = null;
44 38
@@ -138,16 +132,16 @@
138 132 $message = sprintf(
139 133 /* translators: 1: Details URL, 2: Accessibility text, 3: Version number, 4: Update URL, 5: Accessibility text. */
140 134 __( '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 135 esc_url( $details_url ),
142 - sprintf(
136 + esc_attr( sprintf(
143 137 /* translators: %s: Elementor version. */
144 - esc_attr__( 'View Elementor version %s details', 'elementor' ),
138 + __( 'View Elementor version %s details', 'elementor' ),
145 139 $new_version
146 - ),
140 + ) ),
147 141 $new_version,
148 142 esc_url( $upgrade_url ),
149 - esc_attr__( 'Update Now', 'elementor' )
143 + esc_attr( esc_html__( 'Update Now', 'elementor' ) )
150 144 );
151 145
152 146 $options = [
153 147 'title' => esc_html__( 'Update Notification', 'elementor' ),
@@ -396,10 +390,9 @@
396 390 }
397 391
398 392 $experiments = Plugin::$instance->experiments;
399 393 $is_all_performance_features_active = (
400 - $experiments->is_feature_active( 'e_font_icon_svg' ) &&
401 - $experiments->is_feature_active( 'e_optimized_markup' )
394 + $experiments->is_feature_active( 'e_font_icon_svg' )
402 395 );
403 396
404 397 if ( $is_all_performance_features_active ) {
405 398 return false;
@@ -469,42 +462,46 @@
469 462 $detected_form_plugin = false;
470 463 return $detected_form_plugin;
471 464 }
472 465
473 - private function notice_local_google_fonts_disabled() {
466 + private function notice_send_app_promotion() {
467 + $notice_id = 'send_app_promotion';
474 468
475 469 if ( ! $this->is_elementor_page() && ! $this->is_elementor_admin_screen() ) {
476 470 return false;
477 471 }
478 472
479 - if ( ! Manager::had_install_prior_to( self::LOCAL_GOOGLE_FONTS_NOTICE_MIN_VERSION ) ) {
473 + if ( time() < $this->get_install_time() + ( 60 * DAY_IN_SECONDS ) ) {
480 474 return false;
481 475 }
482 476
483 - if ( User::is_user_notice_viewed( self::LOCAL_GOOGLE_FONTS_DISABLED_NOTICE_ID ) ) {
477 + if ( ! current_user_can( 'install_plugins' ) || User::is_user_notice_viewed( $notice_id ) ) {
484 478 return false;
485 479 }
486 480
487 - $is_local_gf_enabled = (bool) get_option( 'elementor_local_google_fonts', '0' );
481 + $plugin_file_path = 'send/send-app.php';
482 + $plugin_slug = 'send-app';
488 483
489 - if ( $is_local_gf_enabled ) {
484 + $cta_data = $this->get_plugin_cta_data( $plugin_slug, $plugin_file_path );
485 + if ( empty( $cta_data ) ) {
490 486 return false;
491 487 }
492 488
489 + $title = sprintf( esc_html__( 'Turn leads into loyal shoppers', 'elementor' ) );
490 +
493 491 $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' => '',
492 + 'title' => $title,
493 + 'description' => esc_html__( 'Collecting leads is just the beginning. With Send by Elementor, you can manage contacts, launch automations, and turn form submissions into sales.', 'elementor' ),
494 + 'id' => $notice_id,
495 + 'type' => 'cta',
498 496 'button' => [
499 - 'text' => esc_html__( 'Take me there', 'elementor' ),
500 - 'url' => '../wp-admin/admin.php?page=elementor-settings#tab-performance',
501 - 'new_tab' => false,
497 + 'text' => $cta_data['text'],
498 + 'url' => $cta_data['url'],
502 499 'type' => 'cta',
503 500 ],
504 501 'button_secondary' => [
505 502 'text' => esc_html__( 'Learn more', 'elementor' ),
506 - 'url' => 'https://go.elementor.com/wp-dash-google-fonts-locally-notice/',
503 + 'url' => 'https://go.elementor.com/Formslearnmore',
507 504 'new_tab' => true,
508 505 'type' => 'cta',
509 506 ],
510 507 ];
@@ -521,89 +518,38 @@
521 518 if ( 'edit.php' !== $pagenow || empty( $_GET['post_type'] ) || 'page' !== $_GET['post_type'] ) {
522 519 return false;
523 520 }
524 521
525 - if ( ! current_user_can( 'manage_options' ) ) {
522 + if ( ! current_user_can( 'manage_options' ) || User::is_user_notice_viewed( $notice_id ) ) {
526 523 return false;
527 524 }
528 525
529 - if ( User::is_user_notice_viewed( $notice_id ) ) {
530 - return false;
531 - }
532 -
526 + $plugin_file_path = 'pojo-accessibility/pojo-accessibility.php';
533 527 $plugin_slug = 'pojo-accessibility';
534 - $plugin_file_path = 'pojo-accessibility/pojo-accessibility.php';
535 528
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 ) {
529 + $cta_data = $this->get_plugin_cta_data( $plugin_slug, $plugin_file_path );
530 + if ( empty( $cta_data ) ) {
541 531 return false;
542 532 }
543 533
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 - }
591 - }
592 -
593 534 $options = [
594 535 'title' => esc_html__( 'Make sure your site has an accessibility statement page', 'elementor' ),
595 - 'description' => $description,
536 + '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' ),
596 537 'id' => $notice_id,
597 538 'type' => 'cta',
598 539 'button' => [
599 - 'text' => $button_text,
600 - 'url' => self::add_plg_campaign_data( $button_url, $campaign_data ),
540 + 'text' => $cta_data['text'],
541 + 'url' => self::add_plg_campaign_data( $cta_data['url'], [
542 + 'name' => 'elementor_ea11y_campaign',
543 + 'campaign' => 'acc-statement-plg-pages',
544 + 'source' => 'wp-pages',
545 + 'medium' => 'wp-dash',
546 + ] ),
601 547 'type' => 'cta',
602 548 ],
603 549 'button_secondary' => [
604 550 'text' => esc_html__( 'Learn more', 'elementor' ),
605 - 'url' => $learn_more_url,
551 + 'url' => 'https://go.elementor.com/acc-plg-learn-more',
606 552 'new_tab' => true,
607 553 'type' => 'cta',
608 554 ],
609 555 ];
@@ -629,152 +575,40 @@
629 575 if ( ( Utils::has_pro() && ! $has_woocommerce ) || ! current_user_can( 'install_plugins' ) || User::is_user_notice_viewed( $notice_id ) ) {
630 576 return false;
631 577 }
632 578
579 + $plugin_file_path = 'site-mailer/site-mailer.php';
633 580 $plugin_slug = 'site-mailer';
634 - $plugin_file_path = 'site-mailer/site-mailer.php';
635 581
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 ) {
582 + $cta_data = $this->get_plugin_cta_data( $plugin_slug, $plugin_file_path );
583 + if ( empty( $cta_data ) ) {
642 584 return false;
643 585 }
644 586
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 - }
744 - }
745 -
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 587 $options = [
751 - 'title' => $title,
752 - 'description' => $description,
588 + 'title' => esc_html__( 'Ensure your form emails avoid the spam folder!', 'elementor' ),
589 + 'description' => esc_html__( 'Use Site Mailer for improved email deliverability, detailed email logs, and an easy setup.', 'elementor' ),
753 590 'id' => $notice_id,
754 591 'type' => 'cta',
755 592 'button' => [
756 - 'text' => $button_text,
757 - 'url' => self::add_plg_campaign_data( $button_url, $campaign_data ),
593 + 'text' => $cta_data['text'],
594 + 'url' => $cta_data['url'],
758 595 'type' => 'cta',
759 - 'data' => [
760 - 'campaign' => $campaign_data['campaign'],
761 - 'source' => $campaign_data['source'],
762 - 'medium' => $campaign_data['medium'],
763 - ],
764 596 ],
765 597 'button_secondary' => [
766 598 'text' => esc_html__( 'Learn more', 'elementor' ),
767 - 'url' => $learn_more_url,
599 + 'url' => 'https://go.elementor.com/sm-core-form/',
768 600 'new_tab' => true,
769 601 'type' => 'cta',
770 602 ],
771 603 ];
772 604
773 - if ( $is_woocommerce ) {
605 + if ( $this->should_render_woocommerce_hint( $has_forms, $has_woocommerce ) ) {
774 606 // We include WP's default notice class so it will be properly handled by WP's js handler
775 607 // And add a new one to distinguish between the two types of notices
776 608 $options['classes'] = [ 'notice', 'e-notice', 'sm-notice-wc' ];
609 + $options['title'] = esc_html__( 'Improve Transactional Email Deliverability', 'elementor' );
610 + $options['description'] = esc_html__( 'Use Elementor\'s Site Mailer to ensure your store emails like purchase confirmations, shipping updates and more are reliably delivered.', 'elementor' );
777 611 }
778 612
779 613 $this->print_admin_notice( $options );
780 614
@@ -811,31 +645,20 @@
811 645
812 646 private function is_elementor_admin_screen_with_system_info(): bool {
813 647 return in_array( $this->current_screen_id, [ 'toplevel_page_elementor', 'edit-elementor_library', 'elementor_page_elementor-system-info', 'dashboard' ], true );
814 648 }
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 649
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 650 private function get_plugin_cta_data( $plugin_slug, $plugin_file_path ) {
828 - if ( Hints::is_plugin_active( $plugin_slug ) ) {
651 + if ( is_plugin_active( $plugin_file_path ) ) {
829 652 return false;
830 653 }
831 654
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' );
655 + if ( $this->is_plugin_installed( $plugin_file_path ) ) {
656 + $url = 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 );
657 + $cta_text = esc_html__( 'Activate Plugin', 'elementor' );
835 658 } else {
836 - $url = $this->get_plugin_button_install_url( $plugin_slug );
837 - $cta_text = esc_html__( 'Install now', 'elementor' );
659 + $url = wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=' . $plugin_slug ), 'install-plugin_' . $plugin_slug );
660 + $cta_text = esc_html__( 'Install Plugin', 'elementor' );
838 661 }
839 662
840 663 return [
841 664 'url' => $url,
@@ -856,16 +679,12 @@
856 679 if ( 'upload' !== $this->current_screen_id ) {
857 680 return false;
858 681 }
859 682
860 - if ( ! current_user_can( 'manage_options' ) ) {
683 + if ( ! current_user_can( 'manage_options' ) || User::is_user_notice_viewed( $notice_id ) ) {
861 684 return false;
862 685 }
863 686
864 - if ( User::is_user_notice_viewed( $notice_id ) ) {
865 - return false;
866 - }
867 -
868 687 $attachments = new \WP_Query( [
869 688 'post_type' => 'attachment',
870 689 'post_status' => 'any',
871 690 'fields' => 'ids',
@@ -874,79 +693,26 @@
874 693 if ( 1 > $attachments->found_posts ) {
875 694 return false;
876 695 }
877 696
697 + $plugin_file_path = 'image-optimization/image-optimization.php';
878 698 $plugin_slug = 'image-optimization';
879 - $plugin_file_path = 'image-optimization/image-optimization.php';
880 699
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 );
700 + $cta_data = $this->get_plugin_cta_data( $plugin_slug, $plugin_file_path );
884 701
885 - if ( $is_active ) {
702 + if ( empty( $cta_data ) ) {
886 703 return false;
887 704 }
888 705
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 706 $options = [
936 - 'title' => esc_html__( 'Speed up your website with Image Optimizer', 'elementor' ),
937 - 'description' => $description,
707 + 'title' => esc_html__( 'Speed up your website with Image Optimizer by Elementor', 'elementor' ),
708 + 'description' => esc_html__( 'Automatically compress and optimize images, resize larger files, or convert to WebP. Optimize images individually, in bulk, or on upload.', 'elementor' ),
938 709 'id' => $notice_id,
939 710 'type' => 'cta',
940 - 'button' => [
941 - 'text' => $button_text,
942 - 'url' => self::add_plg_campaign_data( $button_url, $campaign_data ),
711 + 'button_secondary' => [
712 + 'text' => $cta_data['text'],
713 + 'url' => $cta_data['url'],
943 714 'type' => 'cta',
944 - 'data' => [
945 - 'campaign' => $campaign_data['campaign'],
946 - 'source' => $campaign_data['source'],
947 - 'medium' => $campaign_data['medium'],
948 - ],
949 715 ],
950 716 ];
951 717
952 718 $this->print_admin_notice( $options );
@@ -953,8 +719,14 @@
953 719
954 720 return true;
955 721 }
956 722
723 + private function is_plugin_installed( $file_path ): bool {
724 + $installed_plugins = get_plugins();
725 +
726 + return isset( $installed_plugins[ $file_path ] );
727 + }
728 +
957 729 public function print_admin_notice( array $options, $exclude_pages = self::DEFAULT_EXCLUDED_PAGES ) {
958 730 global $pagenow;
959 731
960 732 if ( in_array( $pagenow, $exclude_pages, true ) ) {
@@ -967,9 +739,9 @@
967 739 'description' => '',
968 740 'classes' => [ 'notice', 'e-notice' ], // We include WP's default notice class so it will be properly handled by WP's js handler
969 741 'type' => '',
970 742 'dismissible' => true,
971 - 'icon' => 'eicon-elementor-circle',
743 + 'icon' => 'eicon-elementor',
972 744 'button' => [],
973 745 'button_secondary' => [],
974 746 ];
975 747
@@ -982,12 +754,9 @@
982 754 if ( $options['type'] ) {
983 755 $notice_classes[] = 'e-notice--' . $options['type'];
984 756 }
985 757
986 - $wrapper_attributes = [
987 - 'role' => 'region',
988 - 'aria-label' => esc_html__( 'Elementor notice', 'elementor' ),
989 - ];
758 + $wrapper_attributes = [];
990 759
991 760 if ( $options['dismissible'] ) {
992 761 $label = esc_html__( 'Dismiss this notice.', 'elementor' );
993 762 $notice_classes[] = 'e-notice--dismissible';
@@ -1005,12 +774,8 @@
1005 774
1006 775 if ( $options['id'] ) {
1007 776 $wrapper_attributes['data-notice_id'] = $options['id'];
1008 777 }
1009 -
1010 - if ( ! empty( $options['source'] ) ) {
1011 - $wrapper_attributes['data-source'] = $options['source'];
1012 - }
1013 778 ?>
1014 779 <div <?php Utils::print_html_attributes( $wrapper_attributes ); ?>>
1015 780 <?php echo $dismiss_button; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
1016 781 <div class="e-notice__aside">
@@ -1027,9 +792,8 @@
1027 792
1028 793 <?php if ( ! empty( $options['button']['text'] ) || ! empty( $options['button_secondary']['text'] ) ) { ?>
1029 794 <div class="e-notice__actions">
1030 795 <?php
1031 - $one_subscription = Hints::is_plugin_connected_to_one_subscription();
1032 796 foreach ( [ $options['button'], $options['button_secondary'] ] as $index => $button_settings ) {
1033 797 if ( empty( $button_settings['variant'] ) && $index ) {
1034 798 $button_settings['variant'] = 'outline';
1035 799 }
@@ -1037,20 +801,8 @@
1037 801 if ( empty( $button_settings['text'] ) ) {
1038 802 continue;
1039 803 }
1040 804
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 805 $button = new Button( $button_settings );
1054 806 $button->print_button();
1055 807 } ?>
1056 808 </div>
@@ -1142,9 +894,8 @@
1142 894 */
1143 895 public function __construct() {
1144 896 add_action( 'admin_notices', [ $this, 'admin_notices' ], 20 );
1145 897 add_action( 'admin_action_install-plugin', [ $this, 'maybe_log_campaign' ] );
1146 - add_action( 'admin_action_activate', [ $this, 'maybe_log_campaign' ] );
1147 898 }
1148 899
1149 900 /**
1150 901 * Get module name.