/**
* Check if AJAX works as expected
*
* @since 2.2
* @return bool True if AJAX works, false otherwise
*/
function edd_test_ajax_works()
{
// Check if the Airplane Mode plugin is installed
if (class_exists('Airplane_Mode_Core')) {
$airplane = Airplane_Mode_Core::getInstance();
if (method_exists($airplane, 'enabled')) {
if ($airplane->enabled()) {
return true;
}
} else {
if ($airplane->check_status() == 'on') {
return true;
}
}
}
add_filter('block_local_requests', '__return_false');
if (get_transient('_edd_ajax_works')) {
return true;
}
$params = array('sslverify' => false, 'timeout' => 30, 'body' => array('action' => 'edd_test_ajax'));
$ajax = wp_remote_post(edd_get_ajax_url(), $params);
$works = true;
if (is_wp_error($ajax)) {
$works = false;
} else {
if (empty($ajax['response'])) {
$works = false;
}
if (empty($ajax['response']['code']) || 200 !== (int) $ajax['response']['code']) {
$works = false;
}
if (empty($ajax['response']['message']) || 'OK' !== $ajax['response']['message']) {
$works = false;
}
if (!isset($ajax['body']) || 0 !== (int) $ajax['body']) {
$works = false;
}
}
if ($works) {
set_transient('_edd_ajax_works', '1', DAY_IN_SECONDS);
}
return $works;
}