Additional requirements : XenForo Resource Manager (XFRM) 2.3.0+
Hotlink Converter is an admin tool that batch-converts externally hotlinked images in XFRM resource descriptions into locally-stored XenForo attachments. It scans
Built as a one-time migration tool for forums with legacy resource content that hotlinks images from external hosts that may go offline at any time.
Addon ID: Qubn/HotlinkConverter
Vendor: Qubn
License: Free / Open Source
Télécharger V1.0.0 :
Télécharger V1.1.0 :
[/LIST]
Hotlink Converter is an admin tool that batch-converts externally hotlinked images in XFRM resource descriptions into locally-stored XenForo attachments. It scans
[IMG]https://external.com/pic.jpg[/IMG] BB code tags, downloads the images, creates proper XF attachments, and replaces the BB code with [ATTACH=full]id[/ATTACH].Built as a one-time migration tool for forums with legacy resource content that hotlinks images from external hosts that may go offline at any time.
Key Features
- Whole-board conversion - Converts hotlinked images in forum posts, profile posts, conversation messages, and XFRM resource updates. One toggle per content type lets you pick exactly what gets scanned.
- Resource Manager optional - Works on plain XenForo. The resource-update target only appears when the Resource Manager is installed.
- Admin Dashboard - Shows a per-type count of how many items contain hotlinked images, plus conversion statistics (converted/failed/skipped/pending). Counts are calculated on demand (via a Recalculate button) and cached, so the page opens instantly even on a board with millions of posts.
- Dry Run Mode - Preview what will be converted without downloading anything. Results appear in the conversion log as "pending" entries.
- Inline rendering - Converted images display inline as local attachments (using each content type's native editor), with no spurious "edited" stamp, no alert, and no activity bump on the migrated content. The original poster stays the author.
- Code/tutorial posts are never touched - Literal
[IMG]examples inside[CODE],[ICODE], [PLAIN], [NOPARSE], [PHP], or[HTML]are left exactly as-is, so tutorials demonstrating BB code never get corrupted. - Dedicated admin permission - A "Hotlink Converter" permission gates running conversions and clearing the log, so you can grant it to specific non-super administrators.
- Conversion Log - Paginated log of every URL processed, with status badges, the content type and ID, attachment links, file sizes, a translatable reason for failures/skips, and timestamps. Filterable by status.
- Confirmation Overlay - Live conversion requires explicit confirmation since it modifies content irreversibly. If conversation scanning is enabled, the overlay adds a private-conversation privacy warning.
- Smart IMG handling - Handles
[IMG]tag variants([IMG width="400" height="300"] (/ICODE], [IMG alt="desc"])and thephpBB [IMG=url]form. - URL deduplication - If the same external URL appears multiple times in one item, it is downloaded once and all instances share the same attachment.
- Local URL skipping - URLs that already point to your own board are skipped automatically.
- Idempotent - Safe to re-run. Already-converted URLs are skipped on later runs. No duplicate downloads or attachments.
- Failure resilience - Failed downloads (404s, timeouts, oversized files, invalid images) are logged with a specific reason. The job keeps processing the rest.
- Quiet on big runs - A bulk run suppresses the external IndexNow ping, so it will not flood the job queue or mass-notify search engines for cosmetic image changes (your local search index is still updated).
- Clean uninstall - Drops the conversion log table on uninstall.
Technical Details
- Architecture: Service + Job + Repository pattern. One database table (
xf_qubn_hlc_conversion_log) for audit logging. - Downloads: Uses XF's built-in
getUntrusted()HTTP reader with SSRF protection. 15-second timeout, 10MB file size limit per image. - Supported formats: JPG, JPEG, PNG, GIF, WebP, BMP
- Attachment creation: Uses XF's native
PreparerService- same API as manual uploads. Properly updatesattach_counton the resource update. - Job processing: Cursor-based resumable job. Processes 50 resource updates per batch with time-limit checks. Can be cancelled from the AdminCP job queue.
- Compatibility: Requires XenForo 2.3.0+ and XF Resource Manager 2.3.0+
- Code Quality: PHPStan level 3 clean. No class extensions - completely self-contained.
Installation
- Download and extract the ZIP file
- Upload the
Qubn/HotlinkConverter/folder tosrc/addons/ - Go to AdminCP > Add-ons > Install from archive (or Install/upgrade)
- Navigate to AdminCP > Tools > Hotlink Converter
Addon ID: Qubn/HotlinkConverter
Vendor: Qubn
License: Free / Open Source
Télécharger V1.0.0 :
Pour consulter le contenu, vous devez : Se connecter ou S'inscrire.
Hotlink Converter v1.1.0 - Now converts forum posts, profile posts & conversations
The big one: Hotlink Converter no longer only scans Resource Manager resource updates. It now converts hotlinked images across your whole board - and you choose what it touches.New
- Multi-content-type conversion - Hotlinked
[IMG]images are now converted in forum posts, profile posts, conversation messages, and XFRM resource updates. If you imported a board from other software (phpBB, etc.), your images live in forum posts - this is the version that converts them. - Selectable scan targets - One toggle per content type under AdminCP → Options → Hotlink Converter. Conversation scanning is off by default with a privacy warning (converting images in private conversations permanently re-hosts them).
- Per-source dashboard - See how many items of each type contain hotlinked images, plus a per-content-type conversion summary.
- Clear empty-state - When there's nothing in scope, the dashboard says so instead of bouncing through the job runner and logging nothing.
- Dedicated admin permission - "Hotlink Converter" now gates running conversions and clearing the log.
- Resource Manager is now optional - the add-on works on plain XenForo; the resource-update target only appears when XFRM is installed.
Fixed
- "Buttons do nothing, nothing in the log" - If your hotlinked images weren't in Resource Manager resources, v1.0.0 found nothing, finished instantly, and logged nothing - with no explanation. Now it converts the content where your images actually are (forum posts), and tells you clearly when there's nothing to do.
- Inline rendering - Converted images now display inline correctly (via each content type's native editor), with no spurious "edited" stamp, alert, or activity bump on the migrated content.
- Broader detection - handles
[IMG attrs]…[/IMG], the phpBB[IMG=url]form, and surrounding whitespace; logs a clear "no convertible URL" entry instead of silently skipping.
Built for big boards
- Won't touch your code/tutorial posts - literal
[IMG]examples inside[CODE]/[ICODE]/[NOPARSE]etc. are left exactly as-is. - Instant dashboard - candidate counts are calculated only when you click Recalculate (and cached), so the page opens instantly even on a forum with millions of posts. Conversions run as a resumable background job in 50-row batches, so a multi-year archive converts safely over multiple cycles without dropping or double-processing anything.
- Quiet - a bulk run won't spam your job queue or mass-ping search engines (IndexNow is suppressed for the conversion edits).
Upgrade
Non-destructive. The conversion log is migrated automatically (verified: a v1.0.0 → v1.1.0 upgrade produces a schema identical to a fresh install, with all existing log rows preserved). Upload the ZIP via Admin CP → Add-ons → Install/upgrade from archive. Afterwards: grant the new Hotlink Converter admin permission to any non-super administrators who should use it, and review your scan targets under Options (forum posts are scanned by default).Télécharger V1.1.0 :
Pour consulter le contenu, vous devez : Se connecter ou S'inscrire.
[/LIST]
Pièces jointes
-
01-dashboard-clean.webp27.6 KB · Affichages: 11 -
02-dashboard-after-dryrun.webp27.5 KB · Affichages: 13 -
03-log-dryrun-entries.webp27.6 KB · Affichages: 9 -
04-log-filtered-pending.webp25.3 KB · Affichages: 19 -
05-confirmation-overlay.webp13.9 KB · Affichages: 7 -
06-dashboard-after-conversion.webp27.9 KB · Affichages: 21 -
07-log-all-statuses.webp27.5 KB · Affichages: 12 -
08-navigation-sidebar.webp8.7 KB · Affichages: 9

