PluginProbe
Elementor Website Builder – more than just a page builder / 3.33.0-dev1
Elementor Website Builder – more than just a page builder v3.33.0-dev1
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 +98 -304 4.2.43.33.0-dev1 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;
@@ -21,12 +19,9 @@
21 19 class Admin_Notices extends Module {
22 20
23 21 const DEFAULT_EXCLUDED_PAGES = [ 'plugins.php', 'plugin-install.php', 'plugin-editor.php' ];
24 22 const LOCAL_GOOGLE_FONTS_DISABLED_NOTICE_ID = 'local_google_fonts_disabled';
25 - const LOCAL_GOOGLE_FONTS_NOTICE_MIN_VERSION = '3.33.3';
26 23
27 - const EXIT_EARLY_FOR_BACKWARD_COMPATIBILITY = false;
28 -
29 24 private $plain_notices = [
30 25 'api_notice',
31 26 'api_upgrade_plugin',
32 27 'tracker',
@@ -33,8 +28,9 @@
33 28 'tracker_last_update',
34 29 'rate_us_feedback',
35 30 'role_manager_promote',
36 31 'experiment_promotion',
32 + 'send_app_promotion',
37 33 'site_mailer_promotion',
38 34 'plugin_image_optimization',
39 35 'ally_pages_promotion',
40 36 self::LOCAL_GOOGLE_FONTS_DISABLED_NOTICE_ID,
@@ -138,16 +134,16 @@
138 134 $message = sprintf(
139 135 /* translators: 1: Details URL, 2: Accessibility text, 3: Version number, 4: Update URL, 5: Accessibility text. */
140 136 __( '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 137 esc_url( $details_url ),
142 - sprintf(
138 + esc_attr( sprintf(
143 139 /* translators: %s: Elementor version. */
144 - esc_attr__( 'View Elementor version %s details', 'elementor' ),
140 + __( 'View Elementor version %s details', 'elementor' ),
145 141 $new_version
146 - ),
142 + ) ),
147 143 $new_version,
148 144 esc_url( $upgrade_url ),
149 - esc_attr__( 'Update Now', 'elementor' )
145 + esc_attr( esc_html__( 'Update Now', 'elementor' ) )
150 146 );
151 147
152 148 $options = [
153 149 'title' => esc_html__( 'Update Notification', 'elementor' ),
@@ -469,18 +465,62 @@
469 465 $detected_form_plugin = false;
470 466 return $detected_form_plugin;
471 467 }
472 468
473 - private function notice_local_google_fonts_disabled() {
469 + private function notice_send_app_promotion() {
470 + $notice_id = 'send_app_promotion';
474 471
475 472 if ( ! $this->is_elementor_page() && ! $this->is_elementor_admin_screen() ) {
476 473 return false;
477 474 }
478 475
479 - if ( ! Manager::had_install_prior_to( self::LOCAL_GOOGLE_FONTS_NOTICE_MIN_VERSION ) ) {
476 + if ( time() < $this->get_install_time() + ( 60 * DAY_IN_SECONDS ) ) {
480 477 return false;
481 478 }
482 479
480 + if ( ! current_user_can( 'install_plugins' ) || User::is_user_notice_viewed( $notice_id ) ) {
481 + return false;
482 + }
483 +
484 + $plugin_file_path = 'send/send-app.php';
485 + $plugin_slug = 'send-app';
486 +
487 + $cta_data = $this->get_plugin_cta_data( $plugin_slug, $plugin_file_path );
488 + if ( empty( $cta_data ) ) {
489 + return false;
490 + }
491 +
492 + $title = sprintf( esc_html__( 'Turn leads into loyal shoppers', 'elementor' ) );
493 +
494 + $options = [
495 + 'title' => $title,
496 + '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' ),
497 + 'id' => $notice_id,
498 + 'type' => 'cta',
499 + 'button' => [
500 + 'text' => $cta_data['text'],
501 + 'url' => $cta_data['url'],
502 + 'type' => 'cta',
503 + ],
504 + 'button_secondary' => [
505 + 'text' => esc_html__( 'Learn more', 'elementor' ),
506 + 'url' => 'https://go.elementor.com/Formslearnmore',
507 + 'new_tab' => true,
508 + 'type' => 'cta',
509 + ],
510 + ];
511 +
512 + $this->print_admin_notice( $options );
513 +
514 + return true;
515 + }
516 +
517 + private function notice_local_google_fonts_disabled() {
518 +
519 + if ( ! $this->is_elementor_page() && ! $this->is_elementor_admin_screen() ) {
520 + return false;
521 + }
522 +
483 523 if ( User::is_user_notice_viewed( self::LOCAL_GOOGLE_FONTS_DISABLED_NOTICE_ID ) ) {
484 524 return false;
485 525 }
486 526
@@ -521,89 +561,38 @@
521 561 if ( 'edit.php' !== $pagenow || empty( $_GET['post_type'] ) || 'page' !== $_GET['post_type'] ) {
522 562 return false;
523 563 }
524 564
525 - if ( ! current_user_can( 'manage_options' ) ) {
565 + if ( ! current_user_can( 'manage_options' ) || User::is_user_notice_viewed( $notice_id ) ) {
526 566 return false;
527 567 }
528 568
529 - if ( User::is_user_notice_viewed( $notice_id ) ) {
530 - return false;
531 - }
532 -
569 + $plugin_file_path = 'pojo-accessibility/pojo-accessibility.php';
533 570 $plugin_slug = 'pojo-accessibility';
534 - $plugin_file_path = 'pojo-accessibility/pojo-accessibility.php';
535 571
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 ) {
572 + $cta_data = $this->get_plugin_cta_data( $plugin_slug, $plugin_file_path );
573 + if ( empty( $cta_data ) ) {
541 574 return false;
542 575 }
543 576
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 Web Accessibility, 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 Web Accessibility. 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 Web Accessibility, 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 577 $options = [
594 578 'title' => esc_html__( 'Make sure your site has an accessibility statement page', 'elementor' ),
595 - 'description' => $description,
579 + '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 580 'id' => $notice_id,
597 581 'type' => 'cta',
598 582 'button' => [
599 - 'text' => $button_text,
600 - 'url' => self::add_plg_campaign_data( $button_url, $campaign_data ),
583 + 'text' => $cta_data['text'],
584 + 'url' => self::add_plg_campaign_data( $cta_data['url'], [
585 + 'name' => 'elementor_ea11y_campaign',
586 + 'campaign' => 'acc-statement-plg-pages',
587 + 'source' => 'wp-pages',
588 + 'medium' => 'wp-dash',
589 + ] ),
601 590 'type' => 'cta',
602 591 ],
603 592 'button_secondary' => [
604 593 'text' => esc_html__( 'Learn more', 'elementor' ),
605 - 'url' => $learn_more_url,
594 + 'url' => 'https://go.elementor.com/acc-plg-learn-more',
606 595 'new_tab' => true,
607 596 'type' => 'cta',
608 597 ],
609 598 ];
@@ -629,152 +618,40 @@
629 618 if ( ( Utils::has_pro() && ! $has_woocommerce ) || ! current_user_can( 'install_plugins' ) || User::is_user_notice_viewed( $notice_id ) ) {
630 619 return false;
631 620 }
632 621
622 + $plugin_file_path = 'site-mailer/site-mailer.php';
633 623 $plugin_slug = 'site-mailer';
634 - $plugin_file_path = 'site-mailer/site-mailer.php';
635 624
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 ) {
625 + $cta_data = $this->get_plugin_cta_data( $plugin_slug, $plugin_file_path );
626 + if ( empty( $cta_data ) ) {
642 627 return false;
643 628 }
644 629
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 Email Deliverability 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__( 'Email Deliverability 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 Email Deliverability 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 Email Deliverability to ensure emails reach the inbox and track delivery with built-in logs. Email Deliverability 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 Email Deliverability 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 Email Deliverability 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 630 $options = [
751 - 'title' => $title,
752 - 'description' => $description,
631 + 'title' => esc_html__( 'Ensure your form emails avoid the spam folder!', 'elementor' ),
632 + 'description' => esc_html__( 'Use Site Mailer for improved email deliverability, detailed email logs, and an easy setup.', 'elementor' ),
753 633 'id' => $notice_id,
754 634 'type' => 'cta',
755 635 'button' => [
756 - 'text' => $button_text,
757 - 'url' => self::add_plg_campaign_data( $button_url, $campaign_data ),
636 + 'text' => $cta_data['text'],
637 + 'url' => $cta_data['url'],
758 638 'type' => 'cta',
759 - 'data' => [
760 - 'campaign' => $campaign_data['campaign'],
761 - 'source' => $campaign_data['source'],
762 - 'medium' => $campaign_data['medium'],
763 - ],
764 639 ],
765 640 'button_secondary' => [
766 641 'text' => esc_html__( 'Learn more', 'elementor' ),
767 - 'url' => $learn_more_url,
642 + 'url' => 'https://go.elementor.com/sm-core-form/',
768 643 'new_tab' => true,
769 644 'type' => 'cta',
770 645 ],
771 646 ];
772 647
773 - if ( $is_woocommerce ) {
648 + if ( $this->should_render_woocommerce_hint( $has_forms, $has_woocommerce ) ) {
774 649 // We include WP's default notice class so it will be properly handled by WP's js handler
775 650 // And add a new one to distinguish between the two types of notices
776 651 $options['classes'] = [ 'notice', 'e-notice', 'sm-notice-wc' ];
652 + $options['title'] = esc_html__( 'Improve Transactional Email Deliverability', 'elementor' );
653 + $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 654 }
778 655
779 656 $this->print_admin_notice( $options );
780 657
@@ -811,31 +688,20 @@
811 688
812 689 private function is_elementor_admin_screen_with_system_info(): bool {
813 690 return in_array( $this->current_screen_id, [ 'toplevel_page_elementor', 'edit-elementor_library', 'elementor_page_elementor-system-info', 'dashboard' ], true );
814 691 }
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 692
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 693 private function get_plugin_cta_data( $plugin_slug, $plugin_file_path ) {
828 - if ( Hints::is_plugin_active( $plugin_slug ) ) {
694 + if ( is_plugin_active( $plugin_file_path ) ) {
829 695 return false;
830 696 }
831 697
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' );
698 + if ( $this->is_plugin_installed( $plugin_file_path ) ) {
699 + $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 );
700 + $cta_text = esc_html__( 'Activate Plugin', 'elementor' );
835 701 } else {
836 - $url = $this->get_plugin_button_install_url( $plugin_slug );
837 - $cta_text = esc_html__( 'Install now', 'elementor' );
702 + $url = wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=' . $plugin_slug ), 'install-plugin_' . $plugin_slug );
703 + $cta_text = esc_html__( 'Install Plugin', 'elementor' );
838 704 }
839 705
840 706 return [
841 707 'url' => $url,
@@ -856,16 +722,12 @@
856 722 if ( 'upload' !== $this->current_screen_id ) {
857 723 return false;
858 724 }
859 725
860 - if ( ! current_user_can( 'manage_options' ) ) {
726 + if ( ! current_user_can( 'manage_options' ) || User::is_user_notice_viewed( $notice_id ) ) {
861 727 return false;
862 728 }
863 729
864 - if ( User::is_user_notice_viewed( $notice_id ) ) {
865 - return false;
866 - }
867 -
868 730 $attachments = new \WP_Query( [
869 731 'post_type' => 'attachment',
870 732 'post_status' => 'any',
871 733 'fields' => 'ids',
@@ -874,79 +736,26 @@
874 736 if ( 1 > $attachments->found_posts ) {
875 737 return false;
876 738 }
877 739
740 + $plugin_file_path = 'image-optimization/image-optimization.php';
878 741 $plugin_slug = 'image-optimization';
879 - $plugin_file_path = 'image-optimization/image-optimization.php';
880 742
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 );
743 + $cta_data = $this->get_plugin_cta_data( $plugin_slug, $plugin_file_path );
884 744
885 - if ( $is_active ) {
745 + if ( empty( $cta_data ) ) {
886 746 return false;
887 747 }
888 748
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 Optimization. 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 749 $options = [
936 - 'title' => esc_html__( 'Speed up your website with Image Optimization', 'elementor' ),
937 - 'description' => $description,
750 + 'title' => esc_html__( 'Speed up your website with Image Optimizer by Elementor', 'elementor' ),
751 + '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 752 'id' => $notice_id,
939 753 'type' => 'cta',
940 - 'button' => [
941 - 'text' => $button_text,
942 - 'url' => self::add_plg_campaign_data( $button_url, $campaign_data ),
754 + 'button_secondary' => [
755 + 'text' => $cta_data['text'],
756 + 'url' => $cta_data['url'],
943 757 'type' => 'cta',
944 - 'data' => [
945 - 'campaign' => $campaign_data['campaign'],
946 - 'source' => $campaign_data['source'],
947 - 'medium' => $campaign_data['medium'],
948 - ],
949 758 ],
950 759 ];
951 760
952 761 $this->print_admin_notice( $options );
@@ -953,8 +762,14 @@
953 762
954 763 return true;
955 764 }
956 765
766 + private function is_plugin_installed( $file_path ): bool {
767 + $installed_plugins = get_plugins();
768 +
769 + return isset( $installed_plugins[ $file_path ] );
770 + }
771 +
957 772 public function print_admin_notice( array $options, $exclude_pages = self::DEFAULT_EXCLUDED_PAGES ) {
958 773 global $pagenow;
959 774
960 775 if ( in_array( $pagenow, $exclude_pages, true ) ) {
@@ -967,9 +782,9 @@
967 782 'description' => '',
968 783 'classes' => [ 'notice', 'e-notice' ], // We include WP's default notice class so it will be properly handled by WP's js handler
969 784 'type' => '',
970 785 'dismissible' => true,
971 - 'icon' => 'eicon-elementor-circle',
786 + 'icon' => 'eicon-elementor',
972 787 'button' => [],
973 788 'button_secondary' => [],
974 789 ];
975 790
@@ -982,12 +797,9 @@
982 797 if ( $options['type'] ) {
983 798 $notice_classes[] = 'e-notice--' . $options['type'];
984 799 }
985 800
986 - $wrapper_attributes = [
987 - 'role' => 'region',
988 - 'aria-label' => esc_html__( 'Elementor notice', 'elementor' ),
989 - ];
801 + $wrapper_attributes = [];
990 802
991 803 if ( $options['dismissible'] ) {
992 804 $label = esc_html__( 'Dismiss this notice.', 'elementor' );
993 805 $notice_classes[] = 'e-notice--dismissible';
@@ -1005,12 +817,8 @@
1005 817
1006 818 if ( $options['id'] ) {
1007 819 $wrapper_attributes['data-notice_id'] = $options['id'];
1008 820 }
1009 -
1010 - if ( ! empty( $options['source'] ) ) {
1011 - $wrapper_attributes['data-source'] = $options['source'];
1012 - }
1013 821 ?>
1014 822 <div <?php Utils::print_html_attributes( $wrapper_attributes ); ?>>
1015 823 <?php echo $dismiss_button; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
1016 824 <div class="e-notice__aside">
@@ -1027,9 +835,8 @@
1027 835
1028 836 <?php if ( ! empty( $options['button']['text'] ) || ! empty( $options['button_secondary']['text'] ) ) { ?>
1029 837 <div class="e-notice__actions">
1030 838 <?php
1031 - $one_subscription = Hints::is_plugin_connected_to_one_subscription();
1032 839 foreach ( [ $options['button'], $options['button_secondary'] ] as $index => $button_settings ) {
1033 840 if ( empty( $button_settings['variant'] ) && $index ) {
1034 841 $button_settings['variant'] = 'outline';
1035 842 }
@@ -1037,20 +844,8 @@
1037 844 if ( empty( $button_settings['text'] ) ) {
1038 845 continue;
1039 846 }
1040 847
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 848 $button = new Button( $button_settings );
1054 849 $button->print_button();
1055 850 } ?>
1056 851 </div>
@@ -1142,9 +937,8 @@
1142 937 */
1143 938 public function __construct() {
1144 939 add_action( 'admin_notices', [ $this, 'admin_notices' ], 20 );
1145 940 add_action( 'admin_action_install-plugin', [ $this, 'maybe_log_campaign' ] );
1146 - add_action( 'admin_action_activate', [ $this, 'maybe_log_campaign' ] );
1147 941 }
1148 942
1149 943 /**
1150 944 * Get module name.