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.
50 lines
2.2 KiB
50 lines
2.2 KiB
<?php
|
|
function wp_statistics_purge_visitor_hits( $purge_hits ) {
|
|
GLOBAL $wpdb, $WP_Statistics;
|
|
|
|
// If it's less than 10 hits, don't do anything.
|
|
if( $purge_hits > 9 ) {
|
|
// Purge the visitor's with more than the defined hits.
|
|
$result = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}statistics_visitor WHERE `hits` > %s", $purge_hits ) );
|
|
|
|
$to_delete = array();
|
|
|
|
// Loop through the results and store the requried information in an array. We don't just process it now as deleting
|
|
// the rows from the visitor table will mess up the results from our first query.
|
|
foreach( $result as $row ) {
|
|
$to_delete[] = array( $row->ID, $row->last_counter, $row->hits );
|
|
}
|
|
if( count( $to_delete ) > 0 ) {
|
|
foreach( $to_delete as $item ) {
|
|
// First update the daily hit count.
|
|
$wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->prefix}statistics_visit SET `visit` = `visit` - %d WHERE `last_counter` = %s;", $item[2], $item[1] ) );
|
|
// Next remove the visitor. Note we can't do both in a single query, looks like $wpdb doesn't like executing them together.
|
|
$wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}statistics_visitor WHERE `id` = %s;", $item[0] ) );
|
|
}
|
|
|
|
$result_string = sprintf(__('%s records purged successfully.', 'wp_statistics'), '<code>' . count( $to_delete ) . '</code>');
|
|
}
|
|
else {
|
|
$result_string = __('No visitors found to purge.', 'wp_statistics' );
|
|
}
|
|
}
|
|
else {
|
|
$result_string = __('Number of hits must be greater than or equal to 10!', 'wp_statistics');
|
|
}
|
|
|
|
if( $WP_Statistics->get_option('prune_report') == true ) {
|
|
$blogname = get_bloginfo('name');
|
|
$blogemail = get_bloginfo('admin_email');
|
|
|
|
$headers[] = "From: $blogname <$blogemail>";
|
|
$headers[] = "MIME-Version: 1.0";
|
|
$headers[] = "Content-type: text/html; charset=utf-8";
|
|
|
|
if( $WP_Statistics->get_option('email_list') == '' ) { $WP_Statistics->update_option( 'email_list', $blogemail ); }
|
|
|
|
wp_mail( $WP_Statistics->get_option('email_list'), __('Database pruned on', 'wp_statistics') . ' ' . $blogname, $result_string, $headers );
|
|
}
|
|
|
|
return $result_string;
|
|
}
|
|
?>
|