" .
__(
'Attention: Exclusion are not currently set to be recorded, the results below may not reflect current statistics!',
'wp-statistics'
) .
"
";
}
$daysToDisplay = 20;
if ( array_key_exists( 'hitdays', $_GET ) ) {
$daysToDisplay = intval( $_GET['hitdays'] );
}
if ( array_key_exists( 'rangestart', $_GET ) ) {
$rangestart = $_GET['rangestart'];
} else {
$rangestart = '';
}
if ( array_key_exists( 'rangeend', $_GET ) ) {
$rangeend = $_GET['rangeend'];
} else {
$rangeend = '';
}
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 ];
}
}
?>