You could try adding a function to for example init
action, that either enables plugin features (i.e. includes plugin files) or displays the admin notice.
Something along these lines,
function licence_notice_or_enable_features() {
// Check if (valid) licence key (or validation token, etc.) is saved to the database
// and add other plugin files
// If the option does not exist or does not have a value,
// then the return value will be false and notice is shown
if ( get_option( 'license_key' ) ) {
require_plugin_parts();
} else {
add_action( 'admin_notices', 'show_license_notice' );
}
}
add_action( 'init', 'licence_notice_or_enable_features' );
function require_plugin_parts() {
$plugin_path = plugin_dir_path( __FILE__ );
// require $plugin_path . 'file.php';
}
function show_license_notice() {
// notice and licence form html
}
You could put this to your main plugin file.