105 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace W3TC;
 | |
| 
 | |
| /**
 | |
|  * class CdnEngine
 | |
|  */
 | |
| class CdnEngine {
 | |
| 	/**
 | |
| 	 * Returns CdnEngine_Base instance
 | |
| 	 *
 | |
| 	 * @param string  $engine
 | |
| 	 * @param array   $config
 | |
| 	 * @return CdnEngine_Base
 | |
| 	 */
 | |
| 	static function instance( $engine, $config = array() ) {
 | |
| 		static $instances = array();
 | |
| 
 | |
| 		$instance_key = sprintf( '%s_%s', $engine, md5( serialize( $config ) ) );
 | |
| 
 | |
| 		if ( !isset( $instances[$instance_key] ) ) {
 | |
| 			switch ( $engine ) {
 | |
| 			case 'akamai':
 | |
| 				$instances[$instance_key] = new CdnEngine_Mirror_Akamai( $config );
 | |
| 				break;
 | |
| 
 | |
| 			case 'att':
 | |
| 				$instances[$instance_key] = new CdnEngine_Mirror_Att( $config );
 | |
| 				break;
 | |
| 
 | |
| 			case 'azure':
 | |
| 				$instances[$instance_key] = new CdnEngine_Azure( $config );
 | |
| 				break;
 | |
| 
 | |
| 			case 'cf':
 | |
| 				$instances[$instance_key] = new CdnEngine_CloudFront( $config );
 | |
| 				break;
 | |
| 
 | |
| 			case 'cf2':
 | |
| 				$instances[$instance_key] = new CdnEngine_Mirror_CloudFront( $config );
 | |
| 				break;
 | |
| 
 | |
| 			case 'cotendo':
 | |
| 				$instances[$instance_key] = new CdnEngine_Mirror_Cotendo( $config );
 | |
| 				break;
 | |
| 
 | |
| 			case 'edgecast':
 | |
| 				$instances[$instance_key] = new CdnEngine_Mirror_Edgecast( $config );
 | |
| 				break;
 | |
| 
 | |
| 			case 'ftp':
 | |
| 				$instances[$instance_key] = new CdnEngine_Ftp( $config );
 | |
| 				break;
 | |
| 
 | |
| 			case 'google_drive':
 | |
| 				$instances[$instance_key] = new CdnEngine_GoogleDrive( $config );
 | |
| 				break;
 | |
| 
 | |
| 			case 'highwinds':
 | |
| 				$instances[$instance_key] = new CdnEngine_Mirror_Highwinds( $config );
 | |
| 				break;
 | |
| 
 | |
| 			case 'limelight':
 | |
| 				$instances[$instance_key] = new CdnEngine_Mirror_LimeLight( $config );
 | |
| 				break;
 | |
| 
 | |
| 			case 'mirror':
 | |
| 				$instances[$instance_key] = new CdnEngine_Mirror( $config );
 | |
| 				break;
 | |
| 
 | |
| 			case 'rackspace_cdn':
 | |
| 				$instances[$instance_key] = new CdnEngine_Mirror_RackSpaceCdn( $config );
 | |
| 				break;
 | |
| 
 | |
| 			case 'rscf':
 | |
| 				$instances[$instance_key] =
 | |
| 					new CdnEngine_RackSpaceCloudFiles( $config );
 | |
| 				break;
 | |
| 
 | |
| 			case 's3':
 | |
| 				$instances[$instance_key] = new CdnEngine_S3( $config );
 | |
| 				break;
 | |
| 
 | |
| 			case 's3_compatible':
 | |
| 				$instances[$instance_key] = new CdnEngine_S3_Compatible( $config );
 | |
| 				break;
 | |
| 
 | |
| 			case 'stackpath':
 | |
| 				$instances[$instance_key] = new CdnEngine_Mirror_StackPath( $config );
 | |
| 				break;
 | |
| 
 | |
| 			case 'stackpath2':
 | |
| 				$instances[$instance_key] = new CdnEngine_Mirror_StackPath2( $config );
 | |
| 				break;
 | |
| 
 | |
| 			default :
 | |
| 				trigger_error( 'Incorrect CDN engine', E_USER_WARNING );
 | |
| 				$instances[$instance_key] = new CdnEngine_Base();
 | |
| 				break;
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		return $instances[$instance_key];
 | |
| 	}
 | |
| }
 |