Skip to main content

2. Capability comparison

CapabilityCustom Analyzer BuilderCoded Fact Contract Plugin
Multiple database tables in one analyzer definition No — exactly one table per definition Yes — any number of tables/queries
Multiple columns/fields as separate path sources in one definition No — exactly one Image Path Column per definition Yes — read as many fields as needed
Multiple keys from the same JSON column No — one JSON key per definition Yes — walk the whole JSON structure
Extracting image references embedded in rich-text/HTML body content (<img src="/...">, inline CSS url(...), etc.) Not possible at any number of definitions — the column/JSON-key value must already be the path Yes — DOM/regex scanning is ordinary PHP
Declaring "Reserved" folders (Inventory Hints contract) No — Builder-generated analyzers never emit this contract Yes — onMediaaudittoolCollectInventoryHints()
Declaring cache locations for the Clear Image Caches tool No — same limitation Yes — onMediaaudittoolCollectCacheLocations()
One unified owner record aggregating several source fields (e.g. one row per Article, however many image fields it has) No — each definition is its own analyzer/owner_type, so N definitions against the same table produce N separate rows per record Yes — one fact record per owner, with metadata.source_field distinguishing origin
Custom business logic (conditional gating, computed URLs, cross-table lookups) No — fixed field-mapping logic only Yes — arbitrary PHP
Setup time / skill required Minutes, no PHP knowledge Requires PHP + Joomla plugin conventions
Produces a real, exportable Joomla plugin Yes — via "Export as Plugin" Is one already
The Builder isn't a crippled version of a coded plugin — it's a different tool for a different shape of problem. It's the right choice whenever the answer to "does this table have exactly one column (or one JSON key) that already holds a usable path" is yes. The moment that answer is no, you need code.

What "Export as Plugin" actually gives you

Every Custom Analyzer definition can be exported to a real, installable plugin package (plg_mat_<yourkey>) — its own manifest, its own script.php, its own language files. Critically, the exported plugin is a faithful, working reproduction of exactly what the Builder itself does: same single table, same single path column, same single JSON key, wired into a proper onMediaaudittoolCollectReferences() method. It is not a stripped-down demo — it is a legitimate, functioning starting point that already satisfies the Fact Contract.

That makes it a genuinely useful bridge, not just a novelty: build the analyzer in the UI until you hit one of its limits, export it, and hand the resulting file to a developer (or your future self) to extend — add a second table, add the missing JSON key, add HTML scanning, add a Reserved-folders declaration — starting from working code instead of a blank file.