' . '
', 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() { $api_response = null; if ( Util_Request::get( 'cache' ) != 'no' ) { $r = get_transient( 'w3tc_pagespeed_widgetdata' ); $r = @json_decode( $r, true ); if ( is_array( $r ) && isset( $r['time'] ) && $r['time'] >= time() - 3600 ) { $api_response = $r; } } if ( is_null( $api_response ) ) { $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 ); $api_response = $w3_pagespeed->analyze( get_home_url() ); if ( !$api_response ) { echo json_encode( array( 'error' => 'API call failed' ) ); return; } $api_response['time'] = time(); set_transient( 'w3tc_pagespeed_widgetdata', json_encode( $api_response ), 3600 ); } ob_start(); include __DIR__ . '/PageSpeed_Widget_View_FromApi.php'; $content = ob_get_contents(); ob_end_clean(); echo json_encode( array( '.w3tcps_content' => $content ) ); } public function w3tc_monitoring_score( $score ) { if ( empty( $_SERVER['HTTP_REFERER'] ) ) { return 'n/a'; } $url = isset( $_SERVER['HTTP_REFERER'] ) ? sanitize_text_field( wp_unslash( $_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->get_page_score( $url ); if ( !is_null( $r ) ) { $score .= (int)((float)$r * 100) . ' / 100'; } return $score; } }