register(); ( new WebStudio_Admin_Watch_Password_Monitor() )->register(); ( new WebStudio_Admin_Watch_404_Logger() )->register(); ( new WebStudio_Admin_Watch_Privacy() )->register(); ( new WebStudio_Admin_Watch_Activity_Logger() )->register(); add_action( 'init', array( $this, 'maybe_upgrade' ), 1 ); add_action( 'admin_watch_cleanup_404s', array( $this, 'cleanup' ) ); if ( is_admin() ) { require_once ADMIN_WATCH_DIR . 'admin/class-admin.php'; ( new WebStudio_Admin_Watch_Admin() )->register(); } } /** Upgrade once after a plugin schema change. */ public function maybe_upgrade() { if ( WebStudio_Admin_Watch_404_Repository::DB_VERSION !== get_option( 'admin_watch_db_version' ) ) { WebStudio_Admin_Watch_404_Repository::install(); } if ( WebStudio_Admin_Watch_Activity_Repository::DB_VERSION !== get_option( 'admin_watch_activity_db_version' ) ) { WebStudio_Admin_Watch_Activity_Repository::install(); $settings = WebStudio_Admin_Watch_Activity_Repository::settings(); update_option( 'admin_watch_settings', $settings ); if ( ! wp_next_scheduled( 'admin_watch_cleanup_404s' ) ) { wp_schedule_event( time() + HOUR_IN_SECONDS, 'daily', 'admin_watch_cleanup_404s' ); } } } /** Apply the configured retention period. */ public function cleanup() { $settings = get_option( 'admin_watch_settings', array() ); $days = is_array( $settings ) && isset( $settings['retention_days'] ) ? $settings['retention_days'] : 30; ( new WebStudio_Admin_Watch_404_Repository() )->cleanup( $days ); $settings = WebStudio_Admin_Watch_Activity_Repository::settings(); if ( WebStudio_Admin_Watch_Activity_Repository::DB_VERSION === get_option( 'admin_watch_activity_db_version' ) ) { ( new WebStudio_Admin_Watch_Activity_Repository() )->cleanup( $settings['activity_retention_days'] ); } } }