Compatibility

Enthusiast Bridge

Keep your old Enthusiast page includes working while you transition to Luster’s embed system.

Overview

When to Use the Enthusiast Bridge

The Enthusiast Bridge is for fanlisting owners who have already imported their data into Luster but have not yet updated their fanlisting page code. It lets your old Enthusiast show_*.php includes keep working by routing them through Luster instead.

Use the bridge when:

  • You have imported your Enthusiast data into Luster and want your existing pages to keep working immediately.
  • You plan to migrate your pages to Luster’s embed system gradually, one fanlisting at a time, rather than all at once.
  • You want a zero-downtime transition — visitors see working forms the entire time.
The bridge is temporary.

It is meant to keep things running while you update your pages to use Luster’s native embed/ files. Once all your pages use embeds directly, you can remove the bridge files.

Installation

Setup

  1. Download the Bridge

    In the Luster admin panel, go to Admin → Collective → Migration & Bridges and click Enthusiast Bridge. This downloads a ZIP file.

  2. Unzip into Your Enthusiast Folder

    The ZIP contains luster-bridge.php and all of the wrapper files (show_join.php, show_members.php, etc.). Extract them into your Enthusiast installation folder, replacing the original show_*.php files.

  3. Set the Luster Path

    Open luster-bridge.php and set the LUSTER_PATH constant to the absolute server path of your Luster installation. The download pre-fills this for you, but verify it is correct.

    PHP
    define('LUSTER_PATH', '/home/username/public_html/luster');
  4. Done

    Your existing fanlisting pages will now render forms through Luster instead of Enthusiast. No other changes are needed.

Under the Hood

How It Works

When a visitor loads one of your fanlisting pages, the following happens:

  1. Your page loads config.php

    Your existing fanlisting page includes its config.php, which sets a $listing variable. This is either a numeric listing ID or a dbtable string (e.g. "huntrix").

  2. The page includes a show_*.php file

    Your page includes a file like show_join.php. Because you replaced the originals with bridge wrappers, it now loads the Luster bridge version instead of the old Enthusiast code.

  3. The bridge resolves the listing

    The bridge reads $listing and finds the matching Luster listing. If $listing is numeric, it uses it directly as the listing ID. If it is a string, it looks up the dbtable name in the owned table to find the listing ID.

  4. Luster renders the output

    The bridge passes the resolved listing ID to the corresponding Luster embed file (e.g. embed/join.php), which renders the form and outputs the HTML.

Reference

Supported Wrappers

The bridge includes replacement wrappers for all Enthusiast show_*.php files. Each wrapper routes to the equivalent Luster embed.

Enthusiast FileLuster EmbedWhat It Renders
show_join.phpembed/join.phpJoin form
show_members.phpembed/members.phpMember list
show_sort.phpembed/members.phpMember list (alias of show_members.php)
show_update.phpembed/update.phpUpdate form
show_lostpass.phpembed/reset.phpPassword reset form
show_stats.phpembed/stats.phpListing statistics
show_affiliates.phpembed/affiliates.phpAffiliates list
Enthusiast FileLuster EmbedWhat It Renders
show_collective_affiliates.phpembed/affiliates.phpCollective affiliates
show_collective_stats.phpembed/collective-stats.phpCollective statistics
show_owned.phpembed/owned.phpOwned listings
show_joined.phpembed/joined.phpJoined listings
Advanced

Manual Override

If the bridge cannot auto-detect your listing from the $listing variable, or if you want to skip auto-detection entirely, you can set the Luster listing ID manually before the include.

PHP
$luster_listing_id = 5;
include '/path/to/enthusiast/show_join.php';

When $luster_listing_id (or $luster_fanlisting_id) is set before the include, the bridge uses it directly and skips the $listing lookup.

CSS

Styling

The bridge renders forms using Luster’s HTML output, which means the output uses Luster’s CSS classes (fl-form, fl-field, fl-input, etc.) instead of Enthusiast’s old classes (show_join_name_field, etc.).

To style the output, you have two options:

  • Add Luster’s public stylesheet to your fanlisting pages. The stylesheet is at public/assets/css/default/style.css in your Luster installation. This gives you sensible defaults immediately.
  • Write your own CSS targeting the fl-* classes. See the CSS Class Migration Reference for the full mapping of old Enthusiast class names to Luster equivalents.
Old CSS will not apply.

If you had custom styles targeting Enthusiast class names like .show_join_name_field or .show_join_email, those styles will have no effect on the bridge output. You need to update them to target the equivalent fl-* classes.

Help

Troubleshooting

“Listing not found” message appears

This means the bridge could not match the $listing variable to a Luster listing. Check that the value of $listing set by your config.php matches a dbtable value in the owned table, or a valid listing ID. If the listing was recently imported, make sure the import completed successfully.

Blank output (nothing renders)

Check that the LUSTER_PATH constant in luster-bridge.php points to the correct absolute server path of your Luster installation. The path should point to the Luster root directory (the folder containing bootstrap.php), not the public/ subdirectory.

PHP errors or white screen

Make sure your server meets Luster’s requirements (PHP 8.1+). Also verify that the Luster installation itself is working by visiting the admin panel directly.

Forms submit but nothing happens

The bridge forms submit to Luster’s public endpoint. Make sure Luster’s app_url and embed_base_url config values are set correctly, and that the Luster public/ directory is accessible from the web.

Styles look wrong

The bridge outputs Luster HTML, not Enthusiast HTML. Your old Enthusiast CSS classes will not apply. Add Luster’s public stylesheet to your pages, or update your CSS to target fl-* classes. See the CSS Class Migration Reference.