106 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace W3TC;
 | |
| 
 | |
| class Cdn_Highwinds_Widget {
 | |
| 	static public function admin_init_w3tc_dashboard() {
 | |
| 		$o = new Cdn_Highwinds_Widget();
 | |
| 		add_action( 'admin_print_styles',
 | |
| 			array( $o, 'admin_print_styles' ) );
 | |
| 		add_action( 'admin_print_scripts',
 | |
| 			array( $o, 'admin_print_scripts' ) );
 | |
| 		add_action( 'w3tc_widget_setup',
 | |
| 			array( $o, 'w3tc_widget_setup' ), 2000 );
 | |
| 	}
 | |
| 
 | |
| 
 | |
| 
 | |
| 	public function w3tc_widget_setup() {
 | |
| 		Util_Widget::add( 'w3tc_highwinds',
 | |
| 			'<div class="w3tc-widget-highwinds-logo"></div>',
 | |
| 			array( $this, 'widget_form' ),
 | |
| 			Util_Ui::admin_url( 'admin.php?page=w3tc_cdn' ),
 | |
| 			'normal' );
 | |
| 	}
 | |
| 
 | |
| 
 | |
| 
 | |
| 	public function widget_form() {
 | |
| 		$c = Dispatcher::config();
 | |
| 		$account_hash = $c->get_string( 'cdn.highwinds.account_hash' );
 | |
| 		if ( empty( $account_hash ) ) {
 | |
| 			include  W3TC_DIR . '/Cdn_Highwinds_Widget_View_NotConfigured.php';
 | |
| 			return;
 | |
| 		}
 | |
| 
 | |
| 		$url_manage = 'https://striketracker3.highwinds.com/accounts/' .
 | |
| 			$account_hash . '/configure/hosts';
 | |
| 		$url_analyze = 'https://striketracker3.highwinds.com/accounts/' .
 | |
| 			$account_hash . '/analyze/overview';
 | |
| 		$url_purge = Util_Ui::url( array(
 | |
| 				'page' => 'w3tc_cdn',
 | |
| 				'w3tc_cdn_purge' => 'y'
 | |
| 			) );
 | |
| 
 | |
| 		include  W3TC_DIR . '/Cdn_Highwinds_Widget_View.php';
 | |
| 	}
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 	public function admin_print_styles() {
 | |
| 		wp_enqueue_style( 'w3tc-widget' );
 | |
| 		wp_enqueue_style( 'w3tc-highwinds-widget',
 | |
| 			plugins_url( 'Cdn_Highwinds_Widget_View.css', W3TC_FILE ),
 | |
| 			array(), W3TC_VERSION );
 | |
| 	}
 | |
| 
 | |
| 
 | |
| 
 | |
| 	public function admin_print_scripts() {
 | |
| 		wp_enqueue_script( 'google-jsapi', 'https://www.google.com/jsapi' );
 | |
| 		wp_enqueue_script( 'w3tc-highwinds-widget',
 | |
| 			plugins_url( 'Cdn_Highwinds_Widget_View.js', W3TC_FILE ),
 | |
| 			array(), W3TC_VERSION );
 | |
| 	}
 | |
| 
 | |
| 
 | |
| 
 | |
| 	static public function w3tc_ajax_cdn_highwinds_widgetdata() {
 | |
| 		try {
 | |
| 			$core = Dispatcher::component( 'Cdn_Core' );
 | |
| 			$cdn = $core->get_cdn();
 | |
| 
 | |
| 			$analytics = $cdn->service_analytics_transfer();
 | |
| 
 | |
| 			$sum_mbytes = 0;
 | |
| 			$sum_mbps = 0;
 | |
| 			$sum_rps = 0;
 | |
| 			$graph = array( array( 'Date', 'Requests' ) );
 | |
| 			$count = count( $analytics );
 | |
| 
 | |
| 			foreach ( $analytics as $item ) {
 | |
| 				$sum_mbytes += $item['xferUsedTotalMB'];
 | |
| 				$sum_mbps += $item['xferRateMeanMbps'];
 | |
| 				$sum_rps += $item['rpsMean'];
 | |
| 				$graph[] = array(
 | |
| 					gmdate( 'd M', $item['usageTime'] / 1000 ),
 | |
| 					$item['requestsCountTotal']
 | |
| 				);
 | |
| 			}
 | |
| 
 | |
| 			$response = array(
 | |
| 				'transferred_size' => Util_Ui::format_mbytes( $sum_mbytes / $count ),
 | |
| 				'average_mbps' => sprintf( '%.2f', $sum_mbps / $count ),
 | |
| 				'average_rps' => sprintf( '%.2f', $sum_rps / $count ),
 | |
| 				'graph' => $graph
 | |
| 			);
 | |
| 
 | |
| 			echo json_encode( $response );
 | |
| 		} catch ( \Exception $e ) {
 | |
| 			echo json_encode( array(
 | |
| 					'error' => $e->getMessage()
 | |
| 				) );
 | |
| 		}
 | |
| 	}
 | |
| }
 |