From f8ab4214de52e2ae6ddc9e18d41ec33bea842718 Mon Sep 17 00:00:00 2001 From: Stefan Kalscheuer Date: Thu, 25 Aug 2016 20:19:28 +0200 Subject: [PATCH] Feature #2 Hook CleanUp job to Statify cron action --- inc/statifyblacklist.class.php | 14 ++++++++++++-- inc/statifyblacklist_admin.class.php | 6 +++--- views/settings_page.php | 16 ++++++++++++---- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/inc/statifyblacklist.class.php b/inc/statifyblacklist.class.php index a98b819..505e2c1 100644 --- a/inc/statifyblacklist.class.php +++ b/inc/statifyblacklist.class.php @@ -52,8 +52,10 @@ class StatifyBlacklist { /* Get multisite status */ self::$multisite = ( is_multisite() && array_key_exists( STATIFYBLACKLIST_BASE, (array) get_site_option( 'active_sitewide_plugins' ) ) ); - /* Add Filter to statify hook */ - add_filter( 'statify_skip_tracking', array( 'StatifyBlacklist', 'apply_blacklist_filter' ) ); + /* Add Filter to statify hook if enabled */ + if ( self::$_options['active_referer'] != 1 ) { + add_filter( 'statify_skip_tracking', array( 'StatifyBlacklist', 'apply_blacklist_filter' ) ); + } /* Admin only filters */ if ( is_admin() ) { @@ -76,6 +78,13 @@ class StatifyBlacklist { add_filter( 'plugin_action_links', array( 'StatifyBlacklist_Admin', 'plugin_actions_links' ), 10, 2 ); } } + + /* CronJob to clean up database */ + if ( defined( 'DOING_CRON' ) && DOING_CRON ) { + if ( self::$_options['cron_referer'] == 1 ) { + add_action( 'statify_cleanup', array( 'StatifyBlacklist_Admin', 'cleanup_database' ) ); + } + } } /** @@ -90,6 +99,7 @@ class StatifyBlacklist { get_option( 'statify-blacklist' ), array( 'active_referer' => 0, + 'cron_referer' => 0, 'referer' => array() ) ); diff --git a/inc/statifyblacklist_admin.class.php b/inc/statifyblacklist_admin.class.php index bb6c2a5..dbc16a5 100644 --- a/inc/statifyblacklist_admin.class.php +++ b/inc/statifyblacklist_admin.class.php @@ -19,7 +19,7 @@ class StatifyBlacklist_Admin extends StatifyBlacklist { public static function update_options( $options = null ) { if ( isset( $options ) && current_user_can( 'manage_options' ) ) { /* Sanitize URLs and remove empty inputs */ - $givenReferer = $options['referer']; + $givenReferer = $options['referer']; $sanitizedReferer = self::sanitizeURLs( $givenReferer ); /* Abort on errors */ @@ -110,11 +110,11 @@ class StatifyBlacklist_Admin extends StatifyBlacklist { * Filter database for cleanup. * * @since 1.1.0 - * @changed 1.2.1 + * @changed 1.2.0 */ public static function cleanup_database() { /* Check user permissions */ - if ( ! current_user_can( 'manage_options' ) ) { + if ( ! current_user_can( 'manage_options' ) && ! ( defined( 'DOING_CRON' ) && DOING_CRON ) ) { die( _e( 'Are you sure you want to do this?' ) ); } diff --git a/views/settings_page.php b/views/settings_page.php index d5ba191..d9dafce 100755 --- a/views/settings_page.php +++ b/views/settings_page.php @@ -28,6 +28,7 @@ if ( ! empty( $_POST['statifyblacklist'] ) ) { $statifyBlacklistUpdateResult = StatifyBlacklist_Admin::update_options( array( 'active_referer' => (int) @$_POST['statifyblacklist']['active_referer'], + 'cron_referer' => (int) @$_POST['statifyblacklist']['cron_referer'], 'referer' => array_flip( $referer ) ) ); @@ -40,7 +41,6 @@ if ( ! empty( $_POST['statifyblacklist'] ) ) { } } } - ?>
@@ -71,6 +71,13 @@ if ( ! empty( $_POST['statifyblacklist'] ) ) { +
  • + +