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.
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.
Setup
-
Download the Bridge
In the Luster admin panel, go to Admin → Collective → Migration & Bridges and click Enthusiast Bridge. This downloads a ZIP file.
-
Unzip into Your Enthusiast Folder
The ZIP contains
luster-bridge.phpand all of the wrapper files (show_join.php,show_members.php, etc.). Extract them into your Enthusiast installation folder, replacing the originalshow_*.phpfiles. -
Set the Luster Path
Open
luster-bridge.phpand set theLUSTER_PATHconstant to the absolute server path of your Luster installation. The download pre-fills this for you, but verify it is correct.PHPdefine('LUSTER_PATH', '/home/username/public_html/luster'); -
Done
Your existing fanlisting pages will now render forms through Luster instead of Enthusiast. No other changes are needed.
How It Works
When a visitor loads one of your fanlisting pages, the following happens:
-
Your page loads config.php
Your existing fanlisting page includes its
config.php, which sets a$listingvariable. This is either a numeric listing ID or adbtablestring (e.g."huntrix"). -
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. -
The bridge resolves the listing
The bridge reads
$listingand finds the matching Luster listing. If$listingis numeric, it uses it directly as the listing ID. If it is a string, it looks up thedbtablename in theownedtable to find the listing ID. -
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.
Supported Wrappers
The bridge includes replacement wrappers for all Enthusiast show_*.php files. Each wrapper routes to the equivalent Luster embed.
| Enthusiast File | Luster Embed | What It Renders |
|---|---|---|
show_join.php | embed/join.php | Join form |
show_members.php | embed/members.php | Member list |
show_sort.php | embed/members.php | Member list (alias of show_members.php) |
show_update.php | embed/update.php | Update form |
show_lostpass.php | embed/reset.php | Password reset form |
show_stats.php | embed/stats.php | Listing statistics |
show_affiliates.php | embed/affiliates.php | Affiliates list |
| Enthusiast File | Luster Embed | What It Renders |
|---|---|---|
show_collective_affiliates.php | embed/affiliates.php | Collective affiliates |
show_collective_stats.php | embed/collective-stats.php | Collective statistics |
show_owned.php | embed/owned.php | Owned listings |
show_joined.php | embed/joined.php | Joined listings |
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.
$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.
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.cssin 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.
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.
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.