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