Removes accessors deprecated in Joomla 5 and slated for removal in 7
(extension already runs on 6; this future-proofs for 7):
- Factory::getDbo() -> Factory::getContainer()->get(DatabaseInterface::class)
across plugins, controllers, static helpers, and the install script
- Factory::getUser() -> Factory::getApplication()->getIdentity()
- Factory::getSession() -> Factory::getApplication()->getSession()
- jexit(Text::_('JINVALID_TOKEN')) -> throw new \RuntimeException(..., 403),
consistent with the access-denied checks already in those controllers
Note: SQL update-version concern is already resolved — the release bumped
to 01.05.00, which matches the 01.05.00.sql update slot.
(cherry picked from commit d6fb2816cf)
Product rename (display name / docs / comments / language strings only —
technical element names mokoog/com_mokoog/MokoOG namespace unchanged):
- Replace "MokoJoom" -> "MokoSuite" across 55 files
- Fixes the update-site license lookup in script.php, which matched the
old "%MokoJoomOpenGraph%" name and would never find a "MokoSuite" site
Joomla 6 compatibility:
- script.php: minimumJoomla 4.0.0 -> 6.0.0, minimumPhp 8.1.0 -> 8.2.0,
and actually enforce the Joomla floor in preflight() (was PHP-only)
- Add PKG_MOKOOG_JOOMLA_VERSION_ERROR language strings (en-GB, en-US)
- openapi.yaml + README state Joomla 6.0+ requirement
- Audit confirmed the codebase already uses only Joomla-6-supported APIs
(cherry picked from commit 7fb7e38762)
- canonical_url: sanitize via sanitizeUrl() (scheme allowlist) instead of
bare trim() — closes stored-XSS via addHeadLink() on the public frontend
- AI endpoint: replace die('Invalid Token') with a clean event result,
and strip_tags + truncate article_title to 200 chars before use
- SitemapBuilder: whitelist changefreq against the sitemap spec enum,
intval() noindex IDs, strict in_array comparison
- MokoOG: log a WARNING when sitemap.xml write fails instead of ignoring it
(cherry picked from commit b77054b769)
The install/uninstall/update SQL sections used driver="mysql" which
doesn't match the active mysqli driver, causing "SQL File not found"
on fresh installs and silently skipping schema updates on upgrades.
(cherry picked from commit 3fb5a87be9)
- Custom JSON-LD schema builder: per-article textarea for arbitrary
structured data with JSON validation. Closes#70
- AI-powered meta generation: Generate with AI buttons for OG title
and description, supports Claude and OpenAI APIs. Closes#71
- XML sitemap: auto-generates sitemap.xml on article save, respects
noindex directives. Closes#72
- Per-platform image resizing: Twitter 1200x600, Pinterest 1000x1500,
WhatsApp 400x400 alongside default Facebook 1200x630. Closes#74
- DB migration 01.05.00: adds custom_schema column
JavaScript-based SEO analysis with 7 checks (OG title, description,
image, SEO title, meta description, title length, description
length). Shows pass/fail dots and overall score. Closes#68
Shows how shared links will appear on Discord (dark theme with
accent bar), Mastodon (rounded card), and Slack (compact unfurl)
alongside the existing Facebook, Twitter, and LinkedIn previews.
Closes#69
- Add exception logging to BatchController batch skip (#76)
- Align form maxlength with DB schema limits (#77)
- applySeoTags() already uses public API — no change needed (#78)
- Add strip_tags() input sanitization on OG text fields (#79)
- Only emit og:video:secure_url for HTTPS URLs (review #1)
- Only emit og:video:width/height for direct files, not embeds (review #2)
- Add server-side http/https scheme validation on og_video save (review #3)
- Consolidate duplicate com_mokoshop product blocks into one (review #4)
- Fix stale com_virtuemart reference in SQL comment (review #5)
- Use COM_MOKOOG_* language keys in tag.xml instead of plugin keys (review #6)
- Add og:video meta tags with per-article video URL field and auto
MIME type detection for YouTube/Vimeo/direct files. Includes DB
migration for og_video column. (closes#59)
- Add Pinterest rich pin tags: article:tag from Joomla content tags
on article pages, product:availability from MokoSuiteShop stock
quantity on product pages. (closes#60)
- Add fediverse:creator meta tag for Mastodon/Fediverse author
attribution — first extension on any CMS to support this (closes#57)
- Add live character count indicators with green/yellow/red color
coding on OG title, description, SEO title, and meta description
fields in the article/menu editor (closes#58)
- Add LinkedIn social preview card alongside existing Facebook and
Twitter/X previews in the editor (closes#61)
- Add missing language field to batch-generated records
- Wrap batch insert in try-catch to handle duplicate key races
- Add logging to all empty catch blocks (script.php, MokoOG license check)
- Guard loadShopProduct() with try-catch for missing MokoSuiteShop tables
- Guard reviews query in JsonLdBuilder for missing #__mokoshop_reviews