537 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			537 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace W3TC;
 | |
| 
 | |
| class Cdn_RackSpaceCdn_Popup {
 | |
| 	public static function w3tc_ajax() {
 | |
| 		$o = new Cdn_RackSpaceCdn_Popup();
 | |
| 
 | |
| 		add_action( 'w3tc_ajax_cdn_rackspace_intro', array( $o, 'w3tc_ajax_cdn_rackspace_intro' ) );
 | |
| 		add_action( 'w3tc_ajax_cdn_rackspace_intro_done', array( $o, 'w3tc_ajax_cdn_rackspace_intro_done' ) );
 | |
| 		add_action( 'w3tc_ajax_cdn_rackspace_regions_done', array( $o, 'w3tc_ajax_cdn_rackspace_regions_done' ) );
 | |
| 		add_action( 'w3tc_ajax_cdn_rackspace_services_done', array( $o, 'w3tc_ajax_cdn_rackspace_services_done' ) );
 | |
| 		add_action( 'w3tc_ajax_cdn_rackspace_service_create_done', array( $o, 'w3tc_ajax_cdn_rackspace_service_create_done' ) );
 | |
| 		add_action( 'w3tc_ajax_cdn_rackspace_service_get_state', array( $o, 'w3tc_ajax_cdn_rackspace_service_get_state' ) );
 | |
| 		add_action( 'w3tc_ajax_cdn_rackspace_service_created_done', array( $o, 'w3tc_ajax_cdn_rackspace_service_created_done' ) );
 | |
| 		add_action( 'w3tc_ajax_cdn_rackspace_service_actualize_done', array( $o, 'w3tc_ajax_cdn_rackspace_service_actualize_done' ) );
 | |
| 		add_action( 'w3tc_ajax_cdn_rackspace_configure_domains', array( $o, 'w3tc_ajax_cdn_rackspace_configure_domains' ) );
 | |
| 		add_action( 'w3tc_ajax_cdn_rackspace_configure_domains_done', array( $o, 'w3tc_ajax_cdn_rackspace_configure_domains_done' ) );
 | |
| 	}
 | |
| 
 | |
| 	public function w3tc_ajax_cdn_rackspace_intro() {
 | |
| 		$c = Dispatcher::config();
 | |
| 
 | |
| 		$details = array(
 | |
| 			'user_name' => $c->get_string( 'cdn.rackspace_cdn.user_name' ),
 | |
| 			'api_key'   => $c->get_string( 'cdn.rackspace_cdn.api_key' ),
 | |
| 		);
 | |
| 
 | |
| 		include W3TC_DIR . '/Cdn_RackSpaceCdn_Popup_View_Intro.php';
 | |
| 		exit();
 | |
| 	}
 | |
| 
 | |
| 	public function w3tc_ajax_cdn_rackspace_intro_done() {
 | |
| 		$this->_render_cdn_rackspace_regions(
 | |
| 			array(
 | |
| 				'user_name' => Util_Request::get_string( 'user_name' ),
 | |
| 				'api_key' => Util_Request::get_string( 'api_key' ),
 | |
| 			)
 | |
| 		);
 | |
| 	}
 | |
| 
 | |
| 	private function _render_cdn_rackspace_regions( $details ) {
 | |
| 		$user_name = $details['user_name'];
 | |
| 		$api_key   = $details['api_key'];
 | |
| 
 | |
| 		try {
 | |
| 			$r = Cdn_RackSpace_Api_Tokens::authenticate( $user_name, $api_key );
 | |
| 		} catch ( \Exception $ex ) {
 | |
| 			$details = array(
 | |
| 				'user_name'     => $user_name,
 | |
| 				'api_key'       => $api_key,
 | |
| 				'error_message' => 'Can\'t authenticate: ' . $ex->getMessage(),
 | |
| 			);
 | |
| 			include W3TC_DIR . '/Cdn_RackSpaceCdn_Popup_View_Intro.php';
 | |
| 			exit();
 | |
| 		}
 | |
| 
 | |
| 		$r['regions'] = Cdn_RackSpace_Api_Tokens::cdn_services_by_region( $r['services'] );
 | |
| 
 | |
| 		$details['access_token']       = $r['access_token'];
 | |
| 		$details['region_descriptors'] = $r['regions'];
 | |
| 
 | |
| 		// avoid fights with quotes, magic_quotes may break randomly.
 | |
| 		$details['region_descriptors_serialized'] = strtr( wp_json_encode( $r['regions'] ), '"\\', '!^' );
 | |
| 
 | |
| 		include W3TC_DIR . '/Cdn_RackSpaceCdn_Popup_View_Regions.php';
 | |
| 		exit();
 | |
| 	}
 | |
| 
 | |
| 	public function w3tc_ajax_cdn_rackspace_regions_done() {
 | |
| 		$user_name          = Util_Request::get_string( 'user_name' );
 | |
| 		$api_key            = Util_Request::get_string( 'api_key' );
 | |
| 		$access_token       = Util_Request::get_string( 'access_token' );
 | |
| 		$region             = Util_Request::get_string( 'region' );
 | |
| 		$region_descriptors = json_decode(
 | |
| 			strtr( Util_Request::get_string( 'region_descriptors' ), '!^', '"\\' ),
 | |
| 			true
 | |
| 		);
 | |
| 
 | |
| 		if ( ! isset( $region_descriptors[$region] ) ) {
 | |
| 			return $this->_render_cdn_rackspace_regions(
 | |
| 				array(
 | |
| 					'user_name'     => $user_name,
 | |
| 					'api_key'       => $api_key,
 | |
| 					'error_message' => 'Please select region ' . $region,
 | |
| 				)
 | |
| 			);
 | |
| 		}
 | |
| 
 | |
| 		$api = new Cdn_RackSpace_Api_Cdn(
 | |
| 			array(
 | |
| 				'access_token'             => $access_token,
 | |
| 				'access_region_descriptor' => $region_descriptors[ $region ],
 | |
| 				'new_access_required'      => '',
 | |
| 			)
 | |
| 		);
 | |
| 
 | |
| 		try {
 | |
| 			$services = $api->services();
 | |
| 		} catch ( \Exception $ex ) {
 | |
| 			$details = array(
 | |
| 				'user_name'     => $user_name,
 | |
| 				'api_key'       => $api_key,
 | |
| 				'error_message' => $ex->getMessage(),
 | |
| 			);
 | |
| 			include W3TC_DIR . '/Cdn_RackSpaceCdn_Popup_View_Intro.php';
 | |
| 			exit();
 | |
| 		}
 | |
| 
 | |
| 		$details = array(
 | |
| 			'user_name'                           => $user_name,
 | |
| 			'api_key'                             => $api_key,
 | |
| 			'access_token'                        => $access_token,
 | |
| 			'access_region_descriptor_serialized' => strtr( wp_json_encode( $region_descriptors[ $region ] ), '"\\', '!^' ),
 | |
| 			'region'                              => $region,
 | |
| 			// avoid fights with quotes, magic_quotes may break randomly.
 | |
| 			'services'                            => $services,
 | |
| 		);
 | |
| 
 | |
| 		include W3TC_DIR . '/Cdn_RackSpaceCdn_Popup_View_Services.php';
 | |
| 		exit();
 | |
| 	}
 | |
| 
 | |
| 	public function w3tc_ajax_cdn_rackspace_services_done() {
 | |
| 		$user_name                = Util_Request::get_string( 'user_name' );
 | |
| 		$api_key                  = Util_Request::get_string( 'api_key' );
 | |
| 		$access_token             = Util_Request::get_string( 'access_token' );
 | |
| 		$access_region_descriptor = json_decode( strtr( Util_Request::get_string( 'access_region_descriptor' ), '!^', '"\\' ), true );
 | |
| 		$region                   = Util_Request::get_string( 'region' );
 | |
| 		$service                  = Util_Request::get( 'service' );
 | |
| 
 | |
| 		if ( !empty( $service ) ) {
 | |
| 			$this->_render_service_actualize(
 | |
| 				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,
 | |
| 					'service_id'                          => $service,
 | |
| 				)
 | |
| 			);
 | |
| 
 | |
| 			exit();
 | |
| 		}
 | |
| 
 | |
| 		$home_url = get_home_url();
 | |
| 		$parsed   = wp_parse_url( $home_url );
 | |
| 
 | |
| 		$is_https = ( 'https' === $parsed['scheme'] );
 | |
| 
 | |
| 		$details = array(
 | |
| 			'user_name'                           => $user_name,
 | |
| 			'api_key'                             => $api_key,
 | |
| 			'access_token'                        => $access_token,
 | |
| 			'access_region_descriptor_serialized' => strtr( wp_json_encode( $access_region_descriptor ), '"\\', '!^' ),
 | |
| 			'region'                              => $region,
 | |
| 			'name'                                => '',
 | |
| 			'protocol'                            => ( $is_https ? 'https' : 'http' ),
 | |
| 			'cname_http'                          => '',
 | |
| 			'cname_http_style'                    => ( $is_https ? 'display: none' : '' ),
 | |
| 			'cname_https_prefix'                  => '',
 | |
| 			'cname_https_style'                   => ( $is_https ? '' : 'display: none' ),
 | |
| 			'origin'                              => Util_Environment::home_url_host(),
 | |
| 		);
 | |
| 
 | |
| 		include W3TC_DIR . '/Cdn_RackSpaceCdn_Popup_View_Service_Create.php';
 | |
| 		exit();
 | |
| 	}
 | |
| 
 | |
| 	public function w3tc_ajax_cdn_rackspace_service_create_done() {
 | |
| 		$user_name                = Util_Request::get_string( 'user_name' );
 | |
| 		$api_key                  = Util_Request::get_string( 'api_key' );
 | |
| 		$access_token             = Util_Request::get_string( 'access_token' );
 | |
| 		$access_region_descriptor = json_decode( strtr( Util_Request::get_string( 'access_region_descriptor' ), '!^', '"\\' ), true );
 | |
| 		$region                   = Util_Request::get_string( 'region' );
 | |
| 		$name                     = Util_Request::get_string( 'name' );
 | |
| 		$protocol                 = Util_Request::get_string( 'protocol' );
 | |
| 		$cname_http               = Util_Request::get_string( 'cname_http' );
 | |
| 		$cname_https_prefix       = Util_Request::get_string( 'cname_https_prefix' );
 | |
| 		$is_https                 = ( 'https' === $protocol );
 | |
| 		$cname                    = ( $is_https ? $cname_https_prefix : $cname_http );
 | |
| 		$api                      = new Cdn_RackSpace_Api_Cdn(
 | |
| 			array(
 | |
| 				'access_token'             => $access_token,
 | |
| 				'access_region_descriptor' => $access_region_descriptor,
 | |
| 				'new_access_required'      => '',
 | |
| 			)
 | |
| 		);
 | |
| 		$service_id               = null;
 | |
| 		$access_url               = null;
 | |
| 
 | |
| 		try {
 | |
| 			$domain = array(
 | |
| 				'domain'   => $cname,
 | |
| 				'protocol' => ( $is_https ? 'https' : 'http' ),
 | |
| 			);
 | |
| 
 | |
| 			if ( $is_https ) {
 | |
| 				$domain['certificate'] = 'shared';
 | |
| 			}
 | |
| 
 | |
| 			$service_id = $api->service_create(
 | |
| 				array(
 | |
| 					'name'    => $name,
 | |
| 					'domains' => array( $domain ),
 | |
| 					'origins' => array(
 | |
| 						array(
 | |
| 							'origin'         => Util_Environment::home_url_host(),
 | |
| 							'port'           => ( $is_https ? 443 : 80 ),
 | |
| 							'ssl'            => $is_https,
 | |
| 							'hostheadertype' => 'origin',
 | |
| 							'rules'          => array(),
 | |
| 						),
 | |
| 					),
 | |
| 					'caching' => array(
 | |
| 						array(
 | |
| 							'name' => 'default',
 | |
| 							'ttl'  => 86400,
 | |
| 						),
 | |
| 					),
 | |
| 				)
 | |
| 			);
 | |
| 		} catch ( \Exception $ex ) {
 | |
| 			$details = array(
 | |
| 				'user_name'                           => $user_name,
 | |
| 				'api_key'                             => $api_key,
 | |
| 				'access_token'                        => $access_token,
 | |
| 				'access_region_descriptor_serialized' => strtr( wp_json_encode( $access_region_descriptor ), '"\\', '!^' ),
 | |
| 				'region'                              => $region,
 | |
| 				'name'                                => $name,
 | |
| 				'protocol'                            => ( $is_https ? 'https' : 'http' ),
 | |
| 				'cname_http'                          => $cname_http,
 | |
| 				'cname_http_style'                    => ( $is_https ? 'display: none' : '' ),
 | |
| 				'cname_https_prefix'                  => $cname_https_prefix,
 | |
| 				'cname_https_style'                   => ( $is_https ? '' : 'display: none' ),
 | |
| 				'origin'                              => Util_Environment::home_url_host(),
 | |
| 				'error_message'                       => $ex->getMessage(),
 | |
| 			);
 | |
| 
 | |
| 			include W3TC_DIR . '/Cdn_RackSpaceCdn_Popup_View_Service_Create.php';
 | |
| 			exit();
 | |
| 		}
 | |
| 
 | |
| 		$details = array(
 | |
| 			'user_name'                           => $user_name,
 | |
| 			'api_key'                             => $api_key,
 | |
| 			'access_token'                        => $access_token,
 | |
| 			'access_region_descriptor_serialized' => strtr( wp_json_encode( $access_region_descriptor ), '"\\', '!^' ),
 | |
| 			'region'                              => $region,
 | |
| 			'name'                                => $name,
 | |
| 			'is_https'                            => $is_https,
 | |
| 			'cname'                               => $cname,
 | |
| 			'service_id'                          => $service_id,
 | |
| 		);
 | |
| 
 | |
| 		include W3TC_DIR . '/Cdn_RackSpaceCdn_Popup_View_Service_Created.php';
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * AJAX returning json for js-script about service state.
 | |
| 	 */
 | |
| 	public function w3tc_ajax_cdn_rackspace_service_get_state() {
 | |
| 		$access_token             = Util_Request::get_string( 'access_token' );
 | |
| 		$access_region_descriptor = json_decode( strtr( Util_Request::get_string( 'access_region_descriptor' ), '!^', '"\\' ), true );
 | |
| 		$service_id               = Util_Request::get_string( 'service_id' );
 | |
| 		$api                      = new Cdn_RackSpace_Api_Cdn(
 | |
| 			array(
 | |
| 				'access_token'             => $access_token,
 | |
| 				'access_region_descriptor' => $access_region_descriptor,
 | |
| 				'new_access_required'      => '',
 | |
| 			)
 | |
| 		);
 | |
| 		$service                  = $api->service_get( $service_id );
 | |
| 		$response                 = array( 'status' => 'Unknown' );
 | |
| 
 | |
| 		if ( isset( $service['status'] ) ) {
 | |
| 			$response['status'] = $service['status'];
 | |
| 		}
 | |
| 
 | |
| 		if ( isset( $service['links_by_rel']['access_url'] ) ) {
 | |
| 			$response['access_url'] = $service['links_by_rel']['access_url']['href'];
 | |
| 		}
 | |
| 
 | |
| 		if ( isset( $service['domains'] ) ) {
 | |
| 			$response['cname'] = $service['domains'][0]['domain'];
 | |
| 		}
 | |
| 
 | |
| 		// decode to friendly name.
 | |
| 		if ( 'create_in_progress' === $response['status'] ) {
 | |
| 			$response['status'] = 'Creation in progress...';
 | |
| 		}
 | |
| 
 | |
| 		echo esc_html( wp_json_encode( $response ) );
 | |
| 	}
 | |
| 
 | |
| 	public function w3tc_ajax_cdn_rackspace_service_created_done() {
 | |
| 		$this->_save_config();
 | |
| 	}
 | |
| 
 | |
| 	private function _render_service_actualize( $details ) {
 | |
| 		$access_region_descriptor = json_decode( strtr( $details['access_region_descriptor_serialized'], '!^', '"\\' ), true );
 | |
| 
 | |
| 		$api = new Cdn_RackSpace_Api_Cdn(
 | |
| 			array(
 | |
| 				'access_token'             => $details['access_token'],
 | |
| 				'access_region_descriptor' => $access_region_descriptor,
 | |
| 				'new_access_required'      => '',
 | |
| 			)
 | |
| 		);
 | |
| 
 | |
| 		$service = null;
 | |
| 		try {
 | |
| 			$service = $api->service_get( $details['service_id'] );
 | |
| 		} catch ( \Exception $ex ) {
 | |
| 			$details['error_message'] = $ex->getMessage();
 | |
| 			include W3TC_DIR . '/Cdn_RackSpaceCdn_Popup_View_Intro.php';
 | |
| 			exit();
 | |
| 		}
 | |
| 
 | |
| 		$origin   = '';
 | |
| 		$protocol = 'http';
 | |
| 		if ( isset( $service['origins'] ) && $service['origins'][0]['origin'] ) {
 | |
| 			$protocol = $service['origins'][0]['ssl'] ? 'https' : 'http';
 | |
| 			$origin   = $service['origins'][0]['origin'];
 | |
| 		}
 | |
| 
 | |
| 		$details['name']     = $service['name'];
 | |
| 		$details['protocol'] = $protocol;
 | |
| 		$details['origin']   = array(
 | |
| 			'current' => $origin,
 | |
| 			'new'     => Util_Environment::home_url_host(),
 | |
| 		);
 | |
| 
 | |
| 		include W3TC_DIR . '/Cdn_RackSpaceCdn_Popup_View_Service_Actualize.php';
 | |
| 		exit();
 | |
| 	}
 | |
| 
 | |
| 	public function w3tc_ajax_cdn_rackspace_service_actualize_done() {
 | |
| 		$user_name                = Util_Request::get_string( 'user_name' );
 | |
| 		$api_key                  = Util_Request::get_string( 'api_key' );
 | |
| 		$access_token             = Util_Request::get_string( 'access_token' );
 | |
| 		$access_region_descriptor = json_decode( strtr( Util_Request::get_string( 'access_region_descriptor' ), '!^', '"\\' ), true );
 | |
| 		$region                   = Util_Request::get_string( 'region' );
 | |
| 		$service_id               = Util_Request::get_string( 'service_id' );
 | |
| 		$api                      = new Cdn_RackSpace_Api_Cdn(
 | |
| 			array(
 | |
| 				'access_token' => $access_token,
 | |
| 				'access_region_descriptor' => $access_region_descriptor,
 | |
| 				'new_access_required'      => '',
 | |
| 			)
 | |
| 		);
 | |
| 
 | |
| 		try {
 | |
| 			$service = $api->service_get( $service_id );
 | |
| 
 | |
| 			$is_https = false;
 | |
| 			$origin   = '';
 | |
| 			if ( isset( $service['origins'] ) && $service['origins'][0]['ssl'] ) {
 | |
| 				$is_https = $service['origins'][0]['ssl'];
 | |
| 				$origin   = $service['origins'][0]['origin'];
 | |
| 			}
 | |
| 
 | |
| 			$new_origin = Util_Environment::home_url_host();
 | |
| 			if ( $origin !== $new_origin ) {
 | |
| 				$api->service_set(
 | |
| 					$service_id,
 | |
| 					array(
 | |
| 						array(
 | |
| 							'op'    => 'replace',
 | |
| 							'path'  => '/origins',
 | |
| 							'value' => array(
 | |
| 								array(
 | |
| 									'origin'         => $new_origin,
 | |
| 									'port'           => ( $is_https ? 443 : 80 ),
 | |
| 									'ssl'            => $is_https,
 | |
| 									'hostheadertype' => 'origin',
 | |
| 									'rules'          => array(),
 | |
| 								),
 | |
| 							),
 | |
| 						),
 | |
| 					)
 | |
| 				);
 | |
| 			}
 | |
| 		} catch ( \Exception $ex ) {
 | |
| 			$details = array(
 | |
| 				'user_name'     => $user_name,
 | |
| 				'api_key'       => $api_key,
 | |
| 				'error_message' => $ex->getMessage(),
 | |
| 			);
 | |
| 			include W3TC_DIR . '/Cdn_RackSpaceCdn_Popup_View_Intro.php';
 | |
| 			exit();
 | |
| 		}
 | |
| 
 | |
| 		$this->_save_config();
 | |
| 	}
 | |
| 
 | |
| 	private function _save_config() {
 | |
| 		$user_name                = Util_Request::get_string( 'user_name' );
 | |
| 		$api_key                  = Util_Request::get_string( 'api_key' );
 | |
| 		$access_token             = Util_Request::get_string( 'access_token' );
 | |
| 		$access_region_descriptor = json_decode( strtr( Util_Request::get_string( 'access_region_descriptor' ), '!^', '"\\' ), true );
 | |
| 		$region                   = Util_Request::get_string( 'region' );
 | |
| 		$service_id               = Util_Request::get_string( 'service_id' );
 | |
| 		$api                      = new Cdn_RackSpace_Api_Cdn(
 | |
| 			array(
 | |
| 				'access_token' => $access_token,
 | |
| 				'access_region_descriptor' => $access_region_descriptor,
 | |
| 				'new_access_required'      => '',
 | |
| 			)
 | |
| 		);
 | |
| 		$service                  = $api->service_get( $service_id );
 | |
| 		$access_url               = $service['links_by_rel']['access_url']['href'];
 | |
| 		$protocol                 = 'http';
 | |
| 		$domain                   = '';
 | |
| 
 | |
| 		if ( isset( $service['domains'] ) && $service['domains'][0]['protocol'] ) {
 | |
| 			$protocol = $service['domains'][0]['protocol'];
 | |
| 			$domain   = $service['domains'][0]['domain'];
 | |
| 		}
 | |
| 
 | |
| 		$c = Dispatcher::config();
 | |
| 
 | |
| 		$c->set( 'cdn.rackspace_cdn.user_name', $user_name );
 | |
| 		$c->set( 'cdn.rackspace_cdn.api_key', $api_key );
 | |
| 		$c->set( 'cdn.rackspace_cdn.region', $region );
 | |
| 		$c->set( 'cdn.rackspace_cdn.service.name', $service['name'] );
 | |
| 		$c->set( 'cdn.rackspace_cdn.service.id', $service_id );
 | |
| 		$c->set( 'cdn.rackspace_cdn.service.access_url', $access_url );
 | |
| 		$c->set( 'cdn.rackspace_cdn.service.protocol', $protocol );
 | |
| 
 | |
| 		if ( 'https' !== $protocol ) {
 | |
| 			$c->set( 'cdn.rackspace_cdn.domains', array( $domain ) );
 | |
| 		}
 | |
| 
 | |
| 		$c->save();
 | |
| 
 | |
| 		// reset calculated state.
 | |
| 		$state = Dispatcher::config_state();
 | |
| 		$state->set( 'cdn.rackspace_cdn.access_state', '' );
 | |
| 		$state->save();
 | |
| 
 | |
| 		$postfix = Util_Admin::custom_message_id(
 | |
| 			array(),
 | |
| 			array( 'cdn_configuration_saved' => 'CDN credentials are saved successfully' )
 | |
| 		);
 | |
| 		echo esc_url( 'Location admin.php?page=w3tc_cdn&' . $postfix );
 | |
| 		exit();
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * CNAMEs popup
 | |
| 	 */
 | |
| 	public function w3tc_ajax_cdn_rackspace_configure_domains() {
 | |
| 		$this->render_configure_domains_form();
 | |
| 		exit();
 | |
| 	}
 | |
| 
 | |
| 	public function w3tc_ajax_cdn_rackspace_configure_domains_done() {
 | |
| 		$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_domains_set( $details['cnames'] );
 | |
| 
 | |
| 			$c = Dispatcher::config();
 | |
| 			$c->set( 'cdn.rackspace_cdn.domains', $details['cnames'] );
 | |
| 			$c->save();
 | |
| 
 | |
| 			$postfix = Util_Admin::custom_message_id(
 | |
| 				array(),
 | |
| 				array( 'cdn_cnames_saved' => 'CNAMEs are saved successfully' )
 | |
| 			);
 | |
| 			echo esc_url( 'Location admin.php?page=w3tc_cdn&' . $postfix );
 | |
| 			exit();
 | |
| 		} catch ( \Exception $ex ) {
 | |
| 			$details['error_message'] = $ex->getMessage();
 | |
| 		}
 | |
| 
 | |
| 		$this->render_configure_domains_form( $details );
 | |
| 		exit();
 | |
| 	}
 | |
| 
 | |
| 	private function render_configure_domains_form( $details = array() ) {
 | |
| 		if ( isset( $details['cnames'] ) ) {
 | |
| 			$cnames = $details['cnames'];
 | |
| 		} else {
 | |
| 			$core = Dispatcher::component( 'Cdn_Core' );
 | |
| 			$cdn  = $core->get_cdn();
 | |
| 
 | |
| 			try {
 | |
| 				// try to obtain CNAMEs.
 | |
| 				$cnames = $cdn->service_domains_get();
 | |
| 			} catch ( \Exception $ex ) {
 | |
| 				$details['error_message'] = $ex->getMessage();
 | |
| 				$cnames                   = array();
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		include W3TC_DIR . '/Cdn_RackSpaceCdn_Popup_View_ConfigureDomains.php';
 | |
| 	}
 | |
| 
 | |
| 	private function render_service_value_change( $details, $field ) {
 | |
| 		Util_Ui::hidden( '', $field, $details[ $field ]['new'] );
 | |
| 
 | |
| 		if ( ! isset( $details[ $field ]['current'] ) || $details[ $field ]['current'] === $details[ $field ]['new'] ) {
 | |
| 			echo esc_html( $details[ $field ]['new'] );
 | |
| 		} else {
 | |
| 			echo wp_kses(
 | |
| 				sprintf(
 | |
| 					// translators: 1 opening HTML strong tag, 2 current setting value, 3 closing HTML strong tag followed by HTML line break,
 | |
| 					// translators: 4 opening HTML strong tag, 5 new setting value, 6 closing HTML strong tag followed by HTML line break.
 | |
| 					__(
 | |
| 						'currently set to %1$s%2$s%3$s will be changed to %4$s%5$s%6$s',
 | |
| 						'w3-total-cache'
 | |
| 					),
 | |
| 					'<strong>',
 | |
| 					empty( $details[ $field ]['current'] ) ? '<empty>' : $details[ $field ]['current'],
 | |
| 					'</strong><br />',
 | |
| 					'<strong>',
 | |
| 					$details[ $field ]['new'],
 | |
| 					'</strong><br />'
 | |
| 				),
 | |
| 				array(
 | |
| 					'strong' => array(),
 | |
| 					'empty'  => array(),
 | |
| 					'br'     => array(),
 | |
| 				)
 | |
| 			);
 | |
| 		}
 | |
| 	}
 | |
| }
 |