whoami7 - Manager
:
/
home
/
rattkxnv
/
fitwithiit.com
/
wp-content
/
plugins
/
web-stories
/
includes
/
Admin
/
Upload File:
files >> //home/rattkxnv/fitwithiit.com/wp-content/plugins/web-stories/includes/Admin/Site_Health.php
<?php /** * Site Health Class. * * Adds tests and debugging information for Site Health. * * @link https://github.com/googleforcreators/web-stories-wp * * @copyright 2021 Google LLC * @license https://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 */ /** * Copyright 2021 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ declare(strict_types = 1); namespace Google\Web_Stories\Admin; use Google\Web_Stories\Experiments; use Google\Web_Stories\Infrastructure\Conditional; use Google\Web_Stories\Service_Base; /** * Class Site_Health */ class Site_Health extends Service_Base implements Conditional { /** * Experiments instance. * * @var Experiments Experiments instance. */ private Experiments $experiments; /** * Site_Health constructor. * * @since 1.8.0 * * @param Experiments $experiments Experiments instance. * @return void */ public function __construct( Experiments $experiments ) { $this->experiments = $experiments; } /** * Check whether the conditional object is currently needed. * * @since 1.8.0 * * @return bool Whether the conditional object is needed. */ public static function is_needed(): bool { return is_admin() && ! wp_doing_ajax(); } /** * Get the action to use for registering the service. * * @since 1.8.0 * * @return string Registration action to use. */ public static function get_registration_action(): string { return 'wp_loaded'; } /** * Adds the filters. * * @since 1.8.0 */ public function register(): void { add_filter( 'debug_information', [ $this, 'add_debug_information' ] ); add_filter( 'site_status_test_php_modules', [ $this, 'add_extensions' ] ); add_filter( 'site_status_test_result', [ $this, 'modify_test_result' ] ); } /** * Adds debug information for Web stories. * * @since 1.8.0 * * @param array|mixed $debugging_information The debugging information from Core. * @return array|mixed The debugging information, with added information for Web stories. * * @template T * * @phpstan-return ($debugging_information is array<T> ? array<T> : mixed) */ public function add_debug_information( $debugging_information ) { $enabled_experiments = []; foreach ( $this->experiments->get_experiments() as $experiment ) { $enabled = $this->experiments->is_experiment_enabled( $experiment['name'] ); if ( $enabled ) { $enabled_experiments[ $experiment['label'] ] = $this->get_formatted_output( $enabled ); } } if ( ! $enabled_experiments ) { $enabled_experiments = __( 'No experiments enabled', 'web-stories' ); } if ( ! \is_array( $debugging_information ) ) { return $debugging_information; } $extra_data = [ 'web_stories' => [ 'label' => esc_html__( 'Web Stories', 'web-stories' ), 'description' => esc_html__( 'Debugging information for the Web Stories plugin.', 'web-stories' ), 'fields' => [ 'web_stories_version' => [ 'label' => 'WEBSTORIES_VERSION', 'value' => WEBSTORIES_VERSION, 'private' => false, ], 'web_stories_db_version' => [ 'label' => 'WEBSTORIES_DB_VERSION', 'value' => WEBSTORIES_DB_VERSION, 'private' => false, ], 'web_stories_amp_version' => [ 'label' => 'WEBSTORIES_AMP_VERSION', 'value' => WEBSTORIES_AMP_VERSION, 'private' => false, ], 'web_stories_cdn_url' => [ 'label' => 'WEBSTORIES_CDN_URL', 'value' => WEBSTORIES_CDN_URL, 'private' => false, ], 'web_stories_dev_mode' => [ 'label' => 'WEBSTORIES_DEV_MODE', 'private' => false, 'value' => $this->get_formatted_output( WEBSTORIES_DEV_MODE ), 'debug' => WEBSTORIES_DEV_MODE, ], 'web_stories_theme_support' => [ 'label' => 'Theme supports', 'value' => $this->get_formatted_output( current_theme_supports( 'web-stories' ) ), 'private' => false, ], 'web_stories_enabled_experiments' => [ 'label' => 'Experiments', 'value' => $enabled_experiments, 'private' => false, ], 'web_stories_libxml_version' => [ 'label' => 'libxml Version', 'value' => LIBXML_DOTTED_VERSION, 'private' => false, ], ], ], ]; return array_merge( $debugging_information, $extra_data ); } /** * Adds suggested PHP extensions to those that Core depends on. * * @since 1.8.0 * * @param array|mixed $core_extensions The existing extensions from Core. * @return array|mixed The extensions, including those for Web Stories. * * @template T * * @phpstan-return ($core_extensions is array<T> ? array<T> : mixed) */ public function add_extensions( $core_extensions ) { if ( ! \is_array( $core_extensions ) ) { return $core_extensions; } $extensions = [ 'json' => [ 'extension' => 'json', 'function' => 'json_encode', 'required' => false, ], 'libxml' => [ 'extension' => 'libxml', 'function' => 'libxml_use_internal_errors', 'required' => false, ], 'date' => [ 'extension' => 'date', 'class' => 'DateTimeImmutable', 'required' => false, ], 'dom' => [ 'extension' => 'dom', 'class' => 'DOMNode', 'required' => false, ], 'mbstring' => [ 'extension' => 'mbstring', 'required' => false, ], 'spl' => [ 'function' => 'spl_autoload_register', 'required' => false, ], ]; return array_merge( $core_extensions, $extensions ); } /** * Modify test results. * * @since 1.8.0 * * @param array|mixed $test_result Site Health test result. * @return array|mixed Modified test result. * * @template T * * @phpstan-return ($test_result is array<T> ? array<T> : mixed) */ public function modify_test_result( $test_result ) { if ( ! \is_array( $test_result ) ) { return $test_result; } // Set the `https_status` test status to critical if its current status is recommended, along with adding to the // description for why its required for Web Stories. if ( isset( $test_result['test'], $test_result['status'], $test_result['description'] ) && 'https_status' === $test_result['test'] && 'recommended' === $test_result['status'] ) { $test_result['status'] = 'critical'; $test_result['description'] .= '<p>' . __( 'Additionally, Web Stories requires HTTPS for most components to work properly, including iframes and videos.', 'web-stories' ) . '</p>'; } return $test_result; } /** * Format the value as enabled or disabled. * * @since 1.8.0 * * @param mixed $value Value to formatted. */ protected function get_formatted_output( $value ): string { return $value ? __( 'Enabled', 'web-stories' ) : __( 'Disabled', 'web-stories' ); } }
Copyright ©2021 || Defacer Indonesia