HEX
Server: Apache
System: Linux vps.teamads.com 4.18.0-553.126.1.el8_10.x86_64 #1 SMP Thu May 28 06:44:09 EDT 2026 x86_64
User: teamadsc (1024)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: /home/teamadsc/public_html/wp-content/plugins/wp-defender/src/class-bootstrap.php
<?php
/**
 * Bootstrap for WP Defender.
 *
 * @package WP_Defender
 */

namespace WP_Defender;

use WP_Defender\Traits\Defender_Bootstrap;
use WP_Defender\Traits\Pro_Database_Tables;
use WP_Defender\Component\Config\Config_Hub_Helper;

/**
 * Class Bootstrap
 */
class Bootstrap {

	use Defender_Bootstrap;
	use Pro_Database_Tables;

	/**
	 * Activation.
	 */
	public function activation_hook(): void {
		$this->activation_hook_common();
		$this->create_database_tables();
	}

	/**
	 * Creates the necessary database tables for Pro version.
	 *
	 * @return void
	 */
	public function create_database_tables(): void {
		$this->create_table_audit_log();
		$this->create_table_quarantine();
		// Set flag to indicate pro tables have been created.
		update_site_option( 'wd_pro_tables_created', true );
	}

	/**
	 * Deactivation - clears all cron hooks including pro-only ones.
	 */
	public function deactivation_hook(): void {
		$this->deactivation_hook_common();

		// Pro-only cron hooks.
		wp_clear_scheduled_hook( 'audit_sync_events' );
		wp_clear_scheduled_hook( 'audit_clean_up_logs' );
		wp_clear_scheduled_hook( 'wpdef_quarantine_delete_expired' );

		// Remove old legacy pro-only cron jobs if they exist.
		wp_clear_scheduled_hook( 'auditReportCron' );
	}

	/**
	 * Load all modules.
	 */
	public function init_modules(): void {
		$this->init_modules_common();
		$this->init_wpmudev_dashnotice();
	}

	/**
	 * Initializes the WPMUDEV dash notice.
	 *
	 * @return void
	 */
	public function init_wpmudev_dashnotice(): void {
		if ( ! (bool) get_site_option( 'wp_defender_shown_activator' ) ) {
			return;
		}

		global $wpmudev_notices;
		$wpmudev_notices[] = array(
			'id'      => Config_Hub_Helper::WDP_ID,
			'name'    => defined( 'WP_DEFENDER_PRO' ) && WP_DEFENDER_PRO ? 'Defender Pro' : 'Defender',
			'screens' => array(
				'toplevel_page_wp-defender',
				'toplevel_page_wp-defender-network',
				'defender_page_wdf-settings',
				'defender_page_wdf-settings-network',
				'defender_page_wdf-logging',
				'defender_page_wdf-logging-network',
				'defender_page_wdf-hardener',
				'defender_page_wdf-hardener-network',
				'defender_page_wdf-scan',
				'defender_page_wdf-scan-network',
				'defender_page_wdf-ip-lockout',
				'defender_page_wdf-ip-lockout-network',
				'defender_page_wdf-waf',
				'defender_page_wdf-waf-network',
				'defender_page_wdf-2fa',
				'defender_page_wdf-2fa-network',
				'defender_page_wdf-advanced-tools',
				'defender_page_wdf-advanced-tools-network',
				'defender_page_wdf-notification',
				'defender_page_wdf-notification-network',
				'defender_page_wdf-expert-services',
				'defender_page_wdf-expert-services-network',
			),
		);
		/**
		 *  Load WPMUDEV dash notice.
		 *
		 * @noinspection PhpIncludeInspection
		 */
		include_once defender_path( 'extra/dash-notice/wpmudev-dash-notification.php' );
	}
}