You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
269 lines
12 KiB
269 lines
12 KiB
<script type="text/javascript"> |
|
jQuery(document).ready(function () { |
|
postboxes.add_postbox_toggles(pagenow); |
|
}); |
|
</script> |
|
<?php |
|
if ( $WP_Statistics->get_option( 'record_exclusions' ) != 1 ) { |
|
echo "<div class='updated settings-error'><p><strong>" . |
|
__( |
|
'Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!', |
|
'wp-statistics' |
|
) . |
|
"</strong></p></div>"; |
|
} |
|
|
|
//Set Default Time Picker Option |
|
list( $daysToDisplay, $rangestart, $rangeend ) = wp_statistics_prepare_range_time_picker(); |
|
list( $daysToDisplay, $rangestart_utime, $rangeend_utime ) = wp_statistics_date_range_calculator( |
|
$daysToDisplay, |
|
$rangestart, |
|
$rangeend |
|
); |
|
$total_stats = $WP_Statistics->get_option( 'chart_totals' ); |
|
|
|
$excluded_reasons = array( |
|
'Robot', |
|
'Browscap', |
|
'IP Match', |
|
'Self Referral', |
|
'Login Page', |
|
'User Role', |
|
'GeoIP', |
|
'Hostname', |
|
'Robot Threshold', |
|
'Honey Pot', |
|
'Feeds', |
|
'Excluded URL', |
|
'404 Pages', |
|
'Referrer Spam', |
|
'AJAX Request', |
|
'CronJob', |
|
); |
|
$excluded_reason_tags = array( |
|
'Robot' => 'robot', |
|
'Browscap' => 'browscap', |
|
'IP Match' => 'ipmatch', |
|
'Self Referral' => 'selfreferral', |
|
'Login Page' => 'loginpage', |
|
'User Role' => 'userrole', |
|
'Total' => 'total', |
|
'GeoIP' => 'geoip', |
|
'Hostname' => 'hostname', |
|
'Robot Threshold' => 'robot_threshold', |
|
'Honey Pot' => 'honeypot', |
|
'Feeds' => 'feed', |
|
'Excluded URL' => 'excluded_url', |
|
'404 Pages' => 'excluded_404s', |
|
'Referrer Spam' => 'referrer_spam', |
|
'AJAX Request' => 'ajax', |
|
'CronJob' => 'cronjob', |
|
); |
|
$excluded_reason_db = array( |
|
'Robot' => 'robot', |
|
'Browscap' => 'browscap', |
|
'IP Match' => 'ip match', |
|
'Self Referral' => 'self referral', |
|
'Login Page' => 'login page', |
|
'User Role' => 'user role', |
|
'Total' => 'total', |
|
'GeoIP' => 'geoip', |
|
'Hostname' => 'hostname', |
|
'Robot Threshold' => 'robot_threshold', |
|
'Honey Pot' => 'honeypot', |
|
'Feeds' => 'feed', |
|
'Excluded URL' => 'excluded url', |
|
'404 Pages' => '404', |
|
'Referrer Spam' => 'referrer_spam', |
|
'AJAX Request' => 'ajax', |
|
'CronJob' => 'cronjob', |
|
); |
|
$excluded_reason_translate = array( |
|
'Robot' => json_encode( __( 'Robot', 'wp-statistics' ) ), |
|
'Browscap' => json_encode( __( 'Browscap', 'wp-statistics' ) ), |
|
'IP Match' => json_encode( __( 'IP Match', 'wp-statistics' ) ), |
|
'Self Referral' => json_encode( __( 'Self Referral', 'wp-statistics' ) ), |
|
'Login Page' => json_encode( __( 'Login Page', 'wp-statistics' ) ), |
|
'User Role' => json_encode( __( 'User Role', 'wp-statistics' ) ), |
|
'Total' => json_encode( __( 'Total', 'wp-statistics' ) ), |
|
'GeoIP' => json_encode( __( 'GeoIP', 'wp-statistics' ) ), |
|
'Hostname' => json_encode( __( 'Hostname', 'wp-statistics' ) ), |
|
'Robot Threshold' => json_encode( __( 'Robot Threshold', 'wp-statistics' ) ), |
|
'Honey Pot' => json_encode( __( 'Honey Pot', 'wp-statistics' ) ), |
|
'Feeds' => json_encode( __( 'Feeds', 'wp-statistics' ) ), |
|
'Excluded URL' => json_encode( __( 'Excluded URL', 'wp-statistics' ) ), |
|
'404 Pages' => json_encode( __( '404 Pages', 'wp-statistics' ) ), |
|
'Referrer Spam' => json_encode( __( 'Referrer Spam', 'wp-statistics' ) ), |
|
'AJAX Request' => json_encode( __( 'AJAX Request', 'wp-statistics' ) ), |
|
'CronJob' => json_encode( __( 'CronJob', 'wp-statistics' ) ), |
|
); |
|
$excluded_results = array( 'Total' => array() ); |
|
$excluded_total = 0; |
|
|
|
foreach ( $excluded_reasons as $reason ) { |
|
// The reasons array above is used both for display and internal purposes. Internally the values are all lower case but the array |
|
// is created with mixed case so it looks nice to the user. Therefore we have to convert it to lower case here. |
|
$thisreason = $excluded_reason_db[ $reason ]; |
|
|
|
for ( $i = $daysToDisplay; $i >= 0; $i -- ) { |
|
|
|
// We're looping through the days backwards, so let's fine out what date we want to look at. |
|
$thisdate = $WP_Statistics->real_current_date( 'Y-m-d', '-' . $i, $rangeend_utime ); |
|
|
|
// Create the SQL query string to get the data. |
|
$query = $wpdb->prepare( |
|
"SELECT count FROM {$wpdb->prefix}statistics_exclusions WHERE reason = %s AND date = %s", |
|
$thisreason, |
|
$thisdate |
|
); |
|
|
|
// Execute the query. |
|
$excluded_results[ $reason ][ $i ] = $wpdb->get_var( $query ); |
|
|
|
// If we're returned an error or a FALSE value, then let's make sure it's set to a numerical 0. |
|
if ( $excluded_results[ $reason ][ $i ] < 1 ) { |
|
$excluded_results[ $reason ][ $i ] = 0; |
|
} |
|
|
|
// Make sure to initialize the results so we don't get warnings when WP_DEBUG is enabled. |
|
if ( ! array_key_exists( $i, $excluded_results['Total'] ) ) { |
|
$excluded_results['Total'][ $i ] = 0; |
|
} |
|
|
|
// We're totalling things up here for use later. |
|
$excluded_results['Total'][ $i ] += $excluded_results[ $reason ][ $i ]; |
|
$excluded_total += $excluded_results[ $reason ][ $i ]; |
|
} |
|
} |
|
|
|
$excuded_all_time = $wpdb->get_var( "SELECT SUM(count) FROM {$wpdb->prefix}statistics_exclusions" ); |
|
|
|
// If the chart totals is enabled, cheat a little and just add another reason category to the list so it gets generated later. |
|
if ( $total_stats == 1 ) { |
|
$excluded_reasons[] = 'Total'; |
|
} |
|
|
|
for ( $i = $daysToDisplay; $i >= 0; $i -- ) { |
|
$date[] = "'" . $WP_Statistics->Real_Current_Date( 'M j', '-' . $i, $rangeend_utime ) . "'"; |
|
} |
|
|
|
$stats = array(); |
|
foreach ( $excluded_reasons as $reason ) { |
|
for ( $i = $daysToDisplay; $i >= 0; $i -- ) { |
|
$stats[ $reason ][] = $excluded_results[ $reason ][ $i ]; |
|
} |
|
} |
|
?> |
|
<div class="wrap wps-wrap"> |
|
<?php WP_Statistics_Admin_Pages::show_page_title( __( 'Exclusions Statistics', 'wp-statistics' ) ); ?> |
|
<?php wp_statistics_date_range_selector( WP_Statistics::$page['exclusions'], $daysToDisplay ); ?> |
|
<div class="postbox-container" id="last-log"> |
|
<div class="metabox-holder"> |
|
<div class="meta-box-sortables"> |
|
<div class="postbox"> |
|
<?php $paneltitle = __( 'Exclusions Statistical Chart', 'wp-statistics' ); ?> |
|
<button class="handlediv" type="button" aria-expanded="true"> |
|
<span class="screen-reader-text"><?php printf( |
|
__( 'Toggle panel: %s', 'wp-statistics' ), |
|
$paneltitle |
|
); ?></span> |
|
<span class="toggle-indicator" aria-hidden="true"></span> |
|
</button> |
|
<h2 class="hndle"><span><?php echo $paneltitle; ?></span></h2> |
|
|
|
<div class="inside"> |
|
<div class="inside"> |
|
<canvas id="hit-stats" height="80"></canvas> |
|
<script type='text/javascript' src='<?php echo WP_Statistics::$reg['plugin-url']; ?>assets/js/Chart.bundle.min.js'></script> |
|
<script> |
|
var ctx = document.getElementById("hit-stats").getContext('2d'); |
|
<?php if(is_rtl()) { ?> Chart.defaults.global.defaultFontFamily = "tahoma"; <?php } ?> |
|
var ChartJs = new Chart(ctx, { |
|
type: 'line', |
|
data: { |
|
labels: [<?php echo implode( ', ', $date ); ?>], |
|
datasets: [ |
|
<?php foreach ($stats as $key => $value) : $i ++; ?> |
|
{ |
|
label: '<?php echo $key; ?>', |
|
data: [<?php echo implode( ',', $value ); ?>], |
|
backgroundColor: <?php echo wp_statistics_generate_rgba_color( $i, '0.2' ); ?>, |
|
borderColor: <?php echo wp_statistics_generate_rgba_color( $i, '1' ); ?>, |
|
borderWidth: 1, |
|
fill: true, |
|
}, |
|
<?php endforeach; ?> |
|
] |
|
}, |
|
options: { |
|
responsive: true, |
|
legend: { |
|
position: 'bottom', |
|
}, |
|
title: { |
|
display: true, |
|
text: '<?php echo sprintf( __( 'Hits in the last %s days', 'wp-statistics' ), $daysToDisplay ); ?>' |
|
}, |
|
tooltips: { |
|
mode: 'index', |
|
intersect: false, |
|
}, |
|
scales: { |
|
yAxes: [{ |
|
ticks: { |
|
beginAtZero: true |
|
} |
|
}] |
|
} |
|
} |
|
}); |
|
</script> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
<div class="postbox-container" style="width: 100%; float: left; margin-right:20px"> |
|
<div class="metabox-holder"> |
|
<div class="meta-box-sortables"> |
|
<div class="postbox"> |
|
<?php $paneltitle = __( 'Hits Statistics Summary', 'wp-statistics' ); ?> |
|
<button class="handlediv" type="button" aria-expanded="true"> |
|
<span class="screen-reader-text"><?php printf( |
|
__( 'Toggle panel: %s', 'wp-statistics' ), |
|
$paneltitle |
|
); ?></span> |
|
<span class="toggle-indicator" aria-hidden="true"></span> |
|
</button> |
|
<h2 class="hndle"><span><?php echo $paneltitle; ?></span></h2> |
|
|
|
<div class="inside"> |
|
<table width="auto" class="widefat table-stats" id="summary-stats"> |
|
<tbody> |
|
<tr> |
|
<th></th> |
|
<th class="th-center"><?php _e( 'Exclusions', 'wp-statistics' ); ?></th> |
|
</tr> |
|
|
|
<tr> |
|
<th><?php _e( 'Chart Total:', 'wp-statistics' ); ?></th> |
|
<th class="th-center"><span><?php echo number_format_i18n( $excluded_total ); ?></span> |
|
</th> |
|
</tr> |
|
|
|
<tr> |
|
<th><?php _e( 'All Time Total:', 'wp-statistics' ); ?></th> |
|
<th class="th-center"> |
|
<span><?php echo number_format_i18n( $excuded_all_time ); ?></span> |
|
</th> |
|
</tr> |
|
</tbody> |
|
</table> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div>
|