fix: [DEFAULT_DIR] resolves to JPATH_ROOT/backups, shown as placeholder

- getDefaultAbsolute() now returns JPATH_ROOT/backups instead of
  the old admin component directory
- SQL default, form default, and install migration all use [DEFAULT_DIR]
- portablize() converts ./backups and old literal paths back to [DEFAULT_DIR]
- Users see [DEFAULT_DIR] in the field, resolved path shown in status
This commit is contained in:
Jonathan Miller
2026-06-11 15:27:17 -05:00
parent 7a5e25e0e4
commit 2a9443601e
4 changed files with 21 additions and 20 deletions
+5 -4
View File
@@ -233,11 +233,12 @@ class Pkg_MokoSuiteBackupInstallerScript
{
try {
$db = Factory::getDbo();
// Check for profiles using the old in-webroot default
// Check for profiles using old literal defaults — migrate to [DEFAULT_DIR]
$oldDefaults = [
'administrator/components/com_mokosuitebackup/backups',
'administrator/components/com_mokojoombackup/backups',
'[DEFAULT_DIR]',
'./backups',
'backups',
];
$query = $db->getQuery(true)
->select('COUNT(*)')
@@ -250,10 +251,10 @@ class Pkg_MokoSuiteBackupInstallerScript
$db->setQuery($query);
if ((int) $db->loadResult() > 0) {
// Auto-migrate old defaults to the new ./backups convention
// Auto-migrate old defaults to [DEFAULT_DIR] placeholder
$update = $db->getQuery(true)
->update($db->quoteName('#__mokosuitebackup_profiles'))
->set($db->quoteName('backup_dir') . ' = ' . $db->quote('./backups'))
->set($db->quoteName('backup_dir') . ' = ' . $db->quote('[DEFAULT_DIR]'))
->where('(' . $db->quoteName('backup_dir') . ' IN ('
. implode(',', array_map([$db, 'quote'], $oldDefaults))
. ') OR ' . $db->quoteName('backup_dir') . ' = ' . $db->quote('')