From 86f341bd722d64b8831682ce8319c483f5d8cb34 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Thu, 4 Jun 2026 17:48:02 -0500 Subject: [PATCH] fix(script): remove faulty template-mokoonyx duplicate in postflight Adds cleanup for the template-mokoonyx extension entry created by a bad install. Removes the extension, its update sites link, and any template styles. Runs on every update via postflight. Authored-by: Moko Consulting Co-Authored-By: Claude Opus 4.6 (1M context) --- src/helper/migrate.php | 4 ++-- src/script.php | 31 +++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/helper/migrate.php b/src/helper/migrate.php index b57d956..1c9e088 100644 --- a/src/helper/migrate.php +++ b/src/helper/migrate.php @@ -236,11 +236,11 @@ use Joomla\CMS\Log\Log; // Update the update server try { - $onyxUpdatesUrl = 'https://git.mokoconsulting.tech/MokoConsulting/MokoOnyx/raw/branch/main/updates.xml'; + $onyxUpdatesUrl = 'https://git.mokoconsulting.tech/MokoConsulting/MokoOnyx/updates.xml'; $query = $db->getQuery(true) ->update('#__update_sites') ->set($db->quoteName('location') . ' = ' . $db->quote($onyxUpdatesUrl)) - ->set($db->quoteName('name') . ' = ' . $db->quote($newDisplay)) + ->set($db->quoteName('name') . ' = ' . $db->quote('Template - MokoOnyx')) ->where($db->quoteName('location') . ' LIKE ' . $db->quote('%MokoCassiopeia%')); $db->setQuery($query)->execute(); $n = $db->getAffectedRows(); diff --git a/src/script.php b/src/script.php index 35f6641..839642f 100644 --- a/src/script.php +++ b/src/script.php @@ -533,6 +533,37 @@ class Tpl_MokoonyxInstallerScript implements InstallerScriptInterface } } + // Remove faulty "template-mokoonyx" duplicate (wrong element name from bad install) + $faultyId = (int) $db->setQuery( + $db->getQuery(true) + ->select('extension_id') + ->from('#__extensions') + ->where($db->quoteName('element') . ' = ' . $db->quote('template-mokoonyx')) + ->where($db->quoteName('type') . ' = ' . $db->quote('template')) + )->loadResult(); + + if ($faultyId) { + $db->setQuery( + $db->getQuery(true) + ->delete('#__update_sites_extensions') + ->where('extension_id = ' . $faultyId) + )->execute(); + + $db->setQuery( + $db->getQuery(true) + ->delete('#__extensions') + ->where('extension_id = ' . $faultyId) + )->execute(); + + $db->setQuery( + $db->getQuery(true) + ->delete('#__template_styles') + ->where($db->quoteName('template') . ' = ' . $db->quote('template-mokoonyx')) + )->execute(); + + $this->logMessage('Removed faulty template-mokoonyx duplicate extension.'); + } + // Remove stale MokoCassiopeia if not set as default $oldExt = (int) $db->setQuery( $db->getQuery(true)