fix(plugin): pre-update backup notifies on success too, not only failure
Universal: PR Check / Require Docs Update (pull_request) Has been skipped
Universal: PR Check / Wiki Update Reminder (pull_request) Has been skipped
Universal: PR Check / Branch Policy (pull_request) Successful in 3s
Generic: Project CI / Lint & Validate (pull_request) Successful in 17s
Universal: PR Check / Secret Scan (pull_request) Successful in 12s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 44s
Universal: PR Check / Validate PR (pull_request) Failing after 1m5s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 1m13s
Generic: Project CI / Tests (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled

runPreActionBackup() only enqueued a message when the backup failed, so a
successful pre-update backup produced no admin notification at all. Now it
surfaces every outcome via the BackupRunner status: complete -> success,
warning (archive made but remote upload failed) -> warning, fail -> error.

Refs #192

Claude-Session: https://claude.ai/code/session_01WbGBN9VyRK61zczYWcCQ2i
This commit is contained in:
2026-07-05 18:57:42 -05:00
parent 9571b3759a
commit 1a1c81550c
2 changed files with 22 additions and 3 deletions
+3
View File
@@ -2,6 +2,9 @@
## [Unreleased]
### Fixed
- Pre-update backup now shows an admin notification on **every** outcome (success / warning / failure) — previously a *successful* pre-update backup fired nothing, so it looked like the notification wasn't working. (#192)
### Changed
- Component admin CSS now loads via the Joomla **Web Asset Manager** (`media/com_mokosuitebackup/` + `joomla.asset.json`) instead of an inline `<style>` block.
- "Keep local copy" is configured **per remote destination** (in the Add/Edit Destination modal); the redundant profile-level field and its "Remote" tab are removed.
@@ -390,12 +390,28 @@ final class MokoSuiteBackup extends CMSPlugin implements SubscriberInterface
try {
$result = (new BackupRunner())->run($profileId, $description, 'preaction');
$app = Factory::getApplication();
$status = $result['status'] ?? (!empty($result['success']) ? 'complete' : 'fail');
if (!$result['success']) {
Factory::getApplication()->enqueueMessage(
'MokoSuiteBackup: ' . $description . ' failed — ' . $result['message'],
/* Always surface the outcome so the pre-update backup is visible in the
admin — previously only failures produced a message, so a successful
pre-update backup fired no notification at all. */
if ($status === 'warning') {
$app->enqueueMessage(
'MokoSuiteBackup: ' . $description . ' completed with warnings — '
. ($result['message'] ?: 'the local archive was created but a remote upload failed; see the backup log.'),
'warning'
);
} elseif ($status === 'fail' || empty($result['success'])) {
$app->enqueueMessage(
'MokoSuiteBackup: ' . $description . ' failed — ' . ($result['message'] ?: 'unknown error'),
'error'
);
} else {
$app->enqueueMessage(
'MokoSuiteBackup: ' . $description . ' completed successfully.',
'message'
);
}
} catch (\Throwable $e) {
error_log('MokoSuiteBackup: ' . $description . ' failed: ' . $e->getMessage());