| Current Path : /home/ereika83/www/wp-content/plugins/wp-hummingbird/admin/ajax/caching/ |
| Current File : /home/ereika83/www/wp-content/plugins/wp-hummingbird/admin/ajax/caching/class-integrations.php |
<?php
/**
* Integrations AJAX actions.
*
* @since 3.0.0
* @package Hummingbird\Admin\Ajax\Caching
*/
namespace Hummingbird\Admin\Ajax\Caching;
use Hummingbird\Core\Modules\Cloudflare;
use Hummingbird\Core\Utils;
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Class Integrations.
*/
class Integrations {
/**
* Integrations constructor.
*/
public function __construct() {
$endpoints = array(
'cloudflare_status',
'cloudflare_apo_status',
'cloudflare_disconnect',
'cloudflare_zones',
'cloudflare_clear_cache',
'cloudflare_save_zone',
'cloudflare_toggle_apo',
'cloudflare_toggle_device_cache',
);
foreach ( $endpoints as $endpoint ) {
add_action( "wp_ajax_wphb_react_{$endpoint}", array( $this, $endpoint ) );
}
}
/**
* Get Cloudflare status.
*
* @since 3.0.0
*/
public function cloudflare_status() {
// Check permission.
if ( ! current_user_can( Utils::get_admin_capability() ) ) {
die();
}
$options = Utils::get_module( 'cloudflare' )->get_options();
$expiry = Utils::get_module( 'cloudflare' )->get_caching_expiration();
$frequencies = Cloudflare::get_frequencies();
wp_send_json_success(
array(
'cloudflare' => array(
'accountId' => $options['account_id'],
'connected' => Utils::get_module( 'cloudflare' )->is_connected(),
'dnsSet' => Utils::get_module( 'cloudflare' )->has_cloudflare(),
'expiry' => $expiry,
'human' => $frequencies[ $expiry ],
'zone' => $options['zone'],
'zoneName' => $options['zone_name'],
),
'apo' => array(
'enabled' => Utils::get_module( 'cloudflare' )->is_apo_enabled(),
'purchased' => $options['apo_paid'],
'settings' => $options['apo'],
),
)
);
}
/**
* Check Cloudflare APO status.
*
* @since 3.0.0
*/
public function cloudflare_apo_status() {
check_ajax_referer( 'wphb-fetch' );
// Check permission.
if ( ! current_user_can( Utils::get_admin_capability() ) ) {
die();
}
Utils::get_module( 'cloudflare' )->get_apo_settings();
$this->cloudflare_status();
wp_send_json_success();
}
/**
* Disconnect Cloudflare.
*
* @since 3.0.0
*/
public function cloudflare_disconnect() {
check_ajax_referer( 'wphb-fetch' );
// Check permission.
if ( ! current_user_can( Utils::get_admin_capability() ) ) {
die();
}
Utils::get_module( 'cloudflare' )->disconnect();
$this->cloudflare_status();
}
/**
* Check Cloudflare zones.
*
* @since 3.0.0
*/
public function cloudflare_zones() {
check_ajax_referer( 'wphb-fetch' );
// Check permission.
if ( ! current_user_can( Utils::get_admin_capability() ) ) {
die();
}
$zones = Utils::get_module( 'cloudflare' )->get_zones_list();
// This will end processing if zones are an issue.
Utils::get_module( 'cloudflare' )->validate_zones( $zones );
$status = Utils::get_module( 'cloudflare' )->process_zones( $zones );
// Could not match a zone.
if ( ! $status ) {
wp_send_json_success( array( 'zones' => $zones ) );
}
wp_send_json_success();
}
/**
* Clear Cloudflare cache.
*
* @since 3.0.0
*/
public function cloudflare_clear_cache() {
check_ajax_referer( 'wphb-fetch' );
// Check permission.
if ( ! current_user_can( Utils::get_admin_capability() ) ) {
die();
}
Utils::get_module( 'cloudflare' )->clear_cache();
wp_send_json_success();
}
/**
* Save selected Cloudflare zone.
*
* @since 3.0.0
*/
public function cloudflare_save_zone() {
check_ajax_referer( 'wphb-fetch' );
// Check permission.
if ( ! current_user_can( Utils::get_admin_capability() ) ) {
die();
}
$zone = filter_input( INPUT_POST, 'data', FILTER_UNSAFE_RAW );
$zone = json_decode( html_entity_decode( $zone ), true );
$zones = Utils::get_module( 'cloudflare' )->get_zones_list();
// This will end processing if zones are an issue.
Utils::get_module( 'cloudflare' )->validate_zones( $zones );
$options = Utils::get_module( 'cloudflare' )->get_options();
// Set the module as enabled.
if ( ! $options['enabled'] ) {
$options['enabled'] = true;
Utils::get_module( 'cloudflare' )->update_options( $options );
}
Utils::get_module( 'cloudflare' )->process_zones( $zones, $zone );
$this->cloudflare_status();
}
/**
* Toggle Cloudflare APO.
*
* @since 3.0.0
*/
public function cloudflare_toggle_apo() {
check_ajax_referer( 'wphb-fetch' );
// Check permission.
if ( ! current_user_can( Utils::get_admin_capability() ) ) {
die();
}
$status = filter_input( INPUT_POST, 'data', FILTER_UNSAFE_RAW );
$status = json_decode( html_entity_decode( $status ), true );
Utils::get_module( 'cloudflare' )->toggle_apo( $status );
$options = Utils::get_module( 'cloudflare' )->get_options();
wp_send_json_success(
array(
'enabled' => Utils::get_module( 'cloudflare' )->is_apo_enabled(),
'purchased' => $options['apo_paid'],
'settings' => $options['apo'],
)
);
}
/**
* Toggle Cloudflare APO cache by device type setting.
*
* @since 3.0.0
*/
public function cloudflare_toggle_device_cache() {
check_ajax_referer( 'wphb-fetch' );
// Check permission.
if ( ! current_user_can( Utils::get_admin_capability() ) ) {
die();
}
$status = filter_input( INPUT_POST, 'data', FILTER_UNSAFE_RAW );
$status = json_decode( html_entity_decode( $status ), true );
Utils::get_module( 'cloudflare' )->toggle_cache_by_device( $status );
$options = Utils::get_module( 'cloudflare' )->get_options();
wp_send_json_success(
array(
'enabled' => Utils::get_module( 'cloudflare' )->is_apo_enabled(),
'purchased' => $options['apo_paid'],
'settings' => $options['apo'],
)
);
}
}