103 lines
2.3 KiB
PHP
103 lines
2.3 KiB
PHP
<?php
|
||
|
||
namespace WPMailSMTP\Admin;
|
||
|
||
/**
|
||
* WP Mail SMTP enhancements to admin pages to educate Lite users on what is available in WP Mail SMTP Pro.
|
||
*
|
||
* @since 2.3.0
|
||
*/
|
||
class Education {
|
||
|
||
/**
|
||
* The dismissed notice bar user meta key.
|
||
*
|
||
* @since 2.3.0
|
||
*/
|
||
const DISMISS_NOTICE_BAR_KEY = 'wp_mail_smtp_edu_notice_bar_dismissed';
|
||
|
||
/**
|
||
* Hooks.
|
||
*
|
||
* @since 2.3.0
|
||
*/
|
||
public function hooks() {
|
||
|
||
if ( apply_filters( 'wp_mail_smtp_admin_education_notice_bar', true ) ) {
|
||
add_action( 'admin_init', [ $this, 'notice_bar_init' ] );
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Notice bar init.
|
||
*
|
||
* @since 2.3.0
|
||
*/
|
||
public function notice_bar_init() {
|
||
|
||
add_action( 'wp_mail_smtp_admin_header_before', [ $this, 'notice_bar_display' ] );
|
||
add_action( 'wp_ajax_wp_mail_smtp_notice_bar_dismiss', [ $this, 'notice_bar_ajax_dismiss' ] );
|
||
}
|
||
|
||
/**
|
||
* Notice bar display message.
|
||
*
|
||
* @since 2.3.0
|
||
*/
|
||
public function notice_bar_display() {
|
||
|
||
// Bail if we're not on a plugin admin page.
|
||
if ( ! wp_mail_smtp()->get_admin()->is_admin_page() ) {
|
||
return;
|
||
}
|
||
|
||
$dismissed = get_user_meta( get_current_user_id(), self::DISMISS_NOTICE_BAR_KEY, true );
|
||
|
||
if ( ! empty( $dismissed ) ) {
|
||
return;
|
||
}
|
||
|
||
printf(
|
||
'<div id="wp-mail-smtp-notice-bar">
|
||
<div class="wp-amil-smtp-notice-bar-container">
|
||
<span class="wp-mail-smtp-notice-bar-message">%s</span>
|
||
<button type="button" class="dismiss" title="%s" />
|
||
</div>
|
||
</div>',
|
||
wp_kses(
|
||
sprintf( /* translators: %s - WPMailSMTP.com Upgrade page URL. */
|
||
__( 'You’re using WP Mail SMTP Lite. To unlock more features consider <a href="%s" target="_blank" rel="noopener noreferrer">upgrading to Pro</a>.', 'wp-mail-smtp' ),
|
||
wp_mail_smtp()->get_upgrade_link( [ 'medium' => 'notice-bar' ] )
|
||
),
|
||
[
|
||
'a' => [
|
||
'href' => [],
|
||
'rel' => [],
|
||
'target' => [],
|
||
],
|
||
]
|
||
),
|
||
esc_attr__( 'Dismiss this message.', 'wp-mail-smtp' )
|
||
);
|
||
}
|
||
|
||
/**
|
||
* Ajax handler for dismissing notices.
|
||
*
|
||
* @since 2.3.0
|
||
*/
|
||
public function notice_bar_ajax_dismiss() {
|
||
|
||
// Run a security check.
|
||
check_ajax_referer( 'wp-mail-smtp-admin', 'nonce' );
|
||
|
||
// Check for permissions.
|
||
if ( ! current_user_can( 'manage_options' ) ) {
|
||
wp_send_json_error();
|
||
}
|
||
|
||
update_user_meta( get_current_user_id(), self::DISMISS_NOTICE_BAR_KEY, time() );
|
||
wp_send_json_success();
|
||
}
|
||
}
|