Prevent wp_remote_post or wp_remote_get to trigger when not necessary
This commit is contained in:
parent
b4125269a3
commit
4342ae2b6f
|
@ -72,16 +72,11 @@ class WC_REST_System_Status_V2_Controller extends WC_REST_Controller {
|
||||||
*/
|
*/
|
||||||
public function get_items( $request ) {
|
public function get_items( $request ) {
|
||||||
$schema = $this->get_item_schema();
|
$schema = $this->get_item_schema();
|
||||||
$mappings = $this->get_item_mappings();
|
$fields = $this->get_fields_for_response( $request );
|
||||||
|
$mappings = $this->get_item_mappings( $fields );
|
||||||
$response = array();
|
$response = array();
|
||||||
|
|
||||||
foreach ( $mappings as $section => $values ) {
|
foreach ( $mappings as $section => $values ) {
|
||||||
foreach ( $values as $key => $value ) {
|
|
||||||
if ( isset( $schema['properties'][ $section ]['properties'][ $key ]['type'] ) ) {
|
|
||||||
settype( $values[ $key ], $schema['properties'][ $section ]['properties'][ $key ]['type'] );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
settype( $values, $schema['properties'][ $section ]['type'] );
|
|
||||||
$response[ $section ] = $values;
|
$response[ $section ] = $values;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -571,11 +566,12 @@ class WC_REST_System_Status_V2_Controller extends WC_REST_Controller {
|
||||||
/**
|
/**
|
||||||
* Return an array of sections and the data associated with each.
|
* Return an array of sections and the data associated with each.
|
||||||
*
|
*
|
||||||
|
* @param array $fields List of fields to be included on the response.
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function get_item_mappings() {
|
public function get_item_mappings( $fields ) {
|
||||||
return array(
|
return array(
|
||||||
'environment' => $this->get_environment_info(),
|
'environment' => $this->get_environment_info( $fields ),
|
||||||
'database' => $this->get_database_info(),
|
'database' => $this->get_database_info(),
|
||||||
'active_plugins' => $this->get_active_plugins(),
|
'active_plugins' => $this->get_active_plugins(),
|
||||||
'inactive_plugins' => $this->get_inactive_plugins(),
|
'inactive_plugins' => $this->get_inactive_plugins(),
|
||||||
|
@ -592,11 +588,23 @@ class WC_REST_System_Status_V2_Controller extends WC_REST_Controller {
|
||||||
* Get array of environment information. Includes thing like software
|
* Get array of environment information. Includes thing like software
|
||||||
* versions, and various server settings.
|
* versions, and various server settings.
|
||||||
*
|
*
|
||||||
|
* @param array $fields List of fields to be included on the response.
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function get_environment_info() {
|
public function get_environment_info( $fields ) {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
|
|
||||||
|
$exclude = array();
|
||||||
|
foreach ( $fields as $field ) {
|
||||||
|
$values = explode( '.', $field );
|
||||||
|
|
||||||
|
if ( 'environment' !== $values[0] || empty( $values[1] ) ) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$exclude[] = $values[1];
|
||||||
|
}
|
||||||
|
|
||||||
// Figure out cURL version, if installed.
|
// Figure out cURL version, if installed.
|
||||||
$curl_version = '';
|
$curl_version = '';
|
||||||
if ( function_exists( 'curl_version' ) ) {
|
if ( function_exists( 'curl_version' ) ) {
|
||||||
|
@ -613,40 +621,48 @@ class WC_REST_System_Status_V2_Controller extends WC_REST_Controller {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test POST requests.
|
// Test POST requests.
|
||||||
$post_response_code = get_transient( 'woocommerce_test_remote_post' );
|
$post_response_successful = null;
|
||||||
|
$post_response_code = null;
|
||||||
|
if ( empty( $exclude ) || 0 < count( array_intersect( array( 'remote_post_successful', 'remote_post_response' ), $exclude ) ) ) {
|
||||||
|
$post_response_code = get_transient( 'woocommerce_test_remote_post' );
|
||||||
|
|
||||||
if ( false === $post_response_code || is_wp_error( $post_response_code ) ) {
|
if ( false === $post_response_code || is_wp_error( $post_response_code ) ) {
|
||||||
$response = wp_safe_remote_post(
|
$response = wp_safe_remote_post(
|
||||||
'https://www.paypal.com/cgi-bin/webscr',
|
'https://www.paypal.com/cgi-bin/webscr',
|
||||||
array(
|
array(
|
||||||
'timeout' => 10,
|
'timeout' => 10,
|
||||||
'user-agent' => 'WooCommerce/' . WC()->version,
|
'user-agent' => 'WooCommerce/' . WC()->version,
|
||||||
'httpversion' => '1.1',
|
'httpversion' => '1.1',
|
||||||
'body' => array(
|
'body' => array(
|
||||||
'cmd' => '_notify-validate',
|
'cmd' => '_notify-validate',
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
if ( ! is_wp_error( $response ) ) {
|
if ( ! is_wp_error( $response ) ) {
|
||||||
$post_response_code = $response['response']['code'];
|
$post_response_code = $response['response']['code'];
|
||||||
|
}
|
||||||
|
set_transient( 'woocommerce_test_remote_post', $post_response_code, HOUR_IN_SECONDS );
|
||||||
}
|
}
|
||||||
set_transient( 'woocommerce_test_remote_post', $post_response_code, HOUR_IN_SECONDS );
|
|
||||||
}
|
|
||||||
|
|
||||||
$post_response_successful = ! is_wp_error( $post_response_code ) && $post_response_code >= 200 && $post_response_code < 300;
|
$post_response_successful = ! is_wp_error( $post_response_code ) && $post_response_code >= 200 && $post_response_code < 300;
|
||||||
|
}
|
||||||
|
|
||||||
// Test GET requests.
|
// Test GET requests.
|
||||||
$get_response_code = get_transient( 'woocommerce_test_remote_get' );
|
$get_response_successful = null;
|
||||||
|
$get_response_code = null;
|
||||||
|
if ( empty( $exclude ) || 0 < count( array_intersect( array( 'remote_get_successful', 'remote_get_response' ), $exclude ) ) ) {
|
||||||
|
$get_response_code = get_transient( 'woocommerce_test_remote_get' );
|
||||||
|
|
||||||
if ( false === $get_response_code || is_wp_error( $get_response_code ) ) {
|
if ( false === $get_response_code || is_wp_error( $get_response_code ) ) {
|
||||||
$response = wp_safe_remote_get( 'https://woocommerce.com/wc-api/product-key-api?request=ping&network=' . ( is_multisite() ? '1' : '0' ) );
|
$response = wp_safe_remote_get( 'https://woocommerce.com/wc-api/product-key-api?request=ping&network=' . ( is_multisite() ? '1' : '0' ) );
|
||||||
if ( ! is_wp_error( $response ) ) {
|
if ( ! is_wp_error( $response ) ) {
|
||||||
$get_response_code = $response['response']['code'];
|
$get_response_code = $response['response']['code'];
|
||||||
|
}
|
||||||
|
set_transient( 'woocommerce_test_remote_get', $get_response_code, HOUR_IN_SECONDS );
|
||||||
}
|
}
|
||||||
set_transient( 'woocommerce_test_remote_get', $get_response_code, HOUR_IN_SECONDS );
|
|
||||||
}
|
|
||||||
|
|
||||||
$get_response_successful = ! is_wp_error( $get_response_code ) && $get_response_code >= 200 && $get_response_code < 300;
|
$get_response_successful = ! is_wp_error( $get_response_code ) && $get_response_code >= 200 && $get_response_code < 300;
|
||||||
|
}
|
||||||
|
|
||||||
$database_version = wc_get_server_database_version();
|
$database_version = wc_get_server_database_version();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue