' . '
' . __( 'Page Speed Report', 'w3-total-cache' ) . '
', array( $this, 'widget_pagespeed' ), Util_Ui::admin_url( 'admin.php?page=w3tc_general#miscellaneous' ), 'normal' ); } /** * PageSpeed widget * * @return void */ public function widget_pagespeed() { $config = Dispatcher::config(); $key = $config->get_string( 'widget.pagespeed.key' ); if ( empty( $key ) ) include W3TC_DIR . '/PageSpeed_Widget_View_NotConfigured.php'; else include W3TC_DIR . '/PageSpeed_Widget_View.php'; } public function w3tc_ajax_pagespeed_widgetdata() { if ( Util_Request::get( 'cache' ) != 'no' ) { $response = get_transient( 'w3tc_pagespeed_widgetdata' ); $response = @json_decode( $response, true ); if ( is_array( $response ) && isset( $response['time'] ) && $response['time'] >= time() - 60 ) { echo json_encode( $response ); return; } } $config = Dispatcher::config(); $key = $config->get_string( 'widget.pagespeed.key' ); $ref = $config->get_string( 'widget.pagespeed.key.restrict.referrer' ); $w3_pagespeed = new PageSpeed_Api( $key, $ref ); $r = $w3_pagespeed->analyze( get_home_url() ); if ( !$r ) { echo json_encode( array( 'error' => 'API call failed' ) ); return; } $details = ''; $response = array( 'score' => $r['score'] . ' / 100', 'details' => $details, 'time' => time() ); set_transient( 'w3tc_pagespeed_widgetdata', json_encode( $response ), 60 ); echo json_encode( $response ); } public function w3tc_monitoring_score( $score ) { if ( empty( $_SERVER['HTTP_REFERER'] ) ) { return 'n/a'; } $url = $_SERVER['HTTP_REFERER']; $config = Dispatcher::config(); $key = $config->get_string( 'widget.pagespeed.key' ); $ref = $config->get_string( 'widget.pagespeed.key.restrict.referrer' ); $w3_pagespeed = new PageSpeed_Api( $key, $ref ); $r = $w3_pagespeed->analyze( $url ); if ( $r ) $score .= $r['score'] . ' / 100'; return $score; } }