diff --git a/CHANGELOG.md b/CHANGELOG.md index a8f25768..ebe4d9e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,6 +41,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Install API endpoint: extract ZIP to temp directory before passing to Joomla Installer (was passing ZIP path directly) - Clean up extracted temp directory on success or failure +- Update site disabled by Joomla when protected=1 — ensureProtectedFlag() now re-enables it ### Changed - CI: auto-release uses stream tag `stable` instead of version tag `vXX` diff --git a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php index 698bb8b0..eb5f2c3b 100644 --- a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -1067,6 +1067,8 @@ class MokoWaaS extends CMSPlugin try { $db = Factory::getDbo(); + + // Set protected=1, locked=0 on MokoWaaS extensions $query = $db->getQuery(true) ->update($db->quoteName('#__extensions')) ->set($db->quoteName('protected') . ' = 1') @@ -1076,6 +1078,18 @@ class MokoWaaS extends CMSPlugin ->where($db->quoteName('protected') . ' = 0'); $db->setQuery($query); $db->execute(); + + // Ensure update site stays enabled (protected extensions get their update site disabled by Joomla) + $query = $db->getQuery(true) + ->update($db->quoteName('#__update_sites') . ' AS us') + ->join('INNER', $db->quoteName('#__update_sites_extensions') . ' AS use2 ON us.update_site_id = use2.update_site_id') + ->join('INNER', $db->quoteName('#__extensions') . ' AS e ON use2.extension_id = e.extension_id') + ->set('us.enabled = 1') + ->where('us.enabled = 0') + ->where('(' . $db->quoteName('e.element') . ' = ' . $db->quote('mokowaas') + . ' OR ' . $db->quoteName('e.element') . ' = ' . $db->quote('pkg_mokowaas') . ')'); + $db->setQuery($query); + $db->execute(); } catch (\Throwable $e) {