' . esc_html( get_option( 'w3tcps_authorize_fail' ) ) . '
' . wp_kses( get_option( 'w3tcps_authorize_fail_message' ), Util_PageSpeed::get_allowed_tags() ) . '
';
delete_option( 'w3tcps_authorize_fail' );
delete_option( 'w3tcps_authorize_fail_message' );
break;
case get_option( 'w3tcps_refresh_fail' ):
echo '' . esc_html( get_option( 'w3tcps_refresh_fail' ) ) . '
' . wp_kses( get_option( 'w3tcps_refresh_fail_message' ), Util_PageSpeed::get_allowed_tags() ) . '
';
delete_option( 'w3tcps_refresh_fail' );
delete_option( 'w3tcps_refresh_fail_message' );
break;
case get_option( 'w3tcps_revoke_fail' ):
echo '' . esc_html( get_option( 'w3tcps_revoke_fail' ) ) . '
' . wp_kses( get_option( 'w3tcps_revoke_fail_message' ), Util_PageSpeed::get_allowed_tags() ) . '
';
delete_option( 'w3tcps_revoke_fail' );
delete_option( 'w3tcps_revoke_fail_message' );
break;
}
}
}
/**
* Reset authentication.
*
* @since 2.3.0
*/
public function reset() {
$access_token = $this->client->getAccessToken();
$site_id = Util_Http::generate_site_id();
$w3tc_pagespeed_key = $this->config->get_string( 'widget.pagespeed.w3tc_pagespeed_key' );
if ( empty( $access_token ) || empty( $site_id ) || empty( $w3tc_pagespeed_key ) ) {
update_option(
'w3tcps_revoke_fail',
__( 'Google PageSpeed access token revocation missing required parameters!', 'w3-total-cache' )
);
return;
}
$request = Util_Environment::get_api_base_url() . '/google/revoke-token/' . rawurlencode( $access_token ) . '/' . rawurlencode( $site_id ) . '/' . rawurlencode( $w3tc_pagespeed_key );
$response = wp_remote_get(
$request,
array(
'timeout' => 60,
)
);
$response_body_json = wp_remote_retrieve_body( $response );
$response_body = json_decode( $response_body_json, true );
if ( is_wp_error( $response ) ) {
return wp_json_encode(
array(
'error' => array(
'code' => $response->get_error_code(),
'message' => $response->get_error_message(),
),
)
);
} elseif ( isset( $response_body['error']['code'] ) && 200 !== $response_body['error']['code'] ) {
if ( 'revoke-token-access-token-missing' === $response_body['error']['id'] ) {
$message = __( 'No access token provided for revoke!', 'w3-total-cache' );
} elseif ( 'revoke-token-api-key-missing' === $response_body['error']['id'] ) {
$message = __( 'No W3TC API key provided for revoke!', 'w3-total-cache' );
} elseif ( 'revoke-token-not-found' === $response_body['error']['id'] ) {
$message = __( 'No matching Google access record found for W3TC API key!', 'w3-total-cache' );
}
update_option(
'w3tcps_revoke_fail',
__( 'Google PageSpeed Access Token revocation failed.', 'w3-total-cache' )
);
update_option(
'w3tcps_revoke_fail_message',
$message
);
return;
}
$this->config->set( 'widget.pagespeed.access_token', '' );
$this->config->set( 'widget.pagespeed.w3tc_pagespeed_key', '' );
$this->config->save();
}
}