269 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			269 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <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>
 |