diff --git a/src/script.php b/src/script.php index dcbfa07..e73bab4 100644 --- a/src/script.php +++ b/src/script.php @@ -93,6 +93,7 @@ class Tpl_MokoonyxInstallerScript implements InstallerScriptInterface $this->migrateFromCassiopeia(); $this->replaceCassiopeiaReferences(); $this->clearFaviconStamp(); + $this->lockExtension(); } return true; @@ -378,6 +379,29 @@ class Tpl_MokoonyxInstallerScript implements InstallerScriptInterface } } + /** + * Lock the extension to prevent uninstallation via Extension Manager. + */ + private function lockExtension(): void + { + $db = Factory::getDbo(); + + try { + $query = $db->getQuery(true) + ->update('#__extensions') + ->set($db->quoteName('locked') . ' = 1') + ->where($db->quoteName('element') . ' = ' . $db->quote(self::NEW_NAME)) + ->where($db->quoteName('type') . ' = ' . $db->quote('template')); + $db->setQuery($query)->execute(); + + if ($db->getAffectedRows() > 0) { + $this->logMessage('MokoOnyx extension locked.'); + } + } catch (\Throwable $e) { + $this->logMessage('Failed to lock extension: ' . $e->getMessage(), 'warning'); + } + } + private function logMessage(string $message, string $priority = 'info'): void { $priorities = [