public static function permit_ssl($force_recheck = false)
{
// Do some fancy tests to see if ssl is being supported
if ($force_recheck || false === ($ssl = get_transient('jetpack_https_test'))) {
$message = '';
if ('https' !== substr(JETPACK__API_BASE, 0, 5)) {
$ssl = 0;
} else {
switch (JETPACK_CLIENT__HTTPS) {
case 'NEVER':
$ssl = 0;
$message = __('JETPACK_CLIENT__HTTPS is set to NEVER', 'jetpack');
break;
case 'ALWAYS':
case 'AUTO':
default:
$ssl = 1;
break;
}
// If it's not 'NEVER', test to see
if ($ssl) {
if (!wp_http_supports(array('ssl' => true))) {
$ssl = 0;
$message = __('WordPress reports no SSL support', 'jetpack');
} else {
$response = wp_remote_get(JETPACK__API_BASE . 'test/1/');
if (is_wp_error($response)) {
$ssl = 0;
$message = __('WordPress reports no SSL support', 'jetpack');
} elseif ('OK' !== wp_remote_retrieve_body($response)) {
$ssl = 0;
$message = __('Response was not OK: ', 'jetpack') . wp_remote_retrieve_body($response);
}
}
}
}
set_transient('jetpack_https_test', $ssl, DAY_IN_SECONDS);
set_transient('jetpack_https_test_message', $message, DAY_IN_SECONDS);
}
return (bool) $ssl;
}