Keep backwards compatibility

This commit is contained in:
Claudio Sanches 2020-01-09 17:48:58 -03:00
parent 06ec2fd9c6
commit d133875e5d
1 changed files with 68 additions and 21 deletions

View File

@ -73,7 +73,7 @@ class WC_REST_System_Status_V2_Controller extends WC_REST_Controller {
public function get_items( $request ) {
$schema = $this->get_item_schema();
$fields = $this->get_fields_for_response( $request );
$mappings = $this->get_item_mappings( $fields );
$mappings = $this->get_item_mappings_per_fields( $fields );
$response = $this->prepare_item_for_response( $mappings, $request );
return rest_ensure_response( $response );
@ -560,12 +560,35 @@ class WC_REST_System_Status_V2_Controller extends WC_REST_Controller {
/**
* Return an array of sections and the data associated with each.
*
* @deprecated 3.9.0
* @param array $fields List of fields to be included on the response.
* @return array
*/
public function get_item_mappings( $fields ) {
public function get_item_mappings() {
return array(
'environment' => $this->get_environment_info( $fields ),
'environment' => $this->get_environment_info(),
'database' => $this->get_database_info(),
'active_plugins' => $this->get_active_plugins(),
'inactive_plugins' => $this->get_inactive_plugins(),
'dropins_mu_plugins' => $this->get_dropins_mu_plugins(),
'theme' => $this->get_theme_info(),
'settings' => $this->get_settings(),
'security' => $this->get_security_info(),
'pages' => $this->get_pages(),
'post_type_counts' => $this->get_post_type_counts(),
);
}
/**
* Return an array of sections and the data associated with each.
*
* @since 3.9.0
* @param array $fields List of fields to be included on the response.
* @return array
*/
public function get_item_mappings_per_fields( $fields ) {
return array(
'environment' => $this->get_environment_info_per_fields( $fields ),
'database' => $this->get_database_info(),
'active_plugins' => $this->get_active_plugins(),
'inactive_plugins' => $this->get_inactive_plugins(),
@ -582,30 +605,54 @@ class WC_REST_System_Status_V2_Controller extends WC_REST_Controller {
* Get array of environment information. Includes thing like software
* versions, and various server settings.
*
* @param array $fields List of fields to be included on the response.
* @deprecated 3.9.0
* @return array
*/
public function get_environment_info( $fields ) {
global $wpdb;
public function get_environment_info() {
return $this->get_environment_info_per_fields( array( 'environment' ) );
}
/**
* Check if field item exists.
*
* @since 3.9.0
* @param string $section Fields section.
* @param array $items List of items to check for.
* @param array $fields List of fields to be included on the response.
* @return bool
*/
private function check_if_field_item_exists( $section, $items, $fields ) {
if ( ! in_array( $section, $fields, true ) ) {
return false;
}
$enable_remote_post = false;
$enable_remote_get = false;
if ( in_array( 'environment', $fields, true ) ) {
$exclude = array();
foreach ( $fields as $field ) {
$values = explode( '.', $field );
if ( 'environment' !== $values[0] || empty( $values[1] ) ) {
if ( $section !== $values[0] || empty( $values[1] ) ) {
continue;
}
$exclude[] = $values[1];
}
$enable_remote_post = 0 <= count( array_intersect( array( 'remote_post_successful', 'remote_post_response' ), $exclude ) );
$enable_remote_get = 0 <= count( array_intersect( array( 'remote_get_successful', 'remote_get_response' ), $exclude ) );
return 0 <= count( array_intersect( $items, $exclude ) );
}
/**
* Get array of environment information. Includes thing like software
* versions, and various server settings.
*
* @param array $fields List of fields to be included on the response.
* @return array
*/
public function get_environment_info_per_fields( $fields ) {
global $wpdb;
$enable_remote_post = $this->check_if_field_item_exists( 'environment', array( 'remote_post_successful', 'remote_post_response' ), $fields );
$enable_remote_get = $this->check_if_field_item_exists( 'environment', array( 'remote_post_successful', 'remote_post_response' ), $fields );
// Figure out cURL version, if installed.
$curl_version = '';
if ( function_exists( 'curl_version' ) ) {