includes(); $this->init_hooks(); } /** * Include required files. */ private function includes() { require_once USER_ID_DIR . 'includes/class-admin.php'; require_once USER_ID_DIR . 'includes/class-user-debug.php'; require_once USER_ID_DIR . 'includes/class-login-tracker.php'; require_once USER_ID_DIR . 'includes/class-activity-logger.php'; require_once USER_ID_DIR . 'includes/class-impersonation.php'; require_once USER_ID_DIR . 'includes/class-rest-api.php'; if ( defined( 'WP_CLI' ) && WP_CLI ) { require_once USER_ID_DIR . 'includes/class-wp-cli.php'; } } /** * Initialize hooks. */ private function init_hooks() { add_action( 'admin_init', array( $this, 'check_db_version' ) ); } /** * Check if DB needs updating. */ public function check_db_version() { if ( get_option( 'user_id_db_version' ) !== USER_ID_VERSION ) { self::activate(); update_option( 'user_id_db_version', USER_ID_VERSION ); } } /** * Plugin activation logic. */ public static function activate() { global $wpdb; $charset_collate = $wpdb->get_charset_collate(); $sql = array(); // Login history table $table_name_login = $wpdb->prefix . 'user_id_login_history'; $sql[] = "CREATE TABLE $table_name_login ( id bigint(20) unsigned NOT NULL AUTO_INCREMENT, user_id bigint(20) unsigned NOT NULL, ip_address varchar(100) NOT NULL, user_agent text NOT NULL, login_time datetime DEFAULT CURRENT_TIMESTAMP NOT NULL, PRIMARY KEY (id), KEY user_id (user_id) ) $charset_collate;"; // Activity log table $table_name_activity = $wpdb->prefix . 'user_id_activity'; $sql[] = "CREATE TABLE $table_name_activity ( id bigint(20) unsigned NOT NULL AUTO_INCREMENT, user_id bigint(20) unsigned NOT NULL, event_type varchar(50) NOT NULL, event_details text NOT NULL, created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL, PRIMARY KEY (id), KEY user_id (user_id), KEY event_type (event_type) ) $charset_collate;"; require_once( trailingslashit( ABSPATH ) . 'wp-admin/includes/upgrade.php' ); foreach ( $sql as $query ) { dbDelta( $query ); } update_option( 'user_id_db_version', USER_ID_VERSION ); } }