38217-vm/wp-content/plugins/mainwp/widgets/widget-mainwp-site-info.php
2026-02-05 17:08:59 +03:00

209 lines
7.8 KiB
PHP

<?php
/**
* MainWP Site Info Widget
*
* Build the Child Site Info Widget.
*
* @package MainWP/Dashboard
*/
namespace MainWP\Dashboard;
/**
* Class MainWP_Site_Info
*
* Grab Child Site info and build widget.
*/
class MainWP_Site_Info { // phpcs:ignore Generic.Classes.OpeningBraceSameLine.ContentAfterBrace -- NOSONAR.
/**
* Method get_class_name()
*
* @return string __CLASS__ Class name.
*/
public static function get_class_name() {
return __CLASS__;
}
/**
* Method render()
*
* @return mixed render_site_info()
*/
public static function render() {
static::render_site_info();
}
/**
* Method render_site_info()
*
* Grab Child Site Info and render.
*
* @uses \MainWP\Dashboard\MainWP_DB::get_website_by_id()
* @uses \MainWP\Dashboard\MainWP_DB::get_website_option()
* @uses \MainWP\Dashboard\MainWP_System_Utility::get_current_wpid()
* @uses \MainWP\Dashboard\MainWP_Utility::ctype_digit()
*/
public static function render_site_info() {
$current_wpid = MainWP_System_Utility::get_current_wpid();
if ( empty( $current_wpid ) ) {
return;
}
$website = MainWP_DB::instance()->get_website_by_id( $current_wpid, true );
$website_info = MainWP_DB::instance()->get_website_option( $website, 'site_info' );
$website_info = ! empty( $website_info ) ? json_decode( $website_info, true ) : array();
if ( is_array( $website_info ) ) {
$code = $website->http_response_code;
$code_string = MainWP_Utility::get_http_codes( $code );
if ( ! empty( $code_string ) ) {
$code .= ' - ' . $code_string;
}
$website_info['last_status'] = $code;
}
$child_site_info = array(
'wpversion' => esc_html__( 'WordPress Version', 'mainwp' ),
'debug_mode' => esc_html__( 'Debug Mode', 'mainwp' ),
'phpversion' => esc_html__( 'PHP Version', 'mainwp' ),
'child_version' => esc_html__( 'MainWP Child Version', 'mainwp' ),
'memory_limit' => esc_html__( 'PHP Memory Limit', 'mainwp' ),
'mysql_version' => esc_html__( 'MySQL Version', 'mainwp' ),
'child_curl_version' => esc_html__( 'cURL version', 'mainwp' ),
'child_openssl_version' => esc_html__( 'OpenSSL version', 'mainwp' ),
'ip' => esc_html__( 'Server IP', 'mainwp' ),
'site_lang' => esc_html__( 'Site Language', 'mainwp' ),
'site_public' => esc_html__( 'Search engine visibility', 'mainwp' ),
'group' => esc_html__( 'Tags', 'mainwp' ),
'last_status' => esc_html__( 'Last Check Status', 'mainwp' ),
);
/**
* Filter: mainwp_child_site_info_widget_content
*
* Filters the Child Info array for the Site Info widget.
*
* @since 4.1
*/
$child_site_info = apply_filters( 'mainwp_child_site_info_widget_content', $child_site_info );
static::render_info( $website, $website_info, $child_site_info );
}
/**
* Render Sites Info.
*
* @param object $website Object containing the child site info.
* @param array $website_info Website data.
* @param array $child_site_info Website info to display.
*/
public static function render_info( $website, $website_info, $child_site_info ) { // phpcs:ignore -- NOSONAR - complex.
?>
<div class="mainwp-widget-header">
<h2 class="ui header handle-drag">
<?php
/**
* Filter: mainwp_site_info_widget_title
*
* Filters the Site info widget title text.
*
* @param object $website Object containing the child site info.
*
* @since 4.1
*/
echo esc_html( apply_filters( 'mainwp_site_info_widget_title', esc_html__( 'Site Info', 'mainwp' ), $website ) );
?>
<div class="sub header"><?php esc_html_e( 'Basic child site system information', 'mainwp' ); ?></div>
</h2>
</div>
<div class="mainwp-widget-site-info mainwp-scrolly-overflow">
<?php
/**
* Actoin: mainwp_site_info_widget_top
*
* Fires at the top of the Site Info widget on the Individual site overview page.
*
* @param object $website Object containing the child site info.
*
* @since 4.0
*/
do_action( 'mainwp_site_info_widget_top', $website );
?>
<?php
if ( ! is_array( $website_info ) || ! isset( $website_info['wpversion'] ) ) {
MainWP_UI::render_empty_element_placeholder();
} else {
$website_info['group'] = empty( $website->wpgroups ) ? 'None' : $website->wpgroups;
?>
<table class="ui mini very compact table">
<tbody>
<?php
/**
* Action: mainwp_site_info_table_top
*
* Fires at the top of the Site Info table in Site Info widget on the Individual site overview page.
*
* @param object $website Object containing the child site info.
*
* @since 4.0
*/
do_action( 'mainwp_site_info_table_top', $website );
?>
<?php
foreach ( $child_site_info as $index => $title ) {
$val = '';
if ( isset( $website_info[ $index ] ) ) {
$val = $website_info[ $index ];
if ( 'debug_mode' === $index ) {
$val = ( 1 === (int) $website_info[ $index ] ) ? __( 'Enabled', 'mainwp' ) : __( 'Disabled', 'mainwp' );
} elseif ( 'site_public' === $index ) {
$val = ( 1 === (int) $website_info[ $index ] ) ? __( 'Visible', 'mainwp' ) : __( 'Blocking', 'mainwp' );
} elseif ( 'site_lang' === $index ) {
if ( function_exists( 'locale_get_display_name' ) ) {
$val = locale_get_display_name( $val );
}
}
}
?>
<tr>
<td><?php echo esc_html( $title ); ?></td>
<td class="right aligned"><?php echo esc_html( $val ); ?></td>
</tr>
<?php } ?>
<?php
/**
* Action: mainwp_site_info_table_bottom
*
* Fires at the bottom of the Site Info table in Site Info widget on the Individual site overview page.
*
* @param object $website Object containing the child site info.
*
* @since 4.0
*/
do_action( 'mainwp_site_info_table_bottom', $website );
?>
</tbody>
</table>
<?php } ?>
<?php
/**
* Action: mainwp_site_info_widget_bottom
*
* Fires at the bottom of the Site Info widget on the Individual site overview page.
*
* @param object $website Object containing the child site info.
*
* @since 4.0
*/
do_action( 'mainwp_site_info_widget_bottom', $website );
?>
</div>
<?php
}
}