126 lines
3.3 KiB
PHP
126 lines
3.3 KiB
PHP
|
<?php
|
||
|
namespace W3TC;
|
||
|
|
||
|
class Cdn_StackPath2_Widget {
|
||
|
static public function admin_init_w3tc_dashboard() {
|
||
|
$o = new Cdn_StackPath2_Widget();
|
||
|
add_action( 'admin_print_styles',
|
||
|
array( $o, 'admin_print_styles' ) );
|
||
|
add_action( 'admin_print_scripts',
|
||
|
array( $o, 'admin_print_scripts' ) );
|
||
|
|
||
|
Util_Widget::add2( 'w3tc_stackpath', 2000,
|
||
|
'<div class="w3tc-widget-stackpath2-logo"></div>',
|
||
|
array( $o, 'widget_form' ),
|
||
|
Util_Ui::admin_url( 'admin.php?page=w3tc_cdn' ),
|
||
|
'normal' );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Runs plugin
|
||
|
*/
|
||
|
function widget_form() {
|
||
|
$c = Dispatcher::config();
|
||
|
|
||
|
// Configure authorize and have_zone
|
||
|
$authorized = $c->get_string( 'cdn.stackpath2.client_id' ) != '' &&
|
||
|
$c->get_string( 'cdn.engine' ) == 'stackpath2';
|
||
|
|
||
|
if ( $authorized ) {
|
||
|
include dirname( __FILE__ ) . DIRECTORY_SEPARATOR .
|
||
|
'Cdn_StackPath2_Widget_View_Authorized.php';
|
||
|
} else {
|
||
|
include dirname( __FILE__ ) . DIRECTORY_SEPARATOR .
|
||
|
'Cdn_StackPath2_Widget_View_Unauthorized.php';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
static function w3tc_ajax_cdn_stackpath2_widgetdata() {
|
||
|
$c = Dispatcher::config();
|
||
|
$cs = Dispatcher::config_state();
|
||
|
|
||
|
$api = new Cdn_StackPath2_Api( array(
|
||
|
'client_id' => $c->get_string( 'cdn.stackpath2.client_id' ),
|
||
|
'client_secret' => $c->get_string( 'cdn.stackpath2.client_secret' ),
|
||
|
'stack_id' => $c->get_string( 'cdn.stackpath2.stack_id' ),
|
||
|
'access_token' => $cs->get_string( 'cdn.stackpath2.access_token' )
|
||
|
) );
|
||
|
|
||
|
$stack_id = $c->get_string( 'cdn.stackpath2.stack_id' );
|
||
|
$site_id = $c->get_string( 'cdn.stackpath2.site_id' );
|
||
|
$response = array();
|
||
|
|
||
|
try {
|
||
|
$r = $api->site_metrics( $site_id, 7 );
|
||
|
$series = $r['series'][0];
|
||
|
|
||
|
$keys = $series['metrics'];
|
||
|
$stats = array();
|
||
|
foreach ($series['samples'] as $sample) {
|
||
|
$row = array();
|
||
|
for ( $n = 0; $n < count( $keys ); $n++ ) {
|
||
|
$row[$keys[$n]] = $sample['values'][$n];
|
||
|
}
|
||
|
|
||
|
$stats[] = $row;
|
||
|
}
|
||
|
|
||
|
$total_mb = 0;
|
||
|
$total_requests = 0;
|
||
|
$chart_mb = array( array('Date', 'MB', 'Requests' ) );
|
||
|
|
||
|
$dd = new \DateTime();
|
||
|
|
||
|
foreach ($stats as $r) {
|
||
|
$total_mb += $r['xferUsedTotalMB'];
|
||
|
$total_requests += $r['requestsCountTotal'];
|
||
|
$d = $dd->setTimestamp( (int)$r['usageTime'] );
|
||
|
$chart_mb[] = array(
|
||
|
$d->format( 'M/d' ),
|
||
|
$r['xferUsedTotalMB'],
|
||
|
$r['requestsCountTotal']
|
||
|
);
|
||
|
}
|
||
|
|
||
|
$response['summary_mb'] = sprintf( '%.2f MB', $total_mb );
|
||
|
$response['summary_requests'] = $total_requests;
|
||
|
$response['chart_mb'] = $chart_mb;
|
||
|
|
||
|
$response['url_manage'] =
|
||
|
"https://control.stackpath.com/stacks/$stack_id/cdn/sites/$site_id/cache";
|
||
|
$response['url_reports'] =
|
||
|
"https://control.stackpath.com/stacks/$stack_id/cdn/sites/$site_id/overview";
|
||
|
} catch ( \Exception $ex ) {
|
||
|
$response['error'] = $ex->getMessage();
|
||
|
}
|
||
|
|
||
|
echo json_encode( $response );
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
public function admin_print_styles() {
|
||
|
wp_enqueue_style( 'w3tc-widget' );
|
||
|
wp_enqueue_style( 'w3tc-stackpath-widget',
|
||
|
plugins_url( 'Cdn_StackPath2_Widget_View.css', W3TC_FILE ),
|
||
|
array(), W3TC_VERSION );
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
public function admin_print_scripts() {
|
||
|
wp_enqueue_style( 'w3tc-widget' );
|
||
|
wp_enqueue_script( 'google-jsapi', 'https://www.google.com/jsapi');
|
||
|
wp_enqueue_script( 'w3tc-stackpath-widget',
|
||
|
plugins_url( 'Cdn_StackPath2_Widget_View.js', W3TC_FILE ),
|
||
|
array( 'google-jsapi' ), W3TC_VERSION );
|
||
|
wp_enqueue_script( 'w3tc-metadata' );
|
||
|
wp_enqueue_script( 'w3tc-widget' );
|
||
|
}
|
||
|
|
||
|
}
|