File: /home/dwauav0tm6jp/hosted/justinnewspod_com/wp-content/plugins/post-views-counter/includes/cron.php
<?php
// exit if accessed directly
if ( ! defined( 'ABSPATH' ) )
exit;
/**
* Post_Views_Counter_Cron class.
*
* @class Post_Views_Counter_Cron
*/
class Post_Views_Counter_Cron {
public function __construct() {
// actions
add_action( 'init', array( $this, 'check_cron' ) );
add_action( 'pvc_reset_counts', array( $this, 'reset_counts' ) );
add_action( 'pvc_flush_cached_counts', array( $this, 'flush_cached_counts' ) );
// filters
add_filter( 'cron_schedules', array( $this, 'cron_time_intervals' ) );
}
/**
* Reset daily counts.
*
* @global object $wpdb
*/
public function reset_counts() {
global $wpdb;
$counter = array(
'days' => 1,
'weeks' => 7,
'months' => 30,
'years' => 365
);
$wpdb->query( 'DELETE FROM ' . $wpdb->prefix . 'post_views WHERE type = 0 AND CAST( period AS SIGNED ) < CAST( ' . date( 'Ymd', strtotime( '-' . ( (int) ( $counter[Post_Views_Counter()->options['general']['reset_counts']['type']] * Post_Views_Counter()->options['general']['reset_counts']['number'] ) ) . ' days' ) ) . ' AS SIGNED)' );
}
/**
* Call Post_Views_Counter_Counter::flush_cache_to_db().
* This is (un)scheduled on plugin activation/deactivation.
*/
public function flush_cached_counts() {
$counter = Post_Views_Counter()->counter;
if ( $counter && $counter->using_object_cache() )
$counter->flush_cache_to_db();
}
/**
* Add new cron interval from settings.
*
* @param array $schedules
* @return array
*/
public function cron_time_intervals( $schedules ) {
$schedules['post_views_counter_interval'] = array(
'interval' => 86400,
'display' => __( 'Post Views Counter reset daily counts interval', 'post-views-counter' )
);
$schedules['post_views_counter_flush_interval'] = array(
'interval' => Post_Views_Counter()->counter->get_timestamp( Post_Views_Counter()->options['general']['flush_interval']['type'], Post_Views_Counter()->options['general']['flush_interval']['number'], false ),
'display' => __( 'Post Views Counter cache flush interval', 'post-views-counter' )
);
return $schedules;
}
/**
* Check whether WP Cron needs to add new task.
*/
public function check_cron() {
if ( ! is_admin() )
return;
// set wp cron task
if ( Post_Views_Counter()->options['general']['cron_run'] ) {
// not set or need to be updated?
if ( ! wp_next_scheduled( 'pvc_reset_counts' ) || Post_Views_Counter()->options['general']['cron_update'] ) {
// task is added but need to be updated
if ( Post_Views_Counter()->options['general']['cron_update'] ) {
// remove old schedule
wp_clear_scheduled_hook( 'pvc_reset_counts' );
// set update to false
$general = Post_Views_Counter()->options['general'];
$general['cron_update'] = false;
// update settings
update_option( 'post_views_counter_settings_general', $general );
}
// set schedule
wp_schedule_event( current_time( 'timestamp', true ) + 86400, 'post_views_counter_interval', 'pvc_reset_counts' );
}
} else {
// remove schedule
wp_clear_scheduled_hook( 'pvc_reset_counts' );
remove_action( 'pvc_reset_counts', array( $this, 'reset_counts' ) );
}
}
}