summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jetpack/modules/stats.php')
-rw-r--r--plugins/jetpack/modules/stats.php135
1 files changed, 118 insertions, 17 deletions
diff --git a/plugins/jetpack/modules/stats.php b/plugins/jetpack/modules/stats.php
index 1f349527..fd20f517 100644
--- a/plugins/jetpack/modules/stats.php
+++ b/plugins/jetpack/modules/stats.php
@@ -91,6 +91,33 @@ function stats_enqueue_dashboard_head() {
}
/**
+ * Checks if filter is set and dnt is enabled.
+ *
+ * @return bool
+ */
+function jetpack_is_dnt_enabled() {
+ /**
+ * Filter the option which decides honor DNT or not.
+ *
+ * @module stats
+ * @since 6.1.0
+ *
+ * @param bool false Honors DNT for clients who don't want to be tracked. Defaults to false. Set to true to enable.
+ */
+ if ( false === apply_filters( 'jetpack_honor_dnt_header_for_stats', false ) ) {
+ return false;
+ }
+
+ foreach ( $_SERVER as $name => $value ) {
+ if ( 'http_dnt' == strtolower( $name ) && 1 == $value ) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+/**
* Prevent sparkline img requests being redirected to upgrade.php.
* See wp-admin/admin.php where it checks $wp_db_version.
*
@@ -142,9 +169,9 @@ function stats_map_meta_caps( $caps, $cap, $user_id ) {
* @return void
*/
function stats_template_redirect() {
- global $current_user, $stats_footer;
+ global $current_user, $rendered_stats_footer;
- if ( is_feed() || is_robots() || is_trackback() || is_preview() ) {
+ if ( is_feed() || is_robots() || is_trackback() || is_preview() || jetpack_is_dnt_enabled() ) {
return;
}
@@ -159,19 +186,7 @@ function stats_template_redirect() {
add_action( 'wp_footer', 'stats_footer', 101 );
add_action( 'wp_head', 'stats_add_shutdown_action' );
- $script = 'https://stats.wp.com/e-' . gmdate( 'YW' ) . '.js';
- $data = stats_build_view_data();
- $data_stats_array = stats_array( $data );
-
- $stats_footer = <<<END
-<script type='text/javascript' src='{$script}' async='async' defer='defer'></script>
-<script type='text/javascript'>
- _stq = window._stq || [];
- _stq.push([ 'view', {{$data_stats_array}} ]);
- _stq.push([ 'clickTrackerInit', '{$data['blog']}', '{$data['post']}' ]);
-</script>
-
-END;
+ $rendered_stats_footer = false;
}
@@ -228,9 +243,45 @@ function stats_add_shutdown_action() {
* @return void
*/
function stats_footer() {
- global $stats_footer;
+ global $rendered_stats_footer;
+
+ if ( ! $rendered_stats_footer ) {
+ $data = stats_build_view_data();
+ if ( Jetpack_AMP_Support::is_amp_request() ) {
+ stats_render_amp_footer( $data );
+ } else {
+ stats_render_footer( $data );
+ }
+ $rendered_stats_footer = true;
+ }
+}
+
+function stats_render_footer( $data ) {
+ $script = 'https://stats.wp.com/e-' . gmdate( 'YW' ) . '.js';
+ $data_stats_array = stats_array( $data );
+
+ $stats_footer = <<<END
+<script type='text/javascript' src='{$script}' async='async' defer='defer'></script>
+<script type='text/javascript'>
+ _stq = window._stq || [];
+ _stq.push([ 'view', {{$data_stats_array}} ]);
+ _stq.push([ 'clickTrackerInit', '{$data['blog']}', '{$data['post']}' ]);
+</script>
+
+END;
print $stats_footer;
- $stats_footer = '';
+}
+
+function stats_render_amp_footer( $data ) {
+ $data['host'] = isset( $_SERVER['HTTP_HOST'] ) ? sanitize_text_field( wp_unslash( $_SERVER['HTTP_HOST'] ) ) : ''; // input var ok.
+ $data['rand'] = 'RANDOM'; // AMP placeholder.
+ $data['ref'] = 'DOCUMENT_REFERRER'; // AMP placeholder.
+ $data = array_map( 'rawurlencode', $data );
+ $pixel_url = add_query_arg( $data, 'https://pixel.wp.com/g.gif' );
+
+ ?>
+ <amp-pixel src="<?php echo esc_url( $pixel_url ); ?>"></amp-pixel>
+ <?php
}
/**
@@ -410,6 +461,10 @@ function stats_reports_load() {
wp_enqueue_script( 'postbox' );
wp_enqueue_script( 'underscore' );
+ $rtl = is_rtl() ? '.rtl' : '';
+ wp_enqueue_style( 'dops-css', plugins_url( "_inc/build/admin.dops-style$rtl.css", JETPACK__PLUGIN_FILE ), array(), JETPACK__VERSION );
+ wp_enqueue_style( 'components-css', plugins_url( "_inc/build/style.min$rtl.css", JETPACK__PLUGIN_FILE ), array(), JETPACK__VERSION );
+
add_action( 'admin_print_styles', 'stats_reports_css' );
if ( isset( $_GET['nojs'] ) && $_GET['nojs'] ) {
@@ -436,6 +491,20 @@ function stats_reports_load() {
function stats_reports_css() {
?>
<style type="text/css">
+#wpcontent {
+ padding-left: 0 !important;
+}
+
+.jetpack_page_stats {
+ background-color: #f3f6f8;
+}
+
+#jp-stats-wrap {
+ max-width: 720px;
+ margin: 0 auto;
+ overflow: hidden;
+}
+
#stats-loading-wrap p {
text-align: center;
font-size: 2em;
@@ -502,11 +571,25 @@ function stats_reports_page( $main_chart_only = false ) {
$blog_id = stats_get_option( 'blog_id' );
$domain = Jetpack::build_raw_urls( get_home_url() );
+ $jetpack_admin_url = admin_url() . 'admin.php?page=jetpack';
+
if ( ! $main_chart_only && ! isset( $_GET['noheader'] ) && empty( $_GET['nojs'] ) && empty( $_COOKIE['stnojs'] ) ) {
$nojs_url = add_query_arg( 'nojs', '1' );
$http = is_ssl() ? 'https' : 'http';
// Loading message. No JS fallback message.
?>
+<div id="jp-plugin-container">
+ <div class="jp-masthead">
+ <div class="jp-masthead__inside-container">
+ <div class="jp-masthead__logo-container">
+ <a class="jp-masthead__logo-link" href="<?php echo esc_url( $jetpack_admin_url ); ?>">
+ <svg class="jetpack-logo__masthead" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" height="32" viewBox="0 0 118 32"><path fill="#00BE28" d="M16,0C7.2,0,0,7.2,0,16s7.2,16,16,16s16-7.2,16-16S24.8,0,16,0z M15,19H7l8-16V19z M17,29V13h8L17,29z"></path><path d="M41.3,26.6c-0.5-0.7-0.9-1.4-1.3-2.1c2.3-1.4,3-2.5,3-4.6V8h-3V6h6v13.4C46,22.8,45,24.8,41.3,26.6z"></path><path d="M65,18.4c0,1.1,0.8,1.3,1.4,1.3c0.5,0,2-0.2,2.6-0.4v2.1c-0.9,0.3-2.5,0.5-3.7,0.5c-1.5,0-3.2-0.5-3.2-3.1V12H60v-2h2.1V7.1 H65V10h4v2h-4V18.4z"></path><path d="M71,10h3v1.3c1.1-0.8,1.9-1.3,3.3-1.3c2.5,0,4.5,1.8,4.5,5.6s-2.2,6.3-5.8,6.3c-0.9,0-1.3-0.1-2-0.3V28h-3V10z M76.5,12.3 c-0.8,0-1.6,0.4-2.5,1.2v5.9c0.6,0.1,0.9,0.2,1.8,0.2c2,0,3.2-1.3,3.2-3.9C79,13.4,78.1,12.3,76.5,12.3z"></path><path d="M93,22h-3v-1.5c-0.9,0.7-1.9,1.5-3.5,1.5c-1.5,0-3.1-1.1-3.1-3.2c0-2.9,2.5-3.4,4.2-3.7l2.4-0.3v-0.3c0-1.5-0.5-2.3-2-2.3 c-0.7,0-2.3,0.5-3.7,1.1L84,11c1.2-0.4,3-1,4.4-1c2.7,0,4.6,1.4,4.6,4.7L93,22z M90,16.4l-2.2,0.4c-0.7,0.1-1.4,0.5-1.4,1.6 c0,0.9,0.5,1.4,1.3,1.4s1.5-0.5,2.3-1V16.4z"></path><path d="M104.5,21.3c-1.1,0.4-2.2,0.6-3.5,0.6c-4.2,0-5.9-2.4-5.9-5.9c0-3.7,2.3-6,6.1-6c1.4,0,2.3,0.2,3.2,0.5V13 c-0.8-0.3-2-0.6-3.2-0.6c-1.7,0-3.2,0.9-3.2,3.6c0,2.9,1.5,3.8,3.3,3.8c0.9,0,1.9-0.2,3.2-0.7V21.3z"></path><path d="M110,15.2c0.2-0.3,0.2-0.8,3.8-5.2h3.7l-4.6,5.7l5,6.3h-3.7l-4.2-5.8V22h-3V6h3V15.2z"></path><path d="M58.5,21.3c-1.5,0.5-2.7,0.6-4.2,0.6c-3.6,0-5.8-1.8-5.8-6c0-3.1,1.9-5.9,5.5-5.9s4.9,2.5,4.9,4.9c0,0.8,0,1.5-0.1,2h-7.3 c0.1,2.5,1.5,2.8,3.6,2.8c1.1,0,2.2-0.3,3.4-0.7C58.5,19,58.5,21.3,58.5,21.3z M56,15c0-1.4-0.5-2.9-2-2.9c-1.4,0-2.3,1.3-2.4,2.9 C51.6,15,56,15,56,15z"></path></svg>
+ </a>
+ </div>
+ <div class="jp-masthead__nav"><span class="dops-button-group"><a href="<?php echo esc_url( $jetpack_admin_url ); ?>" type="button" class="dops-button is-compact"><?php esc_html_e( 'Dashboard', 'jetpack' ); ?></a><a href="<?php echo esc_url( $jetpack_admin_url . '#/settings' ); ?>" type="button" class="dops-button is-compact"><?php esc_html_e( 'Settings', 'jetpack' ); ?></a></span></div>
+ </div>
+ </div>
+ <div id="jp-stats-wrap">
<div class="wrap">
<h2><?php esc_html_e( 'Site Stats', 'jetpack' ); ?> <?php if ( current_user_can( 'jetpack_manage_modules' ) ) : ?><a style="font-size:13px;" href="<?php echo esc_url( admin_url( 'admin.php?page=jetpack&configure=stats' ) ); ?>"><?php esc_html_e( 'Configure', 'jetpack' ); ?></a><?php endif; ?></h2>
</div>
@@ -528,6 +611,24 @@ function stats_reports_page( $main_chart_only = false ) {
<p class="hide-if-js"><?php esc_html_e( 'Your Site Stats work better with JavaScript enabled.', 'jetpack' ); ?><br />
<a href="<?php echo esc_url( $nojs_url ); ?>"><?php esc_html_e( 'View Site Stats without JavaScript', 'jetpack' ); ?></a>.</p>
</div>
+</div>
+<div class="jp-footer">
+ <ul class="jp-footer__links">
+ <li class="jp-footer__link-item">
+ <a href="https://jetpack.com" target="_blank" rel="noopener noreferrer" class="jp-footer__link" title="<?php esc_html_e( 'Jetpack version', 'jetpack' ); ?>">Jetpack <?php echo JETPACK__VERSION; ?></a>
+ </li>
+ <li class="jp-footer__link-item">
+ <a href="https://wordpress.com/tos/" target="_blank" rel="noopener noreferrer" title="<?php esc_html__( 'WordPress.com Terms of Service', 'jetpack' ); ?>" class="jp-footer__link"><?php echo esc_html_x( 'Terms', 'Navigation item', 'jetpack' ); ?></a>
+ </li>
+ <li class="jp-footer__link-item">
+ <a href="<?php echo esc_url( $jetpack_admin_url . '#/privacy' ); ?>" rel="noopener noreferrer" title="<?php esc_html_e( 'Automattic\'s Privacy Policy', 'jetpack' ); ?>" class="jp-footer__link"><?php echo esc_html_x( 'Privacy', 'Navigation item', 'jetpack' ); ?></a>
+ </li>
+ <li class="jp-footer__link-item">
+ <a href="<?php echo esc_url( admin_url() . 'admin.php?page=jetpack-debugger' ); ?>" title="<?php esc_html_e( 'Test your site\'s compatibility with Jetpack.', 'jetpack' ); ?>" class="jp-footer__link"><?php echo esc_html_x( 'Debug', 'Navigation item', 'jetpack' ); ?></a>
+ </li>
+ </ul>
+</div>
+</div>
<?php
return;
}