On shared hosting where max_execution_time cannot be overridden,
backups now run as a series of small AJAX requests. Each request
does one unit of work (dump one table, add one batch of files)
and returns within the time limit.
- SteppedBackupEngine: orchestrates init → database → files →
finalize → upload → complete phases
- SteppedSession: persists state between requests via temp JSON files
with automatic cleanup of stale sessions (24h)
- AjaxController: handles init and step requests with CSRF protection
- Admin UI: progress bar modal with real-time phase and percentage
updates, auto-reloads on completion
- Steps: 1 table per DB step, 200 files per file step (configurable)
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add RemoteUploaderInterface for pluggable storage backends
- Add FtpUploader: FTP/FTPS with passive mode, SSL, recursive dir
creation, and post-upload size verification
- Add GoogleDriveUploader: OAuth2 refresh token auth, resumable upload
API with 5 MB chunking for reliable large-file transfers
- Wire uploaders into BackupEngine Step 3: after ZIP creation, upload
to configured remote, optionally delete local copy
- No SDK dependencies — pure PHP with cURL for Google Drive
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add plg_task_mokobackup: Joomla Scheduled Tasks integration so each
backup profile can run on its own schedule (like Akeeba Backup Pro)
- Replace JSON config/filters with individual form fields and DB columns
- Add FTP/FTPS and Google Drive remote storage options per profile
- Add archive settings tab (format, compression, split size, backup dir)
- Add exclusion filter fields (dirs, files, tables) as newline-separated
textareas instead of raw JSON
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Full-site backup and restore for Joomla with three sub-extensions:
- com_mokobackup: Admin component with backup engine, profiles, and records
- plg_system_mokobackup: Auto-cleanup of expired backups
- plg_webservices_mokobackup: REST API wire-compatible with mcp_mokobackup
Backup engine supports full/database/files modes with step-based execution,
file/directory/table exclusion filters, and CLI script for cron use.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>