106 lines
2.5 KiB
PHP
106 lines
2.5 KiB
PHP
<?php
|
|
/**
|
|
* WPSEO plugin file.
|
|
*
|
|
* @package WPSEO\Admin
|
|
*/
|
|
|
|
/**
|
|
* Handles the Gutenberg Compatibility notification showing and hiding.
|
|
*/
|
|
class WPSEO_Admin_Gutenberg_Compatibility_Notification implements WPSEO_WordPress_Integration {
|
|
|
|
/**
|
|
* Notification ID to use.
|
|
*
|
|
* @var string
|
|
*/
|
|
private $notification_id = 'wpseo-outdated-gutenberg-plugin';
|
|
|
|
/**
|
|
* Instance of gutenberg compatibility checker.
|
|
*
|
|
* @var WPSEO_Gutenberg_Compatibility
|
|
*/
|
|
protected $compatibility_checker;
|
|
|
|
/**
|
|
* Instance of Yoast Notification Center.
|
|
*
|
|
* @var Yoast_Notification_Center
|
|
*/
|
|
protected $notification_center;
|
|
|
|
/**
|
|
* WPSEO_Admin_Gutenberg_Compatibility_Notification constructor.
|
|
*/
|
|
public function __construct() {
|
|
$this->compatibility_checker = new WPSEO_Gutenberg_Compatibility();
|
|
$this->notification_center = Yoast_Notification_Center::get();
|
|
}
|
|
|
|
/**
|
|
* Registers all hooks to WordPress.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function register_hooks() {
|
|
add_action( 'admin_init', [ $this, 'manage_notification' ] );
|
|
}
|
|
|
|
/**
|
|
* Manages if the notification should be shown or removed.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function manage_notification() {
|
|
/**
|
|
* Filter: 'yoast_display_gutenberg_compat_notification' - Allows developer to disable the Gutenberg compatibility
|
|
* notification.
|
|
*
|
|
* @api bool
|
|
*/
|
|
$display_notification = apply_filters( 'yoast_display_gutenberg_compat_notification', true );
|
|
|
|
if (
|
|
! $this->compatibility_checker->is_installed()
|
|
|| $this->compatibility_checker->is_fully_compatible()
|
|
|| ! $display_notification
|
|
) {
|
|
$this->notification_center->remove_notification_by_id( $this->notification_id );
|
|
|
|
return;
|
|
}
|
|
|
|
$this->add_notification();
|
|
}
|
|
|
|
/**
|
|
* Adds the notification to the notificaton center.
|
|
*
|
|
* @return void
|
|
*/
|
|
protected function add_notification() {
|
|
$level = $this->compatibility_checker->is_below_minimum() ? Yoast_Notification::ERROR : Yoast_Notification::WARNING;
|
|
|
|
$message = sprintf(
|
|
/* translators: %1$s expands to Yoast SEO, %2$s expands to the installed version, %3$s expands to Gutenberg */
|
|
__( '%1$s detected you are using version %2$s of %3$s, please update to the latest version to prevent compatibility issues.', 'wordpress-seo' ),
|
|
'Yoast SEO',
|
|
$this->compatibility_checker->get_installed_version(),
|
|
'Gutenberg'
|
|
);
|
|
|
|
$notification = new Yoast_Notification(
|
|
$message,
|
|
[
|
|
'id' => $this->notification_id,
|
|
'type' => $level,
|
|
'priority' => 1,
|
|
]
|
|
);
|
|
|
|
$this->notification_center->add_notification( $notification );
|
|
}
|
|
}
|