laipower/wp-content/plugins/wp-mail-smtp/src/SiteHealth.php

181 lines
5.0 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace WPMailSMTP;
/**
* Class SiteHealth adds the plugin status and information to the WP Site Health admin page.
*
* @since 1.9.0
*/
class SiteHealth {
/**
* String of a badge color.
* Options: blue, green, red, orange, purple and gray.
*
* @see https://make.wordpress.org/core/2019/04/25/site-health-check-in-5-2/
*
* @since 1.9.0
*/
const BADGE_COLOR = 'blue';
/**
* Debug info plugin slug.
* This should be a plugin unique string, which will be used in the WP Site Health page,
* for the "info" tab and will present the plugin info section.
*
* @since 1.9.0
*/
const DEBUG_INFO_SLUG = 'wp_mail_smtp';
/**
* Translatable string for the plugin label.
*
* @since 1.9.0
*
* @return string
*/
public function get_label() {
return esc_html__( 'WP Mail SMTP', 'wp-mail-smtp' );
}
/**
* Initialize the site heath functionality.
*
* @since 1.9.0
*/
public function init() {
add_filter( 'site_status_tests', array( $this, 'register_site_status_tests' ) );
add_filter( 'debug_information', array( $this, 'register_debug_information' ) );
}
/**
* Register plugin WP site health tests.
* This will be displayed in the "Status" tab of the WP Site Health page.
*
* @since 1.9.0
*
* @param array $tests The array with all WP site health tests.
*
* @return array
*/
public function register_site_status_tests( $tests ) {
$tests['direct']['wp_mail_smtp_mailer_setup_complete'] = array(
'label' => esc_html__( 'Is WP Mail SMTP mailer setup complete?', 'wp-mail-smtp' ),
'test' => array( $this, 'mailer_setup_complete_test' ),
);
return $tests;
}
/**
* Register plugin WP Site Health debug information.
* This will be displayed in the "Info" tab of the WP Site Health page.
*
* @since 1.9.0
*
* @param array $debug_info Array of existing debug information.
*
* @return array
*/
public function register_debug_information( $debug_info ) {
$debug_notices = Debug::get();
$debug_info[ self::DEBUG_INFO_SLUG ] = array(
'label' => $this->get_label(),
'fields' => array(
'version' => array(
'label' => esc_html__( 'Version', 'wp-mail-smtp' ),
'value' => WPMS_PLUGIN_VER,
),
'license_key_type' => array(
'label' => esc_html__( 'License key type', 'wp-mail-smtp' ),
'value' => wp_mail_smtp()->get_license_type(),
),
'debug' => array(
'label' => esc_html__( 'Debug', 'wp-mail-smtp' ),
'value' => ! empty( $debug_notices ) ? implode( '. ', $debug_notices ) : esc_html__( 'No debug notices found.', 'wp-mail-smtp' ),
),
),
);
return $debug_info;
}
/**
* Perform the WP site health test for checking, if the mailer setup is complete.
*
* @since 1.9.0
*/
public function mailer_setup_complete_test() {
$mailer = Options::init()->get( 'mail', 'mailer' );
$mailer_complete = wp_mail_smtp()
->get_providers()
->get_mailer(
$mailer,
wp_mail_smtp()->get_processor()->get_phpmailer()
)->is_mailer_complete();
// The default mailer should be considered as a non-complete mailer.
if ( $mailer === 'mail' ) {
$mailer_complete = false;
}
$mailer_text = sprintf(
'%s: <strong>%s</strong>',
esc_html__( 'Current mailer', 'wp-mail-smtp' ),
esc_html( wp_mail_smtp()->get_providers()->get_options( $mailer )->get_title() )
);
$result = array(
'label' => esc_html__( 'WP Mail SMTP mailer setup is complete', 'wp-mail-smtp' ),
'status' => 'good',
'badge' => array(
'label' => $this->get_label(),
'color' => self::BADGE_COLOR,
),
'description' => sprintf(
'<p>%s</p><p>%s</p>',
$mailer_text,
esc_html__( 'The WP Mail SMTP plugin mailer setup is complete. You can send a test email, to make sure it\'s working properly.', 'wp-mail-smtp' )
),
'actions' => sprintf(
'<p><a href="%s">%s</a></p>',
esc_url( add_query_arg( 'tab', 'test', wp_mail_smtp()->get_admin()->get_admin_page_url() ) ),
esc_html__( 'Test email sending', 'wp-mail-smtp' )
),
'test' => 'wp_mail_smtp_mailer_setup_complete',
);
if ( $mailer === 'mail' ) {
$mailer_text .= sprintf( /* translators: %s - explanation why default mailer is not a valid mailer option. */
'<p>%s</p>',
esc_html__( 'You currently have the default mailer selected, which means that you havent set up SMTP yet.', 'wp-mail-smtp' )
);
}
if ( $mailer_complete === false ) {
$result['label'] = esc_html__( 'WP Mail SMTP mailer setup is incomplete', 'wp-mail-smtp' );
$result['status'] = 'recommended';
$result['badge']['color'] = 'orange';
$result['description'] = sprintf(
'<p>%s</p><p>%s</p>',
$mailer_text,
esc_html__( 'The WP Mail SMTP plugin mailer setup is incomplete. Please click on the link below to access plugin settings and configure the mailer.', 'wp-mail-smtp' )
);
$result['actions'] = sprintf(
'<p><a href="%s">%s</a></p>',
esc_url( wp_mail_smtp()->get_admin()->get_admin_page_url() ),
esc_html__( 'Configure mailer', 'wp-mail-smtp' )
);
}
return $result;
}
}