feat: add bridge to detect MokoSuiteBackup and receive backup data #208

Open
opened 2026-06-18 15:03:16 +00:00 by jmiller · 2 comments
Owner

Summary

Add a bridge plugin (plg_system_mokosuiteclient_backup) that detects whether MokoSuiteBackup is installed on the same Joomla instance and, if present, receives backup status/data from it for reporting through the existing heartbeat and dashboard infrastructure.

Motivation

MokoSuiteHQ needs visibility into backup status across managed sites. Currently there is no mechanism for MokoSuiteClient to detect or communicate with MokoSuiteBackup, so backup health is a blind spot in the central dashboard.

Proposed Approach

Following the existing plugin-per-feature pattern (_monitor, _firewall, _tenant, etc.):

1. Detection

  • Check if mokosuitebackup is installed via Joomla's ExtensionHelper or by querying #__extensions
  • Expose an isBackupInstalled() helper on the bridge plugin
  • Gracefully degrade when MokoSuiteBackup is not present (no errors, no UI clutter)

2. Data Reception

  • Define an interface/contract for the backup data payload (last backup time, status, size, destination, errors)
  • Receive backup status either via:
    • Joomla events — MokoSuiteBackup dispatches a custom event, the bridge listens
    • Direct model/API call — the bridge queries MokoSuiteBackup's model or a lightweight internal API
  • Cache the latest backup summary in the client's own storage for heartbeat inclusion

3. Heartbeat Integration

  • Extend the heartbeat payload (sent by plg_system_mokosuiteclient_monitor) to include a backup section when data is available
  • MokoSuiteHQ can then display backup status on the site detail dashboard

4. Dashboard Widget

  • Add a backup status card to com_mokosuiteclient's admin dashboard showing:
    • Whether MokoSuiteBackup is detected
    • Last backup timestamp and status
    • Quick link to MokoSuiteBackup if installed

Acceptance Criteria

  • New plugin plg_system_mokosuiteclient_backup follows existing plugin conventions
  • Correctly detects presence/absence of MokoSuiteBackup
  • Receives and caches backup status data when available
  • Heartbeat payload includes backup data when MokoSuiteBackup is present
  • No errors or warnings when MokoSuiteBackup is not installed
  • Dashboard widget reflects backup status
  • Language strings added for all user-facing text
## Summary Add a bridge plugin (`plg_system_mokosuiteclient_backup`) that detects whether **MokoSuiteBackup** is installed on the same Joomla instance and, if present, receives backup status/data from it for reporting through the existing heartbeat and dashboard infrastructure. ## Motivation MokoSuiteHQ needs visibility into backup status across managed sites. Currently there is no mechanism for MokoSuiteClient to detect or communicate with MokoSuiteBackup, so backup health is a blind spot in the central dashboard. ## Proposed Approach Following the existing plugin-per-feature pattern (`_monitor`, `_firewall`, `_tenant`, etc.): ### 1. Detection - Check if `mokosuitebackup` is installed via Joomla's `ExtensionHelper` or by querying `#__extensions` - Expose an `isBackupInstalled()` helper on the bridge plugin - Gracefully degrade when MokoSuiteBackup is not present (no errors, no UI clutter) ### 2. Data Reception - Define an interface/contract for the backup data payload (last backup time, status, size, destination, errors) - Receive backup status either via: - **Joomla events** — MokoSuiteBackup dispatches a custom event, the bridge listens - **Direct model/API call** — the bridge queries MokoSuiteBackup's model or a lightweight internal API - Cache the latest backup summary in the client's own storage for heartbeat inclusion ### 3. Heartbeat Integration - Extend the heartbeat payload (sent by `plg_system_mokosuiteclient_monitor`) to include a `backup` section when data is available - MokoSuiteHQ can then display backup status on the site detail dashboard ### 4. Dashboard Widget - Add a backup status card to `com_mokosuiteclient`'s admin dashboard showing: - Whether MokoSuiteBackup is detected - Last backup timestamp and status - Quick link to MokoSuiteBackup if installed ## Acceptance Criteria - [ ] New plugin `plg_system_mokosuiteclient_backup` follows existing plugin conventions - [ ] Correctly detects presence/absence of MokoSuiteBackup - [ ] Receives and caches backup status data when available - [ ] Heartbeat payload includes backup data when MokoSuiteBackup is present - [ ] No errors or warnings when MokoSuiteBackup is not installed - [ ] Dashboard widget reflects backup status - [ ] Language strings added for all user-facing text
Author
Owner

Branch created: feature/208-feat-add-bridge-to-detect-mokosuitebacku

git fetch origin
git checkout feature/208-feat-add-bridge-to-detect-mokosuitebacku
Branch created: [`feature/208-feat-add-bridge-to-detect-mokosuitebacku`](https://git.mokoconsulting.tech/MokoConsulting/MokoSuiteClient/src/branch/feature/208-feat-add-bridge-to-detect-mokosuitebacku) ```bash git fetch origin git checkout feature/208-feat-add-bridge-to-detect-mokosuitebacku ```
Author
Owner

Linked Issues

This is part of a three-repo backup status feature:

Repo Issue Role
MokoSuiteBackup #47 Expose backup status data
MokoSuiteClient #208 (this) Bridge plugin to detect and collect backup data
MokoSuiteHQ #39 Display backup status on dashboard

Feature branch: feature/208-backup-bridge — scaffolding complete, placeholder column names pending MokoSuiteBackup#47.

## Linked Issues This is part of a three-repo backup status feature: | Repo | Issue | Role | |------|-------|------| | **MokoSuiteBackup** | [#47](https://git.mokoconsulting.tech/MokoConsulting/MokoSuiteBackup/issues/47) | Expose backup status data | | **MokoSuiteClient** | #208 (this) | Bridge plugin to detect and collect backup data | | **MokoSuiteHQ** | [#39](https://git.mokoconsulting.tech/MokoConsulting/MokoSuiteHQ/issues/39) | Display backup status on dashboard | **Feature branch:** `feature/208-backup-bridge` — scaffolding complete, placeholder column names pending MokoSuiteBackup#47.
Sign in to join this conversation.
No labels
Priority Medium
Type Feature
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MokoConsulting/MokoSuiteClient#208