automatewoo/includes/Notifications/SystemChecks.php
fei-source 47d3c9a8b6 Update to v6.2.2
Source: GrootMade/Festinger Vault
2026-03-15 08:31:15 +08:00

124 lines
2.4 KiB
PHP

<?php
namespace AutomateWoo\Notifications;
use Automattic\WooCommerce\Admin\Notes\Note;
use Automattic\WooCommerce\Admin\Notes\NoteTraits;
use AutomateWoo\Admin;
use AutomateWoo\SystemChecks\ActionSchedulerJobsRunning;
use AutomateWoo\SystemChecks\DatabaseTablesExist;
defined( 'ABSPATH' ) || exit;
/**
* Class to run system checks periodically and add a notification if any fail
*
* @since 5.8.5
*
* @package AutomateWoo\Notifications
*/
class SystemChecks extends AbstractNotification {
use NoteTraits;
const NOTE_NAME = 'automatewoo-system-checks';
/**
* An array of all system check classes to run.
*
* @var array
*/
private $system_checks;
/**
* When to process this notification.
*
* @return string
*/
public function notification_type(): string {
return Notifications::ACTIVATION_OR_UPDATE;
}
/**
* Get the title of the notification.
*
* @return string
*/
public static function get_title(): string {
return __( 'Failed System Checks', 'automatewoo' );
}
/**
* Get the contents of the notification.
*
* @return string
*/
public static function get_content(): string {
return __( 'AutomateWoo system status check has found issues.', 'automatewoo' );
}
/**
* Return Note object.
*
* @see Automattic\WooCommerce\Admin\Notes\Note
*
* @return Note
*/
public static function get_note(): Note {
$note = parent::get_note();
$note->add_action(
'aw-system-check-details',
__( 'View details', 'automatewoo' ),
Admin::page_url( 'status' )
);
return $note;
}
/**
* Get all system checks
*
* @return array
*/
public function get_system_checks(): array {
if ( ! isset( $this->system_checks ) ) {
$this->system_checks = array_map(
function ( $system_check ) {
return new $system_check();
},
apply_filters(
'automatewoo/system_checks',
[
ActionSchedulerJobsRunning::class,
DatabaseTablesExist::class,
]
)
);
}
return $this->system_checks;
}
/**
* Check if the notification should be added.
*
* @return bool
*/
public function should_be_added(): bool {
$checks = $this->get_system_checks();
foreach ( $checks as $check ) {
if ( ! $check->high_priority ) {
continue;
}
$response = $check->run();
if ( ! isset( $response['success'] ) || true !== $response['success'] ) {
return true;
}
}
return false;
}
}