Shared MokoSuite system plugin — single DLID entry, auto-configure all update sites #628

Open
opened 2026-06-12 08:00:48 +00:00 by jmiller · 0 comments
Owner

Phase 4.1 — Joomla Client Plugin

Parent: #616 | Depends on: #621 | Repo: MokoSuite (base)

File: plg_system_mokosuite/src/Extension/MokoSuite.php

Shared system plugin installed with MokoSuite base that handles DLID for ALL MokoSuite extensions:

Config field

Add to plugin config XML:

<field name="dlid" type="text" label="Download ID (DLID)" 
       description="Enter your MokoSuite Download ID from your account dashboard." />

Behavior

  1. On onAfterInitialise: read DLID from plugin params
  2. Find all #__update_sites entries where location contains mokoconsulting.tech
  3. Set extra_query = "dlid={DLID}" on each
  4. This ensures Joomla's updater sends the DLID with every update check for every MokoSuite extension

License status check

On admin page load (onAfterRoute for admin):

  • Call validation API: GET /api/v1/licensing/validate?dlid=XXX
  • Cache result for 24 hours
  • Show admin notice if: expiring within 30 days, expired, revoked, or invalid

Acceptance criteria

  • Single DLID field in base plugin config
  • Auto-applies to ALL MokoSuite update sites
  • Works for CRM, ERP, POS, Shop, Child, Create, NPO, HRM, MRP, Restaurant
  • License status warning in admin
  • No DLID = update sites work but return empty (free extensions still update)
## Phase 4.1 — Joomla Client Plugin Parent: #616 | Depends on: #621 | Repo: MokoSuite (base) ### File: `plg_system_mokosuite/src/Extension/MokoSuite.php` Shared system plugin installed with MokoSuite base that handles DLID for ALL MokoSuite extensions: ### Config field Add to plugin config XML: ```xml <field name="dlid" type="text" label="Download ID (DLID)" description="Enter your MokoSuite Download ID from your account dashboard." /> ``` ### Behavior 1. On `onAfterInitialise`: read DLID from plugin params 2. Find all `#__update_sites` entries where `location` contains `mokoconsulting.tech` 3. Set `extra_query = "dlid={DLID}"` on each 4. This ensures Joomla's updater sends the DLID with every update check for every MokoSuite extension ### License status check On admin page load (`onAfterRoute` for admin): - Call validation API: `GET /api/v1/licensing/validate?dlid=XXX` - Cache result for 24 hours - Show admin notice if: expiring within 30 days, expired, revoked, or invalid ### Acceptance criteria - [ ] Single DLID field in base plugin config - [ ] Auto-applies to ALL MokoSuite update sites - [ ] Works for CRM, ERP, POS, Shop, Child, Create, NPO, HRM, MRP, Restaurant - [ ] License status warning in admin - [ ] No DLID = update sites work but return empty (free extensions still update)
Sign in to join this conversation.