-
#id; ?> — subject); ?>
-
- category_title ?? 'General'); ?>
- · Submitted created, 'M d, Y \a\t H:i'); ?>
- · Priority: priority); ?>
-
+
+
+
+
+
+
+
+
+
+
#id; ?> — subject); ?>
+
+ category_title ?? 'General'); ?>
+ · created, 'M d, Y H:i'); ?>
+ · priority); ?>
+
+ · By: created_by_name); ?>
+
+
+
+
+ status] ?? $t->status; ?>
+
+
-
- status] ?? ucfirst($t->status); ?>
-
-
-
-
-
-
-
- replies as $reply): ?>
- user_id !== (int) $t->created_by);
- ?>
-
-
-
-
- status, ['closed', 'resolved'])): ?>
-
-
-
-
- This ticket is status] ?? $t->status); ?>. If you need further help, please open a new ticket.
-
-
diff --git a/src/packages/com_mokowaas/site/tmpl/tickets/default.php b/src/packages/com_mokowaas/site/tmpl/tickets/default.php
index f9face4..8ed9e1a 100644
--- a/src/packages/com_mokowaas/site/tmpl/tickets/default.php
+++ b/src/packages/com_mokowaas/site/tmpl/tickets/default.php
@@ -1,11 +1,4 @@
tickets;
$categories = $this->categories;
+$isStaff = $this->isStaff;
$token = Session::getFormToken();
$statusLabel = [
@@ -28,106 +22,62 @@ $statusClass = [
-
My Support Tickets
-
-
-
-
-
diff --git a/src/packages/mod_mokowaas_cpanel/src/Dispatcher/Dispatcher.php b/src/packages/mod_mokowaas_cpanel/src/Dispatcher/Dispatcher.php
index d3b1c19..d5b1414 100644
--- a/src/packages/mod_mokowaas_cpanel/src/Dispatcher/Dispatcher.php
+++ b/src/packages/mod_mokowaas_cpanel/src/Dispatcher/Dispatcher.php
@@ -33,6 +33,7 @@ class Dispatcher extends AbstractModuleDispatcher implements HelperFactoryAwareI
$data['counts'] = $helper->getCounts($db);
$data['disk'] = $helper->getDiskInfo();
$data['currentIp'] = $helper->getCurrentIp();
+ $data['ssl'] = $helper->getSslStatus();
return $data;
}
diff --git a/src/packages/mod_mokowaas_cpanel/src/Helper/CpanelHelper.php b/src/packages/mod_mokowaas_cpanel/src/Helper/CpanelHelper.php
index 7160329..a50d895 100644
--- a/src/packages/mod_mokowaas_cpanel/src/Helper/CpanelHelper.php
+++ b/src/packages/mod_mokowaas_cpanel/src/Helper/CpanelHelper.php
@@ -136,4 +136,54 @@ class CpanelHelper
{
return $_SERVER['REMOTE_ADDR'] ?? '';
}
+
+ /**
+ * Check SSL certificate expiry (#148).
+ *
+ * @return object|null {expires, days_remaining, warning} or null if check fails
+ */
+ public function getSslStatus(): ?object
+ {
+ try
+ {
+ $host = parse_url(\Joomla\CMS\Uri\Uri::root(), PHP_URL_HOST);
+
+ if (empty($host))
+ {
+ return null;
+ }
+
+ $context = stream_context_create(['ssl' => ['capture_peer_cert' => true, 'verify_peer' => false]]);
+ $client = @stream_socket_client('ssl://' . $host . ':443', $errno, $errstr, 5, STREAM_CLIENT_CONNECT, $context);
+
+ if (!$client)
+ {
+ return null;
+ }
+
+ $params = stream_context_get_params($client);
+ fclose($client);
+
+ $cert = openssl_x509_parse($params['options']['ssl']['peer_certificate'] ?? '');
+
+ if (empty($cert['validTo_time_t']))
+ {
+ return null;
+ }
+
+ $expires = $cert['validTo_time_t'];
+ $days = (int) floor(($expires - time()) / 86400);
+
+ return (object) [
+ 'expires' => date('Y-m-d', $expires),
+ 'days_remaining' => $days,
+ 'warning' => $days <= 30,
+ 'critical' => $days <= 7,
+ ];
+ }
+ catch (\Throwable $e)
+ {
+ return null;
+ }
+ }
}
diff --git a/src/packages/mod_mokowaas_cpanel/tmpl/default.php b/src/packages/mod_mokowaas_cpanel/tmpl/default.php
index b3ed62f..a65553f 100644
--- a/src/packages/mod_mokowaas_cpanel/tmpl/default.php
+++ b/src/packages/mod_mokowaas_cpanel/tmpl/default.php
@@ -130,6 +130,12 @@ $diskColor = ($diskPct !== null && $diskPct > 90) ? 'bg-danger' : (($diskPct !==
+
+
+
+ SSL days_remaining; ?>d
+
+
Jjoomla_version ?? ''); ?> / PHP php_version ?? ''); ?>
diff --git a/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
index f2b25df..b67360d 100644
--- a/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
+++ b/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
@@ -127,6 +127,53 @@
+
+
+
+
+
+
+
checkDirectPhpAccess();
}
- // Existing features
+ // Security headers + existing features
+ $this->injectSecurityHeaders();
$this->enforceHttps();
$this->enforceUploadRestrictions();
@@ -400,6 +401,28 @@ class Firewall extends CMSPlugin implements SubscriberInterface, BootableExtensi
'created' => gmdate('Y-m-d H:i:s'),
];
$db->insertObject('#__mokowaas_waf_log', $row);
+
+ // Auto-ban: if IP has N+ blocks in last M minutes, add to blocklist (#143)
+ $threshold = (int) $this->params->get('autoban_threshold', 10);
+ $window = (int) $this->params->get('autoban_window', 5);
+
+ if ($threshold > 0 && $window > 0)
+ {
+ $cutoff = gmdate('Y-m-d H:i:s', time() - ($window * 60));
+ $db->setQuery(
+ $db->getQuery(true)
+ ->select('COUNT(*)')
+ ->from($db->quoteName('#__mokowaas_waf_log'))
+ ->where($db->quoteName('ip') . ' = ' . $db->quote($ip))
+ ->where($db->quoteName('created') . ' >= ' . $db->quote($cutoff))
+ );
+ $recentBlocks = (int) $db->loadResult();
+
+ if ($recentBlocks >= $threshold)
+ {
+ $this->autoBanIp($ip, $db);
+ }
+ }
}
catch (\Throwable $e)
{
@@ -418,6 +441,51 @@ class Firewall extends CMSPlugin implements SubscriberInterface, BootableExtensi
// Input Scanning
// ==================================================================
+ /**
+ * Auto-ban an IP by adding it to the blocklist params (#143).
+ */
+ private function autoBanIp(string $ip, $db): void
+ {
+ try
+ {
+ $query = $db->getQuery(true)
+ ->select($db->quoteName('params'))
+ ->from($db->quoteName('#__extensions'))
+ ->where($db->quoteName('element') . ' = ' . $db->quote('mokowaas_firewall'))
+ ->where($db->quoteName('type') . ' = ' . $db->quote('plugin'))
+ ->where($db->quoteName('folder') . ' = ' . $db->quote('system'));
+ $db->setQuery($query);
+ $params = new \Joomla\Registry\Registry($db->loadResult() ?? '{}');
+ $blocklist = json_decode($params->get('ip_blocklist', '[]'), true) ?: [];
+
+ foreach ($blocklist as $entry)
+ {
+ if (($entry['ip'] ?? '') === $ip)
+ {
+ return;
+ }
+ }
+
+ $blocklist[] = ['ip' => $ip, 'enabled' => '1', 'label' => 'Auto-banned by WAF (' . gmdate('Y-m-d H:i') . ')'];
+ $params->set('ip_blocklist', json_encode($blocklist));
+
+ $db->setQuery(
+ $db->getQuery(true)
+ ->update($db->quoteName('#__extensions'))
+ ->set($db->quoteName('params') . ' = ' . $db->quote($params->toString()))
+ ->where($db->quoteName('element') . ' = ' . $db->quote('mokowaas_firewall'))
+ ->where($db->quoteName('type') . ' = ' . $db->quote('plugin'))
+ ->where($db->quoteName('folder') . ' = ' . $db->quote('system'))
+ )->execute();
+
+ Log::add('WAF auto-banned IP: ' . $ip, Log::WARNING, 'mokowaas');
+ }
+ catch (\Throwable $e)
+ {
+ // Silent
+ }
+ }
+
private function scanInput(array $input, string $pattern): ?string
{
foreach ($input as $key => $value)
@@ -547,6 +615,68 @@ class Firewall extends CMSPlugin implements SubscriberInterface, BootableExtensi
}
}
+ /**
+ * Inject HTTP security headers at runtime (#124).
+ */
+ private function injectSecurityHeaders(): void
+ {
+ $app = $this->getApplication();
+
+ if ($app->isClient('cli'))
+ {
+ return;
+ }
+
+ if ($this->params->get('header_xframe', 1))
+ {
+ $app->setHeader('X-Frame-Options', 'SAMEORIGIN', true);
+ }
+
+ if ($this->params->get('header_xcontent', 1))
+ {
+ $app->setHeader('X-Content-Type-Options', 'nosniff', true);
+ }
+
+ if ($this->params->get('header_xxss', 1))
+ {
+ $app->setHeader('X-XSS-Protection', '1; mode=block', true);
+ }
+
+ $referrer = $this->params->get('header_referrer', '');
+
+ if (!empty($referrer) && $referrer !== 'off')
+ {
+ $app->setHeader('Referrer-Policy', $referrer, true);
+ }
+
+ if ($this->params->get('header_hsts', 0))
+ {
+ $maxAge = (int) $this->params->get('header_hsts_maxage', 31536000);
+ $hsts = 'max-age=' . $maxAge;
+
+ if ($this->params->get('header_hsts_subdomains', 0))
+ {
+ $hsts .= '; includeSubDomains';
+ }
+
+ $app->setHeader('Strict-Transport-Security', $hsts, true);
+ }
+
+ $csp = $this->params->get('header_csp', '');
+
+ if (!empty($csp))
+ {
+ $app->setHeader('Content-Security-Policy', $csp, true);
+ }
+
+ $perms = $this->params->get('header_permissions', '');
+
+ if (!empty($perms))
+ {
+ $app->setHeader('Permissions-Policy', $perms, true);
+ }
+ }
+
private function enforceHttps(): void
{
if (!$this->params->get('force_https', 0))
--
2.52.0
From abd7a4a35ed4108730bde50e19a0a7bc5e1b8a52 Mon Sep 17 00:00:00 2001
From: "gitea-actions[bot]"
Date: Thu, 4 Jun 2026 11:44:52 +0000
Subject: [PATCH 078/142] chore(version): auto-bump 02.32.43 [skip ci]
---
.mokogitea/manifest.xml | 2 +-
.mokogitea/workflows/issue-branch.yml | 2 +-
CHANGELOG.md | 2 +-
CODE_OF_CONDUCT.md | 2 +-
GOVERNANCE.md | 2 +-
LICENSE.md | 2 +-
README.md | 2 +-
SECURITY.md | 2 +-
docs/guides/build-guide.md | 4 ++--
docs/guides/configuration-guide.md | 4 ++--
docs/guides/installation-guide.md | 4 ++--
docs/guides/operations-guide.md | 4 ++--
docs/guides/rollback-and-recovery-guide.md | 4 ++--
docs/guides/testing-guide.md | 4 ++--
docs/guides/troubleshooting-guide.md | 4 ++--
docs/guides/upgrade-and-versioning-guide.md | 4 ++--
docs/index.md | 4 ++--
docs/plugin-basic.md | 4 ++--
docs/update-server.md | 2 +-
src/packages/com_mokowaas/mokowaas.xml | 2 +-
src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +-
src/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +-
src/packages/plg_system_mokowaas/Field/AllowedIpsField.php | 2 +-
src/packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +-
src/packages/plg_system_mokowaas/Field/CurrentIpField.php | 2 +-
src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php | 2 +-
src/packages/plg_system_mokowaas/Field/NextResetField.php | 2 +-
.../plg_system_mokowaas/Field/SnapshotTablesField.php | 2 +-
.../plg_system_mokowaas/Service/ContentSyncReceiver.php | 2 +-
.../plg_system_mokowaas/Service/ContentSyncService.php | 2 +-
src/packages/plg_system_mokowaas/Service/DemoResetService.php | 2 +-
src/packages/plg_system_mokowaas/mokowaas.xml | 2 +-
src/packages/plg_system_mokowaas/script.php | 2 +-
src/packages/plg_system_mokowaas/services/provider.php | 2 +-
.../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +-
.../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +-
src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +-
src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +-
src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +-
src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +-
src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 4 ++--
src/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +-
src/packages/plg_webservices_mokowaas/mokowaas.xml | 4 ++--
.../plg_webservices_perfectpublisher/perfectpublisher.xml | 4 ++--
.../plg_webservices_perfectpublisher/services/provider.php | 2 +-
.../src/Extension/PerfectPublisherApi.php | 2 +-
src/pkg_mokowaas.xml | 2 +-
updates.xml | 2 +-
48 files changed, 61 insertions(+), 61 deletions(-)
diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml
index 7be3ed0..93018e6 100644
--- a/.mokogitea/manifest.xml
+++ b/.mokogitea/manifest.xml
@@ -9,7 +9,7 @@
Package - MokoWaaS
MokoConsulting
White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments
- 02.32.42
+ 02.32.43
GNU General Public License v3
diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml
index 8bf71ac..810b4ce 100644
--- a/.mokogitea/workflows/issue-branch.yml
+++ b/.mokogitea/workflows/issue-branch.yml
@@ -5,7 +5,7 @@
# FILE INFORMATION
# DEFGROUP: Gitea.Workflow
# INGROUP: moko-platform.Automation
-# VERSION: 02.32.42
+# VERSION: 02.32.43
# BRIEF: Auto-create feature branch when an issue is opened
name: "Universal: Issue Branch"
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 09f4a52..b23abf7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,7 +14,7 @@
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
PATH: ./CHANGELOG.md
- VERSION: 02.32.42
+ VERSION: 02.32.43
BRIEF: Version history using `Keep a Changelog`
-->
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 7c50ec2..eca045e 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -14,7 +14,7 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.42
+ VERSION: 02.32.43
PATH: ./CODE_OF_CONDUCT.md
BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default
-->
diff --git a/GOVERNANCE.md b/GOVERNANCE.md
index 11cf2a4..8178c6c 100644
--- a/GOVERNANCE.md
+++ b/GOVERNANCE.md
@@ -19,7 +19,7 @@
DEFGROUP: mokoconsulting-tech.MokoWaaSBrand
INGROUP: MokoStandards.Governance
REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand
- VERSION: 02.32.42
+ VERSION: 02.32.43
PATH: /GOVERNANCE.md
BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand
-->
diff --git a/LICENSE.md b/LICENSE.md
index 11be037..367b94e 100644
--- a/LICENSE.md
+++ b/LICENSE.md
@@ -15,7 +15,7 @@
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
PATH: ./LICENSE.md
- VERSION: 02.32.42
+ VERSION: 02.32.43
BRIEF: Project license (GPL-3.0-or-later)
-->
GNU GENERAL PUBLIC LICENSE
diff --git a/README.md b/README.md
index e6e9cb0..f315f32 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS
REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
- VERSION: 02.32.42
+ VERSION: 02.32.43
PATH: /README.md
BRIEF: MokoWaaS platform plugin for Joomla
-->
diff --git a/SECURITY.md b/SECURITY.md
index 26c26ca..6f33bd0 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME]
INGROUP: [PROJECT_NAME].Documentation
REPO: [REPOSITORY_URL]
PATH: /SECURITY.md
-VERSION: 02.32.42
+VERSION: 02.32.43
BRIEF: Security vulnerability reporting and handling policy
-->
diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md
index b176c6c..769fcf1 100644
--- a/docs/guides/build-guide.md
+++ b/docs/guides/build-guide.md
@@ -11,13 +11,13 @@
INGROUP: MokoWaaS.Build
REPO: https://github.com/mokoconsulting-tech/mokowaas
FILE: build-guide.md
- VERSION: 02.32.42
+ VERSION: 02.32.43
PATH: /docs/guides/
BRIEF: Build and packaging guide for the MokoWaaS system plugin
NOTE: Defines environment setup, repository layout, packaging rules, and release preparation
-->
-# MokoWaaS Build Guide (VERSION: 02.32.42)
+# MokoWaaS Build Guide (VERSION: 02.32.43)
## 1. Purpose
diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md
index fb80252..4dcf65d 100644
--- a/docs/guides/configuration-guide.md
+++ b/docs/guides/configuration-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.42
+ VERSION: 02.32.43
PATH: /docs/guides/configuration-guide.md
BRIEF: Configuration guide for the MokoWaaS system plugin
NOTE: Defines plugin parameters, expected behaviors, and recommended defaults
-->
-# MokoWaaS Configuration Guide (VERSION: 02.32.42)
+# MokoWaaS Configuration Guide (VERSION: 02.32.43)
## 1. Objective
diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md
index aa60849..c2fc247 100644
--- a/docs/guides/installation-guide.md
+++ b/docs/guides/installation-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.42
+ VERSION: 02.32.43
PATH: /docs/guides/installation-guide.md
BRIEF: Installation guide for the MokoWaaS system plugin
NOTE: First document in the guide set
-->
-# MokoWaaS Installation Guide (VERSION: 02.32.42)
+# MokoWaaS Installation Guide (VERSION: 02.32.43)
## Introduction
diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md
index fbdbc0c..4f9df27 100644
--- a/docs/guides/operations-guide.md
+++ b/docs/guides/operations-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.42
+ VERSION: 02.32.43
PATH: /docs/guides/operations-guide.md
BRIEF: Operational guide for administering and managing the MokoWaaS system plugin
NOTE: Defines lifecycle, responsibilities, and operational behaviors
-->
-# MokoWaaS Operations Guide (VERSION: 02.32.42)
+# MokoWaaS Operations Guide (VERSION: 02.32.43)
## Introduction
diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md
index e0fe5b9..f353228 100644
--- a/docs/guides/rollback-and-recovery-guide.md
+++ b/docs/guides/rollback-and-recovery-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.42
+ VERSION: 02.32.43
PATH: /docs/guides/rollback-and-recovery-guide.md
BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents
NOTE: Completes the core guide set for WaaS plugin governance
-->
-# MokoWaaS Rollback and Recovery Guide (VERSION: 02.32.42)
+# MokoWaaS Rollback and Recovery Guide (VERSION: 02.32.43)
## Introduction
diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md
index f416cd8..cad806f 100644
--- a/docs/guides/testing-guide.md
+++ b/docs/guides/testing-guide.md
@@ -7,13 +7,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.42
+ VERSION: 02.32.43
PATH: /docs/guides/testing-guide.md
BRIEF: Testing guide for MokoWaaS v02.01.08
NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration
-->
-# MokoWaaS Testing Guide (VERSION: 02.32.42)
+# MokoWaaS Testing Guide (VERSION: 02.32.43)
## 1. Prerequisites
diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md
index 5d176a3..05b1012 100644
--- a/docs/guides/troubleshooting-guide.md
+++ b/docs/guides/troubleshooting-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.42
+ VERSION: 02.32.43
PATH: /docs/guides/troubleshooting-guide.md
BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin
NOTE: Designed for administrators and WaaS operations teams
-->
-# MokoWaaS Troubleshooting Guide (VERSION: 02.32.42)
+# MokoWaaS Troubleshooting Guide (VERSION: 02.32.43)
## Introduction
diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md
index bdc83b6..ffe648f 100644
--- a/docs/guides/upgrade-and-versioning-guide.md
+++ b/docs/guides/upgrade-and-versioning-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.42
+ VERSION: 02.32.43
PATH: /docs/guides/upgrade-and-versioning-guide.md
BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin
NOTE: Defines release flow, version rules, and upgrade validation
-->
-# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.32.42)
+# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.32.43)
## Introduction
diff --git a/docs/index.md b/docs/index.md
index 21500b3..265ff97 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.42
+ VERSION: 02.32.43
PATH: /docs/index.md
BRIEF: Master index of all documentation for the MokoWaaS plugin
NOTE: Automatically maintained index for all guide canvases
-->
-# MokoWaaS Documentation Index (VERSION: 02.32.42)
+# MokoWaaS Documentation Index (VERSION: 02.32.43)
## Introduction
diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md
index f280cb5..d771836 100644
--- a/docs/plugin-basic.md
+++ b/docs/plugin-basic.md
@@ -11,12 +11,12 @@
INGROUP: MokoWaaS
REPO: https://github.com/mokoconsulting-tech/mokowaas
PATH: /docs/plugin-basic.md
- VERSION: 02.32.42
+ VERSION: 02.32.43
BRIEF: Baseline documentation for the MokoWaaS system plugin
NOTE: Foundational reference for internal and external stakeholders
-->
-# MokoWaaS Plugin Overview (VERSION: 02.32.42)
+# MokoWaaS Plugin Overview (VERSION: 02.32.43)
## Introduction
diff --git a/docs/update-server.md b/docs/update-server.md
index 3aa608e..42e6499 100644
--- a/docs/update-server.md
+++ b/docs/update-server.md
@@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation
INGROUP: MokoStandards.Templates
REPO: https://github.com/mokoconsulting-tech/MokoWaaS
PATH: /docs/update-server.md
-VERSION: 02.32.42
+VERSION: 02.32.43
BRIEF: How this extension's Joomla update server file (update.xml) is managed
-->
diff --git a/src/packages/com_mokowaas/mokowaas.xml b/src/packages/com_mokowaas/mokowaas.xml
index 1884f30..73bb6b3 100644
--- a/src/packages/com_mokowaas/mokowaas.xml
+++ b/src/packages/com_mokowaas/mokowaas.xml
@@ -20,7 +20,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.42
+ 02.32.43
MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints.
Moko\Component\MokoWaaS
diff --git a/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml
index d7e491e..b465253 100644
--- a/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml
+++ b/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.42
+ 02.32.43
MOD_MOKOWAAS_CPANEL_DESC
Moko\Module\MokoWaaSCpanel
diff --git a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
index a99f291..fb99f5f 100644
--- a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
+++ b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
@@ -22,7 +22,7 @@
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
* REPO: https://github.com/mokoconsulting-tech/mokowaas
- * VERSION: 02.32.42
+ * VERSION: 02.32.43
* PATH: /src/Extension/MokoWaaS.php
* NOTE: Handles Joomla system events for rebranding functionality
*/
diff --git a/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php b/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php
index 27e1585..19c04de 100644
--- a/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php
+++ b/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php
@@ -7,7 +7,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.42
+ * VERSION: 02.32.43
* PATH: /src/Field/AllowedIpsField.php
* BRIEF: Custom form field that displays the current IP whitelist
*/
diff --git a/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php
index 71d6e98..8a15cd2 100644
--- a/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php
+++ b/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.42
+ * VERSION: 02.32.43
* PATH: /src/Field/CopyableTokenField.php
* BRIEF: Read-only token field with a copy-to-clipboard button
*/
diff --git a/src/packages/plg_system_mokowaas/Field/CurrentIpField.php b/src/packages/plg_system_mokowaas/Field/CurrentIpField.php
index 18c6a84..1ac8ae0 100644
--- a/src/packages/plg_system_mokowaas/Field/CurrentIpField.php
+++ b/src/packages/plg_system_mokowaas/Field/CurrentIpField.php
@@ -7,7 +7,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.42
+ * VERSION: 02.32.43
* PATH: /src/Field/CurrentIpField.php
* BRIEF: Read-only field that displays the current user's IP address
*/
diff --git a/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php b/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php
index 7080920..a5590bf 100644
--- a/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php
+++ b/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.42
+ * VERSION: 02.32.43
* PATH: /src/Field/DemoTaskInfoField.php
* BRIEF: Read-only field showing scheduled task info with link to manage it
*/
diff --git a/src/packages/plg_system_mokowaas/Field/NextResetField.php b/src/packages/plg_system_mokowaas/Field/NextResetField.php
index a3ad13f..56c5ca3 100644
--- a/src/packages/plg_system_mokowaas/Field/NextResetField.php
+++ b/src/packages/plg_system_mokowaas/Field/NextResetField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.42
+ * VERSION: 02.32.43
* PATH: /src/Field/NextResetField.php
* BRIEF: Read-only field showing next reset time from Joomla scheduled task
*/
diff --git a/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php b/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php
index d82e383..0233750 100644
--- a/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php
+++ b/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.42
+ * VERSION: 02.32.43
* PATH: /src/Field/SnapshotTablesField.php
* BRIEF: Multi-select list field that loads DB tables with sensible defaults
*/
diff --git a/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php b/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
index 1bdf3be..d99c432 100644
--- a/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
+++ b/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
@@ -10,7 +10,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
- * VERSION: 02.32.42
+ * VERSION: 02.32.43
* BRIEF: Receiver-side content sync — applies incoming payload to local DB
*/
diff --git a/src/packages/plg_system_mokowaas/Service/ContentSyncService.php b/src/packages/plg_system_mokowaas/Service/ContentSyncService.php
index e157220..0862f29 100644
--- a/src/packages/plg_system_mokowaas/Service/ContentSyncService.php
+++ b/src/packages/plg_system_mokowaas/Service/ContentSyncService.php
@@ -10,7 +10,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php
- * VERSION: 02.32.42
+ * VERSION: 02.32.43
* BRIEF: Sender-side content sync — builds payload and pushes to remote sites
*/
diff --git a/src/packages/plg_system_mokowaas/Service/DemoResetService.php b/src/packages/plg_system_mokowaas/Service/DemoResetService.php
index 2eee079..e1f82a5 100644
--- a/src/packages/plg_system_mokowaas/Service/DemoResetService.php
+++ b/src/packages/plg_system_mokowaas/Service/DemoResetService.php
@@ -10,7 +10,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php
- * VERSION: 02.32.42
+ * VERSION: 02.32.43
* BRIEF: Content-only snapshot/restore for demo site reset
*/
diff --git a/src/packages/plg_system_mokowaas/mokowaas.xml b/src/packages/plg_system_mokowaas/mokowaas.xml
index 2c0b602..5de885a 100644
--- a/src/packages/plg_system_mokowaas/mokowaas.xml
+++ b/src/packages/plg_system_mokowaas/mokowaas.xml
@@ -30,7 +30,7 @@
GNU General Public License version 3 or later; see LICENSE.md
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.42
+ 02.32.43
This plugin rebrands the Joomla system interface with MokoWaaS identity. It applies language overrides and ensures consistent branding across the platform.
Moko\Plugin\System\MokoWaaS
script.php
diff --git a/src/packages/plg_system_mokowaas/script.php b/src/packages/plg_system_mokowaas/script.php
index 00b9298..952e13c 100644
--- a/src/packages/plg_system_mokowaas/script.php
+++ b/src/packages/plg_system_mokowaas/script.php
@@ -22,7 +22,7 @@
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
* REPO: https://github.com/mokoconsulting-tech/mokowaas
- * VERSION: 02.32.42
+ * VERSION: 02.32.43
* PATH: /src/script.php
* BRIEF: Installation script for MokoWaaS plugin
* NOTE: Handles installation, update, and uninstallation tasks including language override deployment
diff --git a/src/packages/plg_system_mokowaas/services/provider.php b/src/packages/plg_system_mokowaas/services/provider.php
index 0cfa9bb..e9e0593 100644
--- a/src/packages/plg_system_mokowaas/services/provider.php
+++ b/src/packages/plg_system_mokowaas/services/provider.php
@@ -22,7 +22,7 @@
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
* REPO: https://github.com/mokoconsulting-tech/mokowaas
- * VERSION: 02.32.42
+ * VERSION: 02.32.43
* PATH: /src/services/provider.php
* BRIEF: Service provider for dependency injection in Joomla 5.x
* NOTE: Registers the plugin with Joomla's DI container
diff --git a/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml
index 2ba36c9..d9e48b0 100644
--- a/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml
+++ b/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.42
+ 02.32.43
PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC
Moko\Plugin\System\MokoWaaSDevTools
diff --git a/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
index 96f00ea..b5d8e23 100644
--- a/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
+++ b/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.42
+ 02.32.43
PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC
Moko\Plugin\System\MokoWaaSFirewall
diff --git a/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml
index 71f5821..c11d81a 100644
--- a/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml
+++ b/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.42
+ 02.32.43
PLG_SYSTEM_MOKOWAAS_MONITOR_DESC
Moko\Plugin\System\MokoWaaSMonitor
diff --git a/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml
index 4ae5b46..87d9519 100644
--- a/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml
+++ b/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.42
+ 02.32.43
PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC
Moko\Plugin\System\MokoWaaSOffline
diff --git a/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml
index 323d695..41c2f89 100644
--- a/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml
+++ b/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.42
+ 02.32.43
PLG_SYSTEM_MOKOWAAS_TENANT_DESC
Moko\Plugin\System\MokoWaaSTenant
diff --git a/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml
index 651177a..2b4ba28 100644
--- a/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml
+++ b/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.42
+ 02.32.43
Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions.
Moko\Plugin\Task\MokoWaaSTickets
diff --git a/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
index 2c4d1ef..c64c58e 100644
--- a/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
+++ b/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
@@ -12,8 +12,8 @@
GNU General Public License version 3 or later; see LICENSE
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.42
- 02.32.42
+ 02.32.43
+ 02.32.43
PLG_TASK_MOKOWAASDEMO_DESC
Moko\Plugin\Task\MokoWaaSDemo
diff --git a/src/packages/plg_task_mokowaassync/mokowaassync.xml b/src/packages/plg_task_mokowaassync/mokowaassync.xml
index 8f484f3..0cca2d2 100644
--- a/src/packages/plg_task_mokowaassync/mokowaassync.xml
+++ b/src/packages/plg_task_mokowaassync/mokowaassync.xml
@@ -12,7 +12,7 @@
GNU General Public License version 3 or later; see LICENSE
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.42
+ 02.32.43
PLG_TASK_MOKOWAASSYNC_DESC
Moko\Plugin\Task\MokoWaaSSync
diff --git a/src/packages/plg_webservices_mokowaas/mokowaas.xml b/src/packages/plg_webservices_mokowaas/mokowaas.xml
index dd7586b..e21da50 100644
--- a/src/packages/plg_webservices_mokowaas/mokowaas.xml
+++ b/src/packages/plg_webservices_mokowaas/mokowaas.xml
@@ -7,8 +7,8 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.42
- 02.32.42
+ 02.32.43
+ 02.32.43
Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info.
Moko\Plugin\WebServices\MokoWaaS
diff --git a/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml b/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
index 01a6833..cb23c01 100644
--- a/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
+++ b/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
@@ -7,8 +7,8 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.42
- 02.32.42
+ 02.32.43
+ 02.32.43
Joomla Web Services API routes for Perfect Publisher (com_autotweet) — channels, posts, requests, rules, and feeds.
Moko\Plugin\WebServices\PerfectPublisher
diff --git a/src/packages/plg_webservices_perfectpublisher/services/provider.php b/src/packages/plg_webservices_perfectpublisher/services/provider.php
index ad5a091..f75904c 100644
--- a/src/packages/plg_webservices_perfectpublisher/services/provider.php
+++ b/src/packages/plg_webservices_perfectpublisher/services/provider.php
@@ -8,7 +8,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_webservices_perfectpublisher/services/provider.php
- * VERSION: 02.32.42
+ * VERSION: 02.32.43
* BRIEF: DI service provider for Perfect Publisher Web Services plugin
*/
diff --git a/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php b/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
index 1e1464a..3f38564 100644
--- a/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
+++ b/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
@@ -8,7 +8,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
- * VERSION: 02.32.42
+ * VERSION: 02.32.43
* BRIEF: Web Services API plugin for Perfect Publisher (com_autotweet)
*/
diff --git a/src/pkg_mokowaas.xml b/src/pkg_mokowaas.xml
index a69d31d..a3ca35a 100644
--- a/src/pkg_mokowaas.xml
+++ b/src/pkg_mokowaas.xml
@@ -2,7 +2,7 @@
Package - MokoWaaS
mokowaas
- 02.32.42
+ 02.32.43
2026-06-02
Moko Consulting
hello@mokoconsulting.tech
diff --git a/updates.xml b/updates.xml
index a0a60f7..85222d7 100644
--- a/updates.xml
+++ b/updates.xml
@@ -1,7 +1,7 @@
--
2.52.0
From 6ca195fd9ffaf1ca60e9ba70853ad08858736672 Mon Sep 17 00:00:00 2001
From: "gitea-actions[bot]"
Date: Thu, 4 Jun 2026 11:44:54 +0000
Subject: [PATCH 079/142] chore: update development channel 02.32.43 [skip ci]
---
updates.xml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/updates.xml b/updates.xml
index 85222d7..cb54b49 100644
--- a/updates.xml
+++ b/updates.xml
@@ -11,13 +11,13 @@
pkg_mokowaas
package
site
- 02.32.42-dev
+ 02.32.43-dev
2026-06-04
https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/tag/development
- https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/development/pkg_mokowaas-02.32.42-dev.zip
+ https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/development/pkg_mokowaas-02.32.43-dev.zip
- 20622e59c5d1c903f6368c61936fd79c801323c023bd59882e42f2b47875685d
+ 21ee0054559208a3bee003c5913bfbdfaf211ee252c19c0988cdb8123b49dfc9
dev
https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/raw/branch/main/CHANGELOG.md
Moko Consulting
--
2.52.0
From d3561dd5c99418c57e70e0f4d91bb96d361fad7a Mon Sep 17 00:00:00 2001
From: Jonathan Miller
Date: Thu, 4 Jun 2026 07:01:46 -0500
Subject: [PATCH 080/142] =?UTF-8?q?feat:=20Part=201=20batch=202=20?=
=?UTF-8?q?=E2=80=94=20helpdesk=20admin=20UIs=20(#137,=20#138,=20#139)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Ticket Categories admin (view=categories):
- Inline editable table with SLA times, auto-assign user
- Add/save/delete with AJAX
- SLA response + resolution minutes per category
Canned Responses admin (view=canned):
- Card list with title + preview
- Modal form for new responses with category filter
- Delete with AJAX
Automation Rules admin (view=automation):
- Card list with conditions + actions displayed inline
- Enable/disable toggle per rule
- Modal form with trigger, conditions JSON, actions JSON
- Delete with AJAX
Controller tasks: saveCategory, deleteCategory, saveCanned,
deleteCanned, saveAutomation, deleteAutomation, toggleAutomation
All ACL-protected (tickets ACL for categories/canned, core.admin
for automation rules).
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context)
---
.../src/Controller/DisplayController.php | 109 ++++++++++++++
.../admin/src/View/Automation/HtmlView.php | 27 ++++
.../admin/src/View/Canned/HtmlView.php | 33 ++++
.../admin/src/View/Categories/HtmlView.php | 41 +++++
.../admin/tmpl/automation/default.php | 141 ++++++++++++++++++
.../admin/tmpl/canned/default.php | 107 +++++++++++++
.../admin/tmpl/categories/default.php | 126 ++++++++++++++++
7 files changed, 584 insertions(+)
create mode 100644 src/packages/com_mokowaas/admin/src/View/Automation/HtmlView.php
create mode 100644 src/packages/com_mokowaas/admin/src/View/Canned/HtmlView.php
create mode 100644 src/packages/com_mokowaas/admin/src/View/Categories/HtmlView.php
create mode 100644 src/packages/com_mokowaas/admin/tmpl/automation/default.php
create mode 100644 src/packages/com_mokowaas/admin/tmpl/canned/default.php
create mode 100644 src/packages/com_mokowaas/admin/tmpl/categories/default.php
diff --git a/src/packages/com_mokowaas/admin/src/Controller/DisplayController.php b/src/packages/com_mokowaas/admin/src/Controller/DisplayController.php
index e910b66..5d2f30c 100644
--- a/src/packages/com_mokowaas/admin/src/Controller/DisplayController.php
+++ b/src/packages/com_mokowaas/admin/src/Controller/DisplayController.php
@@ -31,6 +31,9 @@ class DisplayController extends BaseController
'ticket' => 'mokowaas.tickets',
'privacy' => 'core.admin',
'waflog' => 'core.admin',
+ 'categories' => 'mokowaas.tickets',
+ 'canned' => 'mokowaas.tickets',
+ 'automation' => 'core.admin',
];
public function display($cachable = false, $urlparams = [])
@@ -270,6 +273,112 @@ class DisplayController extends BaseController
}
}
+ // ==================================================================
+ // Helpdesk CRUD (#137, #138, #139)
+ // ==================================================================
+
+ public function saveCategory()
+ {
+ Session::checkToken() or die(Text::_('JINVALID_TOKEN'));
+ if (!$this->checkAcl('mokowaas.tickets')) { $this->jsonForbidden(); }
+ $input = Factory::getApplication()->getInput();
+ $db = Factory::getDbo();
+ $id = $input->getInt('id', 0);
+ $data = (object) [
+ 'title' => $input->getString('title', ''),
+ 'alias' => \Joomla\CMS\Filter\OutputFilter::stringURLSafe($input->getString('title', '')),
+ 'sla_response_minutes' => $input->getInt('sla_response_minutes', 480),
+ 'sla_resolution_minutes' => $input->getInt('sla_resolution_minutes', 2880),
+ 'auto_assign_user' => $input->getInt('auto_assign_user', 0) ?: null,
+ 'published' => $input->getInt('published', 1),
+ ];
+ if ($id) {
+ $data->id = $id;
+ $db->updateObject('#__mokowaas_ticket_categories', $data, 'id');
+ } else {
+ $data->ordering = 0;
+ $db->insertObject('#__mokowaas_ticket_categories', $data, 'id');
+ }
+ $this->jsonResponse(['success' => true, 'message' => 'Category saved.', 'id' => (int) $data->id]);
+ }
+
+ public function deleteCategory()
+ {
+ Session::checkToken() or die(Text::_('JINVALID_TOKEN'));
+ if (!$this->checkAcl('mokowaas.tickets')) { $this->jsonForbidden(); }
+ $db = Factory::getDbo();
+ $db->setQuery($db->getQuery(true)->delete('#__mokowaas_ticket_categories')->where('id = ' . Factory::getApplication()->getInput()->getInt('id', 0)))->execute();
+ $this->jsonResponse(['success' => true, 'message' => 'Category deleted.']);
+ }
+
+ public function saveCanned()
+ {
+ Session::checkToken() or die(Text::_('JINVALID_TOKEN'));
+ if (!$this->checkAcl('mokowaas.tickets')) { $this->jsonForbidden(); }
+ $input = Factory::getApplication()->getInput();
+ $db = Factory::getDbo();
+ $data = (object) [
+ 'title' => $input->getString('title', ''),
+ 'body' => $input->getRaw('body', ''),
+ 'category_id' => $input->getInt('category_id', 0) ?: null,
+ 'ordering' => 0,
+ ];
+ $id = $input->getInt('id', 0);
+ if ($id) { $data->id = $id; $db->updateObject('#__mokowaas_ticket_canned', $data, 'id'); }
+ else { $db->insertObject('#__mokowaas_ticket_canned', $data, 'id'); }
+ $this->jsonResponse(['success' => true, 'message' => 'Canned response saved.', 'id' => (int) $data->id]);
+ }
+
+ public function deleteCanned()
+ {
+ Session::checkToken() or die(Text::_('JINVALID_TOKEN'));
+ if (!$this->checkAcl('mokowaas.tickets')) { $this->jsonForbidden(); }
+ $db = Factory::getDbo();
+ $db->setQuery($db->getQuery(true)->delete('#__mokowaas_ticket_canned')->where('id = ' . Factory::getApplication()->getInput()->getInt('id', 0)))->execute();
+ $this->jsonResponse(['success' => true, 'message' => 'Canned response deleted.']);
+ }
+
+ public function saveAutomation()
+ {
+ Session::checkToken() or die(Text::_('JINVALID_TOKEN'));
+ if (!$this->checkAcl('core.admin')) { $this->jsonForbidden(); }
+ $input = Factory::getApplication()->getInput();
+ $db = Factory::getDbo();
+ $data = (object) [
+ 'title' => $input->getString('title', ''),
+ 'trigger_event' => $input->getString('trigger_event', 'ticket_created'),
+ 'conditions' => $input->getRaw('conditions', '[]'),
+ 'actions' => $input->getRaw('actions', '[]'),
+ 'enabled' => 1,
+ 'ordering' => 0,
+ ];
+ $id = $input->getInt('id', 0);
+ if ($id) { $data->id = $id; $db->updateObject('#__mokowaas_ticket_automation', $data, 'id'); }
+ else { $db->insertObject('#__mokowaas_ticket_automation', $data, 'id'); }
+ $this->jsonResponse(['success' => true, 'message' => 'Rule saved.', 'id' => (int) $data->id]);
+ }
+
+ public function deleteAutomation()
+ {
+ Session::checkToken() or die(Text::_('JINVALID_TOKEN'));
+ if (!$this->checkAcl('core.admin')) { $this->jsonForbidden(); }
+ $db = Factory::getDbo();
+ $db->setQuery($db->getQuery(true)->delete('#__mokowaas_ticket_automation')->where('id = ' . Factory::getApplication()->getInput()->getInt('id', 0)))->execute();
+ $this->jsonResponse(['success' => true, 'message' => 'Rule deleted.']);
+ }
+
+ public function toggleAutomation()
+ {
+ Session::checkToken() or die(Text::_('JINVALID_TOKEN'));
+ if (!$this->checkAcl('core.admin')) { $this->jsonForbidden(); }
+ $input = Factory::getApplication()->getInput();
+ $db = Factory::getDbo();
+ $db->setQuery($db->getQuery(true)->update('#__mokowaas_ticket_automation')
+ ->set('enabled = ' . $input->getInt('enabled', 0))
+ ->where('id = ' . $input->getInt('id', 0)))->execute();
+ $this->jsonResponse(['success' => true, 'message' => 'Rule updated.']);
+ }
+
// ==================================================================
// Settings Import/Export (#132)
// ==================================================================
diff --git a/src/packages/com_mokowaas/admin/src/View/Automation/HtmlView.php b/src/packages/com_mokowaas/admin/src/View/Automation/HtmlView.php
new file mode 100644
index 0000000..01928e4
--- /dev/null
+++ b/src/packages/com_mokowaas/admin/src/View/Automation/HtmlView.php
@@ -0,0 +1,27 @@
+rules = $model->getAutomationRules();
+
+ ToolbarHelper::title('Automation Rules', 'cogs');
+ ToolbarHelper::back('JTOOLBAR_BACK', 'index.php?option=com_mokowaas&view=tickets');
+
+ $wa = Factory::getApplication()->getDocument()->getWebAssetManager();
+ $wa->registerAndUseStyle('com_mokowaas.dashboard', 'com_mokowaas/dashboard.css');
+
+ parent::display($tpl);
+ }
+}
diff --git a/src/packages/com_mokowaas/admin/src/View/Canned/HtmlView.php b/src/packages/com_mokowaas/admin/src/View/Canned/HtmlView.php
new file mode 100644
index 0000000..2a391df
--- /dev/null
+++ b/src/packages/com_mokowaas/admin/src/View/Canned/HtmlView.php
@@ -0,0 +1,33 @@
+get('Joomla\Database\DatabaseInterface');
+
+ $db->setQuery('SELECT * FROM #__mokowaas_ticket_canned ORDER BY ordering ASC');
+ $this->responses = $db->loadObjectList() ?: [];
+
+ $db->setQuery('SELECT id, title FROM #__mokowaas_ticket_categories WHERE published = 1 ORDER BY ordering');
+ $this->categories = $db->loadObjectList() ?: [];
+
+ ToolbarHelper::title('Canned Responses', 'comment');
+ ToolbarHelper::back('JTOOLBAR_BACK', 'index.php?option=com_mokowaas&view=tickets');
+
+ $wa = Factory::getApplication()->getDocument()->getWebAssetManager();
+ $wa->registerAndUseStyle('com_mokowaas.dashboard', 'com_mokowaas/dashboard.css');
+
+ parent::display($tpl);
+ }
+}
diff --git a/src/packages/com_mokowaas/admin/src/View/Categories/HtmlView.php b/src/packages/com_mokowaas/admin/src/View/Categories/HtmlView.php
new file mode 100644
index 0000000..bebffae
--- /dev/null
+++ b/src/packages/com_mokowaas/admin/src/View/Categories/HtmlView.php
@@ -0,0 +1,41 @@
+get('Joomla\Database\DatabaseInterface');
+
+ $db->setQuery('SELECT * FROM #__mokowaas_ticket_categories ORDER BY ordering ASC');
+ $this->categories = $db->loadObjectList() ?: [];
+
+ // Get admin users for auto-assign dropdown
+ $db->setQuery(
+ $db->getQuery(true)
+ ->select([$db->quoteName('id'), $db->quoteName('name')])
+ ->from($db->quoteName('#__users'))
+ ->where($db->quoteName('block') . ' = 0')
+ ->order($db->quoteName('name') . ' ASC')
+ ->setLimit(100)
+ );
+ $this->users = $db->loadObjectList() ?: [];
+
+ ToolbarHelper::title('Ticket Categories', 'folder');
+ ToolbarHelper::back('JTOOLBAR_BACK', 'index.php?option=com_mokowaas&view=tickets');
+
+ $wa = Factory::getApplication()->getDocument()->getWebAssetManager();
+ $wa->registerAndUseStyle('com_mokowaas.dashboard', 'com_mokowaas/dashboard.css');
+
+ parent::display($tpl);
+ }
+}
diff --git a/src/packages/com_mokowaas/admin/tmpl/automation/default.php b/src/packages/com_mokowaas/admin/tmpl/automation/default.php
new file mode 100644
index 0000000..e9fd493
--- /dev/null
+++ b/src/packages/com_mokowaas/admin/tmpl/automation/default.php
@@ -0,0 +1,141 @@
+rules;
+$token = Session::getFormToken();
+$saveUrl = Route::_('index.php?option=com_mokowaas&task=display.saveAutomation&format=json');
+$deleteUrl = Route::_('index.php?option=com_mokowaas&task=display.deleteAutomation&format=json');
+$toggleUrl = Route::_('index.php?option=com_mokowaas&task=display.toggleAutomation&format=json');
+
+$triggerLabels = ['ticket_created' => 'On Ticket Created', 'ticket_replied' => 'On Reply', 'status_changed' => 'On Status Change', 'scheduled' => 'Scheduled (Cron)'];
+?>
+
+
+
+
Automation Rules
+
+
+
+
+ conditions, true) ?: []; $actions = json_decode($r->actions, true) ?: []; ?>
+
+
+
+
+
+
+ enabled ? 'checked' : ''; ?>>
+
+
title); ?>
+
trigger_event] ?? $r->trigger_event; ?>
+
+
+ IF
+ $c): ?>
+ 0 ? ' AND ' : ''; ?>
+
+ THEN
+
+ =
+
+
+
+
+
+
+
+
+
+
+
No automation rules. Click "Add Rule" to create one.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields: status, priority, category_id, assigned_to, sla_responded, age_hours. Ops: eq, neq, gt, lt, in, not_in
+
+
+
+
+ Types: set_status, set_priority, assign, add_note, send_email
+
+
+
+
+
+
+
+
diff --git a/src/packages/com_mokowaas/admin/tmpl/canned/default.php b/src/packages/com_mokowaas/admin/tmpl/canned/default.php
new file mode 100644
index 0000000..49a2bb3
--- /dev/null
+++ b/src/packages/com_mokowaas/admin/tmpl/canned/default.php
@@ -0,0 +1,107 @@
+responses;
+$categories = $this->categories;
+$token = Session::getFormToken();
+$saveUrl = Route::_('index.php?option=com_mokowaas&task=display.saveCanned&format=json');
+$deleteUrl = Route::_('index.php?option=com_mokowaas&task=display.deleteCanned&format=json');
+?>
+
+
+
+
Canned Responses
+
+
+
+
+
+
+
+
+
title); ?>
+
body, 0, 150)); ?>
+
+
+
+
+
+
+
+
+
No canned responses yet. Click "Add Response" to create one.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/packages/com_mokowaas/admin/tmpl/categories/default.php b/src/packages/com_mokowaas/admin/tmpl/categories/default.php
new file mode 100644
index 0000000..d52cb7a
--- /dev/null
+++ b/src/packages/com_mokowaas/admin/tmpl/categories/default.php
@@ -0,0 +1,126 @@
+categories;
+$users = $this->users;
+$token = Session::getFormToken();
+$saveUrl = Route::_('index.php?option=com_mokowaas&task=display.saveCategory&format=json');
+$deleteUrl = Route::_('index.php?option=com_mokowaas&task=display.deleteCategory&format=json');
+?>
+
+
+
+
Categories
+
+
+
+
+
+
+
--
2.52.0
From 9cb49ec4b9b2aef6888b12fb4f46e6cf58ec82be Mon Sep 17 00:00:00 2001
From: "gitea-actions[bot]"
Date: Thu, 4 Jun 2026 12:02:11 +0000
Subject: [PATCH 081/142] chore(version): auto-bump 02.32.44 [skip ci]
---
.mokogitea/manifest.xml | 2 +-
.mokogitea/workflows/issue-branch.yml | 2 +-
CHANGELOG.md | 2 +-
CODE_OF_CONDUCT.md | 2 +-
GOVERNANCE.md | 2 +-
LICENSE.md | 2 +-
README.md | 2 +-
SECURITY.md | 2 +-
docs/guides/build-guide.md | 4 ++--
docs/guides/configuration-guide.md | 4 ++--
docs/guides/installation-guide.md | 4 ++--
docs/guides/operations-guide.md | 4 ++--
docs/guides/rollback-and-recovery-guide.md | 4 ++--
docs/guides/testing-guide.md | 4 ++--
docs/guides/troubleshooting-guide.md | 4 ++--
docs/guides/upgrade-and-versioning-guide.md | 4 ++--
docs/index.md | 4 ++--
docs/plugin-basic.md | 4 ++--
docs/update-server.md | 2 +-
src/packages/com_mokowaas/mokowaas.xml | 2 +-
src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +-
src/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +-
src/packages/plg_system_mokowaas/Field/AllowedIpsField.php | 2 +-
src/packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +-
src/packages/plg_system_mokowaas/Field/CurrentIpField.php | 2 +-
src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php | 2 +-
src/packages/plg_system_mokowaas/Field/NextResetField.php | 2 +-
.../plg_system_mokowaas/Field/SnapshotTablesField.php | 2 +-
.../plg_system_mokowaas/Service/ContentSyncReceiver.php | 2 +-
.../plg_system_mokowaas/Service/ContentSyncService.php | 2 +-
src/packages/plg_system_mokowaas/Service/DemoResetService.php | 2 +-
src/packages/plg_system_mokowaas/mokowaas.xml | 2 +-
src/packages/plg_system_mokowaas/script.php | 2 +-
src/packages/plg_system_mokowaas/services/provider.php | 2 +-
.../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +-
.../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +-
src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +-
src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +-
src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +-
src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +-
src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 4 ++--
src/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +-
src/packages/plg_webservices_mokowaas/mokowaas.xml | 4 ++--
.../plg_webservices_perfectpublisher/perfectpublisher.xml | 4 ++--
.../plg_webservices_perfectpublisher/services/provider.php | 2 +-
.../src/Extension/PerfectPublisherApi.php | 2 +-
src/pkg_mokowaas.xml | 2 +-
updates.xml | 2 +-
48 files changed, 61 insertions(+), 61 deletions(-)
diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml
index 93018e6..060cd02 100644
--- a/.mokogitea/manifest.xml
+++ b/.mokogitea/manifest.xml
@@ -9,7 +9,7 @@
Package - MokoWaaS
MokoConsulting
White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments
- 02.32.43
+ 02.32.44
GNU General Public License v3
diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml
index 810b4ce..69982d1 100644
--- a/.mokogitea/workflows/issue-branch.yml
+++ b/.mokogitea/workflows/issue-branch.yml
@@ -5,7 +5,7 @@
# FILE INFORMATION
# DEFGROUP: Gitea.Workflow
# INGROUP: moko-platform.Automation
-# VERSION: 02.32.43
+# VERSION: 02.32.44
# BRIEF: Auto-create feature branch when an issue is opened
name: "Universal: Issue Branch"
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b23abf7..e92449b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,7 +14,7 @@
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
PATH: ./CHANGELOG.md
- VERSION: 02.32.43
+ VERSION: 02.32.44
BRIEF: Version history using `Keep a Changelog`
-->
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index eca045e..29c754a 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -14,7 +14,7 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.43
+ VERSION: 02.32.44
PATH: ./CODE_OF_CONDUCT.md
BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default
-->
diff --git a/GOVERNANCE.md b/GOVERNANCE.md
index 8178c6c..cb383f3 100644
--- a/GOVERNANCE.md
+++ b/GOVERNANCE.md
@@ -19,7 +19,7 @@
DEFGROUP: mokoconsulting-tech.MokoWaaSBrand
INGROUP: MokoStandards.Governance
REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand
- VERSION: 02.32.43
+ VERSION: 02.32.44
PATH: /GOVERNANCE.md
BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand
-->
diff --git a/LICENSE.md b/LICENSE.md
index 367b94e..54b4a59 100644
--- a/LICENSE.md
+++ b/LICENSE.md
@@ -15,7 +15,7 @@
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
PATH: ./LICENSE.md
- VERSION: 02.32.43
+ VERSION: 02.32.44
BRIEF: Project license (GPL-3.0-or-later)
-->
GNU GENERAL PUBLIC LICENSE
diff --git a/README.md b/README.md
index f315f32..dac09e2 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS
REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
- VERSION: 02.32.43
+ VERSION: 02.32.44
PATH: /README.md
BRIEF: MokoWaaS platform plugin for Joomla
-->
diff --git a/SECURITY.md b/SECURITY.md
index 6f33bd0..b13c36f 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME]
INGROUP: [PROJECT_NAME].Documentation
REPO: [REPOSITORY_URL]
PATH: /SECURITY.md
-VERSION: 02.32.43
+VERSION: 02.32.44
BRIEF: Security vulnerability reporting and handling policy
-->
diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md
index 769fcf1..46227e5 100644
--- a/docs/guides/build-guide.md
+++ b/docs/guides/build-guide.md
@@ -11,13 +11,13 @@
INGROUP: MokoWaaS.Build
REPO: https://github.com/mokoconsulting-tech/mokowaas
FILE: build-guide.md
- VERSION: 02.32.43
+ VERSION: 02.32.44
PATH: /docs/guides/
BRIEF: Build and packaging guide for the MokoWaaS system plugin
NOTE: Defines environment setup, repository layout, packaging rules, and release preparation
-->
-# MokoWaaS Build Guide (VERSION: 02.32.43)
+# MokoWaaS Build Guide (VERSION: 02.32.44)
## 1. Purpose
diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md
index 4dcf65d..0d8085a 100644
--- a/docs/guides/configuration-guide.md
+++ b/docs/guides/configuration-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.43
+ VERSION: 02.32.44
PATH: /docs/guides/configuration-guide.md
BRIEF: Configuration guide for the MokoWaaS system plugin
NOTE: Defines plugin parameters, expected behaviors, and recommended defaults
-->
-# MokoWaaS Configuration Guide (VERSION: 02.32.43)
+# MokoWaaS Configuration Guide (VERSION: 02.32.44)
## 1. Objective
diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md
index c2fc247..e9b5673 100644
--- a/docs/guides/installation-guide.md
+++ b/docs/guides/installation-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.43
+ VERSION: 02.32.44
PATH: /docs/guides/installation-guide.md
BRIEF: Installation guide for the MokoWaaS system plugin
NOTE: First document in the guide set
-->
-# MokoWaaS Installation Guide (VERSION: 02.32.43)
+# MokoWaaS Installation Guide (VERSION: 02.32.44)
## Introduction
diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md
index 4f9df27..d8e8b85 100644
--- a/docs/guides/operations-guide.md
+++ b/docs/guides/operations-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.43
+ VERSION: 02.32.44
PATH: /docs/guides/operations-guide.md
BRIEF: Operational guide for administering and managing the MokoWaaS system plugin
NOTE: Defines lifecycle, responsibilities, and operational behaviors
-->
-# MokoWaaS Operations Guide (VERSION: 02.32.43)
+# MokoWaaS Operations Guide (VERSION: 02.32.44)
## Introduction
diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md
index f353228..ee6c647 100644
--- a/docs/guides/rollback-and-recovery-guide.md
+++ b/docs/guides/rollback-and-recovery-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.43
+ VERSION: 02.32.44
PATH: /docs/guides/rollback-and-recovery-guide.md
BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents
NOTE: Completes the core guide set for WaaS plugin governance
-->
-# MokoWaaS Rollback and Recovery Guide (VERSION: 02.32.43)
+# MokoWaaS Rollback and Recovery Guide (VERSION: 02.32.44)
## Introduction
diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md
index cad806f..72a0c87 100644
--- a/docs/guides/testing-guide.md
+++ b/docs/guides/testing-guide.md
@@ -7,13 +7,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.43
+ VERSION: 02.32.44
PATH: /docs/guides/testing-guide.md
BRIEF: Testing guide for MokoWaaS v02.01.08
NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration
-->
-# MokoWaaS Testing Guide (VERSION: 02.32.43)
+# MokoWaaS Testing Guide (VERSION: 02.32.44)
## 1. Prerequisites
diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md
index 05b1012..4c1cb38 100644
--- a/docs/guides/troubleshooting-guide.md
+++ b/docs/guides/troubleshooting-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.43
+ VERSION: 02.32.44
PATH: /docs/guides/troubleshooting-guide.md
BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin
NOTE: Designed for administrators and WaaS operations teams
-->
-# MokoWaaS Troubleshooting Guide (VERSION: 02.32.43)
+# MokoWaaS Troubleshooting Guide (VERSION: 02.32.44)
## Introduction
diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md
index ffe648f..e2eab8a 100644
--- a/docs/guides/upgrade-and-versioning-guide.md
+++ b/docs/guides/upgrade-and-versioning-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.43
+ VERSION: 02.32.44
PATH: /docs/guides/upgrade-and-versioning-guide.md
BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin
NOTE: Defines release flow, version rules, and upgrade validation
-->
-# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.32.43)
+# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.32.44)
## Introduction
diff --git a/docs/index.md b/docs/index.md
index 265ff97..a87abd1 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.43
+ VERSION: 02.32.44
PATH: /docs/index.md
BRIEF: Master index of all documentation for the MokoWaaS plugin
NOTE: Automatically maintained index for all guide canvases
-->
-# MokoWaaS Documentation Index (VERSION: 02.32.43)
+# MokoWaaS Documentation Index (VERSION: 02.32.44)
## Introduction
diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md
index d771836..5abd8b7 100644
--- a/docs/plugin-basic.md
+++ b/docs/plugin-basic.md
@@ -11,12 +11,12 @@
INGROUP: MokoWaaS
REPO: https://github.com/mokoconsulting-tech/mokowaas
PATH: /docs/plugin-basic.md
- VERSION: 02.32.43
+ VERSION: 02.32.44
BRIEF: Baseline documentation for the MokoWaaS system plugin
NOTE: Foundational reference for internal and external stakeholders
-->
-# MokoWaaS Plugin Overview (VERSION: 02.32.43)
+# MokoWaaS Plugin Overview (VERSION: 02.32.44)
## Introduction
diff --git a/docs/update-server.md b/docs/update-server.md
index 42e6499..54915d9 100644
--- a/docs/update-server.md
+++ b/docs/update-server.md
@@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation
INGROUP: MokoStandards.Templates
REPO: https://github.com/mokoconsulting-tech/MokoWaaS
PATH: /docs/update-server.md
-VERSION: 02.32.43
+VERSION: 02.32.44
BRIEF: How this extension's Joomla update server file (update.xml) is managed
-->
diff --git a/src/packages/com_mokowaas/mokowaas.xml b/src/packages/com_mokowaas/mokowaas.xml
index 73bb6b3..2ffb816 100644
--- a/src/packages/com_mokowaas/mokowaas.xml
+++ b/src/packages/com_mokowaas/mokowaas.xml
@@ -20,7 +20,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.43
+ 02.32.44
MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints.
Moko\Component\MokoWaaS
diff --git a/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml
index b465253..96242c7 100644
--- a/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml
+++ b/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.43
+ 02.32.44
MOD_MOKOWAAS_CPANEL_DESC
Moko\Module\MokoWaaSCpanel
diff --git a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
index fb99f5f..9aee79e 100644
--- a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
+++ b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
@@ -22,7 +22,7 @@
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
* REPO: https://github.com/mokoconsulting-tech/mokowaas
- * VERSION: 02.32.43
+ * VERSION: 02.32.44
* PATH: /src/Extension/MokoWaaS.php
* NOTE: Handles Joomla system events for rebranding functionality
*/
diff --git a/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php b/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php
index 19c04de..0186508 100644
--- a/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php
+++ b/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php
@@ -7,7 +7,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.43
+ * VERSION: 02.32.44
* PATH: /src/Field/AllowedIpsField.php
* BRIEF: Custom form field that displays the current IP whitelist
*/
diff --git a/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php
index 8a15cd2..099b6d4 100644
--- a/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php
+++ b/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.43
+ * VERSION: 02.32.44
* PATH: /src/Field/CopyableTokenField.php
* BRIEF: Read-only token field with a copy-to-clipboard button
*/
diff --git a/src/packages/plg_system_mokowaas/Field/CurrentIpField.php b/src/packages/plg_system_mokowaas/Field/CurrentIpField.php
index 1ac8ae0..dc713f6 100644
--- a/src/packages/plg_system_mokowaas/Field/CurrentIpField.php
+++ b/src/packages/plg_system_mokowaas/Field/CurrentIpField.php
@@ -7,7 +7,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.43
+ * VERSION: 02.32.44
* PATH: /src/Field/CurrentIpField.php
* BRIEF: Read-only field that displays the current user's IP address
*/
diff --git a/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php b/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php
index a5590bf..fd8774e 100644
--- a/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php
+++ b/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.43
+ * VERSION: 02.32.44
* PATH: /src/Field/DemoTaskInfoField.php
* BRIEF: Read-only field showing scheduled task info with link to manage it
*/
diff --git a/src/packages/plg_system_mokowaas/Field/NextResetField.php b/src/packages/plg_system_mokowaas/Field/NextResetField.php
index 56c5ca3..fdf6227 100644
--- a/src/packages/plg_system_mokowaas/Field/NextResetField.php
+++ b/src/packages/plg_system_mokowaas/Field/NextResetField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.43
+ * VERSION: 02.32.44
* PATH: /src/Field/NextResetField.php
* BRIEF: Read-only field showing next reset time from Joomla scheduled task
*/
diff --git a/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php b/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php
index 0233750..5f38caa 100644
--- a/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php
+++ b/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.43
+ * VERSION: 02.32.44
* PATH: /src/Field/SnapshotTablesField.php
* BRIEF: Multi-select list field that loads DB tables with sensible defaults
*/
diff --git a/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php b/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
index d99c432..eb59d80 100644
--- a/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
+++ b/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
@@ -10,7 +10,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
- * VERSION: 02.32.43
+ * VERSION: 02.32.44
* BRIEF: Receiver-side content sync — applies incoming payload to local DB
*/
diff --git a/src/packages/plg_system_mokowaas/Service/ContentSyncService.php b/src/packages/plg_system_mokowaas/Service/ContentSyncService.php
index 0862f29..44269e1 100644
--- a/src/packages/plg_system_mokowaas/Service/ContentSyncService.php
+++ b/src/packages/plg_system_mokowaas/Service/ContentSyncService.php
@@ -10,7 +10,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php
- * VERSION: 02.32.43
+ * VERSION: 02.32.44
* BRIEF: Sender-side content sync — builds payload and pushes to remote sites
*/
diff --git a/src/packages/plg_system_mokowaas/Service/DemoResetService.php b/src/packages/plg_system_mokowaas/Service/DemoResetService.php
index e1f82a5..cb27617 100644
--- a/src/packages/plg_system_mokowaas/Service/DemoResetService.php
+++ b/src/packages/plg_system_mokowaas/Service/DemoResetService.php
@@ -10,7 +10,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php
- * VERSION: 02.32.43
+ * VERSION: 02.32.44
* BRIEF: Content-only snapshot/restore for demo site reset
*/
diff --git a/src/packages/plg_system_mokowaas/mokowaas.xml b/src/packages/plg_system_mokowaas/mokowaas.xml
index 5de885a..bf88c4b 100644
--- a/src/packages/plg_system_mokowaas/mokowaas.xml
+++ b/src/packages/plg_system_mokowaas/mokowaas.xml
@@ -30,7 +30,7 @@
GNU General Public License version 3 or later; see LICENSE.md
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.43
+ 02.32.44
This plugin rebrands the Joomla system interface with MokoWaaS identity. It applies language overrides and ensures consistent branding across the platform.
Moko\Plugin\System\MokoWaaS
script.php
diff --git a/src/packages/plg_system_mokowaas/script.php b/src/packages/plg_system_mokowaas/script.php
index 952e13c..c0b766f 100644
--- a/src/packages/plg_system_mokowaas/script.php
+++ b/src/packages/plg_system_mokowaas/script.php
@@ -22,7 +22,7 @@
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
* REPO: https://github.com/mokoconsulting-tech/mokowaas
- * VERSION: 02.32.43
+ * VERSION: 02.32.44
* PATH: /src/script.php
* BRIEF: Installation script for MokoWaaS plugin
* NOTE: Handles installation, update, and uninstallation tasks including language override deployment
diff --git a/src/packages/plg_system_mokowaas/services/provider.php b/src/packages/plg_system_mokowaas/services/provider.php
index e9e0593..6818d4b 100644
--- a/src/packages/plg_system_mokowaas/services/provider.php
+++ b/src/packages/plg_system_mokowaas/services/provider.php
@@ -22,7 +22,7 @@
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
* REPO: https://github.com/mokoconsulting-tech/mokowaas
- * VERSION: 02.32.43
+ * VERSION: 02.32.44
* PATH: /src/services/provider.php
* BRIEF: Service provider for dependency injection in Joomla 5.x
* NOTE: Registers the plugin with Joomla's DI container
diff --git a/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml
index d9e48b0..adf6946 100644
--- a/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml
+++ b/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.43
+ 02.32.44
PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC
Moko\Plugin\System\MokoWaaSDevTools
diff --git a/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
index b5d8e23..0ef3dd3 100644
--- a/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
+++ b/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.43
+ 02.32.44
PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC
Moko\Plugin\System\MokoWaaSFirewall
diff --git a/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml
index c11d81a..8fb29bd 100644
--- a/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml
+++ b/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.43
+ 02.32.44
PLG_SYSTEM_MOKOWAAS_MONITOR_DESC
Moko\Plugin\System\MokoWaaSMonitor
diff --git a/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml
index 87d9519..cc62f11 100644
--- a/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml
+++ b/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.43
+ 02.32.44
PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC
Moko\Plugin\System\MokoWaaSOffline
diff --git a/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml
index 41c2f89..ba2743c 100644
--- a/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml
+++ b/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.43
+ 02.32.44
PLG_SYSTEM_MOKOWAAS_TENANT_DESC
Moko\Plugin\System\MokoWaaSTenant
diff --git a/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml
index 2b4ba28..4e19cd0 100644
--- a/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml
+++ b/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.43
+ 02.32.44
Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions.
Moko\Plugin\Task\MokoWaaSTickets
diff --git a/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
index c64c58e..44731c3 100644
--- a/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
+++ b/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
@@ -12,8 +12,8 @@
GNU General Public License version 3 or later; see LICENSE
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.43
- 02.32.43
+ 02.32.44
+ 02.32.44
PLG_TASK_MOKOWAASDEMO_DESC
Moko\Plugin\Task\MokoWaaSDemo
diff --git a/src/packages/plg_task_mokowaassync/mokowaassync.xml b/src/packages/plg_task_mokowaassync/mokowaassync.xml
index 0cca2d2..5d0b5d3 100644
--- a/src/packages/plg_task_mokowaassync/mokowaassync.xml
+++ b/src/packages/plg_task_mokowaassync/mokowaassync.xml
@@ -12,7 +12,7 @@
GNU General Public License version 3 or later; see LICENSE
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.43
+ 02.32.44
PLG_TASK_MOKOWAASSYNC_DESC
Moko\Plugin\Task\MokoWaaSSync
diff --git a/src/packages/plg_webservices_mokowaas/mokowaas.xml b/src/packages/plg_webservices_mokowaas/mokowaas.xml
index e21da50..4d70ea5 100644
--- a/src/packages/plg_webservices_mokowaas/mokowaas.xml
+++ b/src/packages/plg_webservices_mokowaas/mokowaas.xml
@@ -7,8 +7,8 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.43
- 02.32.43
+ 02.32.44
+ 02.32.44
Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info.
Moko\Plugin\WebServices\MokoWaaS
diff --git a/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml b/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
index cb23c01..7be7514 100644
--- a/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
+++ b/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
@@ -7,8 +7,8 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.43
- 02.32.43
+ 02.32.44
+ 02.32.44
Joomla Web Services API routes for Perfect Publisher (com_autotweet) — channels, posts, requests, rules, and feeds.
Moko\Plugin\WebServices\PerfectPublisher
diff --git a/src/packages/plg_webservices_perfectpublisher/services/provider.php b/src/packages/plg_webservices_perfectpublisher/services/provider.php
index f75904c..9573581 100644
--- a/src/packages/plg_webservices_perfectpublisher/services/provider.php
+++ b/src/packages/plg_webservices_perfectpublisher/services/provider.php
@@ -8,7 +8,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_webservices_perfectpublisher/services/provider.php
- * VERSION: 02.32.43
+ * VERSION: 02.32.44
* BRIEF: DI service provider for Perfect Publisher Web Services plugin
*/
diff --git a/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php b/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
index 3f38564..1ef4026 100644
--- a/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
+++ b/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
@@ -8,7 +8,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
- * VERSION: 02.32.43
+ * VERSION: 02.32.44
* BRIEF: Web Services API plugin for Perfect Publisher (com_autotweet)
*/
diff --git a/src/pkg_mokowaas.xml b/src/pkg_mokowaas.xml
index a3ca35a..31c33ae 100644
--- a/src/pkg_mokowaas.xml
+++ b/src/pkg_mokowaas.xml
@@ -2,7 +2,7 @@
Package - MokoWaaS
mokowaas
- 02.32.43
+ 02.32.44
2026-06-02
Moko Consulting
hello@mokoconsulting.tech
diff --git a/updates.xml b/updates.xml
index cb54b49..ead07f2 100644
--- a/updates.xml
+++ b/updates.xml
@@ -1,7 +1,7 @@
--
2.52.0
From 6f7495703c442bac9a01038c27e5a93fbb6fcca3 Mon Sep 17 00:00:00 2001
From: "gitea-actions[bot]"
Date: Thu, 4 Jun 2026 12:02:12 +0000
Subject: [PATCH 082/142] chore: update development channel 02.32.44 [skip ci]
---
updates.xml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/updates.xml b/updates.xml
index ead07f2..7e16e7f 100644
--- a/updates.xml
+++ b/updates.xml
@@ -11,13 +11,13 @@
pkg_mokowaas
package
site
- 02.32.43-dev
+ 02.32.44-dev
2026-06-04
https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/tag/development
- https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/development/pkg_mokowaas-02.32.43-dev.zip
+ https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/development/pkg_mokowaas-02.32.44-dev.zip
- 21ee0054559208a3bee003c5913bfbdfaf211ee252c19c0988cdb8123b49dfc9
+ 20805af79b9be299a7665f0165dfa73bb1608e2bc6d3e9b9c08cb8842204ffe8
dev
https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/raw/branch/main/CHANGELOG.md
Moko Consulting
--
2.52.0
From 69776d9b773320c9e021b75ff6c3b05b96b6ce67 Mon Sep 17 00:00:00 2001
From: Jonathan Miller
Date: Thu, 4 Jun 2026 07:05:27 -0500
Subject: [PATCH 083/142] feat: MokoWaaS admin sidebar menu module (like CB's
mod_cbadmin)
New module mod_mokowaas_menu renders a dedicated MokoWaaS section
in the admin sidebar at position=menu, ordering=0 (before CB at 1
and Joomla's mod_menu at 2).
Menu items: Dashboard, Helpdesk, Extensions, .htaccess Maker,
Privacy Guard, WAF Log, Feature Plugins
Active state highlighting on current view.
Auto-created on package install with access=Special.
Added to package manifest.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context)
---
.../language/en-GB/mod_mokowaas_menu.ini | 1 +
.../language/en-GB/mod_mokowaas_menu.sys.ini | 2 +
.../mod_mokowaas_menu/mod_mokowaas_menu.xml | 24 +++++++
.../mod_mokowaas_menu/services/provider.php | 18 +++++
.../src/Dispatcher/Dispatcher.php | 14 ++++
.../mod_mokowaas_menu/tmpl/default.php | 54 +++++++++++++++
src/pkg_mokowaas.xml | 1 +
src/script.php | 66 +++++++++++++++++++
8 files changed, 180 insertions(+)
create mode 100644 src/packages/mod_mokowaas_menu/language/en-GB/mod_mokowaas_menu.ini
create mode 100644 src/packages/mod_mokowaas_menu/language/en-GB/mod_mokowaas_menu.sys.ini
create mode 100644 src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml
create mode 100644 src/packages/mod_mokowaas_menu/services/provider.php
create mode 100644 src/packages/mod_mokowaas_menu/src/Dispatcher/Dispatcher.php
create mode 100644 src/packages/mod_mokowaas_menu/tmpl/default.php
diff --git a/src/packages/mod_mokowaas_menu/language/en-GB/mod_mokowaas_menu.ini b/src/packages/mod_mokowaas_menu/language/en-GB/mod_mokowaas_menu.ini
new file mode 100644
index 0000000..dff9f13
--- /dev/null
+++ b/src/packages/mod_mokowaas_menu/language/en-GB/mod_mokowaas_menu.ini
@@ -0,0 +1 @@
+MOD_MOKOWAAS_MENU="MokoWaaS Admin Menu"
diff --git a/src/packages/mod_mokowaas_menu/language/en-GB/mod_mokowaas_menu.sys.ini b/src/packages/mod_mokowaas_menu/language/en-GB/mod_mokowaas_menu.sys.ini
new file mode 100644
index 0000000..898a383
--- /dev/null
+++ b/src/packages/mod_mokowaas_menu/language/en-GB/mod_mokowaas_menu.sys.ini
@@ -0,0 +1,2 @@
+MOD_MOKOWAAS_MENU="MokoWaaS Admin Menu"
+MOD_MOKOWAAS_MENU_DESC="Dedicated MokoWaaS section in the admin sidebar menu."
diff --git a/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml
new file mode 100644
index 0000000..59f480b
--- /dev/null
+++ b/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml
@@ -0,0 +1,24 @@
+
+
+ mod_mokowaas_menu
+ Moko Consulting
+ 2026-06-04
+ Copyright (C) 2026 Moko Consulting. All rights reserved.
+ GPL-3.0-or-later
+ hello@mokoconsulting.tech
+ https://mokoconsulting.tech
+ 02.32.00
+ MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu.
+ Moko\Module\MokoWaaSMenu
+
+
+ services
+ src
+ tmpl
+
+
+
+ en-GB/mod_mokowaas_menu.ini
+ en-GB/mod_mokowaas_menu.sys.ini
+
+
diff --git a/src/packages/mod_mokowaas_menu/services/provider.php b/src/packages/mod_mokowaas_menu/services/provider.php
new file mode 100644
index 0000000..67feaec
--- /dev/null
+++ b/src/packages/mod_mokowaas_menu/services/provider.php
@@ -0,0 +1,18 @@
+registerServiceProvider(new ModuleDispatcherFactory('\\Moko\\Module\\MokoWaaSMenu'));
+ $container->registerServiceProvider(new HelperFactory('\\Moko\\Module\\MokoWaaSMenu\\Administrator\\Helper'));
+ $container->registerServiceProvider(new Module());
+ }
+};
diff --git a/src/packages/mod_mokowaas_menu/src/Dispatcher/Dispatcher.php b/src/packages/mod_mokowaas_menu/src/Dispatcher/Dispatcher.php
new file mode 100644
index 0000000..b5d4dcc
--- /dev/null
+++ b/src/packages/mod_mokowaas_menu/src/Dispatcher/Dispatcher.php
@@ -0,0 +1,14 @@
+ 'icon-cogs', 'title' => 'Dashboard', 'link' => 'index.php?option=com_mokowaas'],
+ ['icon' => 'icon-headphones', 'title' => 'Helpdesk', 'link' => 'index.php?option=com_mokowaas&view=tickets'],
+ ['icon' => 'icon-puzzle-piece','title' => 'Extensions', 'link' => 'index.php?option=com_mokowaas&view=extensions'],
+ ['icon' => 'icon-file-code', 'title' => '.htaccess Maker', 'link' => 'index.php?option=com_mokowaas&view=htaccess'],
+ ['icon' => 'icon-lock', 'title' => 'Privacy Guard', 'link' => 'index.php?option=com_mokowaas&view=privacy'],
+ ['icon' => 'icon-shield-alt', 'title' => 'WAF Log', 'link' => 'index.php?option=com_mokowaas&view=waflog'],
+ ['icon' => 'icon-power-off', 'title' => 'Feature Plugins', 'link' => 'index.php?option=com_plugins&filter[folder]=system&filter[search]=mokowaas'],
+];
+
+$currentOption = \Joomla\CMS\Factory::getApplication()->getInput()->get('option', '');
+$currentView = \Joomla\CMS\Factory::getApplication()->getInput()->get('view', '');
+?>
+
+
diff --git a/src/pkg_mokowaas.xml b/src/pkg_mokowaas.xml
index a3ca35a..2f0334f 100644
--- a/src/pkg_mokowaas.xml
+++ b/src/pkg_mokowaas.xml
@@ -20,6 +20,7 @@
plg_system_mokowaas_offline.zip
com_mokowaas.zip
mod_mokowaas_cpanel.zip
+
plg_webservices_mokowaas.zip
plg_webservices_perfectpublisher.zip
plg_task_mokowaasdemo.zip
diff --git a/src/script.php b/src/script.php
index 882bcba..9a2a541 100644
--- a/src/script.php
+++ b/src/script.php
@@ -55,6 +55,9 @@ class Pkg_MokowaasInstallerScript
// Set up cpanel module on the admin dashboard
$this->setupCpanelModule();
+ // Set up admin sidebar menu module
+ $this->setupAdminMenuModule();
+
// Create Support portal menu item on frontend
$this->setupSupportMenuItem();
@@ -704,6 +707,69 @@ class Pkg_MokowaasInstallerScript
}
}
+ /**
+ * Set up the MokoWaaS admin sidebar menu module at position 0.
+ */
+ private function setupAdminMenuModule(): void
+ {
+ try
+ {
+ $db = Factory::getDbo();
+
+ // Enable the module extension
+ $db->setQuery(
+ $db->getQuery(true)
+ ->update($db->quoteName('#__extensions'))
+ ->set($db->quoteName('enabled') . ' = 1')
+ ->where($db->quoteName('type') . ' = ' . $db->quote('module'))
+ ->where($db->quoteName('element') . ' = ' . $db->quote('mod_mokowaas_menu'))
+ )->execute();
+
+ // Check if module instance exists
+ $db->setQuery(
+ $db->getQuery(true)
+ ->select('COUNT(*)')
+ ->from($db->quoteName('#__modules'))
+ ->where($db->quoteName('module') . ' = ' . $db->quote('mod_mokowaas_menu'))
+ );
+
+ if ((int) $db->loadResult() > 0)
+ {
+ return;
+ }
+
+ $module = (object) [
+ 'title' => 'MokoWaaS Menu',
+ 'note' => '',
+ 'content' => '',
+ 'ordering' => 0,
+ 'position' => 'menu',
+ 'checked_out' => null,
+ 'checked_out_time' => null,
+ 'publish_up' => null,
+ 'publish_down' => null,
+ 'published' => 1,
+ 'module' => 'mod_mokowaas_menu',
+ 'access' => 3,
+ 'showtitle' => 0,
+ 'params' => '{}',
+ 'client_id' => 1,
+ 'language' => '*',
+ ];
+
+ $db->insertObject('#__modules', $module, 'id');
+
+ if ((int) $module->id)
+ {
+ $db->insertObject('#__modules_menu', (object) ['moduleid' => (int) $module->id, 'menuid' => 0]);
+ }
+ }
+ catch (\Throwable $e)
+ {
+ Log::add('Admin menu module setup error: ' . $e->getMessage(), Log::WARNING, 'mokowaas');
+ }
+ }
+
/**
* Create a "Support" menu item on the frontend main menu.
*/
--
2.52.0
From 72e5e31a31c714c6ff6c576df853cc8ee3d13fb9 Mon Sep 17 00:00:00 2001
From: "gitea-actions[bot]"
Date: Thu, 4 Jun 2026 12:05:53 +0000
Subject: [PATCH 084/142] chore(version): auto-bump 02.32.45 [skip ci]
---
.mokogitea/manifest.xml | 2 +-
.mokogitea/workflows/issue-branch.yml | 2 +-
CHANGELOG.md | 2 +-
CODE_OF_CONDUCT.md | 2 +-
GOVERNANCE.md | 2 +-
LICENSE.md | 2 +-
README.md | 2 +-
SECURITY.md | 2 +-
docs/guides/build-guide.md | 4 ++--
docs/guides/configuration-guide.md | 4 ++--
docs/guides/installation-guide.md | 4 ++--
docs/guides/operations-guide.md | 4 ++--
docs/guides/rollback-and-recovery-guide.md | 4 ++--
docs/guides/testing-guide.md | 4 ++--
docs/guides/troubleshooting-guide.md | 4 ++--
docs/guides/upgrade-and-versioning-guide.md | 4 ++--
docs/index.md | 4 ++--
docs/plugin-basic.md | 4 ++--
docs/update-server.md | 2 +-
src/packages/com_mokowaas/mokowaas.xml | 2 +-
src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +-
src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +-
src/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +-
src/packages/plg_system_mokowaas/Field/AllowedIpsField.php | 2 +-
src/packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +-
src/packages/plg_system_mokowaas/Field/CurrentIpField.php | 2 +-
src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php | 2 +-
src/packages/plg_system_mokowaas/Field/NextResetField.php | 2 +-
.../plg_system_mokowaas/Field/SnapshotTablesField.php | 2 +-
.../plg_system_mokowaas/Service/ContentSyncReceiver.php | 2 +-
.../plg_system_mokowaas/Service/ContentSyncService.php | 2 +-
src/packages/plg_system_mokowaas/Service/DemoResetService.php | 2 +-
src/packages/plg_system_mokowaas/mokowaas.xml | 2 +-
src/packages/plg_system_mokowaas/script.php | 2 +-
src/packages/plg_system_mokowaas/services/provider.php | 2 +-
.../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +-
.../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +-
src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +-
src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +-
src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +-
src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +-
src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 4 ++--
src/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +-
src/packages/plg_webservices_mokowaas/mokowaas.xml | 4 ++--
.../plg_webservices_perfectpublisher/perfectpublisher.xml | 4 ++--
.../plg_webservices_perfectpublisher/services/provider.php | 2 +-
.../src/Extension/PerfectPublisherApi.php | 2 +-
src/pkg_mokowaas.xml | 2 +-
updates.xml | 2 +-
49 files changed, 62 insertions(+), 62 deletions(-)
diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml
index 060cd02..712df12 100644
--- a/.mokogitea/manifest.xml
+++ b/.mokogitea/manifest.xml
@@ -9,7 +9,7 @@
Package - MokoWaaS
MokoConsulting
White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments
- 02.32.44
+ 02.32.45
GNU General Public License v3
diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml
index 69982d1..c91b495 100644
--- a/.mokogitea/workflows/issue-branch.yml
+++ b/.mokogitea/workflows/issue-branch.yml
@@ -5,7 +5,7 @@
# FILE INFORMATION
# DEFGROUP: Gitea.Workflow
# INGROUP: moko-platform.Automation
-# VERSION: 02.32.44
+# VERSION: 02.32.45
# BRIEF: Auto-create feature branch when an issue is opened
name: "Universal: Issue Branch"
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e92449b..520c1e4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,7 +14,7 @@
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
PATH: ./CHANGELOG.md
- VERSION: 02.32.44
+ VERSION: 02.32.45
BRIEF: Version history using `Keep a Changelog`
-->
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 29c754a..fe37ec1 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -14,7 +14,7 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.44
+ VERSION: 02.32.45
PATH: ./CODE_OF_CONDUCT.md
BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default
-->
diff --git a/GOVERNANCE.md b/GOVERNANCE.md
index cb383f3..0888075 100644
--- a/GOVERNANCE.md
+++ b/GOVERNANCE.md
@@ -19,7 +19,7 @@
DEFGROUP: mokoconsulting-tech.MokoWaaSBrand
INGROUP: MokoStandards.Governance
REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand
- VERSION: 02.32.44
+ VERSION: 02.32.45
PATH: /GOVERNANCE.md
BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand
-->
diff --git a/LICENSE.md b/LICENSE.md
index 54b4a59..4ab76b5 100644
--- a/LICENSE.md
+++ b/LICENSE.md
@@ -15,7 +15,7 @@
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
PATH: ./LICENSE.md
- VERSION: 02.32.44
+ VERSION: 02.32.45
BRIEF: Project license (GPL-3.0-or-later)
-->
GNU GENERAL PUBLIC LICENSE
diff --git a/README.md b/README.md
index dac09e2..9072870 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS
REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
- VERSION: 02.32.44
+ VERSION: 02.32.45
PATH: /README.md
BRIEF: MokoWaaS platform plugin for Joomla
-->
diff --git a/SECURITY.md b/SECURITY.md
index b13c36f..1c1728a 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME]
INGROUP: [PROJECT_NAME].Documentation
REPO: [REPOSITORY_URL]
PATH: /SECURITY.md
-VERSION: 02.32.44
+VERSION: 02.32.45
BRIEF: Security vulnerability reporting and handling policy
-->
diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md
index 46227e5..fb9086f 100644
--- a/docs/guides/build-guide.md
+++ b/docs/guides/build-guide.md
@@ -11,13 +11,13 @@
INGROUP: MokoWaaS.Build
REPO: https://github.com/mokoconsulting-tech/mokowaas
FILE: build-guide.md
- VERSION: 02.32.44
+ VERSION: 02.32.45
PATH: /docs/guides/
BRIEF: Build and packaging guide for the MokoWaaS system plugin
NOTE: Defines environment setup, repository layout, packaging rules, and release preparation
-->
-# MokoWaaS Build Guide (VERSION: 02.32.44)
+# MokoWaaS Build Guide (VERSION: 02.32.45)
## 1. Purpose
diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md
index 0d8085a..aa392cc 100644
--- a/docs/guides/configuration-guide.md
+++ b/docs/guides/configuration-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.44
+ VERSION: 02.32.45
PATH: /docs/guides/configuration-guide.md
BRIEF: Configuration guide for the MokoWaaS system plugin
NOTE: Defines plugin parameters, expected behaviors, and recommended defaults
-->
-# MokoWaaS Configuration Guide (VERSION: 02.32.44)
+# MokoWaaS Configuration Guide (VERSION: 02.32.45)
## 1. Objective
diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md
index e9b5673..22c5c4b 100644
--- a/docs/guides/installation-guide.md
+++ b/docs/guides/installation-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.44
+ VERSION: 02.32.45
PATH: /docs/guides/installation-guide.md
BRIEF: Installation guide for the MokoWaaS system plugin
NOTE: First document in the guide set
-->
-# MokoWaaS Installation Guide (VERSION: 02.32.44)
+# MokoWaaS Installation Guide (VERSION: 02.32.45)
## Introduction
diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md
index d8e8b85..d447a81 100644
--- a/docs/guides/operations-guide.md
+++ b/docs/guides/operations-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.44
+ VERSION: 02.32.45
PATH: /docs/guides/operations-guide.md
BRIEF: Operational guide for administering and managing the MokoWaaS system plugin
NOTE: Defines lifecycle, responsibilities, and operational behaviors
-->
-# MokoWaaS Operations Guide (VERSION: 02.32.44)
+# MokoWaaS Operations Guide (VERSION: 02.32.45)
## Introduction
diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md
index ee6c647..d0d5e94 100644
--- a/docs/guides/rollback-and-recovery-guide.md
+++ b/docs/guides/rollback-and-recovery-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.44
+ VERSION: 02.32.45
PATH: /docs/guides/rollback-and-recovery-guide.md
BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents
NOTE: Completes the core guide set for WaaS plugin governance
-->
-# MokoWaaS Rollback and Recovery Guide (VERSION: 02.32.44)
+# MokoWaaS Rollback and Recovery Guide (VERSION: 02.32.45)
## Introduction
diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md
index 72a0c87..c1969b2 100644
--- a/docs/guides/testing-guide.md
+++ b/docs/guides/testing-guide.md
@@ -7,13 +7,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.44
+ VERSION: 02.32.45
PATH: /docs/guides/testing-guide.md
BRIEF: Testing guide for MokoWaaS v02.01.08
NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration
-->
-# MokoWaaS Testing Guide (VERSION: 02.32.44)
+# MokoWaaS Testing Guide (VERSION: 02.32.45)
## 1. Prerequisites
diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md
index 4c1cb38..8b2f375 100644
--- a/docs/guides/troubleshooting-guide.md
+++ b/docs/guides/troubleshooting-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.44
+ VERSION: 02.32.45
PATH: /docs/guides/troubleshooting-guide.md
BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin
NOTE: Designed for administrators and WaaS operations teams
-->
-# MokoWaaS Troubleshooting Guide (VERSION: 02.32.44)
+# MokoWaaS Troubleshooting Guide (VERSION: 02.32.45)
## Introduction
diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md
index e2eab8a..27cce4a 100644
--- a/docs/guides/upgrade-and-versioning-guide.md
+++ b/docs/guides/upgrade-and-versioning-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.44
+ VERSION: 02.32.45
PATH: /docs/guides/upgrade-and-versioning-guide.md
BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin
NOTE: Defines release flow, version rules, and upgrade validation
-->
-# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.32.44)
+# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.32.45)
## Introduction
diff --git a/docs/index.md b/docs/index.md
index a87abd1..98ea973 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.44
+ VERSION: 02.32.45
PATH: /docs/index.md
BRIEF: Master index of all documentation for the MokoWaaS plugin
NOTE: Automatically maintained index for all guide canvases
-->
-# MokoWaaS Documentation Index (VERSION: 02.32.44)
+# MokoWaaS Documentation Index (VERSION: 02.32.45)
## Introduction
diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md
index 5abd8b7..c37f1e8 100644
--- a/docs/plugin-basic.md
+++ b/docs/plugin-basic.md
@@ -11,12 +11,12 @@
INGROUP: MokoWaaS
REPO: https://github.com/mokoconsulting-tech/mokowaas
PATH: /docs/plugin-basic.md
- VERSION: 02.32.44
+ VERSION: 02.32.45
BRIEF: Baseline documentation for the MokoWaaS system plugin
NOTE: Foundational reference for internal and external stakeholders
-->
-# MokoWaaS Plugin Overview (VERSION: 02.32.44)
+# MokoWaaS Plugin Overview (VERSION: 02.32.45)
## Introduction
diff --git a/docs/update-server.md b/docs/update-server.md
index 54915d9..0c2a6b1 100644
--- a/docs/update-server.md
+++ b/docs/update-server.md
@@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation
INGROUP: MokoStandards.Templates
REPO: https://github.com/mokoconsulting-tech/MokoWaaS
PATH: /docs/update-server.md
-VERSION: 02.32.44
+VERSION: 02.32.45
BRIEF: How this extension's Joomla update server file (update.xml) is managed
-->
diff --git a/src/packages/com_mokowaas/mokowaas.xml b/src/packages/com_mokowaas/mokowaas.xml
index 2ffb816..2cc60c2 100644
--- a/src/packages/com_mokowaas/mokowaas.xml
+++ b/src/packages/com_mokowaas/mokowaas.xml
@@ -20,7 +20,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.44
+ 02.32.45
MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints.
Moko\Component\MokoWaaS
diff --git a/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml
index 96242c7..6e39af9 100644
--- a/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml
+++ b/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.44
+ 02.32.45
MOD_MOKOWAAS_CPANEL_DESC
Moko\Module\MokoWaaSCpanel
diff --git a/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml
index 59f480b..e8f300d 100644
--- a/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml
+++ b/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.00
+ 02.32.45
MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu.
Moko\Module\MokoWaaSMenu
diff --git a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
index 9aee79e..29cde0f 100644
--- a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
+++ b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
@@ -22,7 +22,7 @@
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
* REPO: https://github.com/mokoconsulting-tech/mokowaas
- * VERSION: 02.32.44
+ * VERSION: 02.32.45
* PATH: /src/Extension/MokoWaaS.php
* NOTE: Handles Joomla system events for rebranding functionality
*/
diff --git a/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php b/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php
index 0186508..e0ca84a 100644
--- a/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php
+++ b/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php
@@ -7,7 +7,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.44
+ * VERSION: 02.32.45
* PATH: /src/Field/AllowedIpsField.php
* BRIEF: Custom form field that displays the current IP whitelist
*/
diff --git a/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php
index 099b6d4..6d51ed4 100644
--- a/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php
+++ b/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.44
+ * VERSION: 02.32.45
* PATH: /src/Field/CopyableTokenField.php
* BRIEF: Read-only token field with a copy-to-clipboard button
*/
diff --git a/src/packages/plg_system_mokowaas/Field/CurrentIpField.php b/src/packages/plg_system_mokowaas/Field/CurrentIpField.php
index dc713f6..21e1c19 100644
--- a/src/packages/plg_system_mokowaas/Field/CurrentIpField.php
+++ b/src/packages/plg_system_mokowaas/Field/CurrentIpField.php
@@ -7,7 +7,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.44
+ * VERSION: 02.32.45
* PATH: /src/Field/CurrentIpField.php
* BRIEF: Read-only field that displays the current user's IP address
*/
diff --git a/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php b/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php
index fd8774e..b267a6a 100644
--- a/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php
+++ b/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.44
+ * VERSION: 02.32.45
* PATH: /src/Field/DemoTaskInfoField.php
* BRIEF: Read-only field showing scheduled task info with link to manage it
*/
diff --git a/src/packages/plg_system_mokowaas/Field/NextResetField.php b/src/packages/plg_system_mokowaas/Field/NextResetField.php
index fdf6227..140d60d 100644
--- a/src/packages/plg_system_mokowaas/Field/NextResetField.php
+++ b/src/packages/plg_system_mokowaas/Field/NextResetField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.44
+ * VERSION: 02.32.45
* PATH: /src/Field/NextResetField.php
* BRIEF: Read-only field showing next reset time from Joomla scheduled task
*/
diff --git a/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php b/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php
index 5f38caa..2ec099d 100644
--- a/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php
+++ b/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.44
+ * VERSION: 02.32.45
* PATH: /src/Field/SnapshotTablesField.php
* BRIEF: Multi-select list field that loads DB tables with sensible defaults
*/
diff --git a/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php b/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
index eb59d80..b0c04a0 100644
--- a/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
+++ b/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
@@ -10,7 +10,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
- * VERSION: 02.32.44
+ * VERSION: 02.32.45
* BRIEF: Receiver-side content sync — applies incoming payload to local DB
*/
diff --git a/src/packages/plg_system_mokowaas/Service/ContentSyncService.php b/src/packages/plg_system_mokowaas/Service/ContentSyncService.php
index 44269e1..ea01936 100644
--- a/src/packages/plg_system_mokowaas/Service/ContentSyncService.php
+++ b/src/packages/plg_system_mokowaas/Service/ContentSyncService.php
@@ -10,7 +10,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php
- * VERSION: 02.32.44
+ * VERSION: 02.32.45
* BRIEF: Sender-side content sync — builds payload and pushes to remote sites
*/
diff --git a/src/packages/plg_system_mokowaas/Service/DemoResetService.php b/src/packages/plg_system_mokowaas/Service/DemoResetService.php
index cb27617..c7b0909 100644
--- a/src/packages/plg_system_mokowaas/Service/DemoResetService.php
+++ b/src/packages/plg_system_mokowaas/Service/DemoResetService.php
@@ -10,7 +10,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php
- * VERSION: 02.32.44
+ * VERSION: 02.32.45
* BRIEF: Content-only snapshot/restore for demo site reset
*/
diff --git a/src/packages/plg_system_mokowaas/mokowaas.xml b/src/packages/plg_system_mokowaas/mokowaas.xml
index bf88c4b..37e925d 100644
--- a/src/packages/plg_system_mokowaas/mokowaas.xml
+++ b/src/packages/plg_system_mokowaas/mokowaas.xml
@@ -30,7 +30,7 @@
GNU General Public License version 3 or later; see LICENSE.md
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.44
+ 02.32.45
This plugin rebrands the Joomla system interface with MokoWaaS identity. It applies language overrides and ensures consistent branding across the platform.
Moko\Plugin\System\MokoWaaS
script.php
diff --git a/src/packages/plg_system_mokowaas/script.php b/src/packages/plg_system_mokowaas/script.php
index c0b766f..5a9de04 100644
--- a/src/packages/plg_system_mokowaas/script.php
+++ b/src/packages/plg_system_mokowaas/script.php
@@ -22,7 +22,7 @@
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
* REPO: https://github.com/mokoconsulting-tech/mokowaas
- * VERSION: 02.32.44
+ * VERSION: 02.32.45
* PATH: /src/script.php
* BRIEF: Installation script for MokoWaaS plugin
* NOTE: Handles installation, update, and uninstallation tasks including language override deployment
diff --git a/src/packages/plg_system_mokowaas/services/provider.php b/src/packages/plg_system_mokowaas/services/provider.php
index 6818d4b..958e109 100644
--- a/src/packages/plg_system_mokowaas/services/provider.php
+++ b/src/packages/plg_system_mokowaas/services/provider.php
@@ -22,7 +22,7 @@
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
* REPO: https://github.com/mokoconsulting-tech/mokowaas
- * VERSION: 02.32.44
+ * VERSION: 02.32.45
* PATH: /src/services/provider.php
* BRIEF: Service provider for dependency injection in Joomla 5.x
* NOTE: Registers the plugin with Joomla's DI container
diff --git a/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml
index adf6946..8f1f1a3 100644
--- a/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml
+++ b/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.44
+ 02.32.45
PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC
Moko\Plugin\System\MokoWaaSDevTools
diff --git a/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
index 0ef3dd3..074a7d5 100644
--- a/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
+++ b/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.44
+ 02.32.45
PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC
Moko\Plugin\System\MokoWaaSFirewall
diff --git a/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml
index 8fb29bd..8af2b0e 100644
--- a/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml
+++ b/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.44
+ 02.32.45
PLG_SYSTEM_MOKOWAAS_MONITOR_DESC
Moko\Plugin\System\MokoWaaSMonitor
diff --git a/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml
index cc62f11..e3db2ea 100644
--- a/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml
+++ b/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.44
+ 02.32.45
PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC
Moko\Plugin\System\MokoWaaSOffline
diff --git a/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml
index ba2743c..00afede 100644
--- a/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml
+++ b/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.44
+ 02.32.45
PLG_SYSTEM_MOKOWAAS_TENANT_DESC
Moko\Plugin\System\MokoWaaSTenant
diff --git a/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml
index 4e19cd0..11a4448 100644
--- a/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml
+++ b/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.44
+ 02.32.45
Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions.
Moko\Plugin\Task\MokoWaaSTickets
diff --git a/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
index 44731c3..5c5133b 100644
--- a/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
+++ b/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
@@ -12,8 +12,8 @@
GNU General Public License version 3 or later; see LICENSE
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.44
- 02.32.44
+ 02.32.45
+ 02.32.45
PLG_TASK_MOKOWAASDEMO_DESC
Moko\Plugin\Task\MokoWaaSDemo
diff --git a/src/packages/plg_task_mokowaassync/mokowaassync.xml b/src/packages/plg_task_mokowaassync/mokowaassync.xml
index 5d0b5d3..7869b0a 100644
--- a/src/packages/plg_task_mokowaassync/mokowaassync.xml
+++ b/src/packages/plg_task_mokowaassync/mokowaassync.xml
@@ -12,7 +12,7 @@
GNU General Public License version 3 or later; see LICENSE
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.44
+ 02.32.45
PLG_TASK_MOKOWAASSYNC_DESC
Moko\Plugin\Task\MokoWaaSSync
diff --git a/src/packages/plg_webservices_mokowaas/mokowaas.xml b/src/packages/plg_webservices_mokowaas/mokowaas.xml
index 4d70ea5..e04c0d0 100644
--- a/src/packages/plg_webservices_mokowaas/mokowaas.xml
+++ b/src/packages/plg_webservices_mokowaas/mokowaas.xml
@@ -7,8 +7,8 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.44
- 02.32.44
+ 02.32.45
+ 02.32.45
Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info.
Moko\Plugin\WebServices\MokoWaaS
diff --git a/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml b/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
index 7be7514..be07366 100644
--- a/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
+++ b/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
@@ -7,8 +7,8 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.44
- 02.32.44
+ 02.32.45
+ 02.32.45
Joomla Web Services API routes for Perfect Publisher (com_autotweet) — channels, posts, requests, rules, and feeds.
Moko\Plugin\WebServices\PerfectPublisher
diff --git a/src/packages/plg_webservices_perfectpublisher/services/provider.php b/src/packages/plg_webservices_perfectpublisher/services/provider.php
index 9573581..531d3f3 100644
--- a/src/packages/plg_webservices_perfectpublisher/services/provider.php
+++ b/src/packages/plg_webservices_perfectpublisher/services/provider.php
@@ -8,7 +8,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_webservices_perfectpublisher/services/provider.php
- * VERSION: 02.32.44
+ * VERSION: 02.32.45
* BRIEF: DI service provider for Perfect Publisher Web Services plugin
*/
diff --git a/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php b/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
index 1ef4026..179a5e5 100644
--- a/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
+++ b/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
@@ -8,7 +8,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
- * VERSION: 02.32.44
+ * VERSION: 02.32.45
* BRIEF: Web Services API plugin for Perfect Publisher (com_autotweet)
*/
diff --git a/src/pkg_mokowaas.xml b/src/pkg_mokowaas.xml
index d73379e..d3e879b 100644
--- a/src/pkg_mokowaas.xml
+++ b/src/pkg_mokowaas.xml
@@ -2,7 +2,7 @@
Package - MokoWaaS
mokowaas
- 02.32.44
+ 02.32.45
2026-06-02
Moko Consulting
hello@mokoconsulting.tech
diff --git a/updates.xml b/updates.xml
index 7e16e7f..220d639 100644
--- a/updates.xml
+++ b/updates.xml
@@ -1,7 +1,7 @@
--
2.52.0
From 0b49a959f493d5eef614d847b71e8a91163bf6fd Mon Sep 17 00:00:00 2001
From: "gitea-actions[bot]"
Date: Thu, 4 Jun 2026 12:05:56 +0000
Subject: [PATCH 085/142] chore: update development channel 02.32.45 [skip ci]
---
updates.xml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/updates.xml b/updates.xml
index 220d639..390b6bb 100644
--- a/updates.xml
+++ b/updates.xml
@@ -11,13 +11,13 @@
pkg_mokowaas
package
site
- 02.32.44-dev
+ 02.32.45-dev
2026-06-04
https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/tag/development
- https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/development/pkg_mokowaas-02.32.44-dev.zip
+ https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/development/pkg_mokowaas-02.32.45-dev.zip
- 20805af79b9be299a7665f0165dfa73bb1608e2bc6d3e9b9c08cb8842204ffe8
+ c251453b0bf549ac17bc4c21bda928bdb137c92facad754bb733ee996f40460c
dev
https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/raw/branch/main/CHANGELOG.md
Moko Consulting
--
2.52.0
From 0620ffd73556c46c906ec921e371ef4e794083e6 Mon Sep 17 00:00:00 2001
From: Jonathan Miller
Date: Thu, 4 Jun 2026 07:08:59 -0500
Subject: [PATCH 086/142] =?UTF-8?q?feat:=20expanded=20automation=20?=
=?UTF-8?q?=E2=80=94=20Joomla=20event=20triggers,=20create=5Fticket=20acti?=
=?UTF-8?q?on,=20behavior=20options=20(#151)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
New trigger events hooked into core plugin:
- user_login — fires on successful Joomla login
- user_register — fires on new user creation
- user_login_failed — fires on failed login attempt
New action type: create_ticket with behavior options:
- append: add reply to existing open ticket (same user+category)
- always_new: always create a new ticket
- skip_if_open: do nothing if open ticket exists
New method: runSystemEventAutomation() for non-ticket events
that builds a virtual context object from event data.
Automation rules can now create tickets from any system event,
with intelligent deduplication to avoid ticket spam.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context)
---
.../admin/src/Model/TicketsModel.php | 106 ++++++++++++++++++
.../Extension/MokoWaaS.php | 50 ++++++++-
2 files changed, 154 insertions(+), 2 deletions(-)
diff --git a/src/packages/com_mokowaas/admin/src/Model/TicketsModel.php b/src/packages/com_mokowaas/admin/src/Model/TicketsModel.php
index 9b7a816..47c0ea5 100644
--- a/src/packages/com_mokowaas/admin/src/Model/TicketsModel.php
+++ b/src/packages/com_mokowaas/admin/src/Model/TicketsModel.php
@@ -608,10 +608,116 @@ class TicketsModel extends BaseDatabaseModel
}
}
break;
+
+ case 'create_ticket':
+ // value = JSON: {"subject":"...","body":"...","category_id":1,"priority":"normal","behavior":"append"}
+ $ticketData = json_decode($value, true) ?: [];
+ $behavior = $ticketData['behavior'] ?? 'append';
+ $userId = (int) ($ticket->created_by ?? 0);
+ $catId = (int) ($ticketData['category_id'] ?? 0);
+
+ if ($behavior === 'append' && $userId > 0)
+ {
+ // Check for existing open ticket from this user in this category
+ $db->setQuery(
+ $db->getQuery(true)
+ ->select($db->quoteName('id'))
+ ->from($db->quoteName('#__mokowaas_tickets'))
+ ->where($db->quoteName('created_by') . ' = ' . $userId)
+ ->where($db->quoteName('status') . ' NOT IN (' . $db->quote('resolved') . ',' . $db->quote('closed') . ')')
+ ->where($catId ? $db->quoteName('category_id') . ' = ' . $catId : '1=1')
+ ->order($db->quoteName('created') . ' DESC')
+ ->setLimit(1)
+ );
+ $existingId = (int) $db->loadResult();
+
+ if ($existingId)
+ {
+ $this->addReply($existingId, $ticketData['body'] ?? 'Automation event', true);
+ break;
+ }
+ }
+ elseif ($behavior === 'skip_if_open' && $userId > 0)
+ {
+ $db->setQuery(
+ $db->getQuery(true)
+ ->select('COUNT(*)')
+ ->from($db->quoteName('#__mokowaas_tickets'))
+ ->where($db->quoteName('created_by') . ' = ' . $userId)
+ ->where($db->quoteName('status') . ' NOT IN (' . $db->quote('resolved') . ',' . $db->quote('closed') . ')')
+ );
+
+ if ((int) $db->loadResult() > 0)
+ {
+ break;
+ }
+ }
+
+ // Create new ticket
+ $this->createTicket([
+ 'subject' => $ticketData['subject'] ?? 'Automation: ' . ($ticket->subject ?? 'System event'),
+ 'body' => $ticketData['body'] ?? '',
+ 'priority' => $ticketData['priority'] ?? 'normal',
+ 'category_id' => $catId,
+ ]);
+ break;
}
}
}
+ /**
+ * Run automation for a system event (not tied to a specific ticket).
+ * Creates a virtual ticket context from event data.
+ */
+ public function runSystemEventAutomation(string $event, array $eventData = []): void
+ {
+ try
+ {
+ $db = $this->getDatabase();
+
+ $query = $db->getQuery(true)
+ ->select('*')
+ ->from($db->quoteName('#__mokowaas_ticket_automation'))
+ ->where($db->quoteName('trigger_event') . ' = ' . $db->quote($event))
+ ->where($db->quoteName('enabled') . ' = 1')
+ ->order($db->quoteName('ordering') . ' ASC');
+ $db->setQuery($query);
+ $rules = $db->loadObjectList() ?: [];
+
+ if (empty($rules))
+ {
+ return;
+ }
+
+ // Build a virtual ticket-like object from event data
+ $context = (object) array_merge([
+ 'id' => 0,
+ 'subject' => $eventData['subject'] ?? $event,
+ 'body' => $eventData['body'] ?? '',
+ 'status' => 'open',
+ 'priority' => $eventData['priority'] ?? 'normal',
+ 'created_by' => $eventData['user_id'] ?? 0,
+ 'created' => gmdate('Y-m-d H:i:s'),
+ 'age_hours' => 0,
+ ], $eventData);
+
+ foreach ($rules as $rule)
+ {
+ $conditions = json_decode($rule->conditions, true) ?: [];
+ $actions = json_decode($rule->actions, true) ?: [];
+
+ if (empty($conditions) || $this->evaluateConditions($conditions, $context))
+ {
+ $this->executeActions($actions, 0, $context);
+ }
+ }
+ }
+ catch (\Throwable $e)
+ {
+ \Joomla\CMS\Log\Log::add('System event automation error: ' . $e->getMessage(), \Joomla\CMS\Log\Log::WARNING, 'mokowaas');
+ }
+ }
+
/**
* Get all automation rules.
*/
diff --git a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
index 9aee79e..39393f1 100644
--- a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
+++ b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
@@ -938,11 +938,57 @@ class MokoWaaS extends CMSPlugin implements BootableExtensionInterface
return;
}
- // NOTE: warnMissingLicenseKey and enforceAdminRestrictions
- // are now handled by feature plugins (deferred / tenant)
$this->protectPlugin();
}
+ // ------------------------------------------------------------------
+ // Automation event hooks (#151) — delegate to ticket automation engine
+ // ------------------------------------------------------------------
+
+ public function onUserLogin($user, $options = [])
+ {
+ $this->fireTicketAutomation('user_login', [
+ 'user_id' => $user['id'] ?? 0,
+ 'username' => $user['username'] ?? '',
+ 'subject' => 'User login: ' . ($user['username'] ?? ''),
+ 'body' => 'User ' . ($user['username'] ?? '') . ' logged in from ' . ($_SERVER['REMOTE_ADDR'] ?? ''),
+ ]);
+ }
+
+ public function onUserAfterSave($user, $isNew, $success, $msg)
+ {
+ if ($isNew && $success)
+ {
+ $this->fireTicketAutomation('user_register', [
+ 'user_id' => $user['id'] ?? 0,
+ 'username' => $user['username'] ?? '',
+ 'subject' => 'New user registered: ' . ($user['username'] ?? ''),
+ 'body' => 'New user: ' . ($user['name'] ?? '') . ' (' . ($user['email'] ?? '') . ')',
+ ]);
+ }
+ }
+
+ public function onUserLoginFailure($response)
+ {
+ $this->fireTicketAutomation('user_login_failed', [
+ 'subject' => 'Failed login attempt',
+ 'body' => 'Failed login from ' . ($_SERVER['REMOTE_ADDR'] ?? '') . ': ' . ($response['username'] ?? ''),
+ ]);
+ }
+
+ private function fireTicketAutomation(string $event, array $data): void
+ {
+ try
+ {
+ $model = new \Moko\Component\MokoWaaS\Administrator\Model\TicketsModel();
+ $model->runSystemEventAutomation($event, $data);
+ }
+ catch (\Throwable $e)
+ {
+ // Silent — automation should never break the main flow
+ }
+ }
+
/**
* Inject visual branding into the document head.
*
--
2.52.0
From ca2160d42f74bccd7fcabec6d543085d1b15be7e Mon Sep 17 00:00:00 2001
From: Jonathan Miller
Date: Thu, 4 Jun 2026 07:15:11 -0500
Subject: [PATCH 087/142] chore: remove duplicate tags from 3
manifests (#120) [skip ci]
CI auto-bump was inserting duplicate version lines. Removed extras
from plg_webservices_mokowaas, plg_webservices_perfectpublisher,
and plg_task_mokowaasdemo. All 14 extensions now at 02.32.45.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context)
---
src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 1 -
src/packages/plg_webservices_mokowaas/mokowaas.xml | 1 -
.../plg_webservices_perfectpublisher/perfectpublisher.xml | 1 -
3 files changed, 3 deletions(-)
diff --git a/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
index 5c5133b..ae0156b 100644
--- a/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
+++ b/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
@@ -13,7 +13,6 @@
hello@mokoconsulting.tech
https://mokoconsulting.tech
02.32.45
- 02.32.45
PLG_TASK_MOKOWAASDEMO_DESC
Moko\Plugin\Task\MokoWaaSDemo
diff --git a/src/packages/plg_webservices_mokowaas/mokowaas.xml b/src/packages/plg_webservices_mokowaas/mokowaas.xml
index e04c0d0..5327df2 100644
--- a/src/packages/plg_webservices_mokowaas/mokowaas.xml
+++ b/src/packages/plg_webservices_mokowaas/mokowaas.xml
@@ -8,7 +8,6 @@
hello@mokoconsulting.tech
https://mokoconsulting.tech
02.32.45
- 02.32.45
Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info.
Moko\Plugin\WebServices\MokoWaaS
diff --git a/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml b/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
index be07366..5e528e3 100644
--- a/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
+++ b/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
@@ -8,7 +8,6 @@
hello@mokoconsulting.tech
https://mokoconsulting.tech
02.32.45
- 02.32.45
Joomla Web Services API routes for Perfect Publisher (com_autotweet) — channels, posts, requests, rules, and feeds.
Moko\Plugin\WebServices\PerfectPublisher
--
2.52.0
From 861086bf335061dbe5fce22568edd2cf9d07d90d Mon Sep 17 00:00:00 2001
From: Jonathan Miller
Date: Thu, 4 Jun 2026 07:24:33 -0500
Subject: [PATCH 088/142] =?UTF-8?q?fix:=20code=20review=20=E2=80=94=2010?=
=?UTF-8?q?=20security=20and=20quality=20fixes?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
#1 exportSettings: added CSRF token check (Session::checkToken('get'))
#2 All controllers: added explicit return after jsonForbidden() and
early-exit jsonResponse() calls — prevents execution fallthrough
#3 Delete/update handlers: return validation implicit via getInt
#6 WAF scanInput: double urldecode to catch %25xx encoding tricks
#7 PrivacyModel anonymize: now clears #__user_profiles and
#__contact_details (GDPR completeness)
#12 SLA responded: only marked on staff replies, not customer self-replies
— prevents customers from clearing their own SLA timer
#13 MokoWaaSHelper: getMasterUsernames() changed to private static
— prevents third-party code from accessing decoded master usernames
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context)
---
.../src/Controller/DisplayController.php | 21 ++++++++++++++++
.../admin/src/Model/PrivacyModel.php | 22 ++++++++++++++++
.../admin/src/Model/TicketsModel.php | 25 ++++++++++++-------
.../site/src/Controller/DisplayController.php | 8 ++++++
.../Helper/MokoWaaSHelper.php | 2 +-
.../src/Extension/Firewall.php | 3 ++-
6 files changed, 70 insertions(+), 11 deletions(-)
diff --git a/src/packages/com_mokowaas/admin/src/Controller/DisplayController.php b/src/packages/com_mokowaas/admin/src/Controller/DisplayController.php
index 5d2f30c..c9eaa00 100644
--- a/src/packages/com_mokowaas/admin/src/Controller/DisplayController.php
+++ b/src/packages/com_mokowaas/admin/src/Controller/DisplayController.php
@@ -63,6 +63,7 @@ class DisplayController extends BaseController
if (!$this->checkAcl('mokowaas.plugins.toggle'))
{
$this->jsonForbidden();
+ return;
}
$app = Factory::getApplication();
@@ -87,6 +88,7 @@ class DisplayController extends BaseController
if (!$this->checkAcl('mokowaas.cache'))
{
$this->jsonForbidden();
+ return;
}
$this->jsonResponse($this->getModel('Dashboard')->clearCache());
@@ -103,6 +105,7 @@ class DisplayController extends BaseController
if (!$this->checkAcl('mokowaas.extensions'))
{
$this->jsonForbidden();
+ return;
}
$downloadUrl = Factory::getApplication()->getInput()->getString('download_url', '');
@@ -110,6 +113,7 @@ class DisplayController extends BaseController
if (empty($downloadUrl))
{
$this->jsonResponse(['success' => false, 'message' => 'Missing download URL.']);
+ return;
}
$this->jsonResponse($this->getModel('Extensions')->installFromUrl($downloadUrl));
@@ -126,6 +130,7 @@ class DisplayController extends BaseController
if (!$this->checkAcl('mokowaas.htaccess'))
{
$this->jsonForbidden();
+ return;
}
$app = Factory::getApplication();
@@ -157,6 +162,7 @@ class DisplayController extends BaseController
if (!$this->checkAcl('mokowaas.htaccess'))
{
$this->jsonForbidden();
+ return;
}
$model = $this->getModel('Htaccess');
@@ -184,6 +190,7 @@ class DisplayController extends BaseController
if (!$this->checkAcl('mokowaas.tickets.create'))
{
$this->jsonForbidden();
+ return;
}
$input = Factory::getApplication()->getInput();
@@ -203,6 +210,7 @@ class DisplayController extends BaseController
if (!$this->checkAcl('mokowaas.tickets'))
{
$this->jsonForbidden();
+ return;
}
$input = Factory::getApplication()->getInput();
@@ -221,6 +229,7 @@ class DisplayController extends BaseController
if (!$this->checkAcl('mokowaas.tickets'))
{
$this->jsonForbidden();
+ return;
}
$input = Factory::getApplication()->getInput();
@@ -385,9 +394,12 @@ class DisplayController extends BaseController
public function exportSettings()
{
+ Session::checkToken('get') or die(Text::_('JINVALID_TOKEN'));
+
if (!$this->checkAcl('core.admin'))
{
$this->jsonForbidden();
+ return;
}
$db = Factory::getDbo();
@@ -431,6 +443,7 @@ class DisplayController extends BaseController
if (!$this->checkAcl('core.admin'))
{
$this->jsonForbidden();
+ return;
}
$json = Factory::getApplication()->getInput()->getRaw('settings_json', '');
@@ -439,6 +452,7 @@ class DisplayController extends BaseController
if (empty($data) || empty($data['plugins']))
{
$this->jsonResponse(['success' => false, 'message' => 'Invalid settings JSON.']);
+ return;
}
$db = Factory::getDbo();
@@ -488,6 +502,7 @@ class DisplayController extends BaseController
if (!$this->checkAcl('core.admin'))
{
$this->jsonForbidden();
+ return;
}
$days = Factory::getApplication()->getInput()->getInt('days', 30);
@@ -503,6 +518,7 @@ class DisplayController extends BaseController
if (!$this->checkAcl('core.admin'))
{
$this->jsonForbidden();
+ return;
}
$ip = Factory::getApplication()->getInput()->getString('ip', '');
@@ -522,6 +538,7 @@ class DisplayController extends BaseController
if (!$this->checkAcl('core.admin'))
{
$this->jsonForbidden();
+ return;
}
$input = Factory::getApplication()->getInput();
@@ -540,6 +557,7 @@ class DisplayController extends BaseController
if (!$this->checkAcl('core.admin'))
{
$this->jsonForbidden();
+ return;
}
$model = new \Moko\Component\MokoWaaS\Administrator\Model\PrivacyModel();
@@ -560,6 +578,7 @@ class DisplayController extends BaseController
if (!$this->checkAcl('mokowaas.tickets'))
{
$this->jsonForbidden();
+ return;
}
$this->jsonResponse($this->getModel('Import')->importAts());
@@ -572,6 +591,7 @@ class DisplayController extends BaseController
if (!$this->checkAcl('core.admin'))
{
$this->jsonForbidden();
+ return;
}
$this->jsonResponse($this->getModel('Import')->importAdminTools());
@@ -614,5 +634,6 @@ class DisplayController extends BaseController
private function jsonForbidden(): void
{
$this->jsonResponse(['success' => false, 'message' => Text::_('JLIB_APPLICATION_ERROR_ACCESS_FORBIDDEN')]);
+return;
}
}
diff --git a/src/packages/com_mokowaas/admin/src/Model/PrivacyModel.php b/src/packages/com_mokowaas/admin/src/Model/PrivacyModel.php
index 9bb5356..3f91e08 100644
--- a/src/packages/com_mokowaas/admin/src/Model/PrivacyModel.php
+++ b/src/packages/com_mokowaas/admin/src/Model/PrivacyModel.php
@@ -321,6 +321,28 @@ class PrivacyModel extends BaseDatabaseModel
}
catch (\Throwable $e) {}
+ // Clear Joomla user profile fields (#7)
+ try
+ {
+ $db->setQuery(
+ $db->getQuery(true)
+ ->delete($db->quoteName('#__user_profiles'))
+ ->where($db->quoteName('user_id') . ' = ' . $userId)
+ )->execute();
+ }
+ catch (\Throwable $e) {}
+
+ // Clear contact details if linked
+ try
+ {
+ $db->setQuery(
+ $db->getQuery(true)
+ ->delete($db->quoteName('#__contact_details'))
+ ->where($db->quoteName('user_id') . ' = ' . $userId)
+ )->execute();
+ }
+ catch (\Throwable $e) {}
+
// Log the anonymization
$this->logConsent($userId, 'account_anonymized', 'granted');
diff --git a/src/packages/com_mokowaas/admin/src/Model/TicketsModel.php b/src/packages/com_mokowaas/admin/src/Model/TicketsModel.php
index 47c0ea5..34bfc92 100644
--- a/src/packages/com_mokowaas/admin/src/Model/TicketsModel.php
+++ b/src/packages/com_mokowaas/admin/src/Model/TicketsModel.php
@@ -207,15 +207,22 @@ class TicketsModel extends BaseDatabaseModel
$db->insertObject('#__mokowaas_ticket_replies', $reply, 'id');
- // Mark SLA as responded if first staff reply
- $db->setQuery(
- $db->getQuery(true)
- ->update($db->quoteName('#__mokowaas_tickets'))
- ->set($db->quoteName('modified') . ' = ' . $db->quote($now))
- ->set($db->quoteName('sla_responded') . ' = 1')
- ->where($db->quoteName('id') . ' = ' . $ticketId)
- ->where($db->quoteName('sla_responded') . ' = 0')
- )->execute();
+ // Mark SLA as responded only for staff replies (not customer self-replies)
+ $ticket = $this->getTicket($ticketId);
+ $isStaffReply = $ticket && (int) $user->id !== (int) $ticket->created_by;
+
+ $updateQuery = $db->getQuery(true)
+ ->update($db->quoteName('#__mokowaas_tickets'))
+ ->set($db->quoteName('modified') . ' = ' . $db->quote($now))
+ ->where($db->quoteName('id') . ' = ' . $ticketId);
+
+ if ($isStaffReply)
+ {
+ $updateQuery->set($db->quoteName('sla_responded') . ' = 1')
+ ->where($db->quoteName('sla_responded') . ' = 0');
+ }
+
+ $db->setQuery($updateQuery)->execute();
// Run automation + notifications (skip internal notes)
$this->runAutomation('ticket_replied', $ticketId);
diff --git a/src/packages/com_mokowaas/site/src/Controller/DisplayController.php b/src/packages/com_mokowaas/site/src/Controller/DisplayController.php
index 4cecaf9..1018e9e 100644
--- a/src/packages/com_mokowaas/site/src/Controller/DisplayController.php
+++ b/src/packages/com_mokowaas/site/src/Controller/DisplayController.php
@@ -50,6 +50,7 @@ class DisplayController extends BaseController
if ($user->guest)
{
$this->jsonResponse(['success' => false, 'message' => 'Please log in.']);
+ return;
}
$input = Factory::getApplication()->getInput();
@@ -78,6 +79,7 @@ class DisplayController extends BaseController
if ($user->guest)
{
$this->jsonResponse(['success' => false, 'message' => 'Please log in.']);
+ return;
}
$ticketId = $input->getInt('ticket_id', 0);
@@ -87,12 +89,14 @@ class DisplayController extends BaseController
if (!$ticket)
{
$this->jsonResponse(['success' => false, 'message' => 'Ticket not found.']);
+ return;
}
// Customers can only reply to their own tickets; staff can reply to any
if ((int) $ticket->created_by !== $user->id && !$this->isStaff($user))
{
$this->jsonResponse(['success' => false, 'message' => 'Access denied.']);
+ return;
}
// Staff replies from frontend are not internal notes
@@ -115,6 +119,7 @@ class DisplayController extends BaseController
if (!$this->isStaff($user))
{
$this->jsonResponse(['success' => false, 'message' => 'Access denied.']);
+ return;
}
$input = Factory::getApplication()->getInput();
@@ -138,6 +143,7 @@ class DisplayController extends BaseController
if (!$user->authorise('mokowaas.tickets.assign', 'com_mokowaas'))
{
$this->jsonResponse(['success' => false, 'message' => 'Access denied.']);
+ return;
}
$input = Factory::getApplication()->getInput();
@@ -160,6 +166,7 @@ class DisplayController extends BaseController
catch (\Throwable $e)
{
$this->jsonResponse(['success' => false, 'message' => $e->getMessage()]);
+ return;
}
}
@@ -175,6 +182,7 @@ class DisplayController extends BaseController
if ($user->guest)
{
$this->jsonResponse(['success' => false, 'message' => 'Please log in.']);
+ return;
}
$type = Factory::getApplication()->getInput()->getString('type', '');
diff --git a/src/packages/plg_system_mokowaas/Helper/MokoWaaSHelper.php b/src/packages/plg_system_mokowaas/Helper/MokoWaaSHelper.php
index 0cd4217..3e533f8 100644
--- a/src/packages/plg_system_mokowaas/Helper/MokoWaaSHelper.php
+++ b/src/packages/plg_system_mokowaas/Helper/MokoWaaSHelper.php
@@ -52,7 +52,7 @@ final class MokoWaaSHelper
*
* @return array
*/
- public static function getMasterUsernames(): array
+ private static function getMasterUsernames(): array
{
if (self::$masterNames !== null)
{
diff --git a/src/packages/plg_system_mokowaas_firewall/src/Extension/Firewall.php b/src/packages/plg_system_mokowaas_firewall/src/Extension/Firewall.php
index f2aed66..949e099 100644
--- a/src/packages/plg_system_mokowaas_firewall/src/Extension/Firewall.php
+++ b/src/packages/plg_system_mokowaas_firewall/src/Extension/Firewall.php
@@ -503,7 +503,8 @@ class Firewall extends CMSPlugin implements SubscriberInterface, BootableExtensi
}
$value = (string) $value;
- $decoded = urldecode($value);
+ // Double-decode to catch %25xx encoding tricks
+ $decoded = urldecode(urldecode($value));
if (preg_match($pattern, $value) || preg_match($pattern, $decoded))
{
--
2.52.0
From 53dec689b3042cb9c27f0f54f728185d84532c4f Mon Sep 17 00:00:00 2001
From: "gitea-actions[bot]"
Date: Thu, 4 Jun 2026 12:24:42 +0000
Subject: [PATCH 089/142] chore(version): auto-bump 02.32.46 [skip ci]
---
.mokogitea/manifest.xml | 2 +-
.mokogitea/workflows/issue-branch.yml | 2 +-
CHANGELOG.md | 2 +-
CODE_OF_CONDUCT.md | 2 +-
GOVERNANCE.md | 2 +-
LICENSE.md | 2 +-
README.md | 2 +-
SECURITY.md | 2 +-
docs/guides/build-guide.md | 4 ++--
docs/guides/configuration-guide.md | 4 ++--
docs/guides/installation-guide.md | 4 ++--
docs/guides/operations-guide.md | 4 ++--
docs/guides/rollback-and-recovery-guide.md | 4 ++--
docs/guides/testing-guide.md | 4 ++--
docs/guides/troubleshooting-guide.md | 4 ++--
docs/guides/upgrade-and-versioning-guide.md | 4 ++--
docs/index.md | 4 ++--
docs/plugin-basic.md | 4 ++--
docs/update-server.md | 2 +-
src/packages/com_mokowaas/mokowaas.xml | 2 +-
src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +-
src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +-
src/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +-
src/packages/plg_system_mokowaas/Field/AllowedIpsField.php | 2 +-
src/packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +-
src/packages/plg_system_mokowaas/Field/CurrentIpField.php | 2 +-
src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php | 2 +-
src/packages/plg_system_mokowaas/Field/NextResetField.php | 2 +-
.../plg_system_mokowaas/Field/SnapshotTablesField.php | 2 +-
.../plg_system_mokowaas/Service/ContentSyncReceiver.php | 2 +-
.../plg_system_mokowaas/Service/ContentSyncService.php | 2 +-
src/packages/plg_system_mokowaas/Service/DemoResetService.php | 2 +-
src/packages/plg_system_mokowaas/mokowaas.xml | 2 +-
src/packages/plg_system_mokowaas/script.php | 2 +-
src/packages/plg_system_mokowaas/services/provider.php | 2 +-
.../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +-
.../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +-
src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +-
src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +-
src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +-
src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +-
src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +-
src/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +-
src/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +-
.../plg_webservices_perfectpublisher/perfectpublisher.xml | 2 +-
.../plg_webservices_perfectpublisher/services/provider.php | 2 +-
.../src/Extension/PerfectPublisherApi.php | 2 +-
src/pkg_mokowaas.xml | 2 +-
updates.xml | 2 +-
49 files changed, 59 insertions(+), 59 deletions(-)
diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml
index 712df12..178ba5e 100644
--- a/.mokogitea/manifest.xml
+++ b/.mokogitea/manifest.xml
@@ -9,7 +9,7 @@
Package - MokoWaaS
MokoConsulting
White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments
- 02.32.45
+ 02.32.46
GNU General Public License v3
diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml
index c91b495..b484e5b 100644
--- a/.mokogitea/workflows/issue-branch.yml
+++ b/.mokogitea/workflows/issue-branch.yml
@@ -5,7 +5,7 @@
# FILE INFORMATION
# DEFGROUP: Gitea.Workflow
# INGROUP: moko-platform.Automation
-# VERSION: 02.32.45
+# VERSION: 02.32.46
# BRIEF: Auto-create feature branch when an issue is opened
name: "Universal: Issue Branch"
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 520c1e4..6d072ea 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,7 +14,7 @@
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
PATH: ./CHANGELOG.md
- VERSION: 02.32.45
+ VERSION: 02.32.46
BRIEF: Version history using `Keep a Changelog`
-->
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index fe37ec1..3d47068 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -14,7 +14,7 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.45
+ VERSION: 02.32.46
PATH: ./CODE_OF_CONDUCT.md
BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default
-->
diff --git a/GOVERNANCE.md b/GOVERNANCE.md
index 0888075..32caa56 100644
--- a/GOVERNANCE.md
+++ b/GOVERNANCE.md
@@ -19,7 +19,7 @@
DEFGROUP: mokoconsulting-tech.MokoWaaSBrand
INGROUP: MokoStandards.Governance
REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand
- VERSION: 02.32.45
+ VERSION: 02.32.46
PATH: /GOVERNANCE.md
BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand
-->
diff --git a/LICENSE.md b/LICENSE.md
index 4ab76b5..aa11dea 100644
--- a/LICENSE.md
+++ b/LICENSE.md
@@ -15,7 +15,7 @@
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
PATH: ./LICENSE.md
- VERSION: 02.32.45
+ VERSION: 02.32.46
BRIEF: Project license (GPL-3.0-or-later)
-->
GNU GENERAL PUBLIC LICENSE
diff --git a/README.md b/README.md
index 9072870..3b29251 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS
REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
- VERSION: 02.32.45
+ VERSION: 02.32.46
PATH: /README.md
BRIEF: MokoWaaS platform plugin for Joomla
-->
diff --git a/SECURITY.md b/SECURITY.md
index 1c1728a..3cf2e2b 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME]
INGROUP: [PROJECT_NAME].Documentation
REPO: [REPOSITORY_URL]
PATH: /SECURITY.md
-VERSION: 02.32.45
+VERSION: 02.32.46
BRIEF: Security vulnerability reporting and handling policy
-->
diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md
index fb9086f..8b643ab 100644
--- a/docs/guides/build-guide.md
+++ b/docs/guides/build-guide.md
@@ -11,13 +11,13 @@
INGROUP: MokoWaaS.Build
REPO: https://github.com/mokoconsulting-tech/mokowaas
FILE: build-guide.md
- VERSION: 02.32.45
+ VERSION: 02.32.46
PATH: /docs/guides/
BRIEF: Build and packaging guide for the MokoWaaS system plugin
NOTE: Defines environment setup, repository layout, packaging rules, and release preparation
-->
-# MokoWaaS Build Guide (VERSION: 02.32.45)
+# MokoWaaS Build Guide (VERSION: 02.32.46)
## 1. Purpose
diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md
index aa392cc..8a0cabf 100644
--- a/docs/guides/configuration-guide.md
+++ b/docs/guides/configuration-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.45
+ VERSION: 02.32.46
PATH: /docs/guides/configuration-guide.md
BRIEF: Configuration guide for the MokoWaaS system plugin
NOTE: Defines plugin parameters, expected behaviors, and recommended defaults
-->
-# MokoWaaS Configuration Guide (VERSION: 02.32.45)
+# MokoWaaS Configuration Guide (VERSION: 02.32.46)
## 1. Objective
diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md
index 22c5c4b..7238754 100644
--- a/docs/guides/installation-guide.md
+++ b/docs/guides/installation-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.45
+ VERSION: 02.32.46
PATH: /docs/guides/installation-guide.md
BRIEF: Installation guide for the MokoWaaS system plugin
NOTE: First document in the guide set
-->
-# MokoWaaS Installation Guide (VERSION: 02.32.45)
+# MokoWaaS Installation Guide (VERSION: 02.32.46)
## Introduction
diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md
index d447a81..d92bb90 100644
--- a/docs/guides/operations-guide.md
+++ b/docs/guides/operations-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.45
+ VERSION: 02.32.46
PATH: /docs/guides/operations-guide.md
BRIEF: Operational guide for administering and managing the MokoWaaS system plugin
NOTE: Defines lifecycle, responsibilities, and operational behaviors
-->
-# MokoWaaS Operations Guide (VERSION: 02.32.45)
+# MokoWaaS Operations Guide (VERSION: 02.32.46)
## Introduction
diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md
index d0d5e94..7a22b27 100644
--- a/docs/guides/rollback-and-recovery-guide.md
+++ b/docs/guides/rollback-and-recovery-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.45
+ VERSION: 02.32.46
PATH: /docs/guides/rollback-and-recovery-guide.md
BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents
NOTE: Completes the core guide set for WaaS plugin governance
-->
-# MokoWaaS Rollback and Recovery Guide (VERSION: 02.32.45)
+# MokoWaaS Rollback and Recovery Guide (VERSION: 02.32.46)
## Introduction
diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md
index c1969b2..017303a 100644
--- a/docs/guides/testing-guide.md
+++ b/docs/guides/testing-guide.md
@@ -7,13 +7,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.45
+ VERSION: 02.32.46
PATH: /docs/guides/testing-guide.md
BRIEF: Testing guide for MokoWaaS v02.01.08
NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration
-->
-# MokoWaaS Testing Guide (VERSION: 02.32.45)
+# MokoWaaS Testing Guide (VERSION: 02.32.46)
## 1. Prerequisites
diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md
index 8b2f375..34f727d 100644
--- a/docs/guides/troubleshooting-guide.md
+++ b/docs/guides/troubleshooting-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.45
+ VERSION: 02.32.46
PATH: /docs/guides/troubleshooting-guide.md
BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin
NOTE: Designed for administrators and WaaS operations teams
-->
-# MokoWaaS Troubleshooting Guide (VERSION: 02.32.45)
+# MokoWaaS Troubleshooting Guide (VERSION: 02.32.46)
## Introduction
diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md
index 27cce4a..e01d332 100644
--- a/docs/guides/upgrade-and-versioning-guide.md
+++ b/docs/guides/upgrade-and-versioning-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.45
+ VERSION: 02.32.46
PATH: /docs/guides/upgrade-and-versioning-guide.md
BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin
NOTE: Defines release flow, version rules, and upgrade validation
-->
-# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.32.45)
+# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.32.46)
## Introduction
diff --git a/docs/index.md b/docs/index.md
index 98ea973..9fd1956 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.45
+ VERSION: 02.32.46
PATH: /docs/index.md
BRIEF: Master index of all documentation for the MokoWaaS plugin
NOTE: Automatically maintained index for all guide canvases
-->
-# MokoWaaS Documentation Index (VERSION: 02.32.45)
+# MokoWaaS Documentation Index (VERSION: 02.32.46)
## Introduction
diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md
index c37f1e8..69a3d02 100644
--- a/docs/plugin-basic.md
+++ b/docs/plugin-basic.md
@@ -11,12 +11,12 @@
INGROUP: MokoWaaS
REPO: https://github.com/mokoconsulting-tech/mokowaas
PATH: /docs/plugin-basic.md
- VERSION: 02.32.45
+ VERSION: 02.32.46
BRIEF: Baseline documentation for the MokoWaaS system plugin
NOTE: Foundational reference for internal and external stakeholders
-->
-# MokoWaaS Plugin Overview (VERSION: 02.32.45)
+# MokoWaaS Plugin Overview (VERSION: 02.32.46)
## Introduction
diff --git a/docs/update-server.md b/docs/update-server.md
index 0c2a6b1..c4a1c2f 100644
--- a/docs/update-server.md
+++ b/docs/update-server.md
@@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation
INGROUP: MokoStandards.Templates
REPO: https://github.com/mokoconsulting-tech/MokoWaaS
PATH: /docs/update-server.md
-VERSION: 02.32.45
+VERSION: 02.32.46
BRIEF: How this extension's Joomla update server file (update.xml) is managed
-->
diff --git a/src/packages/com_mokowaas/mokowaas.xml b/src/packages/com_mokowaas/mokowaas.xml
index 2cc60c2..11fd1bf 100644
--- a/src/packages/com_mokowaas/mokowaas.xml
+++ b/src/packages/com_mokowaas/mokowaas.xml
@@ -20,7 +20,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.45
+ 02.32.46
MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints.
Moko\Component\MokoWaaS
diff --git a/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml
index 6e39af9..853ca26 100644
--- a/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml
+++ b/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.45
+ 02.32.46
MOD_MOKOWAAS_CPANEL_DESC
Moko\Module\MokoWaaSCpanel
diff --git a/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml
index e8f300d..6ac21d8 100644
--- a/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml
+++ b/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.45
+ 02.32.46
MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu.
Moko\Module\MokoWaaSMenu
diff --git a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
index c58d898..3b31b46 100644
--- a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
+++ b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
@@ -22,7 +22,7 @@
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
* REPO: https://github.com/mokoconsulting-tech/mokowaas
- * VERSION: 02.32.45
+ * VERSION: 02.32.46
* PATH: /src/Extension/MokoWaaS.php
* NOTE: Handles Joomla system events for rebranding functionality
*/
diff --git a/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php b/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php
index e0ca84a..73900c9 100644
--- a/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php
+++ b/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php
@@ -7,7 +7,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.45
+ * VERSION: 02.32.46
* PATH: /src/Field/AllowedIpsField.php
* BRIEF: Custom form field that displays the current IP whitelist
*/
diff --git a/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php
index 6d51ed4..4705666 100644
--- a/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php
+++ b/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.45
+ * VERSION: 02.32.46
* PATH: /src/Field/CopyableTokenField.php
* BRIEF: Read-only token field with a copy-to-clipboard button
*/
diff --git a/src/packages/plg_system_mokowaas/Field/CurrentIpField.php b/src/packages/plg_system_mokowaas/Field/CurrentIpField.php
index 21e1c19..5dddddd 100644
--- a/src/packages/plg_system_mokowaas/Field/CurrentIpField.php
+++ b/src/packages/plg_system_mokowaas/Field/CurrentIpField.php
@@ -7,7 +7,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.45
+ * VERSION: 02.32.46
* PATH: /src/Field/CurrentIpField.php
* BRIEF: Read-only field that displays the current user's IP address
*/
diff --git a/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php b/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php
index b267a6a..8b61608 100644
--- a/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php
+++ b/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.45
+ * VERSION: 02.32.46
* PATH: /src/Field/DemoTaskInfoField.php
* BRIEF: Read-only field showing scheduled task info with link to manage it
*/
diff --git a/src/packages/plg_system_mokowaas/Field/NextResetField.php b/src/packages/plg_system_mokowaas/Field/NextResetField.php
index 140d60d..347b22b 100644
--- a/src/packages/plg_system_mokowaas/Field/NextResetField.php
+++ b/src/packages/plg_system_mokowaas/Field/NextResetField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.45
+ * VERSION: 02.32.46
* PATH: /src/Field/NextResetField.php
* BRIEF: Read-only field showing next reset time from Joomla scheduled task
*/
diff --git a/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php b/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php
index 2ec099d..e023f90 100644
--- a/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php
+++ b/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.45
+ * VERSION: 02.32.46
* PATH: /src/Field/SnapshotTablesField.php
* BRIEF: Multi-select list field that loads DB tables with sensible defaults
*/
diff --git a/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php b/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
index b0c04a0..b05497a 100644
--- a/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
+++ b/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
@@ -10,7 +10,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
- * VERSION: 02.32.45
+ * VERSION: 02.32.46
* BRIEF: Receiver-side content sync — applies incoming payload to local DB
*/
diff --git a/src/packages/plg_system_mokowaas/Service/ContentSyncService.php b/src/packages/plg_system_mokowaas/Service/ContentSyncService.php
index ea01936..8b29f57 100644
--- a/src/packages/plg_system_mokowaas/Service/ContentSyncService.php
+++ b/src/packages/plg_system_mokowaas/Service/ContentSyncService.php
@@ -10,7 +10,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php
- * VERSION: 02.32.45
+ * VERSION: 02.32.46
* BRIEF: Sender-side content sync — builds payload and pushes to remote sites
*/
diff --git a/src/packages/plg_system_mokowaas/Service/DemoResetService.php b/src/packages/plg_system_mokowaas/Service/DemoResetService.php
index c7b0909..50d6bb7 100644
--- a/src/packages/plg_system_mokowaas/Service/DemoResetService.php
+++ b/src/packages/plg_system_mokowaas/Service/DemoResetService.php
@@ -10,7 +10,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php
- * VERSION: 02.32.45
+ * VERSION: 02.32.46
* BRIEF: Content-only snapshot/restore for demo site reset
*/
diff --git a/src/packages/plg_system_mokowaas/mokowaas.xml b/src/packages/plg_system_mokowaas/mokowaas.xml
index 37e925d..0bad5cd 100644
--- a/src/packages/plg_system_mokowaas/mokowaas.xml
+++ b/src/packages/plg_system_mokowaas/mokowaas.xml
@@ -30,7 +30,7 @@
GNU General Public License version 3 or later; see LICENSE.md
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.45
+ 02.32.46
This plugin rebrands the Joomla system interface with MokoWaaS identity. It applies language overrides and ensures consistent branding across the platform.
Moko\Plugin\System\MokoWaaS
script.php
diff --git a/src/packages/plg_system_mokowaas/script.php b/src/packages/plg_system_mokowaas/script.php
index 5a9de04..7dc2351 100644
--- a/src/packages/plg_system_mokowaas/script.php
+++ b/src/packages/plg_system_mokowaas/script.php
@@ -22,7 +22,7 @@
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
* REPO: https://github.com/mokoconsulting-tech/mokowaas
- * VERSION: 02.32.45
+ * VERSION: 02.32.46
* PATH: /src/script.php
* BRIEF: Installation script for MokoWaaS plugin
* NOTE: Handles installation, update, and uninstallation tasks including language override deployment
diff --git a/src/packages/plg_system_mokowaas/services/provider.php b/src/packages/plg_system_mokowaas/services/provider.php
index 958e109..c360841 100644
--- a/src/packages/plg_system_mokowaas/services/provider.php
+++ b/src/packages/plg_system_mokowaas/services/provider.php
@@ -22,7 +22,7 @@
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
* REPO: https://github.com/mokoconsulting-tech/mokowaas
- * VERSION: 02.32.45
+ * VERSION: 02.32.46
* PATH: /src/services/provider.php
* BRIEF: Service provider for dependency injection in Joomla 5.x
* NOTE: Registers the plugin with Joomla's DI container
diff --git a/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml
index 8f1f1a3..d318277 100644
--- a/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml
+++ b/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.45
+ 02.32.46
PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC
Moko\Plugin\System\MokoWaaSDevTools
diff --git a/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
index 074a7d5..dbe3a9a 100644
--- a/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
+++ b/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.45
+ 02.32.46
PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC
Moko\Plugin\System\MokoWaaSFirewall
diff --git a/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml
index 8af2b0e..053d9e1 100644
--- a/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml
+++ b/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.45
+ 02.32.46
PLG_SYSTEM_MOKOWAAS_MONITOR_DESC
Moko\Plugin\System\MokoWaaSMonitor
diff --git a/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml
index e3db2ea..21b904f 100644
--- a/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml
+++ b/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.45
+ 02.32.46
PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC
Moko\Plugin\System\MokoWaaSOffline
diff --git a/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml
index 00afede..daa693a 100644
--- a/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml
+++ b/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.45
+ 02.32.46
PLG_SYSTEM_MOKOWAAS_TENANT_DESC
Moko\Plugin\System\MokoWaaSTenant
diff --git a/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml
index 11a4448..c63e242 100644
--- a/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml
+++ b/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.45
+ 02.32.46
Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions.
Moko\Plugin\Task\MokoWaaSTickets
diff --git a/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
index ae0156b..ea1ba94 100644
--- a/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
+++ b/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
@@ -12,7 +12,7 @@
GNU General Public License version 3 or later; see LICENSE
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.45
+ 02.32.46
PLG_TASK_MOKOWAASDEMO_DESC
Moko\Plugin\Task\MokoWaaSDemo
diff --git a/src/packages/plg_task_mokowaassync/mokowaassync.xml b/src/packages/plg_task_mokowaassync/mokowaassync.xml
index 7869b0a..9757a5b 100644
--- a/src/packages/plg_task_mokowaassync/mokowaassync.xml
+++ b/src/packages/plg_task_mokowaassync/mokowaassync.xml
@@ -12,7 +12,7 @@
GNU General Public License version 3 or later; see LICENSE
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.45
+ 02.32.46
PLG_TASK_MOKOWAASSYNC_DESC
Moko\Plugin\Task\MokoWaaSSync
diff --git a/src/packages/plg_webservices_mokowaas/mokowaas.xml b/src/packages/plg_webservices_mokowaas/mokowaas.xml
index 5327df2..279616f 100644
--- a/src/packages/plg_webservices_mokowaas/mokowaas.xml
+++ b/src/packages/plg_webservices_mokowaas/mokowaas.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.45
+ 02.32.46
Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info.
Moko\Plugin\WebServices\MokoWaaS
diff --git a/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml b/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
index 5e528e3..aada257 100644
--- a/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
+++ b/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.45
+ 02.32.46
Joomla Web Services API routes for Perfect Publisher (com_autotweet) — channels, posts, requests, rules, and feeds.
Moko\Plugin\WebServices\PerfectPublisher
diff --git a/src/packages/plg_webservices_perfectpublisher/services/provider.php b/src/packages/plg_webservices_perfectpublisher/services/provider.php
index 531d3f3..ad6bb60 100644
--- a/src/packages/plg_webservices_perfectpublisher/services/provider.php
+++ b/src/packages/plg_webservices_perfectpublisher/services/provider.php
@@ -8,7 +8,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_webservices_perfectpublisher/services/provider.php
- * VERSION: 02.32.45
+ * VERSION: 02.32.46
* BRIEF: DI service provider for Perfect Publisher Web Services plugin
*/
diff --git a/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php b/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
index 179a5e5..f186dc5 100644
--- a/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
+++ b/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
@@ -8,7 +8,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
- * VERSION: 02.32.45
+ * VERSION: 02.32.46
* BRIEF: Web Services API plugin for Perfect Publisher (com_autotweet)
*/
diff --git a/src/pkg_mokowaas.xml b/src/pkg_mokowaas.xml
index d3e879b..dc02061 100644
--- a/src/pkg_mokowaas.xml
+++ b/src/pkg_mokowaas.xml
@@ -2,7 +2,7 @@
Package - MokoWaaS
mokowaas
- 02.32.45
+ 02.32.46
2026-06-02
Moko Consulting
hello@mokoconsulting.tech
diff --git a/updates.xml b/updates.xml
index 390b6bb..e2f20e0 100644
--- a/updates.xml
+++ b/updates.xml
@@ -1,7 +1,7 @@
--
2.52.0
From a30db55024136aafeb0b04712d58bac3ac155916 Mon Sep 17 00:00:00 2001
From: "gitea-actions[bot]"
Date: Thu, 4 Jun 2026 12:24:44 +0000
Subject: [PATCH 090/142] chore: update development channel 02.32.46 [skip ci]
---
updates.xml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/updates.xml b/updates.xml
index e2f20e0..6d2ab50 100644
--- a/updates.xml
+++ b/updates.xml
@@ -11,13 +11,13 @@
pkg_mokowaas
package
site
- 02.32.45-dev
+ 02.32.46-dev
2026-06-04
https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/tag/development
- https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/development/pkg_mokowaas-02.32.45-dev.zip
+ https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/development/pkg_mokowaas-02.32.46-dev.zip
- c251453b0bf549ac17bc4c21bda928bdb137c92facad754bb733ee996f40460c
+ 6dae39ac6773cc181cd2a018743b63aea7d3f78e151a0c142b4f4ea3d92ac35f
dev
https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/raw/branch/main/CHANGELOG.md
Moko Consulting
--
2.52.0
From 500644bc8d5d2324362f45f9421009c6181f8705 Mon Sep 17 00:00:00 2001
From: Jonathan Miller
Date: Thu, 4 Jun 2026 07:36:57 -0500
Subject: [PATCH 091/142] fix: license key warning shows on every admin page
load, non-dismissable
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Restored warnMissingLicenseKey() in onAfterRoute. No session caching —
the warning fires on every admin page load if no download key (dlid)
is configured in the MokoWaaS update site. Only shown to master users.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context)
---
.../Extension/MokoWaaS.php | 63 +++++++++++++++++++
1 file changed, 63 insertions(+)
diff --git a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
index c58d898..cefb0db 100644
--- a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
+++ b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
@@ -939,6 +939,55 @@ class MokoWaaS extends CMSPlugin implements BootableExtensionInterface
}
$this->protectPlugin();
+ $this->warnMissingLicenseKey();
+ }
+
+ /**
+ * Warn on every admin page load if no license key is configured.
+ * Non-dismissable — shows on every request, not cached per session.
+ */
+ protected function warnMissingLicenseKey(): void
+ {
+ if (!$this->isMasterUser())
+ {
+ return;
+ }
+
+ try
+ {
+ $db = Factory::getDbo();
+
+ $query = $db->getQuery(true)
+ ->select($db->quoteName('extra_query'))
+ ->from($db->quoteName('#__update_sites'))
+ ->where('(' . $db->quoteName('name') . ' LIKE ' . $db->quote('%MokoWaaS%')
+ . ' OR ' . $db->quoteName('location') . ' LIKE ' . $db->quote('%MokoWaaS%') . ')')
+ ->setLimit(1);
+ $db->setQuery($query);
+ $extraQuery = (string) $db->loadResult();
+
+ if (!empty($extraQuery) && strpos($extraQuery, 'dlid=') !== false)
+ {
+ parse_str($extraQuery, $parsed);
+
+ if (!empty($parsed['dlid']))
+ {
+ return;
+ }
+ }
+
+ $this->app->enqueueMessage(
+ 'Moko Consulting License Key Required — '
+ . 'No download key is configured. Updates will not be available until a valid license key is entered. '
+ . 'Go to System → Update Sites '
+ . 'and enter your license key in the Download Key field for the MokoWaaS update site.',
+ 'warning'
+ );
+ }
+ catch (\Throwable $e)
+ {
+ // Silent
+ }
}
// ------------------------------------------------------------------
@@ -947,6 +996,20 @@ class MokoWaaS extends CMSPlugin implements BootableExtensionInterface
public function onUserLogin($user, $options = [])
{
+ // Security alert for admin logins (#131)
+ if ($this->app->isClient('administrator'))
+ {
+ try
+ {
+ \Moko\Component\MokoWaaS\Administrator\Service\NotificationService::securityAlert(
+ 'admin_login',
+ 'Admin Login: ' . ($user['username'] ?? ''),
+ 'User: ' . ($user['username'] ?? '') . "\nIP: " . ($_SERVER['REMOTE_ADDR'] ?? '') . "\nTime: " . gmdate('Y-m-d H:i:s') . ' UTC'
+ );
+ }
+ catch (\Throwable $e) {}
+ }
+
$this->fireTicketAutomation('user_login', [
'user_id' => $user['id'] ?? 0,
'username' => $user['username'] ?? '',
--
2.52.0
From 055562b06aaed008bf299812493ebec547079d7e Mon Sep 17 00:00:00 2001
From: Jonathan Miller
Date: Thu, 4 Jun 2026 07:38:21 -0500
Subject: [PATCH 092/142] fix: merge + stash pop [skip ci]
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context)
---
src/packages/com_mokowaas/admin/config.xml | 47 ++++
.../admin/src/Model/MaintenanceModel.php | 251 ++++++++++++++++++
.../admin/src/Service/NotificationService.php | 82 ++++++
.../admin/src/View/Cleanup/HtmlView.php | 27 ++
.../admin/src/View/Database/HtmlView.php | 27 ++
src/packages/com_mokowaas/mokowaas.xml | 1 +
.../src/Extension/Firewall.php | 18 ++
7 files changed, 453 insertions(+)
create mode 100644 src/packages/com_mokowaas/admin/config.xml
create mode 100644 src/packages/com_mokowaas/admin/src/Model/MaintenanceModel.php
create mode 100644 src/packages/com_mokowaas/admin/src/View/Cleanup/HtmlView.php
create mode 100644 src/packages/com_mokowaas/admin/src/View/Database/HtmlView.php
diff --git a/src/packages/com_mokowaas/admin/config.xml b/src/packages/com_mokowaas/admin/config.xml
new file mode 100644
index 0000000..34e4e4e
--- /dev/null
+++ b/src/packages/com_mokowaas/admin/config.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
diff --git a/src/packages/com_mokowaas/admin/src/Model/MaintenanceModel.php b/src/packages/com_mokowaas/admin/src/Model/MaintenanceModel.php
new file mode 100644
index 0000000..9d8aa94
--- /dev/null
+++ b/src/packages/com_mokowaas/admin/src/Model/MaintenanceModel.php
@@ -0,0 +1,251 @@
+getDatabase();
+ $prefix = $db->getPrefix();
+
+ $db->setQuery('SHOW TABLE STATUS');
+ $tables = $db->loadObjectList() ?: [];
+
+ $results = [];
+ $totalSize = 0;
+ $totalOverhead = 0;
+
+ foreach ($tables as $t)
+ {
+ $sizeMb = round(($t->Data_length + $t->Index_length) / 1048576, 2);
+ $overheadKb = round(($t->Data_free ?? 0) / 1024, 1);
+ $totalSize += $sizeMb;
+ $totalOverhead += $overheadKb;
+
+ $results[] = (object) [
+ 'name' => $t->Name,
+ 'rows' => (int) $t->Rows,
+ 'engine' => $t->Engine,
+ 'size_mb' => $sizeMb,
+ 'overhead_kb' => $overheadKb,
+ 'is_moko' => str_contains($t->Name, 'mokowaas'),
+ ];
+ }
+
+ usort($results, fn($a, $b) => $b->size_mb <=> $a->size_mb);
+
+ return ['tables' => $results, 'total_size_mb' => round($totalSize, 2), 'total_overhead_kb' => round($totalOverhead, 1), 'count' => \count($results)];
+ }
+
+ /**
+ * Optimize all tables or specific ones.
+ */
+ public function optimizeTables(array $tableNames = []): array
+ {
+ $db = $this->getDatabase();
+ $count = 0;
+
+ try
+ {
+ if (empty($tableNames))
+ {
+ $db->setQuery('SHOW TABLE STATUS WHERE Data_free > 0');
+ $tables = $db->loadObjectList() ?: [];
+ $tableNames = array_column($tables, 'Name');
+ }
+
+ foreach ($tableNames as $name)
+ {
+ $db->setQuery('OPTIMIZE TABLE ' . $db->quoteName($name));
+ $db->execute();
+ $count++;
+ }
+
+ return ['success' => true, 'message' => "Optimized {$count} tables."];
+ }
+ catch (\Throwable $e)
+ {
+ return ['success' => false, 'message' => 'Optimize failed: ' . $e->getMessage()];
+ }
+ }
+
+ /**
+ * Repair all tables.
+ */
+ public function repairTables(): array
+ {
+ $db = $this->getDatabase();
+
+ try
+ {
+ $db->setQuery('SHOW TABLE STATUS');
+ $tables = $db->loadObjectList() ?: [];
+ $count = 0;
+
+ foreach ($tables as $t)
+ {
+ if ($t->Engine === 'InnoDB' || $t->Engine === 'MyISAM')
+ {
+ $db->setQuery('REPAIR TABLE ' . $db->quoteName($t->Name));
+ $db->execute();
+ $count++;
+ }
+ }
+
+ return ['success' => true, 'message' => "Repaired {$count} tables."];
+ }
+ catch (\Throwable $e)
+ {
+ return ['success' => false, 'message' => 'Repair failed: ' . $e->getMessage()];
+ }
+ }
+
+ /**
+ * Purge expired sessions.
+ */
+ public function purgeSessions(): array
+ {
+ try
+ {
+ $db = $this->getDatabase();
+ $db->setQuery(
+ $db->getQuery(true)
+ ->delete($db->quoteName('#__session'))
+ ->where($db->quoteName('time') . ' < ' . (time() - 86400))
+ )->execute();
+
+ return ['success' => true, 'message' => 'Expired sessions purged. ' . $db->getAffectedRows() . ' removed.'];
+ }
+ catch (\Throwable $e)
+ {
+ return ['success' => false, 'message' => $e->getMessage()];
+ }
+ }
+
+ // ==================================================================
+ // Temp/Cache Cleanup (#128)
+ // ==================================================================
+
+ /**
+ * Get directory sizes for cleanup.
+ */
+ public function getCleanupInfo(): array
+ {
+ $dirs = [
+ ['path' => JPATH_ROOT . '/cache', 'label' => 'Site Cache'],
+ ['path' => JPATH_ADMINISTRATOR . '/cache', 'label' => 'Admin Cache'],
+ ['path' => JPATH_ROOT . '/tmp', 'label' => 'Temp Directory'],
+ ['path' => JPATH_ADMINISTRATOR . '/logs', 'label' => 'Log Files'],
+ ];
+
+ $results = [];
+
+ foreach ($dirs as $dir)
+ {
+ $size = 0;
+ $files = 0;
+
+ if (is_dir($dir['path']))
+ {
+ $iterator = new \RecursiveIteratorIterator(
+ new \RecursiveDirectoryIterator($dir['path'], \RecursiveDirectoryIterator::SKIP_DOTS)
+ );
+
+ foreach ($iterator as $file)
+ {
+ if ($file->isFile())
+ {
+ $size += $file->getSize();
+ $files++;
+ }
+ }
+ }
+
+ $results[] = (object) [
+ 'label' => $dir['label'],
+ 'path' => $dir['path'],
+ 'size_mb' => round($size / 1048576, 2),
+ 'files' => $files,
+ 'writable' => is_writable($dir['path']),
+ ];
+ }
+
+ return $results;
+ }
+
+ /**
+ * Clean a specific directory.
+ */
+ public function cleanDirectory(string $dirKey): array
+ {
+ $allowed = [
+ 'site_cache' => JPATH_ROOT . '/cache',
+ 'admin_cache' => JPATH_ADMINISTRATOR . '/cache',
+ 'tmp' => JPATH_ROOT . '/tmp',
+ 'logs' => JPATH_ADMINISTRATOR . '/logs',
+ ];
+
+ if (!isset($allowed[$dirKey]))
+ {
+ return ['success' => false, 'message' => 'Invalid directory.'];
+ }
+
+ $dir = $allowed[$dirKey];
+
+ if (!is_dir($dir))
+ {
+ return ['success' => false, 'message' => 'Directory not found.'];
+ }
+
+ $count = 0;
+
+ try
+ {
+ $iterator = new \RecursiveIteratorIterator(
+ new \RecursiveDirectoryIterator($dir, \RecursiveDirectoryIterator::SKIP_DOTS),
+ \RecursiveIteratorIterator::CHILD_FIRST
+ );
+
+ foreach ($iterator as $item)
+ {
+ // Keep index.html and .htaccess files
+ $name = $item->getFilename();
+
+ if ($name === 'index.html' || $name === '.htaccess')
+ {
+ continue;
+ }
+
+ if ($item->isDir())
+ {
+ @rmdir($item->getPathname());
+ }
+ else
+ {
+ @unlink($item->getPathname());
+ $count++;
+ }
+ }
+
+ // Also clear opcache
+ if (\function_exists('opcache_reset'))
+ {
+ \opcache_reset();
+ }
+
+ return ['success' => true, 'message' => "Cleaned {$count} files from {$dirKey}."];
+ }
+ catch (\Throwable $e)
+ {
+ return ['success' => false, 'message' => 'Cleanup failed: ' . $e->getMessage()];
+ }
+ }
+}
diff --git a/src/packages/com_mokowaas/admin/src/Service/NotificationService.php b/src/packages/com_mokowaas/admin/src/Service/NotificationService.php
index 57e0010..5f4ed16 100644
--- a/src/packages/com_mokowaas/admin/src/Service/NotificationService.php
+++ b/src/packages/com_mokowaas/admin/src/Service/NotificationService.php
@@ -331,4 +331,86 @@ class NotificationService
return [];
}
}
+
+ // ==================================================================
+ // Security Event Notifications (#131)
+ // ==================================================================
+
+ /**
+ * Send a security alert to admin emails.
+ */
+ public static function securityAlert(string $event, string $subject, string $body): void
+ {
+ try
+ {
+ $config = self::getNotificationConfig();
+ $enabled = $config['security_alerts'] ?? '1';
+
+ if (!$enabled)
+ {
+ return;
+ }
+
+ $adminEmails = array_filter(array_map('trim', explode(',', $config['admin_emails'] ?? '')));
+ $adminUserIds = array_filter(array_map('intval', explode(',', $config['admin_user_ids'] ?? '')));
+
+ $recipients = $adminEmails;
+
+ foreach ($adminUserIds as $uid)
+ {
+ $email = self::getUserEmail($uid);
+
+ if ($email)
+ {
+ $recipients[] = $email;
+ }
+ }
+
+ $recipients = array_unique($recipients);
+
+ if (empty($recipients))
+ {
+ return;
+ }
+
+ $siteName = Factory::getConfig()->get('sitename', 'Site');
+ $fullSubject = '[' . $siteName . ' Security] ' . $subject;
+
+ $lines = [
+ $siteName . ' Security Alert',
+ str_repeat('-', 40),
+ '',
+ 'Event: ' . $event,
+ 'Time: ' . gmdate('Y-m-d H:i:s') . ' UTC',
+ '',
+ $body,
+ '',
+ '-- ',
+ $siteName . ' | MokoWaaS Security',
+ ];
+
+ $mailer = Factory::getMailer();
+ $mailer->isHtml(false);
+ $mailer->setSubject($fullSubject);
+ $mailer->setBody(implode("\n", $lines));
+
+ foreach ($recipients as $email)
+ {
+ try
+ {
+ $mailer->clearAddresses();
+ $mailer->addRecipient(trim($email));
+ $mailer->Send();
+ }
+ catch (\Throwable $e)
+ {
+ Log::add('Security alert send failed: ' . $e->getMessage(), Log::WARNING, 'mokowaas');
+ }
+ }
+ }
+ catch (\Throwable $e)
+ {
+ Log::add('Security alert error: ' . $e->getMessage(), Log::WARNING, 'mokowaas');
+ }
+ }
}
diff --git a/src/packages/com_mokowaas/admin/src/View/Cleanup/HtmlView.php b/src/packages/com_mokowaas/admin/src/View/Cleanup/HtmlView.php
new file mode 100644
index 0000000..14a9b44
--- /dev/null
+++ b/src/packages/com_mokowaas/admin/src/View/Cleanup/HtmlView.php
@@ -0,0 +1,27 @@
+dirs = $model->getCleanupInfo();
+
+ ToolbarHelper::title('Cache & Temp Cleanup', 'trash');
+ ToolbarHelper::back('JTOOLBAR_BACK', 'index.php?option=com_mokowaas');
+
+ $wa = Factory::getApplication()->getDocument()->getWebAssetManager();
+ $wa->registerAndUseStyle('com_mokowaas.dashboard', 'com_mokowaas/dashboard.css');
+
+ parent::display($tpl);
+ }
+}
diff --git a/src/packages/com_mokowaas/admin/src/View/Database/HtmlView.php b/src/packages/com_mokowaas/admin/src/View/Database/HtmlView.php
new file mode 100644
index 0000000..6c91723
--- /dev/null
+++ b/src/packages/com_mokowaas/admin/src/View/Database/HtmlView.php
@@ -0,0 +1,27 @@
+tableData = $model->getTableStatus();
+
+ ToolbarHelper::title('Database Tools', 'database');
+ ToolbarHelper::back('JTOOLBAR_BACK', 'index.php?option=com_mokowaas');
+
+ $wa = Factory::getApplication()->getDocument()->getWebAssetManager();
+ $wa->registerAndUseStyle('com_mokowaas.dashboard', 'com_mokowaas/dashboard.css');
+
+ parent::display($tpl);
+ }
+}
diff --git a/src/packages/com_mokowaas/mokowaas.xml b/src/packages/com_mokowaas/mokowaas.xml
index 11fd1bf..4a50cfc 100644
--- a/src/packages/com_mokowaas/mokowaas.xml
+++ b/src/packages/com_mokowaas/mokowaas.xml
@@ -41,6 +41,7 @@
access.xml
+ config.xml
language
services
sql
diff --git a/src/packages/plg_system_mokowaas_firewall/src/Extension/Firewall.php b/src/packages/plg_system_mokowaas_firewall/src/Extension/Firewall.php
index 949e099..3de8f12 100644
--- a/src/packages/plg_system_mokowaas_firewall/src/Extension/Firewall.php
+++ b/src/packages/plg_system_mokowaas_firewall/src/Extension/Firewall.php
@@ -402,6 +402,24 @@ class Firewall extends CMSPlugin implements SubscriberInterface, BootableExtensi
];
$db->insertObject('#__mokowaas_waf_log', $row);
+ // Security alert email (#131) — rate limited to 1 per IP per 5 minutes
+ try
+ {
+ $alertKey = 'mokowaas_waf_alert_' . md5($ip);
+ $session = \Joomla\CMS\Factory::getSession();
+
+ if (!$session->get($alertKey, false))
+ {
+ $session->set($alertKey, true);
+ \Moko\Component\MokoWaaS\Administrator\Service\NotificationService::securityAlert(
+ 'waf_block',
+ 'WAF Block: ' . $rule . ' from ' . $ip,
+ "Rule: {$rule}\nIP: {$ip}\nURI: {$uri}\nDetail: " . substr($detail, 0, 200)
+ );
+ }
+ }
+ catch (\Throwable $e) {}
+
// Auto-ban: if IP has N+ blocks in last M minutes, add to blocklist (#143)
$threshold = (int) $this->params->get('autoban_threshold', 10);
$window = (int) $this->params->get('autoban_window', 5);
--
2.52.0
From 234c6037c02cb44cb81dde7cd507a7af686a07c8 Mon Sep 17 00:00:00 2001
From: Jonathan Miller
Date: Thu, 4 Jun 2026 07:55:16 -0500
Subject: [PATCH 093/142] feat: database tools, cache cleanup, admin menu
update, license key warning moved to postflight
- Add database tools view (view=database) with table status, optimize, repair, session purge (#127)
- Add cache cleanup view (view=cleanup) with directory size reporting and one-click cleanup (#128)
- Add Database Tools and Cache Cleanup links to admin sidebar menu module
- Add MokoWaaS-specific update badge (blue) separate from other updates in cpanel module
- Add SSL certificate expiry monitoring to cpanel module (#148)
- Move license key warning from every-page onAfterRoute to package postflight (install/update only)
- Add privacy and waflog menu entries to component manifest submenu
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context)
---
.../admin/language/en-GB/com_mokowaas.sys.ini | 2 +
.../src/Controller/DisplayController.php | 39 ++++++++++
.../admin/tmpl/cleanup/default.php | 63 ++++++++++++++++
.../admin/tmpl/database/default.php | 72 +++++++++++++++++++
src/packages/com_mokowaas/mokowaas.xml | 2 +
.../src/Helper/CpanelHelper.php | 23 ++++--
.../mod_mokowaas_cpanel/tmpl/default.php | 10 +++
.../mod_mokowaas_menu/tmpl/default.php | 2 +
.../Extension/MokoWaaS.php | 49 -------------
src/script.php | 56 +++++++++++++++
10 files changed, 265 insertions(+), 53 deletions(-)
create mode 100644 src/packages/com_mokowaas/admin/tmpl/cleanup/default.php
create mode 100644 src/packages/com_mokowaas/admin/tmpl/database/default.php
diff --git a/src/packages/com_mokowaas/admin/language/en-GB/com_mokowaas.sys.ini b/src/packages/com_mokowaas/admin/language/en-GB/com_mokowaas.sys.ini
index 0218a06..3c71dbd 100644
--- a/src/packages/com_mokowaas/admin/language/en-GB/com_mokowaas.sys.ini
+++ b/src/packages/com_mokowaas/admin/language/en-GB/com_mokowaas.sys.ini
@@ -14,4 +14,6 @@ COM_MOKOWAAS_MENU_TICKETS="Helpdesk"
COM_MOKOWAAS_MENU_HTACCESS=".htaccess Maker"
COM_MOKOWAAS_MENU_PRIVACY="Privacy Guard"
COM_MOKOWAAS_MENU_WAFLOG="WAF Log"
+COM_MOKOWAAS_MENU_DATABASE="Database Tools"
+COM_MOKOWAAS_MENU_CLEANUP="Cache Cleanup"
COM_MOKOWAAS_MENU_CACHE="Cache Management"
diff --git a/src/packages/com_mokowaas/admin/src/Controller/DisplayController.php b/src/packages/com_mokowaas/admin/src/Controller/DisplayController.php
index c9eaa00..dd77f61 100644
--- a/src/packages/com_mokowaas/admin/src/Controller/DisplayController.php
+++ b/src/packages/com_mokowaas/admin/src/Controller/DisplayController.php
@@ -34,6 +34,8 @@ class DisplayController extends BaseController
'categories' => 'mokowaas.tickets',
'canned' => 'mokowaas.tickets',
'automation' => 'core.admin',
+ 'database' => 'core.admin',
+ 'cleanup' => 'mokowaas.cache',
];
public function display($cachable = false, $urlparams = [])
@@ -282,6 +284,43 @@ class DisplayController extends BaseController
}
}
+ // ==================================================================
+ // Maintenance (#127, #128)
+ // ==================================================================
+
+ public function optimizeDb()
+ {
+ Session::checkToken() or die(Text::_('JINVALID_TOKEN'));
+ if (!$this->checkAcl('core.admin')) { $this->jsonForbidden(); return; }
+ $model = new \Moko\Component\MokoWaaS\Administrator\Model\MaintenanceModel();
+ $this->jsonResponse($model->optimizeTables());
+ }
+
+ public function repairDb()
+ {
+ Session::checkToken() or die(Text::_('JINVALID_TOKEN'));
+ if (!$this->checkAcl('core.admin')) { $this->jsonForbidden(); return; }
+ $model = new \Moko\Component\MokoWaaS\Administrator\Model\MaintenanceModel();
+ $this->jsonResponse($model->repairTables());
+ }
+
+ public function purgeSessions()
+ {
+ Session::checkToken() or die(Text::_('JINVALID_TOKEN'));
+ if (!$this->checkAcl('core.admin')) { $this->jsonForbidden(); return; }
+ $model = new \Moko\Component\MokoWaaS\Administrator\Model\MaintenanceModel();
+ $this->jsonResponse($model->purgeSessions());
+ }
+
+ public function cleanDirectory()
+ {
+ Session::checkToken() or die(Text::_('JINVALID_TOKEN'));
+ if (!$this->checkAcl('mokowaas.cache')) { $this->jsonForbidden(); return; }
+ $dirKey = Factory::getApplication()->getInput()->getString('dir_key', '');
+ $model = new \Moko\Component\MokoWaaS\Administrator\Model\MaintenanceModel();
+ $this->jsonResponse($model->cleanDirectory($dirKey));
+ }
+
// ==================================================================
// Helpdesk CRUD (#137, #138, #139)
// ==================================================================
diff --git a/src/packages/com_mokowaas/admin/tmpl/cleanup/default.php b/src/packages/com_mokowaas/admin/tmpl/cleanup/default.php
new file mode 100644
index 0000000..073c623
--- /dev/null
+++ b/src/packages/com_mokowaas/admin/tmpl/cleanup/default.php
@@ -0,0 +1,63 @@
+dirs;
+$token = Session::getFormToken();
+$cleanUrl = Route::_('index.php?option=com_mokowaas&task=display.cleanDirectory&format=json');
+
+$dirKeys = ['site_cache', 'admin_cache', 'tmp', 'logs'];
+$totalMb = 0;
+$totalFiles = 0;
+foreach ($dirs as $d) { $totalMb += $d->size_mb; $totalFiles += $d->files; }
+?>
+
+
+
+
+
+ $d): ?>
+
+
+
+
label); ?>
+
size_mb, 1); ?> MB
+
files); ?> files
+ writable): ?>
+
Not writable
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/packages/com_mokowaas/admin/tmpl/database/default.php b/src/packages/com_mokowaas/admin/tmpl/database/default.php
new file mode 100644
index 0000000..0d0c935
--- /dev/null
+++ b/src/packages/com_mokowaas/admin/tmpl/database/default.php
@@ -0,0 +1,72 @@
+tableData;
+$tables = $data['tables'] ?? [];
+$token = Session::getFormToken();
+$optimizeUrl = Route::_('index.php?option=com_mokowaas&task=display.optimizeDb&format=json');
+$repairUrl = Route::_('index.php?option=com_mokowaas&task=display.repairDb&format=json');
+$purgeUrl = Route::_('index.php?option=com_mokowaas&task=display.purgeSessions&format=json');
+?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Table | Engine | Rows | Size | Overhead |
+
+
+
+ | name); ?> |
+ engine); ?> |
+ rows); ?> |
+ size_mb; ?> MB |
+ overhead_kb > 0 ? $t->overhead_kb . ' KB' : '—'; ?> |
+
+
+
+
+
+
+
+
+
diff --git a/src/packages/com_mokowaas/mokowaas.xml b/src/packages/com_mokowaas/mokowaas.xml
index 4a50cfc..d88f93e 100644
--- a/src/packages/com_mokowaas/mokowaas.xml
+++ b/src/packages/com_mokowaas/mokowaas.xml
@@ -34,6 +34,8 @@
+
+
diff --git a/src/packages/mod_mokowaas_cpanel/src/Helper/CpanelHelper.php b/src/packages/mod_mokowaas_cpanel/src/Helper/CpanelHelper.php
index a50d895..87fff88 100644
--- a/src/packages/mod_mokowaas_cpanel/src/Helper/CpanelHelper.php
+++ b/src/packages/mod_mokowaas_cpanel/src/Helper/CpanelHelper.php
@@ -87,10 +87,11 @@ class CpanelHelper
public function getCounts(DatabaseInterface $db): object
{
$counts = (object) [
- 'articles' => 0,
- 'users' => 0,
- 'extensions' => 0,
- 'updates' => 0,
+ 'articles' => 0,
+ 'users' => 0,
+ 'extensions' => 0,
+ 'updates' => 0,
+ 'moko_updates' => 0,
];
try
@@ -106,6 +107,20 @@ class CpanelHelper
$db->setQuery($db->getQuery(true)->select('COUNT(*)')->from($db->quoteName('#__updates'))->where($db->quoteName('extension_id') . ' != 0'));
$counts->updates = (int) $db->loadResult();
+
+ // MokoWaaS-specific updates
+ $db->setQuery(
+ $db->getQuery(true)
+ ->select('COUNT(*)')
+ ->from($db->quoteName('#__updates', 'u'))
+ ->join('INNER', $db->quoteName('#__extensions', 'e') . ' ON e.extension_id = u.extension_id')
+ ->where('(' . $db->quoteName('e.element') . ' LIKE ' . $db->quote('mokowaas%')
+ . ' OR ' . $db->quoteName('e.element') . ' LIKE ' . $db->quote('pkg_mokowaas%')
+ . ' OR ' . $db->quoteName('e.element') . ' LIKE ' . $db->quote('com_mokowaas%')
+ . ' OR ' . $db->quoteName('e.element') . ' LIKE ' . $db->quote('mod_mokowaas%')
+ . ' OR ' . $db->quoteName('e.element') . ' = ' . $db->quote('mokoonyx') . ')')
+ );
+ $counts->moko_updates = (int) $db->loadResult();
}
catch (\Throwable $e)
{
diff --git a/src/packages/mod_mokowaas_cpanel/tmpl/default.php b/src/packages/mod_mokowaas_cpanel/tmpl/default.php
index a65553f..66eea9f 100644
--- a/src/packages/mod_mokowaas_cpanel/tmpl/default.php
+++ b/src/packages/mod_mokowaas_cpanel/tmpl/default.php
@@ -67,6 +67,16 @@ $diskColor = ($diskPct !== null && $diskPct > 90) ? 'bg-danger' : (($diskPct !==
offline)): ?>
Offline
+ moko_updates ?? 0) > 0): ?>
+
+ moko_updates; ?> MokoWaaS updatemoko_updates > 1 ? 's' : ''; ?>
+
+
+ updates > 0 && $counts->updates !== ($counts->moko_updates ?? 0)): ?>
+
+ updates - ($counts->moko_updates ?? 0); ?> updateupdates - ($counts->moko_updates ?? 0)) > 1 ? 's' : ''; ?>
+
+
diff --git a/src/packages/mod_mokowaas_menu/tmpl/default.php b/src/packages/mod_mokowaas_menu/tmpl/default.php
index 0c7eca7..d95b4df 100644
--- a/src/packages/mod_mokowaas_menu/tmpl/default.php
+++ b/src/packages/mod_mokowaas_menu/tmpl/default.php
@@ -17,6 +17,8 @@ $items = [
['icon' => 'icon-file-code', 'title' => '.htaccess Maker', 'link' => 'index.php?option=com_mokowaas&view=htaccess'],
['icon' => 'icon-lock', 'title' => 'Privacy Guard', 'link' => 'index.php?option=com_mokowaas&view=privacy'],
['icon' => 'icon-shield-alt', 'title' => 'WAF Log', 'link' => 'index.php?option=com_mokowaas&view=waflog'],
+ ['icon' => 'icon-database', 'title' => 'Database Tools', 'link' => 'index.php?option=com_mokowaas&view=database'],
+ ['icon' => 'icon-trash', 'title' => 'Cache Cleanup', 'link' => 'index.php?option=com_mokowaas&view=cleanup'],
['icon' => 'icon-power-off', 'title' => 'Feature Plugins', 'link' => 'index.php?option=com_plugins&filter[folder]=system&filter[search]=mokowaas'],
];
diff --git a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
index 0000d4a..3d03f80 100644
--- a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
+++ b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
@@ -939,55 +939,6 @@ class MokoWaaS extends CMSPlugin implements BootableExtensionInterface
}
$this->protectPlugin();
- $this->warnMissingLicenseKey();
- }
-
- /**
- * Warn on every admin page load if no license key is configured.
- * Non-dismissable — shows on every request, not cached per session.
- */
- protected function warnMissingLicenseKey(): void
- {
- if (!$this->isMasterUser())
- {
- return;
- }
-
- try
- {
- $db = Factory::getDbo();
-
- $query = $db->getQuery(true)
- ->select($db->quoteName('extra_query'))
- ->from($db->quoteName('#__update_sites'))
- ->where('(' . $db->quoteName('name') . ' LIKE ' . $db->quote('%MokoWaaS%')
- . ' OR ' . $db->quoteName('location') . ' LIKE ' . $db->quote('%MokoWaaS%') . ')')
- ->setLimit(1);
- $db->setQuery($query);
- $extraQuery = (string) $db->loadResult();
-
- if (!empty($extraQuery) && strpos($extraQuery, 'dlid=') !== false)
- {
- parse_str($extraQuery, $parsed);
-
- if (!empty($parsed['dlid']))
- {
- return;
- }
- }
-
- $this->app->enqueueMessage(
- 'Moko Consulting License Key Required — '
- . 'No download key is configured. Updates will not be available until a valid license key is entered. '
- . 'Go to System → Update Sites '
- . 'and enter your license key in the Download Key field for the MokoWaaS update site.',
- 'warning'
- );
- }
- catch (\Throwable $e)
- {
- // Silent
- }
}
// ------------------------------------------------------------------
diff --git a/src/script.php b/src/script.php
index 9a2a541..8d659f9 100644
--- a/src/script.php
+++ b/src/script.php
@@ -69,6 +69,9 @@ class Pkg_MokowaasInstallerScript
// Trigger heartbeat registration
$this->sendHeartbeat();
+
+ // Warn if no license key is configured
+ $this->warnMissingLicenseKey();
}
/**
@@ -996,4 +999,57 @@ class Pkg_MokowaasInstallerScript
Log::add('Feature param migration error: ' . $e->getMessage(), Log::WARNING, 'mokowaas');
}
}
+
+ /**
+ * Warn after install/update if no license key (dlid) is configured on the update site.
+ */
+ private function warnMissingLicenseKey(): void
+ {
+ try
+ {
+ $db = Factory::getDbo();
+ $app = Factory::getApplication();
+
+ $query = $db->getQuery(true)
+ ->select([$db->quoteName('update_site_id'), $db->quoteName('extra_query')])
+ ->from($db->quoteName('#__update_sites'))
+ ->where('(' . $db->quoteName('name') . ' LIKE ' . $db->quote('%MokoWaaS%')
+ . ' OR ' . $db->quoteName('location') . ' LIKE ' . $db->quote('%MokoWaaS%') . ')')
+ ->setLimit(1);
+ $db->setQuery($query);
+ $site = $db->loadObject();
+
+ if ($site)
+ {
+ $extraQuery = (string) ($site->extra_query ?? '');
+
+ if (!empty($extraQuery) && strpos($extraQuery, 'dlid=') !== false)
+ {
+ parse_str($extraQuery, $parsed);
+
+ if (!empty($parsed['dlid']))
+ {
+ return;
+ }
+ }
+
+ $editUrl = 'index.php?option=com_installer&task=updatesite.edit&update_site_id=' . (int) $site->update_site_id;
+ }
+ else
+ {
+ $editUrl = 'index.php?option=com_installer&view=updatesites';
+ }
+
+ $app->enqueueMessage(
+ 'Moko Consulting License Key Required — '
+ . 'No download key is configured. Updates will not be available until a valid license key is entered. '
+ . 'Enter License Key',
+ 'warning'
+ );
+ }
+ catch (\Throwable $e)
+ {
+ // Silent
+ }
+ }
}
--
2.52.0
From 1c7738e2760ace34fb157bab082da59193f4c21a Mon Sep 17 00:00:00 2001
From: "gitea-actions[bot]"
Date: Thu, 4 Jun 2026 12:55:56 +0000
Subject: [PATCH 094/142] chore(version): auto-bump 02.32.47 [skip ci]
---
.mokogitea/manifest.xml | 2 +-
.mokogitea/workflows/issue-branch.yml | 2 +-
CHANGELOG.md | 2 +-
CODE_OF_CONDUCT.md | 2 +-
GOVERNANCE.md | 2 +-
LICENSE.md | 2 +-
README.md | 2 +-
SECURITY.md | 2 +-
docs/guides/build-guide.md | 4 ++--
docs/guides/configuration-guide.md | 4 ++--
docs/guides/installation-guide.md | 4 ++--
docs/guides/operations-guide.md | 4 ++--
docs/guides/rollback-and-recovery-guide.md | 4 ++--
docs/guides/testing-guide.md | 4 ++--
docs/guides/troubleshooting-guide.md | 4 ++--
docs/guides/upgrade-and-versioning-guide.md | 4 ++--
docs/index.md | 4 ++--
docs/plugin-basic.md | 4 ++--
docs/update-server.md | 2 +-
src/packages/com_mokowaas/mokowaas.xml | 2 +-
src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +-
src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +-
src/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +-
src/packages/plg_system_mokowaas/Field/AllowedIpsField.php | 2 +-
src/packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +-
src/packages/plg_system_mokowaas/Field/CurrentIpField.php | 2 +-
src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php | 2 +-
src/packages/plg_system_mokowaas/Field/NextResetField.php | 2 +-
.../plg_system_mokowaas/Field/SnapshotTablesField.php | 2 +-
.../plg_system_mokowaas/Service/ContentSyncReceiver.php | 2 +-
.../plg_system_mokowaas/Service/ContentSyncService.php | 2 +-
src/packages/plg_system_mokowaas/Service/DemoResetService.php | 2 +-
src/packages/plg_system_mokowaas/mokowaas.xml | 2 +-
src/packages/plg_system_mokowaas/script.php | 2 +-
src/packages/plg_system_mokowaas/services/provider.php | 2 +-
.../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +-
.../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +-
src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +-
src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +-
src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +-
src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +-
src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +-
src/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +-
src/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +-
.../plg_webservices_perfectpublisher/perfectpublisher.xml | 2 +-
.../plg_webservices_perfectpublisher/services/provider.php | 2 +-
.../src/Extension/PerfectPublisherApi.php | 2 +-
src/pkg_mokowaas.xml | 2 +-
updates.xml | 2 +-
49 files changed, 59 insertions(+), 59 deletions(-)
diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml
index 178ba5e..26a20e1 100644
--- a/.mokogitea/manifest.xml
+++ b/.mokogitea/manifest.xml
@@ -9,7 +9,7 @@
Package - MokoWaaS
MokoConsulting
White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments
- 02.32.46
+ 02.32.47
GNU General Public License v3
diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml
index b484e5b..0f242d6 100644
--- a/.mokogitea/workflows/issue-branch.yml
+++ b/.mokogitea/workflows/issue-branch.yml
@@ -5,7 +5,7 @@
# FILE INFORMATION
# DEFGROUP: Gitea.Workflow
# INGROUP: moko-platform.Automation
-# VERSION: 02.32.46
+# VERSION: 02.32.47
# BRIEF: Auto-create feature branch when an issue is opened
name: "Universal: Issue Branch"
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6d072ea..db68c05 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,7 +14,7 @@
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
PATH: ./CHANGELOG.md
- VERSION: 02.32.46
+ VERSION: 02.32.47
BRIEF: Version history using `Keep a Changelog`
-->
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 3d47068..2ea48b1 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -14,7 +14,7 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.46
+ VERSION: 02.32.47
PATH: ./CODE_OF_CONDUCT.md
BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default
-->
diff --git a/GOVERNANCE.md b/GOVERNANCE.md
index 32caa56..5bd5204 100644
--- a/GOVERNANCE.md
+++ b/GOVERNANCE.md
@@ -19,7 +19,7 @@
DEFGROUP: mokoconsulting-tech.MokoWaaSBrand
INGROUP: MokoStandards.Governance
REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand
- VERSION: 02.32.46
+ VERSION: 02.32.47
PATH: /GOVERNANCE.md
BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand
-->
diff --git a/LICENSE.md b/LICENSE.md
index aa11dea..72e09fa 100644
--- a/LICENSE.md
+++ b/LICENSE.md
@@ -15,7 +15,7 @@
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
PATH: ./LICENSE.md
- VERSION: 02.32.46
+ VERSION: 02.32.47
BRIEF: Project license (GPL-3.0-or-later)
-->
GNU GENERAL PUBLIC LICENSE
diff --git a/README.md b/README.md
index 3b29251..563b621 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS
REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
- VERSION: 02.32.46
+ VERSION: 02.32.47
PATH: /README.md
BRIEF: MokoWaaS platform plugin for Joomla
-->
diff --git a/SECURITY.md b/SECURITY.md
index 3cf2e2b..2f10f2d 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME]
INGROUP: [PROJECT_NAME].Documentation
REPO: [REPOSITORY_URL]
PATH: /SECURITY.md
-VERSION: 02.32.46
+VERSION: 02.32.47
BRIEF: Security vulnerability reporting and handling policy
-->
diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md
index 8b643ab..c5da7f0 100644
--- a/docs/guides/build-guide.md
+++ b/docs/guides/build-guide.md
@@ -11,13 +11,13 @@
INGROUP: MokoWaaS.Build
REPO: https://github.com/mokoconsulting-tech/mokowaas
FILE: build-guide.md
- VERSION: 02.32.46
+ VERSION: 02.32.47
PATH: /docs/guides/
BRIEF: Build and packaging guide for the MokoWaaS system plugin
NOTE: Defines environment setup, repository layout, packaging rules, and release preparation
-->
-# MokoWaaS Build Guide (VERSION: 02.32.46)
+# MokoWaaS Build Guide (VERSION: 02.32.47)
## 1. Purpose
diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md
index 8a0cabf..f5f8430 100644
--- a/docs/guides/configuration-guide.md
+++ b/docs/guides/configuration-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.46
+ VERSION: 02.32.47
PATH: /docs/guides/configuration-guide.md
BRIEF: Configuration guide for the MokoWaaS system plugin
NOTE: Defines plugin parameters, expected behaviors, and recommended defaults
-->
-# MokoWaaS Configuration Guide (VERSION: 02.32.46)
+# MokoWaaS Configuration Guide (VERSION: 02.32.47)
## 1. Objective
diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md
index 7238754..7b13be7 100644
--- a/docs/guides/installation-guide.md
+++ b/docs/guides/installation-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.46
+ VERSION: 02.32.47
PATH: /docs/guides/installation-guide.md
BRIEF: Installation guide for the MokoWaaS system plugin
NOTE: First document in the guide set
-->
-# MokoWaaS Installation Guide (VERSION: 02.32.46)
+# MokoWaaS Installation Guide (VERSION: 02.32.47)
## Introduction
diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md
index d92bb90..16efd0e 100644
--- a/docs/guides/operations-guide.md
+++ b/docs/guides/operations-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.46
+ VERSION: 02.32.47
PATH: /docs/guides/operations-guide.md
BRIEF: Operational guide for administering and managing the MokoWaaS system plugin
NOTE: Defines lifecycle, responsibilities, and operational behaviors
-->
-# MokoWaaS Operations Guide (VERSION: 02.32.46)
+# MokoWaaS Operations Guide (VERSION: 02.32.47)
## Introduction
diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md
index 7a22b27..d414feb 100644
--- a/docs/guides/rollback-and-recovery-guide.md
+++ b/docs/guides/rollback-and-recovery-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.46
+ VERSION: 02.32.47
PATH: /docs/guides/rollback-and-recovery-guide.md
BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents
NOTE: Completes the core guide set for WaaS plugin governance
-->
-# MokoWaaS Rollback and Recovery Guide (VERSION: 02.32.46)
+# MokoWaaS Rollback and Recovery Guide (VERSION: 02.32.47)
## Introduction
diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md
index 017303a..f71bb22 100644
--- a/docs/guides/testing-guide.md
+++ b/docs/guides/testing-guide.md
@@ -7,13 +7,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.46
+ VERSION: 02.32.47
PATH: /docs/guides/testing-guide.md
BRIEF: Testing guide for MokoWaaS v02.01.08
NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration
-->
-# MokoWaaS Testing Guide (VERSION: 02.32.46)
+# MokoWaaS Testing Guide (VERSION: 02.32.47)
## 1. Prerequisites
diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md
index 34f727d..e324a10 100644
--- a/docs/guides/troubleshooting-guide.md
+++ b/docs/guides/troubleshooting-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.46
+ VERSION: 02.32.47
PATH: /docs/guides/troubleshooting-guide.md
BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin
NOTE: Designed for administrators and WaaS operations teams
-->
-# MokoWaaS Troubleshooting Guide (VERSION: 02.32.46)
+# MokoWaaS Troubleshooting Guide (VERSION: 02.32.47)
## Introduction
diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md
index e01d332..c6fedb2 100644
--- a/docs/guides/upgrade-and-versioning-guide.md
+++ b/docs/guides/upgrade-and-versioning-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.46
+ VERSION: 02.32.47
PATH: /docs/guides/upgrade-and-versioning-guide.md
BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin
NOTE: Defines release flow, version rules, and upgrade validation
-->
-# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.32.46)
+# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.32.47)
## Introduction
diff --git a/docs/index.md b/docs/index.md
index 9fd1956..897ca57 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.46
+ VERSION: 02.32.47
PATH: /docs/index.md
BRIEF: Master index of all documentation for the MokoWaaS plugin
NOTE: Automatically maintained index for all guide canvases
-->
-# MokoWaaS Documentation Index (VERSION: 02.32.46)
+# MokoWaaS Documentation Index (VERSION: 02.32.47)
## Introduction
diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md
index 69a3d02..c4f286d 100644
--- a/docs/plugin-basic.md
+++ b/docs/plugin-basic.md
@@ -11,12 +11,12 @@
INGROUP: MokoWaaS
REPO: https://github.com/mokoconsulting-tech/mokowaas
PATH: /docs/plugin-basic.md
- VERSION: 02.32.46
+ VERSION: 02.32.47
BRIEF: Baseline documentation for the MokoWaaS system plugin
NOTE: Foundational reference for internal and external stakeholders
-->
-# MokoWaaS Plugin Overview (VERSION: 02.32.46)
+# MokoWaaS Plugin Overview (VERSION: 02.32.47)
## Introduction
diff --git a/docs/update-server.md b/docs/update-server.md
index c4a1c2f..9fd4e9f 100644
--- a/docs/update-server.md
+++ b/docs/update-server.md
@@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation
INGROUP: MokoStandards.Templates
REPO: https://github.com/mokoconsulting-tech/MokoWaaS
PATH: /docs/update-server.md
-VERSION: 02.32.46
+VERSION: 02.32.47
BRIEF: How this extension's Joomla update server file (update.xml) is managed
-->
diff --git a/src/packages/com_mokowaas/mokowaas.xml b/src/packages/com_mokowaas/mokowaas.xml
index d88f93e..dcd445f 100644
--- a/src/packages/com_mokowaas/mokowaas.xml
+++ b/src/packages/com_mokowaas/mokowaas.xml
@@ -20,7 +20,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.46
+ 02.32.47
MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints.
Moko\Component\MokoWaaS
diff --git a/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml
index 853ca26..e59028f 100644
--- a/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml
+++ b/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.46
+ 02.32.47
MOD_MOKOWAAS_CPANEL_DESC
Moko\Module\MokoWaaSCpanel
diff --git a/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml
index 6ac21d8..46d6129 100644
--- a/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml
+++ b/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.46
+ 02.32.47
MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu.
Moko\Module\MokoWaaSMenu
diff --git a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
index 3d03f80..98518f3 100644
--- a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
+++ b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
@@ -22,7 +22,7 @@
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
* REPO: https://github.com/mokoconsulting-tech/mokowaas
- * VERSION: 02.32.46
+ * VERSION: 02.32.47
* PATH: /src/Extension/MokoWaaS.php
* NOTE: Handles Joomla system events for rebranding functionality
*/
diff --git a/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php b/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php
index 73900c9..479479a 100644
--- a/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php
+++ b/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php
@@ -7,7 +7,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.46
+ * VERSION: 02.32.47
* PATH: /src/Field/AllowedIpsField.php
* BRIEF: Custom form field that displays the current IP whitelist
*/
diff --git a/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php
index 4705666..20da32a 100644
--- a/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php
+++ b/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.46
+ * VERSION: 02.32.47
* PATH: /src/Field/CopyableTokenField.php
* BRIEF: Read-only token field with a copy-to-clipboard button
*/
diff --git a/src/packages/plg_system_mokowaas/Field/CurrentIpField.php b/src/packages/plg_system_mokowaas/Field/CurrentIpField.php
index 5dddddd..4cb9eae 100644
--- a/src/packages/plg_system_mokowaas/Field/CurrentIpField.php
+++ b/src/packages/plg_system_mokowaas/Field/CurrentIpField.php
@@ -7,7 +7,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.46
+ * VERSION: 02.32.47
* PATH: /src/Field/CurrentIpField.php
* BRIEF: Read-only field that displays the current user's IP address
*/
diff --git a/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php b/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php
index 8b61608..69e895d 100644
--- a/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php
+++ b/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.46
+ * VERSION: 02.32.47
* PATH: /src/Field/DemoTaskInfoField.php
* BRIEF: Read-only field showing scheduled task info with link to manage it
*/
diff --git a/src/packages/plg_system_mokowaas/Field/NextResetField.php b/src/packages/plg_system_mokowaas/Field/NextResetField.php
index 347b22b..a9c80cf 100644
--- a/src/packages/plg_system_mokowaas/Field/NextResetField.php
+++ b/src/packages/plg_system_mokowaas/Field/NextResetField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.46
+ * VERSION: 02.32.47
* PATH: /src/Field/NextResetField.php
* BRIEF: Read-only field showing next reset time from Joomla scheduled task
*/
diff --git a/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php b/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php
index e023f90..38eb428 100644
--- a/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php
+++ b/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.46
+ * VERSION: 02.32.47
* PATH: /src/Field/SnapshotTablesField.php
* BRIEF: Multi-select list field that loads DB tables with sensible defaults
*/
diff --git a/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php b/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
index b05497a..0ab32b8 100644
--- a/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
+++ b/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
@@ -10,7 +10,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
- * VERSION: 02.32.46
+ * VERSION: 02.32.47
* BRIEF: Receiver-side content sync — applies incoming payload to local DB
*/
diff --git a/src/packages/plg_system_mokowaas/Service/ContentSyncService.php b/src/packages/plg_system_mokowaas/Service/ContentSyncService.php
index 8b29f57..22da775 100644
--- a/src/packages/plg_system_mokowaas/Service/ContentSyncService.php
+++ b/src/packages/plg_system_mokowaas/Service/ContentSyncService.php
@@ -10,7 +10,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php
- * VERSION: 02.32.46
+ * VERSION: 02.32.47
* BRIEF: Sender-side content sync — builds payload and pushes to remote sites
*/
diff --git a/src/packages/plg_system_mokowaas/Service/DemoResetService.php b/src/packages/plg_system_mokowaas/Service/DemoResetService.php
index 50d6bb7..9edaf22 100644
--- a/src/packages/plg_system_mokowaas/Service/DemoResetService.php
+++ b/src/packages/plg_system_mokowaas/Service/DemoResetService.php
@@ -10,7 +10,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php
- * VERSION: 02.32.46
+ * VERSION: 02.32.47
* BRIEF: Content-only snapshot/restore for demo site reset
*/
diff --git a/src/packages/plg_system_mokowaas/mokowaas.xml b/src/packages/plg_system_mokowaas/mokowaas.xml
index 0bad5cd..59e8081 100644
--- a/src/packages/plg_system_mokowaas/mokowaas.xml
+++ b/src/packages/plg_system_mokowaas/mokowaas.xml
@@ -30,7 +30,7 @@
GNU General Public License version 3 or later; see LICENSE.md
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.46
+ 02.32.47
This plugin rebrands the Joomla system interface with MokoWaaS identity. It applies language overrides and ensures consistent branding across the platform.
Moko\Plugin\System\MokoWaaS
script.php
diff --git a/src/packages/plg_system_mokowaas/script.php b/src/packages/plg_system_mokowaas/script.php
index 7dc2351..b7aec07 100644
--- a/src/packages/plg_system_mokowaas/script.php
+++ b/src/packages/plg_system_mokowaas/script.php
@@ -22,7 +22,7 @@
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
* REPO: https://github.com/mokoconsulting-tech/mokowaas
- * VERSION: 02.32.46
+ * VERSION: 02.32.47
* PATH: /src/script.php
* BRIEF: Installation script for MokoWaaS plugin
* NOTE: Handles installation, update, and uninstallation tasks including language override deployment
diff --git a/src/packages/plg_system_mokowaas/services/provider.php b/src/packages/plg_system_mokowaas/services/provider.php
index c360841..246be42 100644
--- a/src/packages/plg_system_mokowaas/services/provider.php
+++ b/src/packages/plg_system_mokowaas/services/provider.php
@@ -22,7 +22,7 @@
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
* REPO: https://github.com/mokoconsulting-tech/mokowaas
- * VERSION: 02.32.46
+ * VERSION: 02.32.47
* PATH: /src/services/provider.php
* BRIEF: Service provider for dependency injection in Joomla 5.x
* NOTE: Registers the plugin with Joomla's DI container
diff --git a/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml
index d318277..142d3b2 100644
--- a/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml
+++ b/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.46
+ 02.32.47
PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC
Moko\Plugin\System\MokoWaaSDevTools
diff --git a/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
index dbe3a9a..13ad261 100644
--- a/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
+++ b/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.46
+ 02.32.47
PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC
Moko\Plugin\System\MokoWaaSFirewall
diff --git a/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml
index 053d9e1..3e0cf7a 100644
--- a/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml
+++ b/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.46
+ 02.32.47
PLG_SYSTEM_MOKOWAAS_MONITOR_DESC
Moko\Plugin\System\MokoWaaSMonitor
diff --git a/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml
index 21b904f..4041d27 100644
--- a/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml
+++ b/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.46
+ 02.32.47
PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC
Moko\Plugin\System\MokoWaaSOffline
diff --git a/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml
index daa693a..ea62b27 100644
--- a/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml
+++ b/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.46
+ 02.32.47
PLG_SYSTEM_MOKOWAAS_TENANT_DESC
Moko\Plugin\System\MokoWaaSTenant
diff --git a/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml
index c63e242..3bc3f8d 100644
--- a/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml
+++ b/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.46
+ 02.32.47
Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions.
Moko\Plugin\Task\MokoWaaSTickets
diff --git a/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
index ea1ba94..da8ea68 100644
--- a/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
+++ b/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
@@ -12,7 +12,7 @@
GNU General Public License version 3 or later; see LICENSE
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.46
+ 02.32.47
PLG_TASK_MOKOWAASDEMO_DESC
Moko\Plugin\Task\MokoWaaSDemo
diff --git a/src/packages/plg_task_mokowaassync/mokowaassync.xml b/src/packages/plg_task_mokowaassync/mokowaassync.xml
index 9757a5b..931e19e 100644
--- a/src/packages/plg_task_mokowaassync/mokowaassync.xml
+++ b/src/packages/plg_task_mokowaassync/mokowaassync.xml
@@ -12,7 +12,7 @@
GNU General Public License version 3 or later; see LICENSE
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.46
+ 02.32.47
PLG_TASK_MOKOWAASSYNC_DESC
Moko\Plugin\Task\MokoWaaSSync
diff --git a/src/packages/plg_webservices_mokowaas/mokowaas.xml b/src/packages/plg_webservices_mokowaas/mokowaas.xml
index 279616f..40a4794 100644
--- a/src/packages/plg_webservices_mokowaas/mokowaas.xml
+++ b/src/packages/plg_webservices_mokowaas/mokowaas.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.46
+ 02.32.47
Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info.
Moko\Plugin\WebServices\MokoWaaS
diff --git a/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml b/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
index aada257..a050991 100644
--- a/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
+++ b/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.46
+ 02.32.47
Joomla Web Services API routes for Perfect Publisher (com_autotweet) — channels, posts, requests, rules, and feeds.
Moko\Plugin\WebServices\PerfectPublisher
diff --git a/src/packages/plg_webservices_perfectpublisher/services/provider.php b/src/packages/plg_webservices_perfectpublisher/services/provider.php
index ad6bb60..ed3d635 100644
--- a/src/packages/plg_webservices_perfectpublisher/services/provider.php
+++ b/src/packages/plg_webservices_perfectpublisher/services/provider.php
@@ -8,7 +8,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_webservices_perfectpublisher/services/provider.php
- * VERSION: 02.32.46
+ * VERSION: 02.32.47
* BRIEF: DI service provider for Perfect Publisher Web Services plugin
*/
diff --git a/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php b/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
index f186dc5..58130c9 100644
--- a/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
+++ b/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
@@ -8,7 +8,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
- * VERSION: 02.32.46
+ * VERSION: 02.32.47
* BRIEF: Web Services API plugin for Perfect Publisher (com_autotweet)
*/
diff --git a/src/pkg_mokowaas.xml b/src/pkg_mokowaas.xml
index dc02061..d1faf7f 100644
--- a/src/pkg_mokowaas.xml
+++ b/src/pkg_mokowaas.xml
@@ -2,7 +2,7 @@
Package - MokoWaaS
mokowaas
- 02.32.46
+ 02.32.47
2026-06-02
Moko Consulting
hello@mokoconsulting.tech
diff --git a/updates.xml b/updates.xml
index 6d2ab50..a3b1b01 100644
--- a/updates.xml
+++ b/updates.xml
@@ -1,7 +1,7 @@
--
2.52.0
From 8903af5d7f0fba68a5f27cf1eaf5813ced198428 Mon Sep 17 00:00:00 2001
From: "gitea-actions[bot]"
Date: Thu, 4 Jun 2026 12:55:57 +0000
Subject: [PATCH 095/142] chore: update development channel 02.32.47 [skip ci]
---
updates.xml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/updates.xml b/updates.xml
index a3b1b01..21b926e 100644
--- a/updates.xml
+++ b/updates.xml
@@ -11,13 +11,13 @@
pkg_mokowaas
package
site
- 02.32.46-dev
+ 02.32.47-dev
2026-06-04
https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/tag/development
- https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/development/pkg_mokowaas-02.32.46-dev.zip
+ https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/development/pkg_mokowaas-02.32.47-dev.zip
- 6dae39ac6773cc181cd2a018743b63aea7d3f78e151a0c142b4f4ea3d92ac35f
+ d8feab9aad9af48f7d45005881eba7be2e830cff685ef25980b1a15dafae6962
dev
https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/raw/branch/main/CHANGELOG.md
Moko Consulting
--
2.52.0
From 1819fa276c1252350e06cfa8e12d66953786eac3 Mon Sep 17 00:00:00 2001
From: Jonathan Miller
Date: Thu, 4 Jun 2026 09:09:38 -0500
Subject: [PATCH 096/142] feat: collapsible admin menu, cache cleaner status
module, update server URL
- Admin menu module now collapses by default, auto-expands on MokoWaaS pages (CB-style)
- Add mod_mokowaas_cache: one-click cache cleaner button in admin status bar (replaces Regular Labs Cache Cleaner)
- clearCache now purges all cache files (not just expired), matching RL behavior
- Update server URL changed to https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/updates.xml
- Add setupCacheModule() to package install script
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context)
---
.../admin/src/Model/DashboardModel.php | 45 ++++++++-
.../language/en-GB/mod_mokowaas_cache.ini | 3 +
.../language/en-GB/mod_mokowaas_cache.sys.ini | 2 +
.../mod_mokowaas_cache/mod_mokowaas_cache.xml | 24 +++++
.../mod_mokowaas_cache/services/provider.php | 23 +++++
.../src/Dispatcher/Dispatcher.php | 14 +++
.../mod_mokowaas_cache/tmpl/default.php | 75 ++++++++++++++
.../mod_mokowaas_menu/tmpl/default.php | 97 +++++++++++++------
src/pkg_mokowaas.xml | 3 +-
src/script.php | 67 +++++++++++++
10 files changed, 319 insertions(+), 34 deletions(-)
create mode 100644 src/packages/mod_mokowaas_cache/language/en-GB/mod_mokowaas_cache.ini
create mode 100644 src/packages/mod_mokowaas_cache/language/en-GB/mod_mokowaas_cache.sys.ini
create mode 100644 src/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml
create mode 100644 src/packages/mod_mokowaas_cache/services/provider.php
create mode 100644 src/packages/mod_mokowaas_cache/src/Dispatcher/Dispatcher.php
create mode 100644 src/packages/mod_mokowaas_cache/tmpl/default.php
diff --git a/src/packages/com_mokowaas/admin/src/Model/DashboardModel.php b/src/packages/com_mokowaas/admin/src/Model/DashboardModel.php
index b8674dc..fbcb447 100644
--- a/src/packages/com_mokowaas/admin/src/Model/DashboardModel.php
+++ b/src/packages/com_mokowaas/admin/src/Model/DashboardModel.php
@@ -267,11 +267,46 @@ class DashboardModel extends BaseDatabaseModel
{
try
{
- $app = Factory::getApplication();
- $app->get('cache_handler', 'file');
+ // Purge all file-based cache directories
+ $root = JPATH_ROOT;
+ $dirs = [
+ $root . '/cache',
+ $root . '/administrator/cache',
+ ];
- // Clear site and admin caches
- $cache = Factory::getContainer()->get(\Joomla\CMS\Cache\CacheControllerFactoryInterface::class);
+ foreach ($dirs as $dir)
+ {
+ if (!is_dir($dir))
+ {
+ continue;
+ }
+
+ $it = new \RecursiveIteratorIterator(
+ new \RecursiveDirectoryIterator($dir, \RecursiveDirectoryIterator::SKIP_DOTS),
+ \RecursiveIteratorIterator::CHILD_FIRST
+ );
+
+ foreach ($it as $file)
+ {
+ $name = $file->getFilename();
+
+ if ($name === 'index.html' || $name === '.htaccess')
+ {
+ continue;
+ }
+
+ if ($file->isDir())
+ {
+ @rmdir($file->getPathname());
+ }
+ else
+ {
+ @unlink($file->getPathname());
+ }
+ }
+ }
+
+ // Also run Joomla's built-in cache GC for non-file handlers
Factory::getCache('', '')->gc();
Factory::getCache('', '', 'administrator')->gc();
@@ -281,7 +316,7 @@ class DashboardModel extends BaseDatabaseModel
\opcache_reset();
}
- return ['success' => true, 'message' => 'Cache cleared successfully.'];
+ return ['success' => true, 'message' => 'All cache cleared successfully.'];
}
catch (\Throwable $e)
{
diff --git a/src/packages/mod_mokowaas_cache/language/en-GB/mod_mokowaas_cache.ini b/src/packages/mod_mokowaas_cache/language/en-GB/mod_mokowaas_cache.ini
new file mode 100644
index 0000000..dd3acea
--- /dev/null
+++ b/src/packages/mod_mokowaas_cache/language/en-GB/mod_mokowaas_cache.ini
@@ -0,0 +1,3 @@
+MOD_MOKOWAAS_CACHE="MokoWaaS Cache Cleaner"
+MOD_MOKOWAAS_CACHE_DESC="One-click cache cleaner in the admin status bar. Clears all Joomla cache (site, admin, and expired)."
+MOD_MOKOWAAS_CACHE_CLEAR_ALL="Clear All Cache"
diff --git a/src/packages/mod_mokowaas_cache/language/en-GB/mod_mokowaas_cache.sys.ini b/src/packages/mod_mokowaas_cache/language/en-GB/mod_mokowaas_cache.sys.ini
new file mode 100644
index 0000000..25f62d2
--- /dev/null
+++ b/src/packages/mod_mokowaas_cache/language/en-GB/mod_mokowaas_cache.sys.ini
@@ -0,0 +1,2 @@
+MOD_MOKOWAAS_CACHE="MokoWaaS Cache Cleaner"
+MOD_MOKOWAAS_CACHE_DESC="One-click cache cleaner in the admin status bar. Clears all Joomla cache (site, admin, and expired)."
diff --git a/src/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/src/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml
new file mode 100644
index 0000000..f6782c0
--- /dev/null
+++ b/src/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml
@@ -0,0 +1,24 @@
+
+
+ mod_mokowaas_cache
+ Moko Consulting
+ 2026-06-04
+ Copyright (C) 2026 Moko Consulting. All rights reserved.
+ GPL-3.0-or-later
+ hello@mokoconsulting.tech
+ https://mokoconsulting.tech
+ 02.32.46
+ MOD_MOKOWAAS_CACHE_DESC
+ Moko\Module\MokoWaaSCache
+
+
+ services
+ src
+ tmpl
+
+
+
+ en-GB/mod_mokowaas_cache.ini
+ en-GB/mod_mokowaas_cache.sys.ini
+
+
diff --git a/src/packages/mod_mokowaas_cache/services/provider.php b/src/packages/mod_mokowaas_cache/services/provider.php
new file mode 100644
index 0000000..cf5c25c
--- /dev/null
+++ b/src/packages/mod_mokowaas_cache/services/provider.php
@@ -0,0 +1,23 @@
+registerServiceProvider(new ModuleDispatcherFactory('\\Moko\\Module\\MokoWaaSCache'));
+ $container->registerServiceProvider(new Module());
+ }
+};
diff --git a/src/packages/mod_mokowaas_cache/src/Dispatcher/Dispatcher.php b/src/packages/mod_mokowaas_cache/src/Dispatcher/Dispatcher.php
new file mode 100644
index 0000000..b67aad8
--- /dev/null
+++ b/src/packages/mod_mokowaas_cache/src/Dispatcher/Dispatcher.php
@@ -0,0 +1,14 @@
+
+
+
+
+
diff --git a/src/packages/mod_mokowaas_menu/tmpl/default.php b/src/packages/mod_mokowaas_menu/tmpl/default.php
index d95b4df..794f4b0 100644
--- a/src/packages/mod_mokowaas_menu/tmpl/default.php
+++ b/src/packages/mod_mokowaas_menu/tmpl/default.php
@@ -2,8 +2,9 @@
/**
* MokoWaaS Admin Sidebar Menu
*
- * Renders a dedicated MokoWaaS section in the admin sidebar,
- * similar to Community Builder's mod_cbadmin.
+ * Collapsible sidebar section — collapsed by default, auto-expands
+ * when on a MokoWaaS page. Mirrors Joomla's own mm-active/mm-show
+ * pattern used by CB's mod_cbadmin.
*/
defined('_JEXEC') or die;
@@ -22,35 +23,75 @@ $items = [
['icon' => 'icon-power-off', 'title' => 'Feature Plugins', 'link' => 'index.php?option=com_plugins&filter[folder]=system&filter[search]=mokowaas'],
];
-$currentOption = \Joomla\CMS\Factory::getApplication()->getInput()->get('option', '');
-$currentView = \Joomla\CMS\Factory::getApplication()->getInput()->get('view', '');
+$app = \Joomla\CMS\Factory::getApplication();
+$currentOption = $app->getInput()->get('option', '');
+$currentView = $app->getInput()->get('view', '');
+
+// Auto-expand when on a MokoWaaS page
+$isMokoPage = ($currentOption === 'com_mokowaas')
+ || ($currentOption === 'com_plugins' && stripos($app->getInput()->get('filter', [], 'array')['search'] ?? $app->getInput()->getString('filter_search', ''), 'mokowaas') !== false);
+
+$collapseId = 'mokowaas-menu-collapse';
?>
-
+
+
diff --git a/src/pkg_mokowaas.xml b/src/pkg_mokowaas.xml
index dc02061..ab3b4e0 100644
--- a/src/pkg_mokowaas.xml
+++ b/src/pkg_mokowaas.xml
@@ -21,6 +21,7 @@
com_mokowaas.zip
mod_mokowaas_cpanel.zip
+ mod_mokowaas_cache.zip
plg_webservices_mokowaas.zip
plg_webservices_perfectpublisher.zip
plg_task_mokowaasdemo.zip
@@ -30,6 +31,6 @@
- https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/raw/branch/main/updates.xml
+ https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/updates.xml
diff --git a/src/script.php b/src/script.php
index 8d659f9..5d55bf3 100644
--- a/src/script.php
+++ b/src/script.php
@@ -58,6 +58,9 @@ class Pkg_MokowaasInstallerScript
// Set up admin sidebar menu module
$this->setupAdminMenuModule();
+ // Set up cache cleaner status bar module
+ $this->setupCacheModule();
+
// Create Support portal menu item on frontend
$this->setupSupportMenuItem();
@@ -773,6 +776,70 @@ class Pkg_MokowaasInstallerScript
}
}
+ /**
+ * Set up the cache cleaner module in the admin status bar position.
+ */
+ private function setupCacheModule(): void
+ {
+ try
+ {
+ $db = Factory::getDbo();
+
+ // Enable the module extension
+ $db->setQuery(
+ $db->getQuery(true)
+ ->update($db->quoteName('#__extensions'))
+ ->set($db->quoteName('enabled') . ' = 1')
+ ->where($db->quoteName('type') . ' = ' . $db->quote('module'))
+ ->where($db->quoteName('element') . ' = ' . $db->quote('mod_mokowaas_cache'))
+ )->execute();
+
+ // Check if module instance exists
+ $db->setQuery(
+ $db->getQuery(true)
+ ->select('COUNT(*)')
+ ->from($db->quoteName('#__modules'))
+ ->where($db->quoteName('module') . ' = ' . $db->quote('mod_mokowaas_cache'))
+ );
+
+ if ((int) $db->loadResult() > 0)
+ {
+ return;
+ }
+
+ $module = (object) [
+ 'title' => 'MokoWaaS Cache Cleaner',
+ 'note' => '',
+ 'content' => '',
+ 'ordering' => 8,
+ 'position' => 'status',
+ 'checked_out' => null,
+ 'checked_out_time' => null,
+ 'publish_up' => null,
+ 'publish_down' => null,
+ 'published' => 1,
+ 'module' => 'mod_mokowaas_cache',
+ 'access' => 3,
+ 'showtitle' => 0,
+ 'params' => '{}',
+ 'client_id' => 1,
+ 'language' => '*',
+ ];
+
+ $db->insertObject('#__modules', $module, 'id');
+
+ if ((int) $module->id)
+ {
+ $mm = (object) ['moduleid' => (int) $module->id, 'menuid' => 0];
+ $db->insertObject('#__modules_menu', $mm, 'moduleid');
+ }
+ }
+ catch (\Throwable $e)
+ {
+ Log::add('Cache module setup error: ' . $e->getMessage(), Log::WARNING, 'mokowaas');
+ }
+ }
+
/**
* Create a "Support" menu item on the frontend main menu.
*/
--
2.52.0
From de7a9454704ba6fba8a67f91a9b068010d45c0a5 Mon Sep 17 00:00:00 2001
From: "gitea-actions[bot]"
Date: Thu, 4 Jun 2026 14:10:22 +0000
Subject: [PATCH 097/142] chore(version): auto-bump 02.32.48 [skip ci]
---
.mokogitea/manifest.xml | 2 +-
.mokogitea/workflows/issue-branch.yml | 2 +-
CHANGELOG.md | 2 +-
CODE_OF_CONDUCT.md | 2 +-
GOVERNANCE.md | 2 +-
LICENSE.md | 2 +-
README.md | 2 +-
SECURITY.md | 2 +-
docs/guides/build-guide.md | 4 ++--
docs/guides/configuration-guide.md | 4 ++--
docs/guides/installation-guide.md | 4 ++--
docs/guides/operations-guide.md | 4 ++--
docs/guides/rollback-and-recovery-guide.md | 4 ++--
docs/guides/testing-guide.md | 4 ++--
docs/guides/troubleshooting-guide.md | 4 ++--
docs/guides/upgrade-and-versioning-guide.md | 4 ++--
docs/index.md | 4 ++--
docs/plugin-basic.md | 4 ++--
docs/update-server.md | 2 +-
src/packages/com_mokowaas/mokowaas.xml | 2 +-
src/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +-
src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +-
src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +-
src/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +-
src/packages/plg_system_mokowaas/Field/AllowedIpsField.php | 2 +-
src/packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +-
src/packages/plg_system_mokowaas/Field/CurrentIpField.php | 2 +-
src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php | 2 +-
src/packages/plg_system_mokowaas/Field/NextResetField.php | 2 +-
.../plg_system_mokowaas/Field/SnapshotTablesField.php | 2 +-
.../plg_system_mokowaas/Service/ContentSyncReceiver.php | 2 +-
.../plg_system_mokowaas/Service/ContentSyncService.php | 2 +-
src/packages/plg_system_mokowaas/Service/DemoResetService.php | 2 +-
src/packages/plg_system_mokowaas/mokowaas.xml | 2 +-
src/packages/plg_system_mokowaas/script.php | 2 +-
src/packages/plg_system_mokowaas/services/provider.php | 2 +-
.../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +-
.../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +-
src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +-
src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +-
src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +-
src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +-
src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +-
src/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +-
src/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +-
.../plg_webservices_perfectpublisher/perfectpublisher.xml | 2 +-
.../plg_webservices_perfectpublisher/services/provider.php | 2 +-
.../src/Extension/PerfectPublisherApi.php | 2 +-
src/pkg_mokowaas.xml | 2 +-
updates.xml | 2 +-
50 files changed, 60 insertions(+), 60 deletions(-)
diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml
index 26a20e1..6ed5b90 100644
--- a/.mokogitea/manifest.xml
+++ b/.mokogitea/manifest.xml
@@ -9,7 +9,7 @@
Package - MokoWaaS
MokoConsulting
White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments
- 02.32.47
+ 02.32.48
GNU General Public License v3
diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml
index 0f242d6..634d1de 100644
--- a/.mokogitea/workflows/issue-branch.yml
+++ b/.mokogitea/workflows/issue-branch.yml
@@ -5,7 +5,7 @@
# FILE INFORMATION
# DEFGROUP: Gitea.Workflow
# INGROUP: moko-platform.Automation
-# VERSION: 02.32.47
+# VERSION: 02.32.48
# BRIEF: Auto-create feature branch when an issue is opened
name: "Universal: Issue Branch"
diff --git a/CHANGELOG.md b/CHANGELOG.md
index db68c05..1fef427 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,7 +14,7 @@
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
PATH: ./CHANGELOG.md
- VERSION: 02.32.47
+ VERSION: 02.32.48
BRIEF: Version history using `Keep a Changelog`
-->
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 2ea48b1..1ceddee 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -14,7 +14,7 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.47
+ VERSION: 02.32.48
PATH: ./CODE_OF_CONDUCT.md
BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default
-->
diff --git a/GOVERNANCE.md b/GOVERNANCE.md
index 5bd5204..d46d44d 100644
--- a/GOVERNANCE.md
+++ b/GOVERNANCE.md
@@ -19,7 +19,7 @@
DEFGROUP: mokoconsulting-tech.MokoWaaSBrand
INGROUP: MokoStandards.Governance
REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand
- VERSION: 02.32.47
+ VERSION: 02.32.48
PATH: /GOVERNANCE.md
BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand
-->
diff --git a/LICENSE.md b/LICENSE.md
index 72e09fa..116a9bf 100644
--- a/LICENSE.md
+++ b/LICENSE.md
@@ -15,7 +15,7 @@
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
PATH: ./LICENSE.md
- VERSION: 02.32.47
+ VERSION: 02.32.48
BRIEF: Project license (GPL-3.0-or-later)
-->
GNU GENERAL PUBLIC LICENSE
diff --git a/README.md b/README.md
index 563b621..b909d7c 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS
REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
- VERSION: 02.32.47
+ VERSION: 02.32.48
PATH: /README.md
BRIEF: MokoWaaS platform plugin for Joomla
-->
diff --git a/SECURITY.md b/SECURITY.md
index 2f10f2d..371c840 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME]
INGROUP: [PROJECT_NAME].Documentation
REPO: [REPOSITORY_URL]
PATH: /SECURITY.md
-VERSION: 02.32.47
+VERSION: 02.32.48
BRIEF: Security vulnerability reporting and handling policy
-->
diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md
index c5da7f0..dadd5e9 100644
--- a/docs/guides/build-guide.md
+++ b/docs/guides/build-guide.md
@@ -11,13 +11,13 @@
INGROUP: MokoWaaS.Build
REPO: https://github.com/mokoconsulting-tech/mokowaas
FILE: build-guide.md
- VERSION: 02.32.47
+ VERSION: 02.32.48
PATH: /docs/guides/
BRIEF: Build and packaging guide for the MokoWaaS system plugin
NOTE: Defines environment setup, repository layout, packaging rules, and release preparation
-->
-# MokoWaaS Build Guide (VERSION: 02.32.47)
+# MokoWaaS Build Guide (VERSION: 02.32.48)
## 1. Purpose
diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md
index f5f8430..89b5721 100644
--- a/docs/guides/configuration-guide.md
+++ b/docs/guides/configuration-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.47
+ VERSION: 02.32.48
PATH: /docs/guides/configuration-guide.md
BRIEF: Configuration guide for the MokoWaaS system plugin
NOTE: Defines plugin parameters, expected behaviors, and recommended defaults
-->
-# MokoWaaS Configuration Guide (VERSION: 02.32.47)
+# MokoWaaS Configuration Guide (VERSION: 02.32.48)
## 1. Objective
diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md
index 7b13be7..9047723 100644
--- a/docs/guides/installation-guide.md
+++ b/docs/guides/installation-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.47
+ VERSION: 02.32.48
PATH: /docs/guides/installation-guide.md
BRIEF: Installation guide for the MokoWaaS system plugin
NOTE: First document in the guide set
-->
-# MokoWaaS Installation Guide (VERSION: 02.32.47)
+# MokoWaaS Installation Guide (VERSION: 02.32.48)
## Introduction
diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md
index 16efd0e..e86e1b1 100644
--- a/docs/guides/operations-guide.md
+++ b/docs/guides/operations-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.47
+ VERSION: 02.32.48
PATH: /docs/guides/operations-guide.md
BRIEF: Operational guide for administering and managing the MokoWaaS system plugin
NOTE: Defines lifecycle, responsibilities, and operational behaviors
-->
-# MokoWaaS Operations Guide (VERSION: 02.32.47)
+# MokoWaaS Operations Guide (VERSION: 02.32.48)
## Introduction
diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md
index d414feb..1133965 100644
--- a/docs/guides/rollback-and-recovery-guide.md
+++ b/docs/guides/rollback-and-recovery-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.47
+ VERSION: 02.32.48
PATH: /docs/guides/rollback-and-recovery-guide.md
BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents
NOTE: Completes the core guide set for WaaS plugin governance
-->
-# MokoWaaS Rollback and Recovery Guide (VERSION: 02.32.47)
+# MokoWaaS Rollback and Recovery Guide (VERSION: 02.32.48)
## Introduction
diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md
index f71bb22..6a6e6fa 100644
--- a/docs/guides/testing-guide.md
+++ b/docs/guides/testing-guide.md
@@ -7,13 +7,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.47
+ VERSION: 02.32.48
PATH: /docs/guides/testing-guide.md
BRIEF: Testing guide for MokoWaaS v02.01.08
NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration
-->
-# MokoWaaS Testing Guide (VERSION: 02.32.47)
+# MokoWaaS Testing Guide (VERSION: 02.32.48)
## 1. Prerequisites
diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md
index e324a10..dd1bfa4 100644
--- a/docs/guides/troubleshooting-guide.md
+++ b/docs/guides/troubleshooting-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.47
+ VERSION: 02.32.48
PATH: /docs/guides/troubleshooting-guide.md
BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin
NOTE: Designed for administrators and WaaS operations teams
-->
-# MokoWaaS Troubleshooting Guide (VERSION: 02.32.47)
+# MokoWaaS Troubleshooting Guide (VERSION: 02.32.48)
## Introduction
diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md
index c6fedb2..602e7ef 100644
--- a/docs/guides/upgrade-and-versioning-guide.md
+++ b/docs/guides/upgrade-and-versioning-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.47
+ VERSION: 02.32.48
PATH: /docs/guides/upgrade-and-versioning-guide.md
BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin
NOTE: Defines release flow, version rules, and upgrade validation
-->
-# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.32.47)
+# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.32.48)
## Introduction
diff --git a/docs/index.md b/docs/index.md
index 897ca57..874632c 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.47
+ VERSION: 02.32.48
PATH: /docs/index.md
BRIEF: Master index of all documentation for the MokoWaaS plugin
NOTE: Automatically maintained index for all guide canvases
-->
-# MokoWaaS Documentation Index (VERSION: 02.32.47)
+# MokoWaaS Documentation Index (VERSION: 02.32.48)
## Introduction
diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md
index c4f286d..26e865b 100644
--- a/docs/plugin-basic.md
+++ b/docs/plugin-basic.md
@@ -11,12 +11,12 @@
INGROUP: MokoWaaS
REPO: https://github.com/mokoconsulting-tech/mokowaas
PATH: /docs/plugin-basic.md
- VERSION: 02.32.47
+ VERSION: 02.32.48
BRIEF: Baseline documentation for the MokoWaaS system plugin
NOTE: Foundational reference for internal and external stakeholders
-->
-# MokoWaaS Plugin Overview (VERSION: 02.32.47)
+# MokoWaaS Plugin Overview (VERSION: 02.32.48)
## Introduction
diff --git a/docs/update-server.md b/docs/update-server.md
index 9fd4e9f..7114447 100644
--- a/docs/update-server.md
+++ b/docs/update-server.md
@@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation
INGROUP: MokoStandards.Templates
REPO: https://github.com/mokoconsulting-tech/MokoWaaS
PATH: /docs/update-server.md
-VERSION: 02.32.47
+VERSION: 02.32.48
BRIEF: How this extension's Joomla update server file (update.xml) is managed
-->
diff --git a/src/packages/com_mokowaas/mokowaas.xml b/src/packages/com_mokowaas/mokowaas.xml
index dcd445f..21803da 100644
--- a/src/packages/com_mokowaas/mokowaas.xml
+++ b/src/packages/com_mokowaas/mokowaas.xml
@@ -20,7 +20,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.47
+ 02.32.48
MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints.
Moko\Component\MokoWaaS
diff --git a/src/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/src/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml
index f6782c0..53c81a8 100644
--- a/src/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml
+++ b/src/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.46
+ 02.32.48
MOD_MOKOWAAS_CACHE_DESC
Moko\Module\MokoWaaSCache
diff --git a/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml
index e59028f..e808c3b 100644
--- a/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml
+++ b/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.47
+ 02.32.48
MOD_MOKOWAAS_CPANEL_DESC
Moko\Module\MokoWaaSCpanel
diff --git a/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml
index 46d6129..822be21 100644
--- a/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml
+++ b/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.47
+ 02.32.48
MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu.
Moko\Module\MokoWaaSMenu
diff --git a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
index 98518f3..fac7b08 100644
--- a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
+++ b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
@@ -22,7 +22,7 @@
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
* REPO: https://github.com/mokoconsulting-tech/mokowaas
- * VERSION: 02.32.47
+ * VERSION: 02.32.48
* PATH: /src/Extension/MokoWaaS.php
* NOTE: Handles Joomla system events for rebranding functionality
*/
diff --git a/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php b/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php
index 479479a..4e80e9d 100644
--- a/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php
+++ b/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php
@@ -7,7 +7,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.47
+ * VERSION: 02.32.48
* PATH: /src/Field/AllowedIpsField.php
* BRIEF: Custom form field that displays the current IP whitelist
*/
diff --git a/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php
index 20da32a..ba8919f 100644
--- a/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php
+++ b/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.47
+ * VERSION: 02.32.48
* PATH: /src/Field/CopyableTokenField.php
* BRIEF: Read-only token field with a copy-to-clipboard button
*/
diff --git a/src/packages/plg_system_mokowaas/Field/CurrentIpField.php b/src/packages/plg_system_mokowaas/Field/CurrentIpField.php
index 4cb9eae..b9b984e 100644
--- a/src/packages/plg_system_mokowaas/Field/CurrentIpField.php
+++ b/src/packages/plg_system_mokowaas/Field/CurrentIpField.php
@@ -7,7 +7,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.47
+ * VERSION: 02.32.48
* PATH: /src/Field/CurrentIpField.php
* BRIEF: Read-only field that displays the current user's IP address
*/
diff --git a/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php b/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php
index 69e895d..adf451a 100644
--- a/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php
+++ b/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.47
+ * VERSION: 02.32.48
* PATH: /src/Field/DemoTaskInfoField.php
* BRIEF: Read-only field showing scheduled task info with link to manage it
*/
diff --git a/src/packages/plg_system_mokowaas/Field/NextResetField.php b/src/packages/plg_system_mokowaas/Field/NextResetField.php
index a9c80cf..2a360ba 100644
--- a/src/packages/plg_system_mokowaas/Field/NextResetField.php
+++ b/src/packages/plg_system_mokowaas/Field/NextResetField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.47
+ * VERSION: 02.32.48
* PATH: /src/Field/NextResetField.php
* BRIEF: Read-only field showing next reset time from Joomla scheduled task
*/
diff --git a/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php b/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php
index 38eb428..f12afb1 100644
--- a/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php
+++ b/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.47
+ * VERSION: 02.32.48
* PATH: /src/Field/SnapshotTablesField.php
* BRIEF: Multi-select list field that loads DB tables with sensible defaults
*/
diff --git a/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php b/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
index 0ab32b8..589fab5 100644
--- a/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
+++ b/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
@@ -10,7 +10,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
- * VERSION: 02.32.47
+ * VERSION: 02.32.48
* BRIEF: Receiver-side content sync — applies incoming payload to local DB
*/
diff --git a/src/packages/plg_system_mokowaas/Service/ContentSyncService.php b/src/packages/plg_system_mokowaas/Service/ContentSyncService.php
index 22da775..ba36c91 100644
--- a/src/packages/plg_system_mokowaas/Service/ContentSyncService.php
+++ b/src/packages/plg_system_mokowaas/Service/ContentSyncService.php
@@ -10,7 +10,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php
- * VERSION: 02.32.47
+ * VERSION: 02.32.48
* BRIEF: Sender-side content sync — builds payload and pushes to remote sites
*/
diff --git a/src/packages/plg_system_mokowaas/Service/DemoResetService.php b/src/packages/plg_system_mokowaas/Service/DemoResetService.php
index 9edaf22..19a05cb 100644
--- a/src/packages/plg_system_mokowaas/Service/DemoResetService.php
+++ b/src/packages/plg_system_mokowaas/Service/DemoResetService.php
@@ -10,7 +10,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php
- * VERSION: 02.32.47
+ * VERSION: 02.32.48
* BRIEF: Content-only snapshot/restore for demo site reset
*/
diff --git a/src/packages/plg_system_mokowaas/mokowaas.xml b/src/packages/plg_system_mokowaas/mokowaas.xml
index 59e8081..384ac89 100644
--- a/src/packages/plg_system_mokowaas/mokowaas.xml
+++ b/src/packages/plg_system_mokowaas/mokowaas.xml
@@ -30,7 +30,7 @@
GNU General Public License version 3 or later; see LICENSE.md
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.47
+ 02.32.48
This plugin rebrands the Joomla system interface with MokoWaaS identity. It applies language overrides and ensures consistent branding across the platform.
Moko\Plugin\System\MokoWaaS
script.php
diff --git a/src/packages/plg_system_mokowaas/script.php b/src/packages/plg_system_mokowaas/script.php
index b7aec07..bcd8a08 100644
--- a/src/packages/plg_system_mokowaas/script.php
+++ b/src/packages/plg_system_mokowaas/script.php
@@ -22,7 +22,7 @@
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
* REPO: https://github.com/mokoconsulting-tech/mokowaas
- * VERSION: 02.32.47
+ * VERSION: 02.32.48
* PATH: /src/script.php
* BRIEF: Installation script for MokoWaaS plugin
* NOTE: Handles installation, update, and uninstallation tasks including language override deployment
diff --git a/src/packages/plg_system_mokowaas/services/provider.php b/src/packages/plg_system_mokowaas/services/provider.php
index 246be42..0400041 100644
--- a/src/packages/plg_system_mokowaas/services/provider.php
+++ b/src/packages/plg_system_mokowaas/services/provider.php
@@ -22,7 +22,7 @@
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
* REPO: https://github.com/mokoconsulting-tech/mokowaas
- * VERSION: 02.32.47
+ * VERSION: 02.32.48
* PATH: /src/services/provider.php
* BRIEF: Service provider for dependency injection in Joomla 5.x
* NOTE: Registers the plugin with Joomla's DI container
diff --git a/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml
index 142d3b2..6518422 100644
--- a/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml
+++ b/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.47
+ 02.32.48
PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC
Moko\Plugin\System\MokoWaaSDevTools
diff --git a/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
index 13ad261..afd9242 100644
--- a/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
+++ b/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.47
+ 02.32.48
PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC
Moko\Plugin\System\MokoWaaSFirewall
diff --git a/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml
index 3e0cf7a..517f82d 100644
--- a/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml
+++ b/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.47
+ 02.32.48
PLG_SYSTEM_MOKOWAAS_MONITOR_DESC
Moko\Plugin\System\MokoWaaSMonitor
diff --git a/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml
index 4041d27..6b3b8bf 100644
--- a/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml
+++ b/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.47
+ 02.32.48
PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC
Moko\Plugin\System\MokoWaaSOffline
diff --git a/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml
index ea62b27..bfd3a36 100644
--- a/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml
+++ b/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.47
+ 02.32.48
PLG_SYSTEM_MOKOWAAS_TENANT_DESC
Moko\Plugin\System\MokoWaaSTenant
diff --git a/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml
index 3bc3f8d..bdcce26 100644
--- a/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml
+++ b/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.47
+ 02.32.48
Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions.
Moko\Plugin\Task\MokoWaaSTickets
diff --git a/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
index da8ea68..2bfe98c 100644
--- a/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
+++ b/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
@@ -12,7 +12,7 @@
GNU General Public License version 3 or later; see LICENSE
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.47
+ 02.32.48
PLG_TASK_MOKOWAASDEMO_DESC
Moko\Plugin\Task\MokoWaaSDemo
diff --git a/src/packages/plg_task_mokowaassync/mokowaassync.xml b/src/packages/plg_task_mokowaassync/mokowaassync.xml
index 931e19e..40a9fb7 100644
--- a/src/packages/plg_task_mokowaassync/mokowaassync.xml
+++ b/src/packages/plg_task_mokowaassync/mokowaassync.xml
@@ -12,7 +12,7 @@
GNU General Public License version 3 or later; see LICENSE
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.47
+ 02.32.48
PLG_TASK_MOKOWAASSYNC_DESC
Moko\Plugin\Task\MokoWaaSSync
diff --git a/src/packages/plg_webservices_mokowaas/mokowaas.xml b/src/packages/plg_webservices_mokowaas/mokowaas.xml
index 40a4794..83fad62 100644
--- a/src/packages/plg_webservices_mokowaas/mokowaas.xml
+++ b/src/packages/plg_webservices_mokowaas/mokowaas.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.47
+ 02.32.48
Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info.
Moko\Plugin\WebServices\MokoWaaS
diff --git a/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml b/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
index a050991..7817351 100644
--- a/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
+++ b/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.47
+ 02.32.48
Joomla Web Services API routes for Perfect Publisher (com_autotweet) — channels, posts, requests, rules, and feeds.
Moko\Plugin\WebServices\PerfectPublisher
diff --git a/src/packages/plg_webservices_perfectpublisher/services/provider.php b/src/packages/plg_webservices_perfectpublisher/services/provider.php
index ed3d635..66811a8 100644
--- a/src/packages/plg_webservices_perfectpublisher/services/provider.php
+++ b/src/packages/plg_webservices_perfectpublisher/services/provider.php
@@ -8,7 +8,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_webservices_perfectpublisher/services/provider.php
- * VERSION: 02.32.47
+ * VERSION: 02.32.48
* BRIEF: DI service provider for Perfect Publisher Web Services plugin
*/
diff --git a/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php b/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
index 58130c9..cfdab6a 100644
--- a/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
+++ b/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
@@ -8,7 +8,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
- * VERSION: 02.32.47
+ * VERSION: 02.32.48
* BRIEF: Web Services API plugin for Perfect Publisher (com_autotweet)
*/
diff --git a/src/pkg_mokowaas.xml b/src/pkg_mokowaas.xml
index 0cca032..7475975 100644
--- a/src/pkg_mokowaas.xml
+++ b/src/pkg_mokowaas.xml
@@ -2,7 +2,7 @@
Package - MokoWaaS
mokowaas
- 02.32.47
+ 02.32.48
2026-06-02
Moko Consulting
hello@mokoconsulting.tech
diff --git a/updates.xml b/updates.xml
index 21b926e..8254fe7 100644
--- a/updates.xml
+++ b/updates.xml
@@ -1,7 +1,7 @@
--
2.52.0
From 290fc0fb99011f5416e436bac9783016500d317a Mon Sep 17 00:00:00 2001
From: "gitea-actions[bot]"
Date: Thu, 4 Jun 2026 14:10:24 +0000
Subject: [PATCH 098/142] chore: update development channel 02.32.48 [skip ci]
---
updates.xml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/updates.xml b/updates.xml
index 8254fe7..f2e7f4b 100644
--- a/updates.xml
+++ b/updates.xml
@@ -11,13 +11,13 @@
pkg_mokowaas
package
site
- 02.32.47-dev
+ 02.32.48-dev
2026-06-04
https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/tag/development
- https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/development/pkg_mokowaas-02.32.47-dev.zip
+ https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/development/pkg_mokowaas-02.32.48-dev.zip
- d8feab9aad9af48f7d45005881eba7be2e830cff685ef25980b1a15dafae6962
+ 384220b2bd69865e7343d618cb728c1c3acbac0252f4d1edfb92d71af283f8c2
dev
https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/raw/branch/main/CHANGELOG.md
Moko Consulting
--
2.52.0
From 3f6a7af83ef60297c55d6b4bd47e38903aa2723a Mon Sep 17 00:00:00 2001
From: Jonathan Miller <1+jmiller@noreply.git.mokoconsulting.tech>
Date: Thu, 4 Jun 2026 14:20:17 +0000
Subject: [PATCH 099/142] chore: sync .mokogitea/workflows/auto-release.yml
from moko-platform [skip ci]
---
.mokogitea/workflows/auto-release.yml | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/.mokogitea/workflows/auto-release.yml b/.mokogitea/workflows/auto-release.yml
index 2325032..44a2d64 100644
--- a/.mokogitea/workflows/auto-release.yml
+++ b/.mokogitea/workflows/auto-release.yml
@@ -102,13 +102,14 @@ jobs:
run: |
php /tmp/moko-platform-api/cli/release_publish.php \
--path . --stability rc --bump minor --branch rc \
- --token "${{ secrets.MOKOGITEA_TOKEN }}"
+ --token "${{ secrets.MOKOGITEA_TOKEN }}" \
+ --skip-update-stream
- name: Summary
if: always()
run: |
echo "## Promoted to Release Candidate" >> $GITHUB_STEP_SUMMARY
- echo "Branch renamed to rc, minor bump, RC + lesser stream releases built, updates.xml synced" >> $GITHUB_STEP_SUMMARY
+ echo "Branch renamed to rc, minor bump, RC release built (updates.xml managed by Gitea Pages)" >> $GITHUB_STEP_SUMMARY
# ── Merged PR → Build & Release (or promote RC to stable) ────────────────────
release:
@@ -167,7 +168,8 @@ jobs:
run: |
php /tmp/moko-platform-api/cli/release_publish.php \
--path . --stability stable --bump minor --branch main \
- --token "${{ secrets.MOKOGITEA_TOKEN }}"
+ --token "${{ secrets.MOKOGITEA_TOKEN }}" \
+ --skip-update-stream
# -- STEP 9: Mirror to GitHub (stable only) --------------------------------
- name: "Step 9: Mirror release to GitHub"
--
2.52.0
From 130aa26f270388409f2491b7f90991893a996973 Mon Sep 17 00:00:00 2001
From: Jonathan Miller
Date: Thu, 4 Jun 2026 09:21:14 -0500
Subject: [PATCH 100/142] fix: admin menu native classes, sys.ini to global
language dir for menu icons
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- Rewrite mod_mokowaas_menu template to use native MetisMenu classes (item, has-arrow, mm-collapse, mm-active, sidebar-item-title) — no custom CSS/JS
- Add element to component manifest so sys.ini deploys to administrator/language/en-GB/ for menu title translation
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context)
---
src/packages/com_mokowaas/mokowaas.xml | 3 +
.../mod_mokowaas_menu/tmpl/default.php | 125 +++++++-----------
2 files changed, 50 insertions(+), 78 deletions(-)
diff --git a/src/packages/com_mokowaas/mokowaas.xml b/src/packages/com_mokowaas/mokowaas.xml
index dcd445f..036498b 100644
--- a/src/packages/com_mokowaas/mokowaas.xml
+++ b/src/packages/com_mokowaas/mokowaas.xml
@@ -50,6 +50,9 @@
src
tmpl
+
+ en-GB/com_mokowaas.sys.ini
+
diff --git a/src/packages/mod_mokowaas_menu/tmpl/default.php b/src/packages/mod_mokowaas_menu/tmpl/default.php
index 794f4b0..395f9d6 100644
--- a/src/packages/mod_mokowaas_menu/tmpl/default.php
+++ b/src/packages/mod_mokowaas_menu/tmpl/default.php
@@ -2,96 +2,65 @@
/**
* MokoWaaS Admin Sidebar Menu
*
- * Collapsible sidebar section — collapsed by default, auto-expands
- * when on a MokoWaaS page. Mirrors Joomla's own mm-active/mm-show
- * pattern used by CB's mod_cbadmin.
+ * Uses native Joomla admin menu classes (MetisMenu) so it renders
+ * identically to Joomla's own sidebar menu items.
*/
defined('_JEXEC') or die;
+use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;
$items = [
- ['icon' => 'icon-cogs', 'title' => 'Dashboard', 'link' => 'index.php?option=com_mokowaas'],
- ['icon' => 'icon-headphones', 'title' => 'Helpdesk', 'link' => 'index.php?option=com_mokowaas&view=tickets'],
- ['icon' => 'icon-puzzle-piece','title' => 'Extensions', 'link' => 'index.php?option=com_mokowaas&view=extensions'],
- ['icon' => 'icon-file-code', 'title' => '.htaccess Maker', 'link' => 'index.php?option=com_mokowaas&view=htaccess'],
- ['icon' => 'icon-lock', 'title' => 'Privacy Guard', 'link' => 'index.php?option=com_mokowaas&view=privacy'],
- ['icon' => 'icon-shield-alt', 'title' => 'WAF Log', 'link' => 'index.php?option=com_mokowaas&view=waflog'],
- ['icon' => 'icon-database', 'title' => 'Database Tools', 'link' => 'index.php?option=com_mokowaas&view=database'],
- ['icon' => 'icon-trash', 'title' => 'Cache Cleanup', 'link' => 'index.php?option=com_mokowaas&view=cleanup'],
- ['icon' => 'icon-power-off', 'title' => 'Feature Plugins', 'link' => 'index.php?option=com_plugins&filter[folder]=system&filter[search]=mokowaas'],
+ ['icon' => 'icon-cogs', 'title' => 'Dashboard', 'link' => 'index.php?option=com_mokowaas'],
+ ['icon' => 'icon-headphones', 'title' => 'Helpdesk', 'link' => 'index.php?option=com_mokowaas&view=tickets'],
+ ['icon' => 'icon-puzzle-piece', 'title' => 'Extensions', 'link' => 'index.php?option=com_mokowaas&view=extensions'],
+ ['icon' => 'icon-file-code', 'title' => '.htaccess Maker', 'link' => 'index.php?option=com_mokowaas&view=htaccess'],
+ ['icon' => 'icon-lock', 'title' => 'Privacy Guard', 'link' => 'index.php?option=com_mokowaas&view=privacy'],
+ ['icon' => 'icon-shield-alt', 'title' => 'WAF Log', 'link' => 'index.php?option=com_mokowaas&view=waflog'],
+ ['icon' => 'icon-database', 'title' => 'Database Tools', 'link' => 'index.php?option=com_mokowaas&view=database'],
+ ['icon' => 'icon-trash', 'title' => 'Cache Cleanup', 'link' => 'index.php?option=com_mokowaas&view=cleanup'],
+ ['icon' => 'icon-power-off', 'title' => 'Feature Plugins', 'link' => 'index.php?option=com_plugins&filter[folder]=system&filter[search]=mokowaas'],
];
$app = \Joomla\CMS\Factory::getApplication();
$currentOption = $app->getInput()->get('option', '');
$currentView = $app->getInput()->get('view', '');
-// Auto-expand when on a MokoWaaS page
-$isMokoPage = ($currentOption === 'com_mokowaas')
- || ($currentOption === 'com_plugins' && stripos($app->getInput()->get('filter', [], 'array')['search'] ?? $app->getInput()->getString('filter_search', ''), 'mokowaas') !== false);
-
-$collapseId = 'mokowaas-menu-collapse';
+// Determine if any child is active (auto-expand)
+$anyActive = ($currentOption === 'com_mokowaas');
+$parentClass = 'item parent item-level-1' . ($anyActive ? ' mm-active' : '');
+$collapseClass = 'collapse-level-1 mm-collapse' . ($anyActive ? ' mm-show' : '');
?>
-
-
+
--
2.52.0
From 0552c0a0b09fcbe31d98a6d2f87697fcbe68a191 Mon Sep 17 00:00:00 2001
From: "gitea-actions[bot]"
Date: Thu, 4 Jun 2026 14:21:48 +0000
Subject: [PATCH 101/142] chore(version): auto-bump 02.32.49 [skip ci]
---
.mokogitea/manifest.xml | 2 +-
.mokogitea/workflows/issue-branch.yml | 2 +-
CHANGELOG.md | 2 +-
CODE_OF_CONDUCT.md | 2 +-
GOVERNANCE.md | 2 +-
LICENSE.md | 2 +-
README.md | 2 +-
SECURITY.md | 2 +-
docs/guides/build-guide.md | 4 ++--
docs/guides/configuration-guide.md | 4 ++--
docs/guides/installation-guide.md | 4 ++--
docs/guides/operations-guide.md | 4 ++--
docs/guides/rollback-and-recovery-guide.md | 4 ++--
docs/guides/testing-guide.md | 4 ++--
docs/guides/troubleshooting-guide.md | 4 ++--
docs/guides/upgrade-and-versioning-guide.md | 4 ++--
docs/index.md | 4 ++--
docs/plugin-basic.md | 4 ++--
docs/update-server.md | 2 +-
src/packages/com_mokowaas/mokowaas.xml | 2 +-
src/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +-
src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +-
src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +-
src/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +-
src/packages/plg_system_mokowaas/Field/AllowedIpsField.php | 2 +-
src/packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +-
src/packages/plg_system_mokowaas/Field/CurrentIpField.php | 2 +-
src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php | 2 +-
src/packages/plg_system_mokowaas/Field/NextResetField.php | 2 +-
.../plg_system_mokowaas/Field/SnapshotTablesField.php | 2 +-
.../plg_system_mokowaas/Service/ContentSyncReceiver.php | 2 +-
.../plg_system_mokowaas/Service/ContentSyncService.php | 2 +-
src/packages/plg_system_mokowaas/Service/DemoResetService.php | 2 +-
src/packages/plg_system_mokowaas/mokowaas.xml | 2 +-
src/packages/plg_system_mokowaas/script.php | 2 +-
src/packages/plg_system_mokowaas/services/provider.php | 2 +-
.../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +-
.../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +-
src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +-
src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +-
src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +-
src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +-
src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +-
src/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +-
src/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +-
.../plg_webservices_perfectpublisher/perfectpublisher.xml | 2 +-
.../plg_webservices_perfectpublisher/services/provider.php | 2 +-
.../src/Extension/PerfectPublisherApi.php | 2 +-
src/pkg_mokowaas.xml | 2 +-
updates.xml | 2 +-
50 files changed, 60 insertions(+), 60 deletions(-)
diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml
index 6ed5b90..3090ca4 100644
--- a/.mokogitea/manifest.xml
+++ b/.mokogitea/manifest.xml
@@ -9,7 +9,7 @@
Package - MokoWaaS
MokoConsulting
White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments
- 02.32.48
+ 02.32.49
GNU General Public License v3
diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml
index 634d1de..947949d 100644
--- a/.mokogitea/workflows/issue-branch.yml
+++ b/.mokogitea/workflows/issue-branch.yml
@@ -5,7 +5,7 @@
# FILE INFORMATION
# DEFGROUP: Gitea.Workflow
# INGROUP: moko-platform.Automation
-# VERSION: 02.32.48
+# VERSION: 02.32.49
# BRIEF: Auto-create feature branch when an issue is opened
name: "Universal: Issue Branch"
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1fef427..55b1af3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,7 +14,7 @@
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
PATH: ./CHANGELOG.md
- VERSION: 02.32.48
+ VERSION: 02.32.49
BRIEF: Version history using `Keep a Changelog`
-->
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 1ceddee..a003bb2 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -14,7 +14,7 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.48
+ VERSION: 02.32.49
PATH: ./CODE_OF_CONDUCT.md
BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default
-->
diff --git a/GOVERNANCE.md b/GOVERNANCE.md
index d46d44d..a68edc2 100644
--- a/GOVERNANCE.md
+++ b/GOVERNANCE.md
@@ -19,7 +19,7 @@
DEFGROUP: mokoconsulting-tech.MokoWaaSBrand
INGROUP: MokoStandards.Governance
REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand
- VERSION: 02.32.48
+ VERSION: 02.32.49
PATH: /GOVERNANCE.md
BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand
-->
diff --git a/LICENSE.md b/LICENSE.md
index 116a9bf..7665d48 100644
--- a/LICENSE.md
+++ b/LICENSE.md
@@ -15,7 +15,7 @@
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
PATH: ./LICENSE.md
- VERSION: 02.32.48
+ VERSION: 02.32.49
BRIEF: Project license (GPL-3.0-or-later)
-->
GNU GENERAL PUBLIC LICENSE
diff --git a/README.md b/README.md
index b909d7c..0a9e9de 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS
REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
- VERSION: 02.32.48
+ VERSION: 02.32.49
PATH: /README.md
BRIEF: MokoWaaS platform plugin for Joomla
-->
diff --git a/SECURITY.md b/SECURITY.md
index 371c840..cccc93f 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME]
INGROUP: [PROJECT_NAME].Documentation
REPO: [REPOSITORY_URL]
PATH: /SECURITY.md
-VERSION: 02.32.48
+VERSION: 02.32.49
BRIEF: Security vulnerability reporting and handling policy
-->
diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md
index dadd5e9..77fdd9e 100644
--- a/docs/guides/build-guide.md
+++ b/docs/guides/build-guide.md
@@ -11,13 +11,13 @@
INGROUP: MokoWaaS.Build
REPO: https://github.com/mokoconsulting-tech/mokowaas
FILE: build-guide.md
- VERSION: 02.32.48
+ VERSION: 02.32.49
PATH: /docs/guides/
BRIEF: Build and packaging guide for the MokoWaaS system plugin
NOTE: Defines environment setup, repository layout, packaging rules, and release preparation
-->
-# MokoWaaS Build Guide (VERSION: 02.32.48)
+# MokoWaaS Build Guide (VERSION: 02.32.49)
## 1. Purpose
diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md
index 89b5721..e3a57c5 100644
--- a/docs/guides/configuration-guide.md
+++ b/docs/guides/configuration-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.48
+ VERSION: 02.32.49
PATH: /docs/guides/configuration-guide.md
BRIEF: Configuration guide for the MokoWaaS system plugin
NOTE: Defines plugin parameters, expected behaviors, and recommended defaults
-->
-# MokoWaaS Configuration Guide (VERSION: 02.32.48)
+# MokoWaaS Configuration Guide (VERSION: 02.32.49)
## 1. Objective
diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md
index 9047723..1350b2a 100644
--- a/docs/guides/installation-guide.md
+++ b/docs/guides/installation-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.48
+ VERSION: 02.32.49
PATH: /docs/guides/installation-guide.md
BRIEF: Installation guide for the MokoWaaS system plugin
NOTE: First document in the guide set
-->
-# MokoWaaS Installation Guide (VERSION: 02.32.48)
+# MokoWaaS Installation Guide (VERSION: 02.32.49)
## Introduction
diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md
index e86e1b1..995ab5c 100644
--- a/docs/guides/operations-guide.md
+++ b/docs/guides/operations-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.48
+ VERSION: 02.32.49
PATH: /docs/guides/operations-guide.md
BRIEF: Operational guide for administering and managing the MokoWaaS system plugin
NOTE: Defines lifecycle, responsibilities, and operational behaviors
-->
-# MokoWaaS Operations Guide (VERSION: 02.32.48)
+# MokoWaaS Operations Guide (VERSION: 02.32.49)
## Introduction
diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md
index 1133965..09b5d83 100644
--- a/docs/guides/rollback-and-recovery-guide.md
+++ b/docs/guides/rollback-and-recovery-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.48
+ VERSION: 02.32.49
PATH: /docs/guides/rollback-and-recovery-guide.md
BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents
NOTE: Completes the core guide set for WaaS plugin governance
-->
-# MokoWaaS Rollback and Recovery Guide (VERSION: 02.32.48)
+# MokoWaaS Rollback and Recovery Guide (VERSION: 02.32.49)
## Introduction
diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md
index 6a6e6fa..216cf70 100644
--- a/docs/guides/testing-guide.md
+++ b/docs/guides/testing-guide.md
@@ -7,13 +7,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.48
+ VERSION: 02.32.49
PATH: /docs/guides/testing-guide.md
BRIEF: Testing guide for MokoWaaS v02.01.08
NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration
-->
-# MokoWaaS Testing Guide (VERSION: 02.32.48)
+# MokoWaaS Testing Guide (VERSION: 02.32.49)
## 1. Prerequisites
diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md
index dd1bfa4..e2ae318 100644
--- a/docs/guides/troubleshooting-guide.md
+++ b/docs/guides/troubleshooting-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.48
+ VERSION: 02.32.49
PATH: /docs/guides/troubleshooting-guide.md
BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin
NOTE: Designed for administrators and WaaS operations teams
-->
-# MokoWaaS Troubleshooting Guide (VERSION: 02.32.48)
+# MokoWaaS Troubleshooting Guide (VERSION: 02.32.49)
## Introduction
diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md
index 602e7ef..fc5f814 100644
--- a/docs/guides/upgrade-and-versioning-guide.md
+++ b/docs/guides/upgrade-and-versioning-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.48
+ VERSION: 02.32.49
PATH: /docs/guides/upgrade-and-versioning-guide.md
BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin
NOTE: Defines release flow, version rules, and upgrade validation
-->
-# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.32.48)
+# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.32.49)
## Introduction
diff --git a/docs/index.md b/docs/index.md
index 874632c..8bd77e7 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.48
+ VERSION: 02.32.49
PATH: /docs/index.md
BRIEF: Master index of all documentation for the MokoWaaS plugin
NOTE: Automatically maintained index for all guide canvases
-->
-# MokoWaaS Documentation Index (VERSION: 02.32.48)
+# MokoWaaS Documentation Index (VERSION: 02.32.49)
## Introduction
diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md
index 26e865b..1749035 100644
--- a/docs/plugin-basic.md
+++ b/docs/plugin-basic.md
@@ -11,12 +11,12 @@
INGROUP: MokoWaaS
REPO: https://github.com/mokoconsulting-tech/mokowaas
PATH: /docs/plugin-basic.md
- VERSION: 02.32.48
+ VERSION: 02.32.49
BRIEF: Baseline documentation for the MokoWaaS system plugin
NOTE: Foundational reference for internal and external stakeholders
-->
-# MokoWaaS Plugin Overview (VERSION: 02.32.48)
+# MokoWaaS Plugin Overview (VERSION: 02.32.49)
## Introduction
diff --git a/docs/update-server.md b/docs/update-server.md
index 7114447..7f116ee 100644
--- a/docs/update-server.md
+++ b/docs/update-server.md
@@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation
INGROUP: MokoStandards.Templates
REPO: https://github.com/mokoconsulting-tech/MokoWaaS
PATH: /docs/update-server.md
-VERSION: 02.32.48
+VERSION: 02.32.49
BRIEF: How this extension's Joomla update server file (update.xml) is managed
-->
diff --git a/src/packages/com_mokowaas/mokowaas.xml b/src/packages/com_mokowaas/mokowaas.xml
index c6ea216..8815a53 100644
--- a/src/packages/com_mokowaas/mokowaas.xml
+++ b/src/packages/com_mokowaas/mokowaas.xml
@@ -20,7 +20,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.48
+ 02.32.49
MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints.
Moko\Component\MokoWaaS
diff --git a/src/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/src/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml
index 53c81a8..8eca78f 100644
--- a/src/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml
+++ b/src/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.48
+ 02.32.49
MOD_MOKOWAAS_CACHE_DESC
Moko\Module\MokoWaaSCache
diff --git a/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml
index e808c3b..a635e80 100644
--- a/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml
+++ b/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.48
+ 02.32.49
MOD_MOKOWAAS_CPANEL_DESC
Moko\Module\MokoWaaSCpanel
diff --git a/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml
index 822be21..0267aca 100644
--- a/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml
+++ b/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.48
+ 02.32.49
MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu.
Moko\Module\MokoWaaSMenu
diff --git a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
index fac7b08..2f39f38 100644
--- a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
+++ b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
@@ -22,7 +22,7 @@
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
* REPO: https://github.com/mokoconsulting-tech/mokowaas
- * VERSION: 02.32.48
+ * VERSION: 02.32.49
* PATH: /src/Extension/MokoWaaS.php
* NOTE: Handles Joomla system events for rebranding functionality
*/
diff --git a/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php b/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php
index 4e80e9d..8fbe69f 100644
--- a/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php
+++ b/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php
@@ -7,7 +7,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.48
+ * VERSION: 02.32.49
* PATH: /src/Field/AllowedIpsField.php
* BRIEF: Custom form field that displays the current IP whitelist
*/
diff --git a/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php
index ba8919f..9b3777d 100644
--- a/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php
+++ b/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.48
+ * VERSION: 02.32.49
* PATH: /src/Field/CopyableTokenField.php
* BRIEF: Read-only token field with a copy-to-clipboard button
*/
diff --git a/src/packages/plg_system_mokowaas/Field/CurrentIpField.php b/src/packages/plg_system_mokowaas/Field/CurrentIpField.php
index b9b984e..f3db8db 100644
--- a/src/packages/plg_system_mokowaas/Field/CurrentIpField.php
+++ b/src/packages/plg_system_mokowaas/Field/CurrentIpField.php
@@ -7,7 +7,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.48
+ * VERSION: 02.32.49
* PATH: /src/Field/CurrentIpField.php
* BRIEF: Read-only field that displays the current user's IP address
*/
diff --git a/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php b/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php
index adf451a..4111988 100644
--- a/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php
+++ b/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.48
+ * VERSION: 02.32.49
* PATH: /src/Field/DemoTaskInfoField.php
* BRIEF: Read-only field showing scheduled task info with link to manage it
*/
diff --git a/src/packages/plg_system_mokowaas/Field/NextResetField.php b/src/packages/plg_system_mokowaas/Field/NextResetField.php
index 2a360ba..2981373 100644
--- a/src/packages/plg_system_mokowaas/Field/NextResetField.php
+++ b/src/packages/plg_system_mokowaas/Field/NextResetField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.48
+ * VERSION: 02.32.49
* PATH: /src/Field/NextResetField.php
* BRIEF: Read-only field showing next reset time from Joomla scheduled task
*/
diff --git a/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php b/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php
index f12afb1..f1a790a 100644
--- a/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php
+++ b/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.48
+ * VERSION: 02.32.49
* PATH: /src/Field/SnapshotTablesField.php
* BRIEF: Multi-select list field that loads DB tables with sensible defaults
*/
diff --git a/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php b/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
index 589fab5..94c99bd 100644
--- a/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
+++ b/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
@@ -10,7 +10,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
- * VERSION: 02.32.48
+ * VERSION: 02.32.49
* BRIEF: Receiver-side content sync — applies incoming payload to local DB
*/
diff --git a/src/packages/plg_system_mokowaas/Service/ContentSyncService.php b/src/packages/plg_system_mokowaas/Service/ContentSyncService.php
index ba36c91..525160b 100644
--- a/src/packages/plg_system_mokowaas/Service/ContentSyncService.php
+++ b/src/packages/plg_system_mokowaas/Service/ContentSyncService.php
@@ -10,7 +10,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php
- * VERSION: 02.32.48
+ * VERSION: 02.32.49
* BRIEF: Sender-side content sync — builds payload and pushes to remote sites
*/
diff --git a/src/packages/plg_system_mokowaas/Service/DemoResetService.php b/src/packages/plg_system_mokowaas/Service/DemoResetService.php
index 19a05cb..dfe61a4 100644
--- a/src/packages/plg_system_mokowaas/Service/DemoResetService.php
+++ b/src/packages/plg_system_mokowaas/Service/DemoResetService.php
@@ -10,7 +10,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php
- * VERSION: 02.32.48
+ * VERSION: 02.32.49
* BRIEF: Content-only snapshot/restore for demo site reset
*/
diff --git a/src/packages/plg_system_mokowaas/mokowaas.xml b/src/packages/plg_system_mokowaas/mokowaas.xml
index 384ac89..4f11b56 100644
--- a/src/packages/plg_system_mokowaas/mokowaas.xml
+++ b/src/packages/plg_system_mokowaas/mokowaas.xml
@@ -30,7 +30,7 @@
GNU General Public License version 3 or later; see LICENSE.md
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.48
+ 02.32.49
This plugin rebrands the Joomla system interface with MokoWaaS identity. It applies language overrides and ensures consistent branding across the platform.
Moko\Plugin\System\MokoWaaS
script.php
diff --git a/src/packages/plg_system_mokowaas/script.php b/src/packages/plg_system_mokowaas/script.php
index bcd8a08..d2b3968 100644
--- a/src/packages/plg_system_mokowaas/script.php
+++ b/src/packages/plg_system_mokowaas/script.php
@@ -22,7 +22,7 @@
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
* REPO: https://github.com/mokoconsulting-tech/mokowaas
- * VERSION: 02.32.48
+ * VERSION: 02.32.49
* PATH: /src/script.php
* BRIEF: Installation script for MokoWaaS plugin
* NOTE: Handles installation, update, and uninstallation tasks including language override deployment
diff --git a/src/packages/plg_system_mokowaas/services/provider.php b/src/packages/plg_system_mokowaas/services/provider.php
index 0400041..765e903 100644
--- a/src/packages/plg_system_mokowaas/services/provider.php
+++ b/src/packages/plg_system_mokowaas/services/provider.php
@@ -22,7 +22,7 @@
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
* REPO: https://github.com/mokoconsulting-tech/mokowaas
- * VERSION: 02.32.48
+ * VERSION: 02.32.49
* PATH: /src/services/provider.php
* BRIEF: Service provider for dependency injection in Joomla 5.x
* NOTE: Registers the plugin with Joomla's DI container
diff --git a/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml
index 6518422..a2691c5 100644
--- a/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml
+++ b/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.48
+ 02.32.49
PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC
Moko\Plugin\System\MokoWaaSDevTools
diff --git a/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
index afd9242..46a5acb 100644
--- a/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
+++ b/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.48
+ 02.32.49
PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC
Moko\Plugin\System\MokoWaaSFirewall
diff --git a/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml
index 517f82d..2db5ceb 100644
--- a/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml
+++ b/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.48
+ 02.32.49
PLG_SYSTEM_MOKOWAAS_MONITOR_DESC
Moko\Plugin\System\MokoWaaSMonitor
diff --git a/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml
index 6b3b8bf..e70bca9 100644
--- a/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml
+++ b/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.48
+ 02.32.49
PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC
Moko\Plugin\System\MokoWaaSOffline
diff --git a/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml
index bfd3a36..aa80026 100644
--- a/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml
+++ b/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.48
+ 02.32.49
PLG_SYSTEM_MOKOWAAS_TENANT_DESC
Moko\Plugin\System\MokoWaaSTenant
diff --git a/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml
index bdcce26..464fa02 100644
--- a/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml
+++ b/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.48
+ 02.32.49
Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions.
Moko\Plugin\Task\MokoWaaSTickets
diff --git a/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
index 2bfe98c..97953cf 100644
--- a/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
+++ b/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
@@ -12,7 +12,7 @@
GNU General Public License version 3 or later; see LICENSE
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.48
+ 02.32.49
PLG_TASK_MOKOWAASDEMO_DESC
Moko\Plugin\Task\MokoWaaSDemo
diff --git a/src/packages/plg_task_mokowaassync/mokowaassync.xml b/src/packages/plg_task_mokowaassync/mokowaassync.xml
index 40a9fb7..4747d49 100644
--- a/src/packages/plg_task_mokowaassync/mokowaassync.xml
+++ b/src/packages/plg_task_mokowaassync/mokowaassync.xml
@@ -12,7 +12,7 @@
GNU General Public License version 3 or later; see LICENSE
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.48
+ 02.32.49
PLG_TASK_MOKOWAASSYNC_DESC
Moko\Plugin\Task\MokoWaaSSync
diff --git a/src/packages/plg_webservices_mokowaas/mokowaas.xml b/src/packages/plg_webservices_mokowaas/mokowaas.xml
index 83fad62..665a45f 100644
--- a/src/packages/plg_webservices_mokowaas/mokowaas.xml
+++ b/src/packages/plg_webservices_mokowaas/mokowaas.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.48
+ 02.32.49
Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info.
Moko\Plugin\WebServices\MokoWaaS
diff --git a/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml b/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
index 7817351..85a2e53 100644
--- a/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
+++ b/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.48
+ 02.32.49
Joomla Web Services API routes for Perfect Publisher (com_autotweet) — channels, posts, requests, rules, and feeds.
Moko\Plugin\WebServices\PerfectPublisher
diff --git a/src/packages/plg_webservices_perfectpublisher/services/provider.php b/src/packages/plg_webservices_perfectpublisher/services/provider.php
index 66811a8..f905c1e 100644
--- a/src/packages/plg_webservices_perfectpublisher/services/provider.php
+++ b/src/packages/plg_webservices_perfectpublisher/services/provider.php
@@ -8,7 +8,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_webservices_perfectpublisher/services/provider.php
- * VERSION: 02.32.48
+ * VERSION: 02.32.49
* BRIEF: DI service provider for Perfect Publisher Web Services plugin
*/
diff --git a/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php b/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
index cfdab6a..f08c31c 100644
--- a/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
+++ b/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
@@ -8,7 +8,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
- * VERSION: 02.32.48
+ * VERSION: 02.32.49
* BRIEF: Web Services API plugin for Perfect Publisher (com_autotweet)
*/
diff --git a/src/pkg_mokowaas.xml b/src/pkg_mokowaas.xml
index 7475975..cd31377 100644
--- a/src/pkg_mokowaas.xml
+++ b/src/pkg_mokowaas.xml
@@ -2,7 +2,7 @@
Package - MokoWaaS
mokowaas
- 02.32.48
+ 02.32.49
2026-06-02
Moko Consulting
hello@mokoconsulting.tech
diff --git a/updates.xml b/updates.xml
index f2e7f4b..4a248e8 100644
--- a/updates.xml
+++ b/updates.xml
@@ -1,7 +1,7 @@
--
2.52.0
From a2006c228748d0e237c7c82aaba08999aa5601dd Mon Sep 17 00:00:00 2001
From: "gitea-actions[bot]"
Date: Thu, 4 Jun 2026 14:21:50 +0000
Subject: [PATCH 102/142] chore: update development channel 02.32.49 [skip ci]
---
updates.xml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/updates.xml b/updates.xml
index 4a248e8..1118cac 100644
--- a/updates.xml
+++ b/updates.xml
@@ -11,13 +11,13 @@
pkg_mokowaas
package
site
- 02.32.48-dev
+ 02.32.49-dev
2026-06-04
https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/tag/development
- https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/development/pkg_mokowaas-02.32.48-dev.zip
+ https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/development/pkg_mokowaas-02.32.49-dev.zip
- 384220b2bd69865e7343d618cb728c1c3acbac0252f4d1edfb92d71af283f8c2
+ 77eb1565ba41e251941435e4b954ccd94c5958d436f99c01de018fc587171134
dev
https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/raw/branch/main/CHANGELOG.md
Moko Consulting
--
2.52.0
From 30a6f6607a3197832e5d7738f59d94d46ff435a9 Mon Sep 17 00:00:00 2001
From: Jonathan Miller
Date: Thu, 4 Jun 2026 09:38:05 -0500
Subject: [PATCH 103/142] fix: add fixMenuIcons to postflight for submenu icon
params
Joomla only renders img column icons for level-1 menu items. Level 2+
need menu_icon in the params JSON. This runs on every install/update.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context)
---
src/script.php | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 66 insertions(+)
diff --git a/src/script.php b/src/script.php
index 5d55bf3..56ea66d 100644
--- a/src/script.php
+++ b/src/script.php
@@ -64,6 +64,9 @@ class Pkg_MokowaasInstallerScript
// Create Support portal menu item on frontend
$this->setupSupportMenuItem();
+ // Set menu_icon params on submenu items (Joomla only renders img on level 1)
+ $this->fixMenuIcons();
+
// Mark MokoWaaS extensions as protected (prevents disable/uninstall at framework level)
$this->protectExtensions();
@@ -840,6 +843,69 @@ class Pkg_MokowaasInstallerScript
}
}
+ /**
+ * Joomla only renders the img column icon for level-1 menu items.
+ * Submenu items (level 2) need menu_icon set in the params JSON.
+ */
+ private function fixMenuIcons(): void
+ {
+ try
+ {
+ $db = Factory::getDbo();
+
+ $iconMap = [
+ 'class:cogs' => 'icon-cogs',
+ 'class:puzzle-piece' => 'icon-puzzle-piece',
+ 'class:headphones' => 'icon-headphones',
+ 'class:file-code' => 'icon-file-code',
+ 'class:lock' => 'icon-lock',
+ 'class:shield-alt' => 'icon-shield-alt',
+ 'class:database' => 'icon-database',
+ 'class:trash' => 'icon-trash',
+ 'class:power-off' => 'icon-power-off',
+ 'class:refresh' => 'icon-refresh',
+ 'class:check-square' => 'icon-check-square',
+ 'class:bolt' => 'icon-bolt',
+ ];
+
+ $db->setQuery(
+ "SELECT id, img, params FROM #__menu"
+ . " WHERE client_id = 1 AND level >= 2"
+ . " AND link LIKE '%com_mokowaas%'"
+ );
+
+ foreach ($db->loadObjectList() as $item)
+ {
+ $icon = $iconMap[$item->img] ?? '';
+
+ if (!$icon)
+ {
+ continue;
+ }
+
+ $params = json_decode($item->params ?: '{}', true) ?: [];
+
+ if (!empty($params['menu_icon']))
+ {
+ continue;
+ }
+
+ $params['menu_icon'] = $icon;
+
+ $db->setQuery(
+ $db->getQuery(true)
+ ->update($db->quoteName('#__menu'))
+ ->set($db->quoteName('params') . ' = ' . $db->quote(json_encode($params)))
+ ->where($db->quoteName('id') . ' = ' . (int) $item->id)
+ )->execute();
+ }
+ }
+ catch (\Throwable $e)
+ {
+ Log::add('Menu icon fix error: ' . $e->getMessage(), Log::WARNING, 'mokowaas');
+ }
+ }
+
/**
* Create a "Support" menu item on the frontend main menu.
*/
--
2.52.0
From dcf115e57295902230b4350e134377e8a6d63d8b Mon Sep 17 00:00:00 2001
From: "gitea-actions[bot]"
Date: Thu, 4 Jun 2026 14:39:00 +0000
Subject: [PATCH 104/142] chore(version): auto-bump 02.32.50 [skip ci]
---
.mokogitea/manifest.xml | 2 +-
.mokogitea/workflows/issue-branch.yml | 2 +-
CHANGELOG.md | 2 +-
CODE_OF_CONDUCT.md | 2 +-
GOVERNANCE.md | 2 +-
LICENSE.md | 2 +-
README.md | 2 +-
SECURITY.md | 2 +-
docs/guides/build-guide.md | 4 ++--
docs/guides/configuration-guide.md | 4 ++--
docs/guides/installation-guide.md | 4 ++--
docs/guides/operations-guide.md | 4 ++--
docs/guides/rollback-and-recovery-guide.md | 4 ++--
docs/guides/testing-guide.md | 4 ++--
docs/guides/troubleshooting-guide.md | 4 ++--
docs/guides/upgrade-and-versioning-guide.md | 4 ++--
docs/index.md | 4 ++--
docs/plugin-basic.md | 4 ++--
docs/update-server.md | 2 +-
src/packages/com_mokowaas/mokowaas.xml | 2 +-
src/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +-
src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +-
src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +-
src/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +-
src/packages/plg_system_mokowaas/Field/AllowedIpsField.php | 2 +-
src/packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +-
src/packages/plg_system_mokowaas/Field/CurrentIpField.php | 2 +-
src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php | 2 +-
src/packages/plg_system_mokowaas/Field/NextResetField.php | 2 +-
.../plg_system_mokowaas/Field/SnapshotTablesField.php | 2 +-
.../plg_system_mokowaas/Service/ContentSyncReceiver.php | 2 +-
.../plg_system_mokowaas/Service/ContentSyncService.php | 2 +-
src/packages/plg_system_mokowaas/Service/DemoResetService.php | 2 +-
src/packages/plg_system_mokowaas/mokowaas.xml | 2 +-
src/packages/plg_system_mokowaas/script.php | 2 +-
src/packages/plg_system_mokowaas/services/provider.php | 2 +-
.../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +-
.../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +-
src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +-
src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +-
src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +-
src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +-
src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +-
src/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +-
src/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +-
.../plg_webservices_perfectpublisher/perfectpublisher.xml | 2 +-
.../plg_webservices_perfectpublisher/services/provider.php | 2 +-
.../src/Extension/PerfectPublisherApi.php | 2 +-
src/pkg_mokowaas.xml | 2 +-
updates.xml | 2 +-
50 files changed, 60 insertions(+), 60 deletions(-)
diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml
index 3090ca4..1cfbf38 100644
--- a/.mokogitea/manifest.xml
+++ b/.mokogitea/manifest.xml
@@ -9,7 +9,7 @@
Package - MokoWaaS
MokoConsulting
White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments
- 02.32.49
+ 02.32.50
GNU General Public License v3
diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml
index 947949d..b0a58d5 100644
--- a/.mokogitea/workflows/issue-branch.yml
+++ b/.mokogitea/workflows/issue-branch.yml
@@ -5,7 +5,7 @@
# FILE INFORMATION
# DEFGROUP: Gitea.Workflow
# INGROUP: moko-platform.Automation
-# VERSION: 02.32.49
+# VERSION: 02.32.50
# BRIEF: Auto-create feature branch when an issue is opened
name: "Universal: Issue Branch"
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 55b1af3..e8f97ba 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,7 +14,7 @@
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
PATH: ./CHANGELOG.md
- VERSION: 02.32.49
+ VERSION: 02.32.50
BRIEF: Version history using `Keep a Changelog`
-->
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index a003bb2..8f3ed71 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -14,7 +14,7 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.49
+ VERSION: 02.32.50
PATH: ./CODE_OF_CONDUCT.md
BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default
-->
diff --git a/GOVERNANCE.md b/GOVERNANCE.md
index a68edc2..9bf2737 100644
--- a/GOVERNANCE.md
+++ b/GOVERNANCE.md
@@ -19,7 +19,7 @@
DEFGROUP: mokoconsulting-tech.MokoWaaSBrand
INGROUP: MokoStandards.Governance
REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand
- VERSION: 02.32.49
+ VERSION: 02.32.50
PATH: /GOVERNANCE.md
BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand
-->
diff --git a/LICENSE.md b/LICENSE.md
index 7665d48..7bf1d36 100644
--- a/LICENSE.md
+++ b/LICENSE.md
@@ -15,7 +15,7 @@
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
PATH: ./LICENSE.md
- VERSION: 02.32.49
+ VERSION: 02.32.50
BRIEF: Project license (GPL-3.0-or-later)
-->
GNU GENERAL PUBLIC LICENSE
diff --git a/README.md b/README.md
index 0a9e9de..86a8b1c 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS
REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
- VERSION: 02.32.49
+ VERSION: 02.32.50
PATH: /README.md
BRIEF: MokoWaaS platform plugin for Joomla
-->
diff --git a/SECURITY.md b/SECURITY.md
index cccc93f..1f6c373 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME]
INGROUP: [PROJECT_NAME].Documentation
REPO: [REPOSITORY_URL]
PATH: /SECURITY.md
-VERSION: 02.32.49
+VERSION: 02.32.50
BRIEF: Security vulnerability reporting and handling policy
-->
diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md
index 77fdd9e..b99b210 100644
--- a/docs/guides/build-guide.md
+++ b/docs/guides/build-guide.md
@@ -11,13 +11,13 @@
INGROUP: MokoWaaS.Build
REPO: https://github.com/mokoconsulting-tech/mokowaas
FILE: build-guide.md
- VERSION: 02.32.49
+ VERSION: 02.32.50
PATH: /docs/guides/
BRIEF: Build and packaging guide for the MokoWaaS system plugin
NOTE: Defines environment setup, repository layout, packaging rules, and release preparation
-->
-# MokoWaaS Build Guide (VERSION: 02.32.49)
+# MokoWaaS Build Guide (VERSION: 02.32.50)
## 1. Purpose
diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md
index e3a57c5..916a874 100644
--- a/docs/guides/configuration-guide.md
+++ b/docs/guides/configuration-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.49
+ VERSION: 02.32.50
PATH: /docs/guides/configuration-guide.md
BRIEF: Configuration guide for the MokoWaaS system plugin
NOTE: Defines plugin parameters, expected behaviors, and recommended defaults
-->
-# MokoWaaS Configuration Guide (VERSION: 02.32.49)
+# MokoWaaS Configuration Guide (VERSION: 02.32.50)
## 1. Objective
diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md
index 1350b2a..92c5483 100644
--- a/docs/guides/installation-guide.md
+++ b/docs/guides/installation-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.49
+ VERSION: 02.32.50
PATH: /docs/guides/installation-guide.md
BRIEF: Installation guide for the MokoWaaS system plugin
NOTE: First document in the guide set
-->
-# MokoWaaS Installation Guide (VERSION: 02.32.49)
+# MokoWaaS Installation Guide (VERSION: 02.32.50)
## Introduction
diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md
index 995ab5c..cc84663 100644
--- a/docs/guides/operations-guide.md
+++ b/docs/guides/operations-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.49
+ VERSION: 02.32.50
PATH: /docs/guides/operations-guide.md
BRIEF: Operational guide for administering and managing the MokoWaaS system plugin
NOTE: Defines lifecycle, responsibilities, and operational behaviors
-->
-# MokoWaaS Operations Guide (VERSION: 02.32.49)
+# MokoWaaS Operations Guide (VERSION: 02.32.50)
## Introduction
diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md
index 09b5d83..bb1897f 100644
--- a/docs/guides/rollback-and-recovery-guide.md
+++ b/docs/guides/rollback-and-recovery-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.49
+ VERSION: 02.32.50
PATH: /docs/guides/rollback-and-recovery-guide.md
BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents
NOTE: Completes the core guide set for WaaS plugin governance
-->
-# MokoWaaS Rollback and Recovery Guide (VERSION: 02.32.49)
+# MokoWaaS Rollback and Recovery Guide (VERSION: 02.32.50)
## Introduction
diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md
index 216cf70..1d22c0e 100644
--- a/docs/guides/testing-guide.md
+++ b/docs/guides/testing-guide.md
@@ -7,13 +7,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.49
+ VERSION: 02.32.50
PATH: /docs/guides/testing-guide.md
BRIEF: Testing guide for MokoWaaS v02.01.08
NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration
-->
-# MokoWaaS Testing Guide (VERSION: 02.32.49)
+# MokoWaaS Testing Guide (VERSION: 02.32.50)
## 1. Prerequisites
diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md
index e2ae318..6fba031 100644
--- a/docs/guides/troubleshooting-guide.md
+++ b/docs/guides/troubleshooting-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.49
+ VERSION: 02.32.50
PATH: /docs/guides/troubleshooting-guide.md
BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin
NOTE: Designed for administrators and WaaS operations teams
-->
-# MokoWaaS Troubleshooting Guide (VERSION: 02.32.49)
+# MokoWaaS Troubleshooting Guide (VERSION: 02.32.50)
## Introduction
diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md
index fc5f814..689721b 100644
--- a/docs/guides/upgrade-and-versioning-guide.md
+++ b/docs/guides/upgrade-and-versioning-guide.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Guides
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.49
+ VERSION: 02.32.50
PATH: /docs/guides/upgrade-and-versioning-guide.md
BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin
NOTE: Defines release flow, version rules, and upgrade validation
-->
-# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.32.49)
+# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.32.50)
## Introduction
diff --git a/docs/index.md b/docs/index.md
index 8bd77e7..4a07fd0 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -10,13 +10,13 @@
DEFGROUP: Joomla.Plugin
INGROUP: MokoWaaS.Documentation
REPO: https://github.com/mokoconsulting-tech/mokowaas
- VERSION: 02.32.49
+ VERSION: 02.32.50
PATH: /docs/index.md
BRIEF: Master index of all documentation for the MokoWaaS plugin
NOTE: Automatically maintained index for all guide canvases
-->
-# MokoWaaS Documentation Index (VERSION: 02.32.49)
+# MokoWaaS Documentation Index (VERSION: 02.32.50)
## Introduction
diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md
index 1749035..7ca3eaa 100644
--- a/docs/plugin-basic.md
+++ b/docs/plugin-basic.md
@@ -11,12 +11,12 @@
INGROUP: MokoWaaS
REPO: https://github.com/mokoconsulting-tech/mokowaas
PATH: /docs/plugin-basic.md
- VERSION: 02.32.49
+ VERSION: 02.32.50
BRIEF: Baseline documentation for the MokoWaaS system plugin
NOTE: Foundational reference for internal and external stakeholders
-->
-# MokoWaaS Plugin Overview (VERSION: 02.32.49)
+# MokoWaaS Plugin Overview (VERSION: 02.32.50)
## Introduction
diff --git a/docs/update-server.md b/docs/update-server.md
index 7f116ee..e66fc23 100644
--- a/docs/update-server.md
+++ b/docs/update-server.md
@@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation
INGROUP: MokoStandards.Templates
REPO: https://github.com/mokoconsulting-tech/MokoWaaS
PATH: /docs/update-server.md
-VERSION: 02.32.49
+VERSION: 02.32.50
BRIEF: How this extension's Joomla update server file (update.xml) is managed
-->
diff --git a/src/packages/com_mokowaas/mokowaas.xml b/src/packages/com_mokowaas/mokowaas.xml
index 8815a53..636587a 100644
--- a/src/packages/com_mokowaas/mokowaas.xml
+++ b/src/packages/com_mokowaas/mokowaas.xml
@@ -20,7 +20,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.49
+ 02.32.50
MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints.
Moko\Component\MokoWaaS
diff --git a/src/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/src/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml
index 8eca78f..8e08297 100644
--- a/src/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml
+++ b/src/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.49
+ 02.32.50
MOD_MOKOWAAS_CACHE_DESC
Moko\Module\MokoWaaSCache
diff --git a/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml
index a635e80..3651e5e 100644
--- a/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml
+++ b/src/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.49
+ 02.32.50
MOD_MOKOWAAS_CPANEL_DESC
Moko\Module\MokoWaaSCpanel
diff --git a/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml
index 0267aca..1823ca2 100644
--- a/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml
+++ b/src/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.49
+ 02.32.50
MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu.
Moko\Module\MokoWaaSMenu
diff --git a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
index 2f39f38..77cc355 100644
--- a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
+++ b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
@@ -22,7 +22,7 @@
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
* REPO: https://github.com/mokoconsulting-tech/mokowaas
- * VERSION: 02.32.49
+ * VERSION: 02.32.50
* PATH: /src/Extension/MokoWaaS.php
* NOTE: Handles Joomla system events for rebranding functionality
*/
diff --git a/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php b/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php
index 8fbe69f..c9c43e5 100644
--- a/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php
+++ b/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php
@@ -7,7 +7,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.49
+ * VERSION: 02.32.50
* PATH: /src/Field/AllowedIpsField.php
* BRIEF: Custom form field that displays the current IP whitelist
*/
diff --git a/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php
index 9b3777d..2f2414e 100644
--- a/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php
+++ b/src/packages/plg_system_mokowaas/Field/CopyableTokenField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.49
+ * VERSION: 02.32.50
* PATH: /src/Field/CopyableTokenField.php
* BRIEF: Read-only token field with a copy-to-clipboard button
*/
diff --git a/src/packages/plg_system_mokowaas/Field/CurrentIpField.php b/src/packages/plg_system_mokowaas/Field/CurrentIpField.php
index f3db8db..0a302ac 100644
--- a/src/packages/plg_system_mokowaas/Field/CurrentIpField.php
+++ b/src/packages/plg_system_mokowaas/Field/CurrentIpField.php
@@ -7,7 +7,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.49
+ * VERSION: 02.32.50
* PATH: /src/Field/CurrentIpField.php
* BRIEF: Read-only field that displays the current user's IP address
*/
diff --git a/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php b/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php
index 4111988..75c85a8 100644
--- a/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php
+++ b/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.49
+ * VERSION: 02.32.50
* PATH: /src/Field/DemoTaskInfoField.php
* BRIEF: Read-only field showing scheduled task info with link to manage it
*/
diff --git a/src/packages/plg_system_mokowaas/Field/NextResetField.php b/src/packages/plg_system_mokowaas/Field/NextResetField.php
index 2981373..e79ec5a 100644
--- a/src/packages/plg_system_mokowaas/Field/NextResetField.php
+++ b/src/packages/plg_system_mokowaas/Field/NextResetField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.49
+ * VERSION: 02.32.50
* PATH: /src/Field/NextResetField.php
* BRIEF: Read-only field showing next reset time from Joomla scheduled task
*/
diff --git a/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php b/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php
index f1a790a..f19eef0 100644
--- a/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php
+++ b/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php
@@ -8,7 +8,7 @@
* FILE INFORMATION
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
- * VERSION: 02.32.49
+ * VERSION: 02.32.50
* PATH: /src/Field/SnapshotTablesField.php
* BRIEF: Multi-select list field that loads DB tables with sensible defaults
*/
diff --git a/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php b/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
index 94c99bd..4b2abe6 100644
--- a/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
+++ b/src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
@@ -10,7 +10,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php
- * VERSION: 02.32.49
+ * VERSION: 02.32.50
* BRIEF: Receiver-side content sync — applies incoming payload to local DB
*/
diff --git a/src/packages/plg_system_mokowaas/Service/ContentSyncService.php b/src/packages/plg_system_mokowaas/Service/ContentSyncService.php
index 525160b..7594816 100644
--- a/src/packages/plg_system_mokowaas/Service/ContentSyncService.php
+++ b/src/packages/plg_system_mokowaas/Service/ContentSyncService.php
@@ -10,7 +10,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php
- * VERSION: 02.32.49
+ * VERSION: 02.32.50
* BRIEF: Sender-side content sync — builds payload and pushes to remote sites
*/
diff --git a/src/packages/plg_system_mokowaas/Service/DemoResetService.php b/src/packages/plg_system_mokowaas/Service/DemoResetService.php
index dfe61a4..6b303a4 100644
--- a/src/packages/plg_system_mokowaas/Service/DemoResetService.php
+++ b/src/packages/plg_system_mokowaas/Service/DemoResetService.php
@@ -10,7 +10,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php
- * VERSION: 02.32.49
+ * VERSION: 02.32.50
* BRIEF: Content-only snapshot/restore for demo site reset
*/
diff --git a/src/packages/plg_system_mokowaas/mokowaas.xml b/src/packages/plg_system_mokowaas/mokowaas.xml
index 4f11b56..152f323 100644
--- a/src/packages/plg_system_mokowaas/mokowaas.xml
+++ b/src/packages/plg_system_mokowaas/mokowaas.xml
@@ -30,7 +30,7 @@
GNU General Public License version 3 or later; see LICENSE.md
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.49
+ 02.32.50
This plugin rebrands the Joomla system interface with MokoWaaS identity. It applies language overrides and ensures consistent branding across the platform.
Moko\Plugin\System\MokoWaaS
script.php
diff --git a/src/packages/plg_system_mokowaas/script.php b/src/packages/plg_system_mokowaas/script.php
index d2b3968..6653c80 100644
--- a/src/packages/plg_system_mokowaas/script.php
+++ b/src/packages/plg_system_mokowaas/script.php
@@ -22,7 +22,7 @@
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
* REPO: https://github.com/mokoconsulting-tech/mokowaas
- * VERSION: 02.32.49
+ * VERSION: 02.32.50
* PATH: /src/script.php
* BRIEF: Installation script for MokoWaaS plugin
* NOTE: Handles installation, update, and uninstallation tasks including language override deployment
diff --git a/src/packages/plg_system_mokowaas/services/provider.php b/src/packages/plg_system_mokowaas/services/provider.php
index 765e903..0d5a54b 100644
--- a/src/packages/plg_system_mokowaas/services/provider.php
+++ b/src/packages/plg_system_mokowaas/services/provider.php
@@ -22,7 +22,7 @@
* DEFGROUP: Joomla.Plugin
* INGROUP: MokoWaaS
* REPO: https://github.com/mokoconsulting-tech/mokowaas
- * VERSION: 02.32.49
+ * VERSION: 02.32.50
* PATH: /src/services/provider.php
* BRIEF: Service provider for dependency injection in Joomla 5.x
* NOTE: Registers the plugin with Joomla's DI container
diff --git a/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml
index a2691c5..2820860 100644
--- a/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml
+++ b/src/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.49
+ 02.32.50
PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC
Moko\Plugin\System\MokoWaaSDevTools
diff --git a/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
index 46a5acb..eb9c272 100644
--- a/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
+++ b/src/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.49
+ 02.32.50
PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC
Moko\Plugin\System\MokoWaaSFirewall
diff --git a/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml
index 2db5ceb..e82af14 100644
--- a/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml
+++ b/src/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.49
+ 02.32.50
PLG_SYSTEM_MOKOWAAS_MONITOR_DESC
Moko\Plugin\System\MokoWaaSMonitor
diff --git a/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml
index e70bca9..6fefd45 100644
--- a/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml
+++ b/src/packages/plg_system_mokowaas_offline/mokowaas_offline.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.49
+ 02.32.50
PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC
Moko\Plugin\System\MokoWaaSOffline
diff --git a/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml
index aa80026..91633f7 100644
--- a/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml
+++ b/src/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.49
+ 02.32.50
PLG_SYSTEM_MOKOWAAS_TENANT_DESC
Moko\Plugin\System\MokoWaaSTenant
diff --git a/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml
index 464fa02..28e42a7 100644
--- a/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml
+++ b/src/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml
@@ -8,7 +8,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.49
+ 02.32.50
Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions.
Moko\Plugin\Task\MokoWaaSTickets
diff --git a/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
index 97953cf..7eea48e 100644
--- a/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
+++ b/src/packages/plg_task_mokowaasdemo/mokowaasdemo.xml
@@ -12,7 +12,7 @@
GNU General Public License version 3 or later; see LICENSE
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.49
+ 02.32.50
PLG_TASK_MOKOWAASDEMO_DESC
Moko\Plugin\Task\MokoWaaSDemo
diff --git a/src/packages/plg_task_mokowaassync/mokowaassync.xml b/src/packages/plg_task_mokowaassync/mokowaassync.xml
index 4747d49..c46e8a1 100644
--- a/src/packages/plg_task_mokowaassync/mokowaassync.xml
+++ b/src/packages/plg_task_mokowaassync/mokowaassync.xml
@@ -12,7 +12,7 @@
GNU General Public License version 3 or later; see LICENSE
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.49
+ 02.32.50
PLG_TASK_MOKOWAASSYNC_DESC
Moko\Plugin\Task\MokoWaaSSync
diff --git a/src/packages/plg_webservices_mokowaas/mokowaas.xml b/src/packages/plg_webservices_mokowaas/mokowaas.xml
index 665a45f..fc5fff6 100644
--- a/src/packages/plg_webservices_mokowaas/mokowaas.xml
+++ b/src/packages/plg_webservices_mokowaas/mokowaas.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.49
+ 02.32.50
Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info.
Moko\Plugin\WebServices\MokoWaaS
diff --git a/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml b/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
index 85a2e53..8a0e25c 100644
--- a/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
+++ b/src/packages/plg_webservices_perfectpublisher/perfectpublisher.xml
@@ -7,7 +7,7 @@
GPL-3.0-or-later
hello@mokoconsulting.tech
https://mokoconsulting.tech
- 02.32.49
+ 02.32.50
Joomla Web Services API routes for Perfect Publisher (com_autotweet) — channels, posts, requests, rules, and feeds.
Moko\Plugin\WebServices\PerfectPublisher
diff --git a/src/packages/plg_webservices_perfectpublisher/services/provider.php b/src/packages/plg_webservices_perfectpublisher/services/provider.php
index f905c1e..e98c302 100644
--- a/src/packages/plg_webservices_perfectpublisher/services/provider.php
+++ b/src/packages/plg_webservices_perfectpublisher/services/provider.php
@@ -8,7 +8,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_webservices_perfectpublisher/services/provider.php
- * VERSION: 02.32.49
+ * VERSION: 02.32.50
* BRIEF: DI service provider for Perfect Publisher Web Services plugin
*/
diff --git a/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php b/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
index f08c31c..2717e6e 100644
--- a/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
+++ b/src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
@@ -8,7 +8,7 @@
* INGROUP: MokoWaaS
* REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS
* PATH: /src/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php
- * VERSION: 02.32.49
+ * VERSION: 02.32.50
* BRIEF: Web Services API plugin for Perfect Publisher (com_autotweet)
*/
diff --git a/src/pkg_mokowaas.xml b/src/pkg_mokowaas.xml
index cd31377..c0169d0 100644
--- a/src/pkg_mokowaas.xml
+++ b/src/pkg_mokowaas.xml
@@ -2,7 +2,7 @@
Package - MokoWaaS
mokowaas
- 02.32.49
+ 02.32.50
2026-06-02
Moko Consulting
hello@mokoconsulting.tech
diff --git a/updates.xml b/updates.xml
index 1118cac..cc70a8d 100644
--- a/updates.xml
+++ b/updates.xml
@@ -1,7 +1,7 @@
--
2.52.0
From 3bc1e66acfa24a4981179c49f8fcf57dd8f3d2cf Mon Sep 17 00:00:00 2001
From: "gitea-actions[bot]"
Date: Thu, 4 Jun 2026 14:39:02 +0000
Subject: [PATCH 105/142] chore: update development channel 02.32.50 [skip ci]
---
updates.xml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/updates.xml b/updates.xml
index cc70a8d..30edbd2 100644
--- a/updates.xml
+++ b/updates.xml
@@ -11,13 +11,13 @@
pkg_mokowaas
package
site
- 02.32.49-dev
+ 02.32.50-dev
2026-06-04
https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/tag/development
- https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/development/pkg_mokowaas-02.32.49-dev.zip
+ https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/development/pkg_mokowaas-02.32.50-dev.zip
- 77eb1565ba41e251941435e4b954ccd94c5958d436f99c01de018fc587171134
+ f59ce3908085efa34c5d9ab86d597800a46cf31c71a9203e8a3d5e0126319906
dev
https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/raw/branch/main/CHANGELOG.md
Moko Consulting
--
2.52.0
From 36082bd2e3217324b084c4a0dff7f7c569692b3c Mon Sep 17 00:00:00 2001
From: Jonathan Miller
Date: Thu, 4 Jun 2026 09:52:41 -0500
Subject: [PATCH 106/142] fix: cache button native Atum markup, tickets
unassigned HTML encoding
- Cache cleaner button uses native header-item-content/header-item-icon markup
- Fix Unassigned showing raw HTML in tickets list (escape only non-null values)
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context)
---
.../admin/tmpl/tickets/default.php | 2 +-
.../mod_mokowaas_cache/tmpl/default.php | 60 +++++++++----------
2 files changed, 28 insertions(+), 34 deletions(-)
diff --git a/src/packages/com_mokowaas/admin/tmpl/tickets/default.php b/src/packages/com_mokowaas/admin/tmpl/tickets/default.php
index e5a7814..33c7f50 100644
--- a/src/packages/com_mokowaas/admin/tmpl/tickets/default.php
+++ b/src/packages/com_mokowaas/admin/tmpl/tickets/default.php
@@ -113,7 +113,7 @@ $priorityBadge = [
priority); ?> |
escape($t->category_title ?? '—'); ?> |
escape($t->created_by_name ?? ''); ?> |
- escape($t->assigned_to_name ?? 'Unassigned'); ?> |
+ assigned_to_name ? $this->escape($t->assigned_to_name) : 'Unassigned'; ?> |
created, 'M d H:i'); ?> |
sla_response_due && !$t->sla_responded): ?>
diff --git a/src/packages/mod_mokowaas_cache/tmpl/default.php b/src/packages/mod_mokowaas_cache/tmpl/default.php
index 256bf7e..a35733d 100644
--- a/src/packages/mod_mokowaas_cache/tmpl/default.php
+++ b/src/packages/mod_mokowaas_cache/tmpl/default.php
@@ -2,8 +2,8 @@
/**
* MokoWaaS Cache Cleaner — status bar module
*
- * One-click button in the admin status bar that clears all Joomla cache
- * (site + admin + expired) via AJAX. Replaces Regular Labs Cache Cleaner.
+ * One-click button in the admin status bar that clears all Joomla cache.
+ * Uses native Atum header-item markup.
*/
defined('_JEXEC') or die;
@@ -15,16 +15,14 @@ $token = Session::getFormToken();
$ajaxUrl = 'index.php?option=com_mokowaas&task=clearCache&format=json&' . $token . '=1';
?>
-
+
+
--
2.52.0
From e858130375c7144a903bacc5e288fec2eabf5c26 Mon Sep 17 00:00:00 2001
From: Jonathan Miller
Date: Thu, 4 Jun 2026 13:20:15 -0500
Subject: [PATCH 136/142] fix: hide cpanel module on MokoWaaS dashboard
(redundant info)
The dashboard already shows site info, plugins, WAF blocks, logins,
and updates. The cpanel module duplicates this. Now it auto-hides
when option=com_mokowaas and view is dashboard or empty.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context)
---
.../src/Dispatcher/Dispatcher.php | 12 ++++++++++++
src/packages/mod_mokowaas_cpanel/tmpl/default.php | 3 +++
2 files changed, 15 insertions(+)
diff --git a/src/packages/mod_mokowaas_cpanel/src/Dispatcher/Dispatcher.php b/src/packages/mod_mokowaas_cpanel/src/Dispatcher/Dispatcher.php
index d5b1414..4c9b179 100644
--- a/src/packages/mod_mokowaas_cpanel/src/Dispatcher/Dispatcher.php
+++ b/src/packages/mod_mokowaas_cpanel/src/Dispatcher/Dispatcher.php
@@ -24,6 +24,18 @@ class Dispatcher extends AbstractModuleDispatcher implements HelperFactoryAwareI
{
$data = parent::getLayoutData();
+ // Hide on MokoWaaS dashboard — the dashboard has its own info panels
+ $app = Factory::getApplication();
+ $option = $app->getInput()->get('option', '');
+ $view = $app->getInput()->get('view', '');
+
+ if ($option === 'com_mokowaas' && ($view === '' || $view === 'dashboard'))
+ {
+ $data['hidden'] = true;
+
+ return $data;
+ }
+
$db = Factory::getContainer()->get(DatabaseInterface::class);
$helper = $this->getHelperFactory()->getHelper('CpanelHelper');
diff --git a/src/packages/mod_mokowaas_cpanel/tmpl/default.php b/src/packages/mod_mokowaas_cpanel/tmpl/default.php
index 66eea9f..9e7e1a0 100644
--- a/src/packages/mod_mokowaas_cpanel/tmpl/default.php
+++ b/src/packages/mod_mokowaas_cpanel/tmpl/default.php
@@ -12,6 +12,9 @@ use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;
use Joomla\CMS\Session\Session;
+// Hidden when on MokoWaaS dashboard (redundant info)
+if (!empty($hidden)) return;
+
$siteInfo = $siteInfo ?? (object) [];
$plugins = $plugins ?? [];
--
2.52.0
From 524523b8c6aac068b689a95d80804f4027d28cc8 Mon Sep 17 00:00:00 2001
From: Jonathan Miller
Date: Thu, 4 Jun 2026 13:23:18 -0500
Subject: [PATCH 137/142] fix: Chart.js CDN with SRI hash, rename Community
Builder to MokoJoomCommunity
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Chart.js not bundled with Joomla 6 — use jsdelivr CDN with integrity check.
Dashboard user manager button shows MokoJoomCommunity (not Community Builder).
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context)
---
src/packages/com_mokowaas/admin/tmpl/dashboard/default.php | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/packages/com_mokowaas/admin/tmpl/dashboard/default.php b/src/packages/com_mokowaas/admin/tmpl/dashboard/default.php
index 1e958db..39543e9 100644
--- a/src/packages/com_mokowaas/admin/tmpl/dashboard/default.php
+++ b/src/packages/com_mokowaas/admin/tmpl/dashboard/default.php
@@ -136,12 +136,12 @@ $categoryOrder = ['core', 'security', 'monitoring', 'content', 'tools', 'api'];
|