PluginProbe ʕ •ᴥ•ʔ
Post Views Counter / 1.2.12
Post Views Counter v1.2.12
1.7.13 1.7.12 1.7.11 trunk 1.0.0 1.0.1 1.0.10 1.0.11 1.0.12 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.2.0 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3 1.3.1 1.3.10 1.3.11 1.3.12 1.3.13 1.3.2 1.3.2.1 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.7.0 1.7.1 1.7.10 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 1.7.7 1.7.8 1.7.9
post-views-counter / includes / cron.php
post-views-counter / includes Last commit date
columns.php 8 years ago counter.php 8 years ago crawler-detect.php 8 years ago cron.php 8 years ago dashboard.php 8 years ago frontend.php 8 years ago functions.php 8 years ago query.php 8 years ago settings.php 8 years ago update.php 8 years ago widgets.php 8 years ago
cron.php
109 lines
1 <?php
2 // exit if accessed directly
3 if ( ! defined( 'ABSPATH' ) )
4 exit;
5
6 /**
7 * Post_Views_Counter_Cron class.
8 *
9 * @class Post_Views_Counter_Cron
10 */
11 class Post_Views_Counter_Cron {
12
13 public function __construct() {
14 // actions
15 add_action( 'init', array( $this, 'check_cron' ) );
16 add_action( 'pvc_reset_counts', array( $this, 'reset_counts' ) );
17 add_action( 'pvc_flush_cached_counts', array( $this, 'flush_cached_counts' ) );
18
19 // filters
20 add_filter( 'cron_schedules', array( $this, 'cron_time_intervals' ) );
21 }
22
23 /**
24 * Reset daily counts.
25 *
26 * @global object $wpdb
27 */
28 public function reset_counts() {
29 global $wpdb;
30
31 $counter = array(
32 'days' => 1,
33 'weeks' => 7,
34 'months' => 30,
35 'years' => 365
36 );
37
38 $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)' );
39 }
40
41 /**
42 * Call Post_Views_Counter_Counter::flush_cache_to_db().
43 * This is (un)scheduled on plugin activation/deactivation.
44 */
45 public function flush_cached_counts() {
46 $counter = Post_Views_Counter()->counter;
47
48 if ( $counter && $counter->using_object_cache() )
49 $counter->flush_cache_to_db();
50 }
51
52 /**
53 * Add new cron interval from settings.
54 *
55 * @param array $schedules
56 * @return array
57 */
58 public function cron_time_intervals( $schedules ) {
59 $schedules['post_views_counter_interval'] = array(
60 'interval' => 86400,
61 'display' => __( 'Post Views Counter reset daily counts interval', 'post-views-counter' )
62 );
63
64 $schedules['post_views_counter_flush_interval'] = array(
65 'interval' => Post_Views_Counter()->counter->get_timestamp( Post_Views_Counter()->options['general']['flush_interval']['type'], Post_Views_Counter()->options['general']['flush_interval']['number'], false ),
66 'display' => __( 'Post Views Counter cache flush interval', 'post-views-counter' )
67 );
68
69 return $schedules;
70 }
71
72 /**
73 * Check whether WP Cron needs to add new task.
74 */
75 public function check_cron() {
76 if ( ! is_admin() )
77 return;
78
79 // set wp cron task
80 if ( Post_Views_Counter()->options['general']['cron_run'] ) {
81
82 // not set or need to be updated?
83 if ( ! wp_next_scheduled( 'pvc_reset_counts' ) || Post_Views_Counter()->options['general']['cron_update'] ) {
84
85 // task is added but need to be updated
86 if ( Post_Views_Counter()->options['general']['cron_update'] ) {
87 // remove old schedule
88 wp_clear_scheduled_hook( 'pvc_reset_counts' );
89
90 // set update to false
91 $general = Post_Views_Counter()->options['general'];
92 $general['cron_update'] = false;
93
94 // update settings
95 update_option( 'post_views_counter_settings_general', $general );
96 }
97
98 // set schedule
99 wp_schedule_event( current_time( 'timestamp', true ) + 86400, 'post_views_counter_interval', 'pvc_reset_counts' );
100 }
101 } else {
102 // remove schedule
103 wp_clear_scheduled_hook( 'pvc_reset_counts' );
104 remove_action( 'pvc_reset_counts', array( $this, 'reset_counts' ) );
105 }
106 }
107
108 }
109