Gate the success/license path in both installer scripts so a partial
install can no longer report success.
- Package script (pkg_mokosuitecross): add missingChildExtensions(),
which reads the package manifest via getParent()->getManifest() and
verifies each declared <file> child is registered in #__extensions
(matching element+type, plus folder=group for plugins). If any are
missing, enqueue an error and return before warnMissingLicenseKey().
Housekeeping (download-key restore, core-plugin enable, PerfectPublisher
migration detection) still runs unconditionally.
- Component script (com_mokosuitecross): postflight was empty. Add
missingTables(), which parses the installed sql/install.mysql.sql for
every CREATE TABLE and verifies each exists (prefix-substituted,
case-insensitive). On any missing tables, enqueue an error and return
before the success message; otherwise show install-success/license notice.
Both checks fail open (try/catch returning []/true) so a glitch never turns
a good install into a false failure. Extension names are htmlspecialchars'd.
Claude-Session: https://claude.ai/code/session_01MrxXW9iyuDda5yDZrjZMbF
Completes the MokoJoomCross → MokoSuiteCross rebrand across all language
string keys, Joomla event names, documentation, and wiki pages.
- 1,151 language key references renamed (COM_, PLG_, PKG_ prefixes)
- Event names renamed (onMokoJoomCross* → onMokoSuiteCross*)
- CLAUDE.md, CHANGELOG.md, wiki docs updated
- Zero mokojoomcross references remaining in codebase
Closes#128, closes#138