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

<?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;
}
?>