jmiller 0f2fb71612
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 17s
fix: enforce per-profile retention and repair Purge Old Backups button
Two related backup-management fixes.

Retention (records/days to keep):
- The retention fieldset was defined in profile.xml but never rendered
  in the profile editor, so retention_days/retention_count were invisible.
  Render the retention fieldset on the Archive tab.
- retention_days/retention_count were read by nothing, so they pruned no
  backups. Add RetentionManager::prune(), called from completeRecord() in
  both BackupEngine and SteppedBackupEngine after a backup finishes.
  Policy: delete a completed/warning backup when EITHER it is older than
  retention_days OR it falls outside the newest retention_count copies
  (0 = unlimited for that rule). Deleting a record also removes its
  archive and log file.
- Correct misleading language/schema text ("use global default" — no such
  global backup-retention setting exists) to "0 = unlimited".

Purge Old Backups button:
- The modal only opened via a fragile selector match on the toolbar
  button's inline onclick, which Joomla 6's Atum toolbar does not render,
  so the button did nothing. Wrap Joomla.submitbutton to open the modal
  for the backups.purgeModal task, keeping the selector as a fallback.
2026-07-04 13:43:58 -05:00

Contributing to MokoSuiteBackup

Thank you for your interest in contributing to MokoSuiteBackup.

Getting Started

  1. Fork the repository on Gitea
  2. Create a feature branch from dev (feature/your-feature)
  3. Make your changes following the coding standards below
  4. Submit a pull request targeting dev

Branch Strategy

  • main — stable releases only
  • dev — active development
  • feature/* — new features (target dev)
  • fix/* — bug fixes (target dev)
  • hotfix/* — urgent fixes (target dev or main)

Coding Standards

  • PHP 8.1+ required
  • Follow Joomla coding standards
  • SPDX license headers on all PHP files
  • Use SubscriberInterface for event subscription
  • Use bind() -> check() -> store() for Table operations

Reporting Issues

Report bugs and feature requests via Issues.

License

By contributing, you agree that your contributions will be licensed under GPL-3.0-or-later.

S
Description
Full-site backup and restore for Joomla - database, files, and configuration
https://mokoconsulting.tech/support/products/mokosuitebackup Readme
4.1 MiB
2026-07-06 00:32:10 +00:00
Languages
PHP 99.6%
HTML 0.3%
CSS 0.1%