138 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * File: Cdn_BunnyCdn_Popup_Pull_Zones.php
 | |
|  *
 | |
|  * Assists with configuring Bunny CDN as an object storage CDN.
 | |
|  * A pull zone selection is presented along with a form to add a new pull zone.
 | |
|  *
 | |
|  * @since   X.X.X
 | |
|  * @package W3TC
 | |
|  *
 | |
|  * @param string           $account_api_key Account PI key.
 | |
|  * @parm  Cdn_BunnyCdn_Api $api             API class object.
 | |
|  * @param array            $details {
 | |
|  *     Bunny CDN API configuration details.
 | |
|  *
 | |
|  *     @type array  $pull_zones           Pull zones.
 | |
|  *     @type string $suggested_origin_url Suggested origin URL or IP.
 | |
|  *     @type string $suggested_zone_name  Suggested pull zone name.
 | |
|  *     @type int    $pull_zone_id         Pull zone id.
 | |
|  *     @type string $error_message        Error message (optional).
 | |
|  * }
 | |
|  * @param string           $server_ip       Server IP address.
 | |
|  */
 | |
| 
 | |
| namespace W3TC;
 | |
| 
 | |
| defined( 'W3TC' ) || die();
 | |
| 
 | |
| ?>
 | |
| <form class="w3tc_cdn_bunnycdn_form" method="post">
 | |
| 	<input type="hidden" name="pull_zone_id" />
 | |
| 	<input type="hidden" name="cdn_hostname" />
 | |
| 	<div class="metabox-holder">
 | |
| 		<?php Util_Ui::postbox_header( esc_html__( 'Select a pull zone', 'w3-total-cache' ) ); ?>
 | |
| 		<table class="form-table">
 | |
| 			<tr>
 | |
| 				<select id="w3tc-pull-zone-id">
 | |
| 					<option value=""<?php echo empty( $details['pull_zone_id'] ) ? ' selected' : ''; ?>>Add a new pull zone</option>
 | |
| 			<?php
 | |
| 			if ( ! empty( $details['pull_zones'] ) ) {
 | |
| 				// List pull zones for selection.
 | |
| 				foreach ( $details['pull_zones'] as $pull_zone ) {
 | |
| 					// Skip pull zones that are disabled or suspended.
 | |
| 					if ( ! $pull_zone['Enabled'] || $pull_zone['Suspended'] ) {
 | |
| 						continue;
 | |
| 					}
 | |
| 
 | |
| 					// Get the CDN hostname and custom hostnames.
 | |
| 					$cdn_hostname = '?';
 | |
| 					$custom_hostnames = array();
 | |
| 
 | |
| 					// Get the CDN hostname.  It should be the system hostname.
 | |
| 					foreach ( $pull_zone['Hostnames'] as $hostname ) {
 | |
| 						if ( ! empty( $hostname['Value'] ) ) {
 | |
| 							if ( ! empty( $hostname['IsSystemHostname'] ) ) {
 | |
| 								// CDN hostname (system); there should only be one.
 | |
| 								$cdn_hostname = $hostname['Value'];
 | |
| 							} else {
 | |
| 								// Custom hostnames; 0 or more.
 | |
| 								$custom_hostnames[] = $hostname['Value'];
 | |
| 							}
 | |
| 						}
 | |
| 					}
 | |
| 
 | |
| 					// Determine the origin URL/IP.
 | |
| 					$origin_url = empty( $pull_zone['OriginUrl'] ) ? $cdn_hostname : $pull_zone['OriginUrl'];
 | |
| 
 | |
| 					// Determine if the current option is selected.
 | |
| 					$is_selected = isset( $details['pull_zone_id'] ) && $details['pull_zone_id'] === $pull_zone['Id'];
 | |
| 
 | |
| 					// Print the select option.
 | |
| 					?>
 | |
| 					<option value="<?php echo esc_attr( $pull_zone['Id'] ); ?>"
 | |
| 						<?php echo $is_selected ? ' selected' : ''; ?>
 | |
| 						data-origin="<?php echo esc_html( $origin_url ); ?>"
 | |
| 						data-name="<?php echo esc_attr( $pull_zone['Name'] ); ?>"
 | |
| 						data-cdn-hostname="<?php echo esc_attr( $cdn_hostname ); ?>"
 | |
| 						data-custom-hostnames="<?php echo esc_attr( implode( ',', $custom_hostnames ) ); ?>">
 | |
| 						<?php echo esc_attr( $pull_zone['Name'] ); ?>
 | |
| 						(<?php echo esc_html( $origin_url ); ?>)
 | |
| 					</option>
 | |
| 					<?php
 | |
| 					// If selected, then get the origin URL/IP and pull zone name.
 | |
| 					if ( $is_selected ) {
 | |
| 						$selected_origin_url       = $origin_url;
 | |
| 						$selected_name             = $pull_zone['Name'];
 | |
| 						$selected_custom_hostnames = implode( "\r\n", $custom_hostnames );
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 
 | |
| 			// Determine origin URL and pull zone name for the fields below.
 | |
| 			$field_origin_url = isset( $selected_origin_url ) ? $selected_origin_url : $details['suggested_origin_url'];
 | |
| 			$field_name       = isset( $selected_name ) ? $selected_name : $details['suggested_zone_name'];
 | |
| 			?>
 | |
| 				</select>
 | |
| 			</tr>
 | |
| 			<tr>
 | |
| 				<td><?php esc_html_e( 'Pull Zone Name', 'w3-total-cache' ); ?>:</td>
 | |
| 				<td>
 | |
| 					<input id="w3tc-pull-zone-name" name="name" type="text" class="w3tc-ignore-change"
 | |
| 						style="width: 550px" value="<?php echo esc_attr( $field_name ); ?>"
 | |
| 						<?php echo ( empty( $details['pull_zone_id'] ) ? '' : 'readonly ' ); ?>
 | |
| 						data-suggested="<?php echo esc_attr( $details['suggested_zone_name'] ); ?>" />
 | |
| 					<p class="description">
 | |
| 						<?php esc_html_e( 'Name of the pull zone (letters, numbers, and dashes).  If empty, one will be automatically generated.', 'w3-total-cache' ); ?>
 | |
| 					</p>
 | |
| 				</td>
 | |
| 			</tr>
 | |
| 			<tr>
 | |
| 				<td><?php esc_html_e( 'Origin URL / IP', 'w3-total-cache' ); ?>:</td>
 | |
| 				<td>
 | |
| 					<input id="w3tc-origin-url" name="origin_url" type="text" class="w3tc-ignore-change"
 | |
| 						style="width: 550px" value="<?php echo esc_attr( $field_origin_url ); ?>"
 | |
| 						<?php echo ( empty( $details['pull_zone_id'] ) ? '' : 'readonly ' ); ?>
 | |
| 						data-suggested="<?php echo esc_attr( $details['suggested_origin_url'] ); ?>" />
 | |
| 					<p class="description">
 | |
| 						<?php
 | |
| 						esc_html_e( 'Pull origin site URL or IP address.', 'w3-total-cache' );
 | |
| 
 | |
| 						if ( ! empty( $server_ip ) ) {
 | |
| 							echo esc_html( ' ' . __( 'Detected server IP address', 'w3-total-cache' ) . ':' . $server_ip );
 | |
| 						}
 | |
| 						?>
 | |
| 					</p>
 | |
| 				</td>
 | |
| 			</tr>
 | |
| 		</table>
 | |
| 
 | |
| 		<p class="submit">
 | |
| 			<input type="button"
 | |
| 				class="w3tc_cdn_bunnycdn_configure_pull_zone w3tc-button-save button-primary"
 | |
| 				value="<?php esc_attr_e( 'Apply', 'w3-total-cache' ); ?>" />
 | |
| 		</p>
 | |
| 		<?php Util_Ui::postbox_footer(); ?>
 | |
| 	</div>
 | |
| </form>
 |