File "class-sitehealth.php"
Full path: /home/webcknlt/admissiontell.com/wp-content/plugins/vibes/includes/system/class-sitehealth.php
File
size: 10.65 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor &nnbsp; Back
<?php
/**
* Site health helper.
*
* @package System
* @author Pierre Lannoy <https://pierre.lannoy.fr/>.
* @since 1.0.0
*/
namespace Vibes\System;
use Vibes\System\Cache;
use Vibes\System\I18n;
use Vibes\System\Option;
/**
* The class responsible to handle cache management.
*
* @package System
* @author Pierre Lannoy <https://pierre.lannoy.fr/>.
* @since 1.0.0
*/
class Sitehealth {
/**
* The slug of the calling plugin.
*
* @since 1.0.0
* @var string $slug The slug.
*/
private static $slug = VIBES_SLUG;
/**
* Initializes the class and set its properties.
*
* @since 1.0.0
*/
public function __construct() {
}
/**
* Initializes properties.
*
* @since 1.0.0
*/
public static function init() {
self::perfopsone_init();
self::plugin_init();
}
/**
* Sets site health hooks for PerfOps One.
*
* @since 1.0.0
*/
private static function perfopsone_init() {
self::perfopsone_test_init();
self::perfopsone_info_init();
}
/**
* Sets site health hooks specific to this plugin.
*
* @since 1.0.0
*/
private static function plugin_init() {
self::plugin_test_init();
self::plugin_info_init();
}
/**
* Sets site health hooks for PerfOps One tests.
*
* @since 1.0.0
*/
private static function perfopsone_test_init() {
add_filter( 'site_status_tests', [ self::class, 'perfopsone_test_objectcache' ] );
add_filter( 'site_status_tests', [ self::class, 'perfopsone_test_opcache' ] );
add_filter( 'site_status_tests', [ self::class, 'perfopsone_test_shmop' ] );
if ( 'en_US' !== get_locale() ) {
add_filter( 'site_status_tests', [ self::class, 'perfopsone_test_i18n' ] );
}
}
/**
* Sets site health hooks for PerfOps One infos.
*
* @since 1.0.0
*/
private static function perfopsone_info_init() {
add_filter( 'debug_information', [ self::class, 'perfopsone_info' ] );
}
/**
* Sets site health hooks for plugin tests.
*
* @since 1.0.0
*/
private static function plugin_test_init() {
}
/**
* Sets site health hooks for plugin infos.
*
* @since 1.0.0
*/
private static function plugin_info_init() {
add_filter( 'debug_information', [ self::class, 'plugin_info' ] );
}
/**
* Adds plugin infos section.
*
* @param array $debug_info The already set infos.
* @return array The extended infos if needed.
* @since 1.0.0
*/
public static function perfopsone_info( $debug_info ) {
$key = 'perfopsone_objectcache';
if ( ! array_key_exists( $key, $debug_info ) ) {
$debug_info[ $key ] = [
'label' => 'PerfOps One - ' . esc_html__( 'Object cache', 'vibes' ),
'fields' => Cache::debug_info(),
];
}
$key = 'perfopsone_opcache';
if ( ! array_key_exists( $key, $debug_info ) ) {
$debug_info[ $key ] = [
'label' => 'OPcache',
'description' => esc_html__( 'OPcache settings and status', 'vibes' ),
'fields' => OPcache::debug_info(),
];
}
return $debug_info;
}
/**
* Adds plugin infos section.
*
* @param array $debug_info The already set infos.
* @return array The extended infos if needed.
* @since 1.0.0
*/
public static function plugin_info( $debug_info ) {
$debug_info[ self::$slug ] = [
'label' => VIBES_PRODUCT_NAME,
'description' => esc_html__( 'Plugin diagnostic information', 'vibes' ),
'fields' => Option::debug_info(),
];
return $debug_info;
}
/**
* Adds a test.
*
* @param array $tests The already set tests.
* @return array The extended tests if needed.
* @since 1.0.0
*/
public static function perfopsone_test_objectcache( $tests ) {
$key = 'perfopsone_objectcache';
if ( ! array_key_exists( $key, $tests['direct'] ) ) {
$tests['direct'][ $key ] = [
'label' => __( 'Object Cache Test', 'vibes' ),
'test' => [ self::class, 'perfopsone_test_objectcache_do' ],
];
}
return $tests;
}
/**
* Does a test.
*
* @return array The result of the test.
* @since 1.0.0
*/
public static function perfopsone_test_objectcache_do() {
$key = 'perfopsone_objectcache';
$analytics = Cache::get_analytics();
if ( 'apcu' === $analytics['type'] ) {
return [
'label' => esc_html__( 'You should improve object caching', 'vibes' ),
'status' => 'recommended',
'badge' => [
'label' => esc_html__( 'Performance', 'vibes' ),
'color' => 'blue',
],
'description' => sprintf( '<p>%s %s</p>', esc_html__( 'APCu is available on your site, but only PerfOps One suite and some few other plugins know how to take advantage of it.', 'vibes' ), sprintf( esc_html__( 'You should consider using %s to improve your site\'s speed.', 'vibes' ), '<a href="https://perfops.one/apcu-manager/">APCu Manager</a>' ) ),
'actions' => '',
'test' => $key,
];
}
if ( 'object_cache' === $analytics['type'] ) {
return [
'label' => esc_html__( 'Your site uses object caching', 'vibes' ),
'status' => 'good',
'badge' => [
'label' => esc_html__( 'Performance', 'vibes' ),
'color' => 'blue',
],
'description' => sprintf( '<p>%s</p>', esc_html__( 'Your site uses a dedicated object caching mechanism. That\'s great.', 'vibes' ) ),
'actions' => '',
'test' => $key,
];
}
return [
'label' => esc_html__( 'You should use object caching', 'vibes' ),
'status' => 'recommended',
'badge' => [
'label' => esc_html__( 'Performance', 'vibes' ),
'color' => 'orange',
],
'description' => sprintf( '<p>%s %s</p>', esc_html__( 'Your site uses database transient.', 'vibes' ), esc_html__( 'You should consider using a dedicated object caching mechanism, like APCu, Memcached or Redis, to improve your site\'s speed.', 'vibes' ) ),
'actions' => '',
'test' => $key,
];
}
/**
* Adds a test.
*
* @param array $tests The already set tests.
* @return array The extended tests if needed.
* @since 1.0.0
*/
public static function perfopsone_test_opcache( $tests ) {
$key = 'perfopsone_opcache';
if ( ! array_key_exists( $key, $tests['direct'] ) ) {
$tests['direct'][ $key ] = [
'label' => __( 'OPcache Test', 'vibes' ),
'test' => [ self::class, 'perfopsone_test_opcache_do' ],
];
}
return $tests;
}
/**
* Does a test.
*
* @return array The result of the test.
* @since 1.0.0
*/
public static function perfopsone_test_opcache_do() {
$key = 'perfopsone_opcache';
if ( function_exists( 'opcache_invalidate' ) && function_exists( 'opcache_compile_file' ) && function_exists( 'opcache_is_script_cached' ) ) {
$result = [
'label' => esc_html__( 'Your site uses OPcache', 'vibes' ),
'status' => 'good',
'badge' => [
'label' => esc_html__( 'Performance', 'vibes' ),
'color' => 'blue',
],
'description' => sprintf( '<p>%s</p>', esc_html__( 'Your site uses OPcache to improve PHP performance. That\'s great.', 'vibes' ) ),
'actions' => '',
'test' => $key,
];
} else {
$result = [
'label' => esc_html__( 'You should use OPcache', 'vibes' ),
'status' => 'recommended',
'badge' => [
'label' => esc_html__( 'Performance', 'vibes' ),
'color' => 'orange',
],
'description' => sprintf( '<p>%s</p>', esc_html__( 'You should consider using OPcache. It would improve PHP performance of your site.', 'vibes' ) ),
'actions' => '',
'test' => $key,
];
}
return $result;
}
/**
* Adds a test.
*
* @param array $tests The already set tests.
* @return array The extended tests if needed.
* @since 1.0.0
*/
public static function perfopsone_test_shmop( $tests ) {
$key = 'perfopsone_shmop';
if ( ! array_key_exists( $key, $tests['direct'] ) ) {
$tests['direct'][ $key ] = [
'label' => __( 'Shared Memory Test', 'vibes' ),
'test' => [ self::class, 'perfopsone_test_shmop_do' ],
];
}
return $tests;
}
/**
* Does a test.
*
* @return array The result of the test.
* @since 1.0.0
*/
public static function perfopsone_test_shmop_do() {
$key = 'perfopsone_shmop';
if ( function_exists( 'shmop_open' ) && function_exists( 'shmop_read' ) && function_exists( 'shmop_write' ) && function_exists( 'shmop_delete' ) ) {
$result = [
'label' => esc_html__( 'Your site can use shared memory', 'vibes' ),
'status' => 'good',
'badge' => [
'label' => esc_html__( 'Performance', 'vibes' ),
'color' => 'blue',
],
'description' => sprintf( '<p>%s</p>', esc_html__( 'Your site can use shared memory to allow inter-process communication. That\'s great.', 'vibes' ) ),
'actions' => '',
'test' => $key,
];
} else {
$result = [
'label' => esc_html__( 'You should allow inter-process communication', 'vibes' ),
'status' => 'recommended',
'badge' => [
'label' => esc_html__( 'Performance', 'vibes' ),
'color' => 'gray',
],
'description' => sprintf( '<p>%s</p>', esc_html__( 'You should consider using shared memory (PHP shmop) to allow inter-process communication.', 'vibes' ) ),
'actions' => '',
'test' => $key,
];
}
return $result;
}
/**
* Adds a test.
*
* @param array $tests The already set tests.
* @return array The extended tests if needed.
* @since 1.0.0
*/
public static function perfopsone_test_i18n( $tests ) {
$key = 'perfopsone_i18n';
if ( ! array_key_exists( $key, $tests['direct'] ) ) {
$tests['direct'][ $key ] = [
'label' => __( 'I18n Extension Test', 'vibes' ),
'test' => [ self::class, 'perfopsone_test_i18n_do' ],
];
}
return $tests;
}
/**
* Does a test.
*
* @return array The result of the test.
* @since 1.0.0
*/
public static function perfopsone_test_i18n_do() {
$key = 'perfopsone_i18n';
if ( I18n::is_extension_loaded() ) {
$result = [
'label' => esc_html__( 'Your site uses Intl extension', 'vibes' ),
'status' => 'good',
'badge' => [
'label' => esc_html__( 'Internationalization', 'vibes' ),
'color' => 'blue',
],
'description' => sprintf( '<p>%s</p>', esc_html__( 'Your site uses PHP Intl extension to improve localization features. That\'s great.', 'vibes' ) ),
'actions' => '',
'test' => $key,
];
} else {
$result = [
'label' => esc_html__( 'You should use Intl extension', 'vibes' ),
'status' => 'recommended',
'badge' => [
'label' => esc_html__( 'Internationalization', 'vibes' ),
'color' => 'blue',
],
'description' => sprintf( '<p>%s</p>', esc_html__( 'You should consider using PHP Intl extension. It would improve localization features on your site.', 'vibes' ) ),
'actions' => '',
'test' => $key,
];
}
return $result;
}
}