| @@ -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; |
| @@ -12,8 +10,9 @@ | ||
| 12 | 10 | use Elementor\Tracker; |
| 13 | 11 | use Elementor\User; |
| 14 | 12 | use Elementor\Utils; |
| 15 | 13 | use Elementor\Core\Admin\Notices\Base_Notice; |
| 14 | +use Elementor\Core\Admin\Notices\Elementor_Dev_Notice; | |
| 16 | 15 | |
| 17 | 16 | if ( ! defined( 'ABSPATH' ) ) { |
| 18 | 17 | exit; // Exit if accessed directly. |
| 19 | 18 | } |
| @@ -20,25 +19,19 @@ | ||
| 20 | 19 | |
| 21 | 20 | class Admin_Notices extends Module { |
| 22 | 21 | |
| 23 | 22 | 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 | 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 | - 'tracker_last_update', | |
| 34 | 28 | 'rate_us_feedback', |
| 35 | 29 | 'role_manager_promote', |
| 36 | 30 | 'experiment_promotion', |
| 37 | 31 | 'site_mailer_promotion', |
| 32 | + 'design_not_appearing', | |
| 38 | 33 | 'plugin_image_optimization', |
| 39 | - 'ally_pages_promotion', | |
| 40 | - self::LOCAL_GOOGLE_FONTS_DISABLED_NOTICE_ID, | |
| 41 | 34 | ]; |
| 42 | 35 | |
| 43 | 36 | private $elementor_pages_count = null; |
| 44 | 37 | |
| @@ -46,8 +39,12 @@ | ||
| 46 | 39 | |
| 47 | 40 | private $current_screen_id = null; |
| 48 | 41 | |
| 49 | 42 | private function get_notices() { |
| 43 | + $notices = [ | |
| 44 | + new Elementor_Dev_Notice(), | |
| 45 | + ]; | |
| 46 | + | |
| 50 | 47 | /** |
| 51 | 48 | * Admin notices. |
| 52 | 49 | * |
| 53 | 50 | * Filters Elementor admin notices. |
| @@ -56,9 +53,9 @@ | ||
| 56 | 53 | * admin notice or to add new notices for Elementor add-ons. |
| 57 | 54 | * |
| 58 | 55 | * @param array $notices A list of notice classes. |
| 59 | 56 | */ |
| 60 | - $notices = apply_filters( 'elementor/core/admin/notices', [] ); | |
| 57 | + $notices = apply_filters( 'elementor/core/admin/notices', $notices ); | |
| 61 | 58 | |
| 62 | 59 | return $notices; |
| 63 | 60 | } |
| 64 | 61 | |
| @@ -98,9 +95,9 @@ | ||
| 98 | 95 | if ( ! current_user_can( 'update_plugins' ) ) { |
| 99 | 96 | return false; |
| 100 | 97 | } |
| 101 | 98 | |
| 102 | - if ( ! $this->is_elementor_admin_screen_with_system_info() ) { | |
| 99 | + if ( ! in_array( $this->current_screen_id, [ 'toplevel_page_elementor', 'edit-elementor_library', 'elementor_page_elementor-system-info', 'dashboard' ], true ) ) { | |
| 103 | 100 | return false; |
| 104 | 101 | } |
| 105 | 102 | |
| 106 | 103 | // Check for upgrades. |
| @@ -138,16 +135,16 @@ | ||
| 138 | 135 | $message = sprintf( |
| 139 | 136 | /* translators: 1: Details URL, 2: Accessibility text, 3: Version number, 4: Update URL, 5: Accessibility text. */ |
| 140 | 137 | __( '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 | 138 | esc_url( $details_url ), |
| 142 | - sprintf( | |
| 139 | + esc_attr( sprintf( | |
| 143 | 140 | /* translators: %s: Elementor version. */ |
| 144 | - esc_attr__( 'View Elementor version %s details', 'elementor' ), | |
| 141 | + __( 'View Elementor version %s details', 'elementor' ), | |
| 145 | 142 | $new_version |
| 146 | - ), | |
| 143 | + ) ), | |
| 147 | 144 | $new_version, |
| 148 | 145 | esc_url( $upgrade_url ), |
| 149 | - esc_attr__( 'Update Now', 'elementor' ) | |
| 146 | + esc_attr( esc_html__( 'Update Now', 'elementor' ) ) | |
| 150 | 147 | ); |
| 151 | 148 | |
| 152 | 149 | $options = [ |
| 153 | 150 | 'title' => esc_html__( 'Update Notification', 'elementor' ), |
| @@ -174,9 +171,9 @@ | ||
| 174 | 171 | if ( ! current_user_can( 'manage_options' ) ) { |
| 175 | 172 | return false; |
| 176 | 173 | } |
| 177 | 174 | |
| 178 | - if ( ! $this->is_elementor_admin_screen_with_system_info() ) { | |
| 175 | + if ( ! in_array( $this->current_screen_id, [ 'toplevel_page_elementor', 'edit-elementor_library', 'elementor_page_elementor-system-info', 'dashboard' ], true ) ) { | |
| 179 | 176 | return false; |
| 180 | 177 | } |
| 181 | 178 | |
| 182 | 179 | $notice_id = 'admin_notice_api_' . $admin_notice['notice_id']; |
| @@ -220,9 +217,9 @@ | ||
| 220 | 217 | // TODO: Skip for development env. |
| 221 | 218 | $optin_url = wp_nonce_url( add_query_arg( 'elementor_tracker', 'opt_into' ), 'opt_into' ); |
| 222 | 219 | $optout_url = wp_nonce_url( add_query_arg( 'elementor_tracker', 'opt_out' ), 'opt_out' ); |
| 223 | 220 | |
| 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' ); | |
| 221 | + $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' ); | |
| 225 | 222 | |
| 226 | 223 | /** |
| 227 | 224 | * Tracker admin description text. |
| 228 | 225 | * |
| @@ -236,11 +233,10 @@ | ||
| 236 | 233 | |
| 237 | 234 | $message = esc_html( $tracker_description_text ) . ' <a href="https://go.elementor.com/usage-data-tracking/" target="_blank">' . esc_html__( 'Learn more.', 'elementor' ) . '</a>'; |
| 238 | 235 | |
| 239 | 236 | $options = [ |
| 240 | - 'title' => esc_html__( 'Want to shape the future of web creation?', 'elementor' ), | |
| 237 | + 'title' => esc_html__( 'Love using Elementor?', 'elementor' ), | |
| 241 | 238 | 'description' => $message, |
| 242 | - 'dismissible' => false, | |
| 243 | 239 | 'button' => [ |
| 244 | 240 | 'text' => esc_html__( 'Sure! I\'d love to help', 'elementor' ), |
| 245 | 241 | 'url' => $optin_url, |
| 246 | 242 | 'type' => 'cta', |
| @@ -257,49 +253,8 @@ | ||
| 257 | 253 | |
| 258 | 254 | return true; |
| 259 | 255 | } |
| 260 | 256 | |
| 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 | 257 | private function notice_rate_us_feedback() { |
| 303 | 258 | $notice_id = 'rate_us_feedback'; |
| 304 | 259 | |
| 305 | 260 | if ( ! current_user_can( 'manage_options' ) ) { |
| @@ -316,9 +271,8 @@ | ||
| 316 | 271 | |
| 317 | 272 | $dismiss_url = add_query_arg( [ |
| 318 | 273 | 'action' => 'elementor_set_admin_notice_viewed', |
| 319 | 274 | 'notice_id' => esc_attr( $notice_id ), |
| 320 | - '_wpnonce' => wp_create_nonce( 'elementor_set_admin_notice_viewed' ), | |
| 321 | 275 | ], admin_url( 'admin-post.php' ) ); |
| 322 | 276 | |
| 323 | 277 | $options = [ |
| 324 | 278 | 'title' => esc_html__( 'Congrats!', 'elementor' ), |
| @@ -396,10 +350,10 @@ | ||
| 396 | 350 | } |
| 397 | 351 | |
| 398 | 352 | $experiments = Plugin::$instance->experiments; |
| 399 | 353 | $is_all_performance_features_active = ( |
| 400 | - $experiments->is_feature_active( 'e_font_icon_svg' ) && | |
| 401 | - $experiments->is_feature_active( 'e_optimized_markup' ) | |
| 354 | + $experiments->is_feature_active( 'e_element_cache' ) && | |
| 355 | + $experiments->is_feature_active( 'e_font_icon_svg' ) | |
| 402 | 356 | ); |
| 403 | 357 | |
| 404 | 358 | if ( $is_all_performance_features_active ) { |
| 405 | 359 | return false; |
| @@ -426,85 +380,51 @@ | ||
| 426 | 380 | |
| 427 | 381 | return true; |
| 428 | 382 | } |
| 429 | 383 | |
| 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 | - } | |
| 384 | + private function notice_site_mailer_promotion() { | |
| 385 | + $notice_id = 'site_mailer_promotion'; | |
| 433 | 386 | |
| 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() ) { | |
| 387 | + if ( | |
| 388 | + ! defined( 'WPFORMS_VERSION' ) | |
| 389 | + && ! defined( 'WPCF7_VERSION' ) | |
| 390 | + && ! defined( 'FLUENTFORM_VERSION' ) | |
| 391 | + && ! class_exists( '\GFCommon' ) | |
| 392 | + && ! class_exists( '\Ninja_Forms' ) | |
| 393 | + && ! function_exists( 'load_formidable_forms' ) | |
| 394 | + ) { | |
| 476 | 395 | return false; |
| 477 | 396 | } |
| 478 | 397 | |
| 479 | - if ( ! Manager::had_install_prior_to( self::LOCAL_GOOGLE_FONTS_NOTICE_MIN_VERSION ) ) { | |
| 398 | + if ( ! $this->is_elementor_page() && ! in_array( $this->current_screen_id, [ 'toplevel_page_elementor', 'edit-elementor_library', 'dashboard' ], true ) ) { | |
| 480 | 399 | return false; |
| 481 | 400 | } |
| 482 | 401 | |
| 483 | - if ( User::is_user_notice_viewed( self::LOCAL_GOOGLE_FONTS_DISABLED_NOTICE_ID ) ) { | |
| 402 | + if ( Utils::has_pro() || ! current_user_can( 'install_plugins' ) || User::is_user_notice_viewed( $notice_id ) ) { | |
| 484 | 403 | return false; |
| 485 | 404 | } |
| 486 | 405 | |
| 487 | - $is_local_gf_enabled = (bool) get_option( 'elementor_local_google_fonts', '0' ); | |
| 406 | + $plugin_file_path = 'site-mailer/site-mailer.php'; | |
| 407 | + $plugin_slug = 'site-mailer'; | |
| 488 | 408 | |
| 489 | - if ( $is_local_gf_enabled ) { | |
| 409 | + $cta_data = $this->get_plugin_cta_data( $plugin_slug, $plugin_file_path ); | |
| 410 | + if ( empty( $cta_data ) ) { | |
| 490 | 411 | return false; |
| 491 | 412 | } |
| 492 | 413 | |
| 493 | 414 | $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' => '', | |
| 415 | + 'title' => esc_html__( 'Ensure your form emails avoid the spam folder!', 'elementor' ), | |
| 416 | + 'description' => esc_html__( 'Use Site Mailer for improved email deliverability, detailed email logs, and an easy setup.', 'elementor' ), | |
| 417 | + 'id' => $notice_id, | |
| 418 | + 'type' => 'cta', | |
| 498 | 419 | 'button' => [ |
| 499 | - 'text' => esc_html__( 'Take me there', 'elementor' ), | |
| 500 | - 'url' => '../wp-admin/admin.php?page=elementor-settings#tab-performance', | |
| 501 | - 'new_tab' => false, | |
| 420 | + 'text' => $cta_data['text'], | |
| 421 | + 'url' => $cta_data['url'], | |
| 502 | 422 | 'type' => 'cta', |
| 503 | 423 | ], |
| 504 | 424 | 'button_secondary' => [ |
| 505 | 425 | 'text' => esc_html__( 'Learn more', 'elementor' ), |
| 506 | - 'url' => 'https://go.elementor.com/wp-dash-google-fonts-locally-notice/', | |
| 426 | + 'url' => 'https://go.elementor.com/sm-core-form/', | |
| 507 | 427 | 'new_tab' => true, |
| 508 | 428 | 'type' => 'cta', |
| 509 | 429 | ], |
| 510 | 430 | ]; |
| @@ -513,340 +433,73 @@ | ||
| 513 | 433 | |
| 514 | 434 | return true; |
| 515 | 435 | } |
| 516 | 436 | |
| 517 | - private function notice_ally_pages_promotion() { | |
| 518 | - global $pagenow; | |
| 519 | - $notice_id = 'ally_pages_promotion'; | |
| 437 | + private function is_elementor_page(): bool { | |
| 438 | + return 0 === strpos( $this->current_screen_id, 'elementor_page' ); | |
| 439 | + } | |
| 520 | 440 | |
| 521 | - if ( 'edit.php' !== $pagenow || empty( $_GET['post_type'] ) || 'page' !== $_GET['post_type'] ) { | |
| 441 | + private function get_plugin_cta_data( $plugin_slug, $plugin_file_path ) { | |
| 442 | + if ( is_plugin_active( $plugin_file_path ) ) { | |
| 522 | 443 | return false; |
| 523 | 444 | } |
| 524 | 445 | |
| 525 | - if ( ! current_user_can( 'manage_options' ) ) { | |
| 526 | - return false; | |
| 527 | - } | |
| 528 | - | |
| 529 | - if ( User::is_user_notice_viewed( $notice_id ) ) { | |
| 530 | - return false; | |
| 531 | - } | |
| 532 | - | |
| 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 ) { | |
| 541 | - return false; | |
| 542 | - } | |
| 543 | - | |
| 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 | - } | |
| 446 | + if ( $this->is_plugin_installed( $plugin_file_path ) ) { | |
| 447 | + $url = wp_nonce_url( 'plugins.php?action=activate&plugin=' . $plugin_file_path . '&plugin_status=all&paged=1&s', 'activate-plugin_' . $plugin_file_path ); | |
| 448 | + $cta_text = esc_html__( 'Activate Plugin', 'elementor' ); | |
| 568 | 449 | } 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 | - } | |
| 450 | + $url = wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=' . $plugin_slug ), 'install-plugin_' . $plugin_slug ); | |
| 451 | + $cta_text = esc_html__( 'Install Plugin', 'elementor' ); | |
| 591 | 452 | } |
| 592 | 453 | |
| 593 | - $options = [ | |
| 594 | - 'title' => esc_html__( 'Make sure your site has an accessibility statement page', 'elementor' ), | |
| 595 | - 'description' => $description, | |
| 596 | - 'id' => $notice_id, | |
| 597 | - 'type' => 'cta', | |
| 598 | - '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, | |
| 606 | - 'new_tab' => true, | |
| 607 | - 'type' => 'cta', | |
| 608 | - ], | |
| 454 | + return [ | |
| 455 | + 'url' => $url, | |
| 456 | + 'text' => $cta_text, | |
| 609 | 457 | ]; |
| 610 | - | |
| 611 | - $this->print_admin_notice( $options ); | |
| 612 | - | |
| 613 | - return true; | |
| 614 | 458 | } |
| 615 | 459 | |
| 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(); | |
| 460 | + private function notice_design_not_appearing() { | |
| 461 | + $installs_history = get_option( 'elementor_install_history', [] ); | |
| 462 | + $is_first_install = 1 === count( $installs_history ); | |
| 620 | 463 | |
| 621 | - if ( ! $has_forms && ! $has_woocommerce ) { | |
| 464 | + if ( $is_first_install || ! current_user_can( 'update_plugins' ) ) { | |
| 622 | 465 | return false; |
| 623 | 466 | } |
| 624 | 467 | |
| 625 | - if ( ! $this->is_elementor_page() && ! $this->is_elementor_admin_screen() ) { | |
| 626 | - return false; | |
| 468 | + $notice_id = 'design_not_appearing'; | |
| 469 | + $notice = User::get_user_notices()[ $notice_id ] ?? []; | |
| 470 | + $notice_version = $notice['meta']['version'] ?? null; | |
| 471 | + $is_version_changed = $this->get_elementor_version() !== $notice_version; | |
| 472 | + | |
| 473 | + if ( $is_version_changed ) { | |
| 474 | + User::set_user_notice( $notice_id, false, [ 'version' => $this->get_elementor_version() ] ); | |
| 627 | 475 | } |
| 628 | 476 | |
| 629 | - if ( ( Utils::has_pro() && ! $has_woocommerce ) || ! current_user_can( 'install_plugins' ) || User::is_user_notice_viewed( $notice_id ) ) { | |
| 477 | + if ( ! in_array( $this->current_screen_id, [ 'toplevel_page_elementor', 'edit-elementor_library', 'elementor_page_elementor-system-info', 'dashboard', 'update-core', 'plugins' ], true ) ) { | |
| 630 | 478 | return false; |
| 631 | 479 | } |
| 632 | 480 | |
| 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 ) { | |
| 481 | + if ( User::is_user_notice_viewed( $notice_id ) ) { | |
| 642 | 482 | return false; |
| 643 | 483 | } |
| 644 | 484 | |
| 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 | 485 | $options = [ |
| 751 | - 'title' => $title, | |
| 752 | - 'description' => $description, | |
| 486 | + 'title' => esc_html__( 'The version was updated successfully!', 'elementor' ), | |
| 487 | + 'description' => sprintf( | |
| 488 | + 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' ), | |
| 489 | + '<a href="https://go.elementor.com/wp-dash-changes-do-not-appear-online/" target="_blank">', | |
| 490 | + '</a>' | |
| 491 | + ), | |
| 753 | 492 | 'id' => $notice_id, |
| 754 | - 'type' => 'cta', | |
| 755 | - '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, | |
| 768 | - 'new_tab' => true, | |
| 769 | - 'type' => 'cta', | |
| 770 | - ], | |
| 771 | 493 | ]; |
| 772 | 494 | |
| 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 | - } | |
| 495 | + $excluded_pages = []; | |
| 496 | + $this->print_admin_notice( $options, $excluded_pages ); | |
| 778 | 497 | |
| 779 | - $this->print_admin_notice( $options ); | |
| 780 | - | |
| 781 | 498 | return true; |
| 782 | 499 | } |
| 783 | 500 | |
| 784 | - private function should_render_woocommerce_hint( $has_forms, $has_woocommerce ): bool { | |
| 785 | - if ( ! $has_forms && ! $has_woocommerce ) { | |
| 786 | - return false; | |
| 787 | - } | |
| 788 | - | |
| 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 ) { | |
| 798 | - return false; | |
| 799 | - } | |
| 800 | - | |
| 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&plugin=' . $plugin_file_path . '&plugin_status=all&paged=1&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 | - */ | |
| 501 | + // For testing purposes | |
| 849 | 502 | public function get_elementor_version() { |
| 850 | 503 | return ELEMENTOR_VERSION; |
| 851 | 504 | } |
| 852 | 505 | |
| @@ -856,16 +509,12 @@ | ||
| 856 | 509 | if ( 'upload' !== $this->current_screen_id ) { |
| 857 | 510 | return false; |
| 858 | 511 | } |
| 859 | 512 | |
| 860 | - if ( ! current_user_can( 'manage_options' ) ) { | |
| 513 | + if ( ! current_user_can( 'manage_options' ) || User::is_user_notice_viewed( $notice_id ) ) { | |
| 861 | 514 | return false; |
| 862 | 515 | } |
| 863 | 516 | |
| 864 | - if ( User::is_user_notice_viewed( $notice_id ) ) { | |
| 865 | - return false; | |
| 866 | - } | |
| 867 | - | |
| 868 | 517 | $attachments = new \WP_Query( [ |
| 869 | 518 | 'post_type' => 'attachment', |
| 870 | 519 | 'post_status' => 'any', |
| 871 | 520 | 'fields' => 'ids', |
| @@ -874,79 +523,26 @@ | ||
| 874 | 523 | if ( 1 > $attachments->found_posts ) { |
| 875 | 524 | return false; |
| 876 | 525 | } |
| 877 | 526 | |
| 527 | + $plugin_file_path = 'image-optimization/image-optimization.php'; | |
| 878 | 528 | $plugin_slug = 'image-optimization'; |
| 879 | - $plugin_file_path = 'image-optimization/image-optimization.php'; | |
| 880 | 529 | |
| 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 ); | |
| 530 | + $cta_data = $this->get_plugin_cta_data( $plugin_slug, $plugin_file_path ); | |
| 884 | 531 | |
| 885 | - if ( $is_active ) { | |
| 532 | + if ( empty( $cta_data ) ) { | |
| 886 | 533 | return false; |
| 887 | 534 | } |
| 888 | 535 | |
| 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 | 536 | $options = [ |
| 936 | - 'title' => esc_html__( 'Speed up your website with Image Optimizer', 'elementor' ), | |
| 937 | - 'description' => $description, | |
| 537 | + 'title' => esc_html__( 'Speed up your website with Image Optimizer by Elementor', 'elementor' ), | |
| 538 | + '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 | 539 | 'id' => $notice_id, |
| 939 | 540 | 'type' => 'cta', |
| 940 | - 'button' => [ | |
| 941 | - 'text' => $button_text, | |
| 942 | - 'url' => self::add_plg_campaign_data( $button_url, $campaign_data ), | |
| 541 | + 'button_secondary' => [ | |
| 542 | + 'text' => $cta_data['text'], | |
| 543 | + 'url' => $cta_data['url'], | |
| 943 | 544 | 'type' => 'cta', |
| 944 | - 'data' => [ | |
| 945 | - 'campaign' => $campaign_data['campaign'], | |
| 946 | - 'source' => $campaign_data['source'], | |
| 947 | - 'medium' => $campaign_data['medium'], | |
| 948 | - ], | |
| 949 | 545 | ], |
| 950 | 546 | ]; |
| 951 | 547 | |
| 952 | 548 | $this->print_admin_notice( $options ); |
| @@ -953,8 +549,14 @@ | ||
| 953 | 549 | |
| 954 | 550 | return true; |
| 955 | 551 | } |
| 956 | 552 | |
| 553 | + private function is_plugin_installed( $file_path ): bool { | |
| 554 | + $installed_plugins = get_plugins(); | |
| 555 | + | |
| 556 | + return isset( $installed_plugins[ $file_path ] ); | |
| 557 | + } | |
| 558 | + | |
| 957 | 559 | public function print_admin_notice( array $options, $exclude_pages = self::DEFAULT_EXCLUDED_PAGES ) { |
| 958 | 560 | global $pagenow; |
| 959 | 561 | |
| 960 | 562 | if ( in_array( $pagenow, $exclude_pages, true ) ) { |
| @@ -967,9 +569,9 @@ | ||
| 967 | 569 | 'description' => '', |
| 968 | 570 | 'classes' => [ 'notice', 'e-notice' ], // We include WP's default notice class so it will be properly handled by WP's js handler |
| 969 | 571 | 'type' => '', |
| 970 | 572 | 'dismissible' => true, |
| 971 | - 'icon' => 'eicon-elementor-circle', | |
| 573 | + 'icon' => 'eicon-elementor', | |
| 972 | 574 | 'button' => [], |
| 973 | 575 | 'button_secondary' => [], |
| 974 | 576 | ]; |
| 975 | 577 | |
| @@ -982,19 +584,12 @@ | ||
| 982 | 584 | if ( $options['type'] ) { |
| 983 | 585 | $notice_classes[] = 'e-notice--' . $options['type']; |
| 984 | 586 | } |
| 985 | 587 | |
| 986 | - $wrapper_attributes = [ | |
| 987 | - 'role' => 'region', | |
| 988 | - 'aria-label' => esc_html__( 'Elementor notice', 'elementor' ), | |
| 989 | - ]; | |
| 990 | - | |
| 991 | 588 | if ( $options['dismissible'] ) { |
| 992 | 589 | $label = esc_html__( 'Dismiss this notice.', 'elementor' ); |
| 993 | 590 | $notice_classes[] = 'e-notice--dismissible'; |
| 994 | 591 | $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 | 592 | } |
| 998 | 593 | |
| 999 | 594 | if ( $options['icon'] ) { |
| 1000 | 595 | $notice_classes[] = 'e-notice--extended'; |
| @@ -1000,17 +595,15 @@ | ||
| 1000 | 595 | $notice_classes[] = 'e-notice--extended'; |
| 1001 | 596 | $icon = '<div class="e-notice__icon-wrapper"><i class="' . esc_attr( $options['icon'] ) . '" aria-hidden="true"></i></div>'; |
| 1002 | 597 | } |
| 1003 | 598 | |
| 1004 | - $wrapper_attributes['class'] = $notice_classes; | |
| 599 | + $wrapper_attributes = [ | |
| 600 | + 'class' => $notice_classes, | |
| 601 | + ]; | |
| 1005 | 602 | |
| 1006 | 603 | if ( $options['id'] ) { |
| 1007 | 604 | $wrapper_attributes['data-notice_id'] = $options['id']; |
| 1008 | 605 | } |
| 1009 | - | |
| 1010 | - if ( ! empty( $options['source'] ) ) { | |
| 1011 | - $wrapper_attributes['data-source'] = $options['source']; | |
| 1012 | - } | |
| 1013 | 606 | ?> |
| 1014 | 607 | <div <?php Utils::print_html_attributes( $wrapper_attributes ); ?>> |
| 1015 | 608 | <?php echo $dismiss_button; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?> |
| 1016 | 609 | <div class="e-notice__aside"> |
| @@ -1027,9 +620,8 @@ | ||
| 1027 | 620 | |
| 1028 | 621 | <?php if ( ! empty( $options['button']['text'] ) || ! empty( $options['button_secondary']['text'] ) ) { ?> |
| 1029 | 622 | <div class="e-notice__actions"> |
| 1030 | 623 | <?php |
| 1031 | - $one_subscription = Hints::is_plugin_connected_to_one_subscription(); | |
| 1032 | 624 | foreach ( [ $options['button'], $options['button_secondary'] ] as $index => $button_settings ) { |
| 1033 | 625 | if ( empty( $button_settings['variant'] ) && $index ) { |
| 1034 | 626 | $button_settings['variant'] = 'outline'; |
| 1035 | 627 | } |
| @@ -1037,20 +629,8 @@ | ||
| 1037 | 629 | if ( empty( $button_settings['text'] ) ) { |
| 1038 | 630 | continue; |
| 1039 | 631 | } |
| 1040 | 632 | |
| 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 | 633 | $button = new Button( $button_settings ); |
| 1054 | 634 | $button->print_button(); |
| 1055 | 635 | } ?> |
| 1056 | 636 | </div> |
| @@ -1082,61 +662,8 @@ | ||
| 1082 | 662 | return; |
| 1083 | 663 | } |
| 1084 | 664 | } |
| 1085 | 665 | |
| 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 | 666 | /** |
| 1140 | 667 | * @since 2.9.0 |
| 1141 | 668 | * @access public |
| 1142 | 669 | */ |
| @@ -1141,10 +668,8 @@ | ||
| 1141 | 668 | * @access public |
| 1142 | 669 | */ |
| 1143 | 670 | public function __construct() { |
| 1144 | 671 | 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 | 672 | } |
| 1148 | 673 | |
| 1149 | 674 | /** |
| 1150 | 675 | * Get module name. |