PluginProbe
Elementor Website Builder – more than just a page builder / 3.4.8
Elementor Website Builder – more than just a page builder v3.4.8
4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 4.0.7 All 451 releases
← All changes | core/admin/admin-notices.php +118 -653 4.2.23.4.8 View file →
@@ -3,17 +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\Upgrade\Manager;
8 -use Elementor\Core\Utils\Hints;
9 -use Elementor\Core\Utils\Promotions\Filtered_Promotions_Manager;
10 7 use Elementor\Plugin;
11 -use Elementor\Settings;
12 8 use Elementor\Tracker;
13 9 use Elementor\User;
14 10 use Elementor\Utils;
15 11 use Elementor\Core\Admin\Notices\Base_Notice;
12 +use Elementor\Core\Admin\Notices\Elementor_Dev_Notice;
16 13
17 14 if ( ! defined( 'ABSPATH' ) ) {
18 15 exit; // Exit if accessed directly.
19 16 }
@@ -19,26 +16,18 @@
19 16 }
20 17
21 18 class Admin_Notices extends Module {
22 19
23 - 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 -
27 - const EXIT_EARLY_FOR_BACKWARD_COMPATIBILITY = false;
28 -
29 20 private $plain_notices = [
30 21 'api_notice',
31 22 'api_upgrade_plugin',
32 23 'tracker',
33 - 'tracker_last_update',
34 24 'rate_us_feedback',
25 + 'woocommerce_promote',
26 + 'cf7_promote',
27 + 'mc4wp_promote',
28 + 'popup_maker_promote',
35 29 'role_manager_promote',
36 - 'experiment_promotion',
37 - 'site_mailer_promotion',
38 - 'plugin_image_optimization',
39 - 'ally_pages_promotion',
40 - self::LOCAL_GOOGLE_FONTS_DISABLED_NOTICE_ID,
41 30 ];
42 31
43 32 private $elementor_pages_count = null;
44 33
@@ -46,8 +35,12 @@
46 35
47 36 private $current_screen_id = null;
48 37
49 38 private function get_notices() {
39 + $notices = [
40 + new Elementor_Dev_Notice(),
41 + ];
42 +
50 43 /**
51 44 * Admin notices.
52 45 *
53 46 * Filters Elementor admin notices.
@@ -52,13 +45,13 @@
52 45 *
53 46 * Filters Elementor admin notices.
54 47 *
55 48 * This hook can be used by external developers to manage existing
56 - * admin notice or to add new notices for Elementor add-ons.
49 + * admin notice or to add new notices for Elementor addons.
57 50 *
58 51 * @param array $notices A list of notice classes.
59 52 */
60 - $notices = apply_filters( 'elementor/core/admin/notices', [] );
53 + $notices = apply_filters( 'elementor/core/admin/notices', $notices );
61 54
62 55 return $notices;
63 56 }
64 57
@@ -72,9 +65,8 @@
72 65
73 66 private function get_elementor_pages_count() {
74 67 if ( null === $this->elementor_pages_count ) {
75 68 $elementor_pages = new \WP_Query( [
76 - 'no_found_rows' => true,
77 69 'post_type' => 'any',
78 70 'post_status' => 'publish',
79 71 'fields' => 'ids',
80 72 'update_post_meta_cache' => false,
@@ -98,13 +90,13 @@
98 90 if ( ! current_user_can( 'update_plugins' ) ) {
99 91 return false;
100 92 }
101 93
102 - if ( ! $this->is_elementor_admin_screen_with_system_info() ) {
94 + if ( ! in_array( $this->current_screen_id, [ 'toplevel_page_elementor', 'edit-elementor_library', 'elementor_page_elementor-system-info', 'dashboard' ], true ) ) {
103 95 return false;
104 96 }
105 97
106 - // Check for upgrades.
98 + // Check if have any upgrades.
107 99 $update_plugins = get_site_transient( 'update_plugins' );
108 100
109 101 $has_remote_update_package = ! ( empty( $update_plugins ) || empty( $update_plugins->response[ ELEMENTOR_PLUGIN_BASE ] ) || empty( $update_plugins->response[ ELEMENTOR_PLUGIN_BASE ]->package ) );
110 102
@@ -124,9 +116,9 @@
124 116
125 117 $new_version = $upgrade_notice['version'];
126 118 }
127 119
128 - // Check if upgrade messages should be shown.
120 + // Check if have upgrade notices to show.
129 121 if ( version_compare( ELEMENTOR_VERSION, $upgrade_notice['version'], '>=' ) ) {
130 122 return false;
131 123 }
132 124
@@ -138,16 +130,16 @@
138 130 $message = sprintf(
139 131 /* translators: 1: Details URL, 2: Accessibility text, 3: Version number, 4: Update URL, 5: Accessibility text. */
140 132 __( '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 133 esc_url( $details_url ),
142 - sprintf(
134 + esc_attr( sprintf(
143 135 /* translators: %s: Elementor version. */
144 - esc_attr__( 'View Elementor version %s details', 'elementor' ),
136 + __( 'View Elementor version %s details', 'elementor' ),
145 137 $new_version
146 - ),
138 + ) ),
147 139 $new_version,
148 140 esc_url( $upgrade_url ),
149 - esc_attr__( 'Update Now', 'elementor' )
141 + esc_attr( esc_html__( 'Update Elementor Now', 'elementor' ) )
150 142 );
151 143
152 144 $options = [
153 145 'title' => esc_html__( 'Update Notification', 'elementor' ),
@@ -174,9 +166,9 @@
174 166 if ( ! current_user_can( 'manage_options' ) ) {
175 167 return false;
176 168 }
177 169
178 - if ( ! $this->is_elementor_admin_screen_with_system_info() ) {
170 + if ( ! in_array( $this->current_screen_id, [ 'toplevel_page_elementor', 'edit-elementor_library', 'elementor_page_elementor-system-info', 'dashboard' ], true ) ) {
179 171 return false;
180 172 }
181 173
182 174 $notice_id = 'admin_notice_api_' . $admin_notice['notice_id'];
@@ -220,9 +212,9 @@
220 212 // TODO: Skip for development env.
221 213 $optin_url = wp_nonce_url( add_query_arg( 'elementor_tracker', 'opt_into' ), 'opt_into' );
222 214 $optout_url = wp_nonce_url( add_query_arg( 'elementor_tracker', 'opt_out' ), 'opt_out' );
223 215
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' );
216 + $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 217
226 218 /**
227 219 * Tracker admin description text.
228 220 *
@@ -236,11 +228,10 @@
236 228
237 229 $message = esc_html( $tracker_description_text ) . ' <a href="https://go.elementor.com/usage-data-tracking/" target="_blank">' . esc_html__( 'Learn more.', 'elementor' ) . '</a>';
238 230
239 231 $options = [
240 - 'title' => esc_html__( 'Want to shape the future of web creation?', 'elementor' ),
232 + 'title' => esc_html__( 'Love using Elementor?', 'elementor' ),
241 233 'description' => $message,
242 - 'dismissible' => false,
243 234 'button' => [
244 235 'text' => esc_html__( 'Sure! I\'d love to help', 'elementor' ),
245 236 'url' => $optin_url,
246 237 'type' => 'cta',
@@ -257,49 +248,8 @@
257 248
258 249 return true;
259 250 }
260 251
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 252 private function notice_rate_us_feedback() {
303 253 $notice_id = 'rate_us_feedback';
304 254
305 255 if ( ! current_user_can( 'manage_options' ) ) {
@@ -316,14 +266,14 @@
316 266
317 267 $dismiss_url = add_query_arg( [
318 268 'action' => 'elementor_set_admin_notice_viewed',
319 269 'notice_id' => esc_attr( $notice_id ),
320 - '_wpnonce' => wp_create_nonce( 'elementor_set_admin_notice_viewed' ),
321 270 ], admin_url( 'admin-post.php' ) );
322 271
323 272 $options = [
324 273 'title' => esc_html__( 'Congrats!', 'elementor' ),
325 - 'description' => esc_html__( 'You created over 10 pages with Elementor. Great job! If you can spare a minute, please help us by leaving a five star review on WordPress.org.', 'elementor' ),
274 + 'description' => esc_html__( 'You created over 10 pages with Elementor. Great job! If you can spare a minute,
275 + please help us by leaving a five star review on WordPress.org.', 'elementor' ),
326 276 'id' => $notice_id,
327 277 'button' => [
328 278 'text' => esc_html__( 'Happy To Help', 'elementor' ),
329 279 'url' => 'https://go.elementor.com/admin-review/',
@@ -343,168 +293,80 @@
343 293
344 294 return true;
345 295 }
346 296
347 - private function notice_role_manager_promote() {
348 - $notice_id = 'role_manager_promote';
297 + private function notice_woocommerce_promote() {
298 + $notice_id = 'woocommerce_promote';
349 299
350 - if ( Utils::has_pro() ) {
300 + if ( Utils::has_pro() || ! function_exists( 'WC' ) ) {
351 301 return false;
352 302 }
353 303
354 - if ( ! current_user_can( 'manage_options' ) ) {
304 + if ( ! current_user_can( 'install_plugins' ) ) {
355 305 return false;
356 306 }
357 307
358 - if ( 'elementor_page_elementor-role-manager' !== $this->current_screen_id || User::is_user_notice_viewed( $notice_id ) ) {
308 + if ( ! in_array( $this->current_screen_id, [ 'edit-product', 'woocommerce_page_wc-settings' ], true ) || User::is_user_notice_viewed( $notice_id ) ) {
359 309 return false;
360 310 }
361 311
362 - $users = new \WP_User_Query( [
363 - 'fields' => 'ID',
364 - 'number' => 10,
365 - ] );
312 + if ( strtotime( '2019-08-01' ) > $this->get_install_time() ) {
313 + return false;
314 + }
366 315
367 - if ( 5 > $users->get_total() ) {
316 + if ( strtotime( '+24 hours', $this->get_install_time() ) > time() ) {
368 317 return false;
369 318 }
370 319
371 320 $options = [
372 - 'title' => esc_html__( 'Managing a multi-user site?', 'elementor' ),
373 - 'description' => esc_html__( 'With Elementor Pro, you can control user access and make sure no one messes up your design.', 'elementor' ),
321 + 'title' => esc_html__( 'Using WooCommerce?', 'elementor' ),
322 + 'description' => esc_html__( 'With Elementor Pro’s WooCommerce Builder, you’ll be able to design your store without coding!', 'elementor' ),
374 323 'id' => $notice_id,
375 324
376 325 'button' => [
377 326 'text' => esc_html__( 'Learn More', 'elementor' ),
378 - 'url' => 'https://go.elementor.com/plugin-promotion-role-manager/',
327 + 'url' => 'https://go.elementor.com/plugin-promotion-woocommerce/',
379 328 'new_tab' => true,
380 329 'type' => 'cta',
381 330 ],
382 331 ];
383 332
384 - $options = Filtered_Promotions_Manager::get_filtered_promotion_data( $options, 'core/admin/notice_role_manager_promote', 'button', 'url' );
385 -
386 333 $this->print_admin_notice( $options );
387 334
388 335 return true;
389 336 }
390 337
391 - private function notice_experiment_promotion() {
392 - $notice_id = 'experiment_promotion';
338 + private function notice_cf7_promote() {
339 + $notice_id = 'cf7_promote';
393 340
394 - if ( ! current_user_can( 'manage_options' ) || User::is_user_notice_viewed( $notice_id ) ) {
341 + if ( Utils::has_pro() || ! defined( 'WPCF7_VERSION' ) ) {
395 342 return false;
396 343 }
397 344
398 - $experiments = Plugin::$instance->experiments;
399 - $is_all_performance_features_active = (
400 - $experiments->is_feature_active( 'e_font_icon_svg' ) &&
401 - $experiments->is_feature_active( 'e_optimized_markup' )
402 - );
403 -
404 - if ( $is_all_performance_features_active ) {
345 + if ( ! current_user_can( 'install_plugins' ) ) {
405 346 return false;
406 347 }
407 348
408 - $options = [
409 - 'title' => esc_html__( 'Improve your site’s performance score.', 'elementor' ),
410 - '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' ),
411 - 'id' => $notice_id,
412 - 'button' => [
413 - 'text' => esc_html__( 'Try it out', 'elementor' ),
414 - 'url' => Settings::get_settings_tab_url( 'experiments' ),
415 - 'type' => 'cta',
416 - ],
417 - 'button_secondary' => [
418 - 'text' => esc_html__( 'Learn more', 'elementor' ),
419 - 'url' => 'https://go.elementor.com/wp-dash-experiment-promotion/',
420 - 'new_tab' => true,
421 - 'type' => 'cta',
422 - ],
423 - ];
424 -
425 - $this->print_admin_notice( $options );
426 -
427 - return true;
428 - }
429 -
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 - }
433 -
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() ) {
349 + if ( ! in_array( $this->current_screen_id, [ 'toplevel_page_wpcf7', 'contact_page_wpcf7-integration' ], true ) || User::is_user_notice_viewed( $notice_id ) ) {
476 350 return false;
477 351 }
478 352
479 - if ( ! Manager::had_install_prior_to( self::LOCAL_GOOGLE_FONTS_NOTICE_MIN_VERSION ) ) {
353 + if ( strtotime( '2019-08-01' ) > $this->get_install_time() ) {
480 354 return false;
481 355 }
482 356
483 - if ( User::is_user_notice_viewed( self::LOCAL_GOOGLE_FONTS_DISABLED_NOTICE_ID ) ) {
357 + if ( strtotime( '+24 hours', $this->get_install_time() ) > time() ) {
484 358 return false;
485 359 }
486 360
487 - $is_local_gf_enabled = (bool) get_option( 'elementor_local_google_fonts', '0' );
361 + $options = [
362 + 'title' => esc_html__( 'Using Elementor & Contact Form 7?', 'elementor' ),
363 + 'description' => esc_html__( 'Try out Elementor Pro and design your forms visually with one powerful tool.', 'elementor' ),
488 364
489 - if ( $is_local_gf_enabled ) {
490 - return false;
491 - }
492 -
493 - $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' => '',
365 + 'id' => $notice_id,
498 366 'button' => [
499 - 'text' => esc_html__( 'Take me there', 'elementor' ),
500 - 'url' => '../wp-admin/admin.php?page=elementor-settings#tab-performance',
501 - 'new_tab' => false,
502 - 'type' => 'cta',
503 - ],
504 - 'button_secondary' => [
505 - 'text' => esc_html__( 'Learn more', 'elementor' ),
506 - 'url' => 'https://go.elementor.com/wp-dash-google-fonts-locally-notice/',
367 + 'text' => esc_html__( 'Learn More', 'elementor' ),
368 + 'url' => 'https://go.elementor.com/plugin-promotion-contactform7/',
507 369 'new_tab' => true,
508 370 'type' => 'cta',
509 371 ],
510 372 ];
@@ -513,97 +375,40 @@
513 375
514 376 return true;
515 377 }
516 378
517 - private function notice_ally_pages_promotion() {
518 - global $pagenow;
519 - $notice_id = 'ally_pages_promotion';
379 + private function notice_mc4wp_promote() {
380 + $notice_id = 'mc4wp_promote';
520 381
521 - if ( 'edit.php' !== $pagenow || empty( $_GET['post_type'] ) || 'page' !== $_GET['post_type'] ) {
382 + if ( Utils::has_pro() || ! defined( 'MC4WP_VERSION' ) ) {
522 383 return false;
523 384 }
524 385
525 - if ( ! current_user_can( 'manage_options' ) ) {
386 + if ( ! current_user_can( 'install_plugins' ) ) {
526 387 return false;
527 388 }
528 389
529 - if ( User::is_user_notice_viewed( $notice_id ) ) {
390 + if ( ! in_array( $this->current_screen_id, [ 'toplevel_page_mailchimp-for-wp', 'mc4wp_page_mailchimp-for-wp-forms', 'mc4wp_page_mailchimp-for-wp-integrations', 'mc4wp_page_mailchimp-for-wp-other', 'mc4wp_page_mailchimp-for-wp-extensions' ], true ) || User::is_user_notice_viewed( $notice_id ) ) {
530 391 return false;
531 392 }
532 393
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 ) {
394 + if ( strtotime( '2019-08-01' ) > $this->get_install_time() ) {
541 395 return false;
542 396 }
543 397
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 - }
398 + if ( strtotime( '+24 hours', $this->get_install_time() ) > time() ) {
399 + return false;
591 400 }
592 401
593 402 $options = [
594 - 'title' => esc_html__( 'Make sure your site has an accessibility statement page', 'elementor' ),
595 - 'description' => $description,
403 + 'title' => esc_html__( 'Want to design better MailChimp forms?', 'elementor' ),
404 + 'description' => esc_html__( 'Use Elementor Pro and enjoy unlimited integrations, visual design, templates and more.', 'elementor' ),
405 + 'dismissible' => true,
596 406 'id' => $notice_id,
597 - 'type' => 'cta',
407 +
598 408 '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,
409 + 'text' => esc_html__( 'Learn More', 'elementor' ),
410 + 'url' => 'https://go.elementor.com/plugin-promotion-mc4wp/',
606 411 'new_tab' => true,
607 412 'type' => 'cta',
608 413 ],
609 414 ];
@@ -612,341 +417,84 @@
612 417
613 418 return true;
614 419 }
615 420
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();
421 + private function notice_popup_maker_promote() {
422 + $notice_id = 'popup_maker_promote';
620 423
621 - if ( ! $has_forms && ! $has_woocommerce ) {
424 + if ( Utils::has_pro() || ! class_exists( 'Popup_Maker' ) ) {
622 425 return false;
623 426 }
624 427
625 - if ( ! $this->is_elementor_page() && ! $this->is_elementor_admin_screen() ) {
428 + if ( ! current_user_can( 'install_plugins' ) ) {
626 429 return false;
627 430 }
628 431
629 - if ( ( Utils::has_pro() && ! $has_woocommerce ) || ! current_user_can( 'install_plugins' ) || User::is_user_notice_viewed( $notice_id ) ) {
432 + if ( ! in_array( $this->current_screen_id, [ 'edit-popup', 'popup_page_pum-settings' ], true ) || User::is_user_notice_viewed( $notice_id ) ) {
630 433 return false;
631 434 }
632 435
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 ) {
436 + if ( strtotime( '2019-08-01' ) > $this->get_install_time() ) {
642 437 return false;
643 438 }
644 439
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 - }
440 + if ( strtotime( '+24 hours', $this->get_install_time() ) > time() ) {
441 + return false;
744 442 }
745 443
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 444 $options = [
751 - 'title' => $title,
752 - 'description' => $description,
445 + 'title' => esc_html__( 'Using popups on your site?', 'elementor' ),
446 + 'description' => esc_html__( 'Build outstanding popups using Elementor Pro and get more leads, sales and subscribers.', 'elementor' ),
447 + 'dismissible' => true,
753 448 'id' => $notice_id,
754 - 'type' => 'cta',
449 +
755 450 '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,
451 + 'text' => esc_html__( 'Learn More', 'elementor' ),
452 + 'url' => 'https://go.elementor.com/plugin-promotion-popupmaker/',
768 453 'new_tab' => true,
769 454 'type' => 'cta',
770 455 ],
771 456 ];
772 457
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 - }
778 -
779 458 $this->print_admin_notice( $options );
780 459
781 460 return true;
782 461 }
783 462
784 - private function should_render_woocommerce_hint( $has_forms, $has_woocommerce ): bool {
785 - if ( ! $has_forms && ! $has_woocommerce ) {
786 - return false;
787 - }
463 + private function notice_role_manager_promote() {
464 + $notice_id = 'role_manager_promote';
788 465
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 ) {
466 + if ( Utils::has_pro() ) {
798 467 return false;
799 468 }
800 469
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&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 - 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 - */
849 - public function get_elementor_version() {
850 - return ELEMENTOR_VERSION;
851 - }
852 -
853 - private function notice_plugin_image_optimization() {
854 - $notice_id = 'plugin_image_optimization';
855 -
856 - if ( 'upload' !== $this->current_screen_id ) {
857 - return false;
858 - }
859 -
860 470 if ( ! current_user_can( 'manage_options' ) ) {
861 471 return false;
862 472 }
863 473
864 - if ( User::is_user_notice_viewed( $notice_id ) ) {
474 + if ( 'elementor_page_elementor-role-manager' !== $this->current_screen_id || User::is_user_notice_viewed( $notice_id ) ) {
865 475 return false;
866 476 }
867 477
868 - $attachments = new \WP_Query( [
869 - 'post_type' => 'attachment',
870 - 'post_status' => 'any',
871 - 'fields' => 'ids',
478 + $users = new \WP_User_Query( [
479 + 'fields' => 'ID',
480 + 'number' => 10,
872 481 ] );
873 482
874 - if ( 1 > $attachments->found_posts ) {
483 + if ( 5 > $users->get_total() ) {
875 484 return false;
876 485 }
877 486
878 - $plugin_slug = 'image-optimization';
879 - $plugin_file_path = 'image-optimization/image-optimization.php';
880 -
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 );
884 -
885 - if ( $is_active ) {
886 - return false;
887 - }
888 -
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 487 $options = [
936 - 'title' => esc_html__( 'Speed up your website with Image Optimization', 'elementor' ),
937 - 'description' => $description,
488 + 'title' => esc_html__( 'Managing a multi-user site?', 'elementor' ),
489 + 'description' => esc_html__( 'With Elementor Pro, you can control user access and make sure no one messes up your design.', 'elementor' ),
938 490 'id' => $notice_id,
939 - 'type' => 'cta',
491 +
940 492 'button' => [
941 - 'text' => $button_text,
942 - 'url' => self::add_plg_campaign_data( $button_url, $campaign_data ),
493 + 'text' => esc_html__( 'Learn More', 'elementor' ),
494 + 'url' => 'https://go.elementor.com/plugin-promotion-role-manager/',
495 + 'new_tab' => true,
943 496 'type' => 'cta',
944 - 'data' => [
945 - 'campaign' => $campaign_data['campaign'],
946 - 'source' => $campaign_data['source'],
947 - 'medium' => $campaign_data['medium'],
948 - ],
949 497 ],
950 498 ];
951 499
952 500 $this->print_admin_notice( $options );
@@ -953,15 +501,9 @@
953 501
954 502 return true;
955 503 }
956 504
957 - public function print_admin_notice( array $options, $exclude_pages = self::DEFAULT_EXCLUDED_PAGES ) {
958 - global $pagenow;
959 -
960 - if ( in_array( $pagenow, $exclude_pages, true ) ) {
961 - return;
962 - }
963 -
505 + public function print_admin_notice( array $options ) {
964 506 $default_options = [
965 507 'id' => null,
966 508 'title' => '',
967 509 'description' => '',
@@ -967,9 +509,9 @@
967 509 'description' => '',
968 510 'classes' => [ 'notice', 'e-notice' ], // We include WP's default notice class so it will be properly handled by WP's js handler
969 511 'type' => '',
970 512 'dismissible' => true,
971 - 'icon' => 'eicon-elementor-circle',
513 + 'icon' => 'eicon-elementor',
972 514 'button' => [],
973 515 'button_secondary' => [],
974 516 ];
975 517
@@ -982,19 +524,12 @@
982 524 if ( $options['type'] ) {
983 525 $notice_classes[] = 'e-notice--' . $options['type'];
984 526 }
985 527
986 - $wrapper_attributes = [
987 - 'role' => 'region',
988 - 'aria-label' => esc_html__( 'Elementor notice', 'elementor' ),
989 - ];
990 -
991 528 if ( $options['dismissible'] ) {
992 - $label = esc_html__( 'Dismiss this notice.', 'elementor' );
529 + $label = esc_html__( 'Dismiss', 'elementor' );
993 530 $notice_classes[] = 'e-notice--dismissible';
994 531 $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 532 }
998 533
999 534 if ( $options['icon'] ) {
1000 535 $notice_classes[] = 'e-notice--extended';
@@ -1000,17 +535,15 @@
1000 535 $notice_classes[] = 'e-notice--extended';
1001 536 $icon = '<div class="e-notice__icon-wrapper"><i class="' . esc_attr( $options['icon'] ) . '" aria-hidden="true"></i></div>';
1002 537 }
1003 538
1004 - $wrapper_attributes['class'] = $notice_classes;
539 + $wrapper_attributes = [
540 + 'class' => $notice_classes,
541 + ];
1005 542
1006 543 if ( $options['id'] ) {
1007 544 $wrapper_attributes['data-notice_id'] = $options['id'];
1008 545 }
1009 -
1010 - if ( ! empty( $options['source'] ) ) {
1011 - $wrapper_attributes['data-source'] = $options['source'];
1012 - }
1013 546 ?>
1014 547 <div <?php Utils::print_html_attributes( $wrapper_attributes ); ?>>
1015 548 <?php echo $dismiss_button; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
1016 549 <div class="e-notice__aside">
@@ -1016,49 +549,36 @@
1016 549 <div class="e-notice__aside">
1017 550 <?php echo $icon; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
1018 551 </div>
1019 552 <div class="e-notice__content">
1020 - <?php if ( $options['title'] ) { ?>
1021 - <h3><?php echo wp_kses_post( $options['title'] ); ?></h3>
1022 - <?php } ?>
553 + <?php if ( $options['title'] ) { ?>
554 + <h3><?php echo wp_kses_post( $options['title'] ); ?></h3>
555 + <?php } ?>
1023 556
1024 - <?php if ( $options['description'] ) { ?>
1025 - <p><?php echo wp_kses_post( $options['description'] ); ?></p>
1026 - <?php } ?>
557 + <?php if ( $options['description'] ) { ?>
558 + <p><?php echo wp_kses_post( $options['description'] ); ?></p>
559 + <?php } ?>
1027 560
1028 - <?php if ( ! empty( $options['button']['text'] ) || ! empty( $options['button_secondary']['text'] ) ) { ?>
1029 - <div class="e-notice__actions">
1030 - <?php
1031 - $one_subscription = Hints::is_plugin_connected_to_one_subscription();
1032 - foreach ( [ $options['button'], $options['button_secondary'] ] as $index => $button_settings ) {
1033 - if ( empty( $button_settings['variant'] ) && $index ) {
1034 - $button_settings['variant'] = 'outline';
1035 - }
561 + <?php if ( ! empty( $options['button']['text'] ) || ! empty( $options['button_secondary']['text'] ) ) { ?>
562 + <div class="e-notice__actions">
563 + <?php
564 + foreach ( [ $options['button'], $options['button_secondary'] ] as $index => $button_settings ) {
565 + if ( empty( $button_settings['variant'] ) && $index ) {
566 + $button_settings['variant'] = 'outline';
567 + }
1036 568
1037 - if ( empty( $button_settings['text'] ) ) {
1038 - continue;
1039 - }
569 + if ( empty( $button_settings['text'] ) ) {
570 + continue;
571 + }
1040 572
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 - $button = new Button( $button_settings );
1054 - $button->print_button();
1055 - } ?>
1056 - </div>
1057 - <?php } ?>
573 + $button = new Button( $button_settings );
574 + $button->print_button();
575 + } ?>
576 + </div>
577 + <?php } ?>
1058 578 </div>
1059 579 </div>
1060 - <?php }
580 + <?php }
1061 581
1062 582 public function admin_notices() {
1063 583 $this->install_time = Plugin::$instance->get_install_time();
1064 584 $this->current_screen_id = get_current_screen()->id;
@@ -1082,61 +602,8 @@
1082 602 return;
1083 603 }
1084 604 }
1085 605
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 606 /**
1140 607 * @since 2.9.0
1141 608 * @access public
1142 609 */
@@ -1141,10 +608,8 @@
1141 608 * @access public
1142 609 */
1143 610 public function __construct() {
1144 611 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 612 }
1148 613
1149 614 /**
1150 615 * Get module name.