public function w3tc_ajax_extension_cloudflare_zones_done()
 {
     $email = $_REQUEST['email'];
     $key = $_REQUEST['key'];
     $zone_id = Util_Request::get('zone_id');
     if (empty($zone_id)) {
         return $this->_render_extension_cloudflare_zones(array('email' => $email, 'key' => $key, 'error_message' => 'Please select zone'));
     }
     $zone_name = '';
     // get zone name
     try {
         $api = new Extension_CloudFlare_Api(array('email' => $email, 'key' => $key));
         $zone = $api->zone($zone_id);
         $zone_name = $zone['name'];
     } catch (\Exception $ex) {
         $details['error_message'] = 'Can\'t authenticate: ' . $ex->getMessage();
         include W3TC_DIR . '/Extension_CloudFlare_Popup_View_Intro.php';
         exit;
     }
     $c = Dispatcher::config();
     $c->set(array('cloudflare', 'email'), $email);
     $c->set(array('cloudflare', 'key'), $key);
     $c->set(array('cloudflare', 'zone_id'), $zone_id);
     $c->set(array('cloudflare', 'zone_name'), $zone_name);
     $c->save();
     delete_transient('w3tc_cloudflare_stats');
     $postfix = Util_Admin::custom_message_id(array(), array('extension_cloudflare_configuration_saved' => 'CloudFlare credentials are saved successfully'));
     echo 'Location admin.php?page=w3tc_extensions&extension=cloudflare&' . 'action=view&' . $postfix;
     exit;
 }
 public function w3tc_ajax_newrelic_apply_configuration()
 {
     $api_key = $_REQUEST['api_key'];
     $monitoring_type = Util_Request::get('monitoring_type', 'apm');
     $apm_application_name = Util_Request::get('apm_application_name');
     $browser_application_id = Util_Request::get('browser_application_id');
     $c = Dispatcher::config();
     $c->set(array('newrelic', 'api_key'), $api_key);
     if ($monitoring_type == 'apm') {
         $c->set(array('newrelic', 'monitoring_type'), 'apm');
         $c->set(array('newrelic', 'apm.application_name'), $apm_application_name);
     } else {
         $c->set(array('newrelic', 'monitoring_type'), 'browser');
         $c->set(array('newrelic', 'browser.application_id'), $browser_application_id);
     }
     $c->save();
     // flush cached values on api key change to allow to reset it from ui
     // if something goes wrong
     update_option('w3tc_nr_account_id', '');
     update_option('w3tc_nr_application_id', '');
     $postfix = Util_Admin::custom_message_id(array(), array('newrelic_configuration_saved' => 'NewRelic configuration is saved successfully'));
     echo 'Location admin.php?page=w3tc_general&' . $postfix;
 }
 public function w3tc_ajax_cdn_highwinds_configure_cnames()
 {
     $details = array('cnames' => Util_Request::get_array('cdn_cnames'));
     $core = Dispatcher::component('Cdn_Core');
     $cdn = $core->get_cdn();
     try {
         // try to obtain CNAMEs
         $cdn->service_cnames_set($details['cnames']);
         $c = Dispatcher::config();
         $c->set('cdn.highwinds.host.domains', $details['cnames']);
         $c->save();
         $postfix = Util_Admin::custom_message_id(array(), array('cdn_cnames_saved' => 'CNAMEs are saved successfully'));
         echo 'Location admin.php?page=w3tc_cdn&' . $postfix;
         exit;
     } catch (\Exception $ex) {
         $details['error_message'] = $ex->getMessage();
     }
     $this->render_configure_cnames_form($details);
     exit;
 }
 public function w3tc_ajax_cdn_rackspace_containers_done()
 {
     $user_name = $_REQUEST['user_name'];
     $api_key = $_REQUEST['api_key'];
     $access_token = $_REQUEST['access_token'];
     $access_region_descriptor = json_decode(strtr($_REQUEST['access_region_descriptor'], '!^', '"\\'), true);
     $region = $_REQUEST['region'];
     $container = Util_Request::get('container');
     $api_files = new Cdn_RackSpace_Api_CloudFiles(array('access_token' => $access_token, 'access_region_descriptor' => $access_region_descriptor, 'new_access_required' => ''));
     $api_cdn = new Cdn_RackSpace_Api_CloudFilesCdn(array('access_token' => $access_token, 'access_region_descriptor' => $access_region_descriptor, 'new_access_required' => ''));
     try {
         if (empty($container)) {
             $container_new = $_REQUEST['container_new'];
             if (empty($container_new)) {
                 throw new \Exception('Please select container');
             }
             $api_files->container_create($container_new);
             $api_cdn->container_cdn_enable($container_new);
             $container = $container_new;
         }
     } catch (\Exception $ex) {
         $containers = $api_cdn->containers();
         $details = array('user_name' => $user_name, 'api_key' => $api_key, 'access_token' => $access_token, 'access_region_descriptor_serialized' => strtr(json_encode($access_region_descriptor), '"\\', '!^'), 'region' => $region, 'containers' => $containers);
         $details['error_message'] = $ex->getMessage();
         include W3TC_DIR . '/Cdn_RackSpaceCloudFiles_Popup_View_Containers.php';
         exit;
     }
     $c = Dispatcher::config();
     $c->set('cdn.rscf.user', $user_name);
     $c->set('cdn.rscf.key', $api_key);
     $c->set('cdn.rscf.location', $region);
     $c->set('cdn.rscf.container', $container);
     $c->save();
     // reset calculated state
     $state = Dispatcher::config_state();
     $state->set('cdn.rackspace_cf.access_state', '');
     $state->save();
     $postfix = Util_Admin::custom_message_id(array(), array('cdn_configuration_saved' => 'CDN credentials are saved successfully'));
     echo 'Location admin.php?page=w3tc_cdn&' . $postfix;
     exit;
 }