-
#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 f9face45..8ed9e1a3 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 d3b1c191..d5b14142 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 7160329e..a50d895e 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 b3ed62f2..a65553f5 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 f2b25dfb..b67360d2 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/118] 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 7be3ed0f..93018e63 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 8bf71ac5..810b4ce6 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 09f4a523..b23abf7e 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 7c50ec2c..eca045ee 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 11cf2a42..8178c6c9 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 11be037f..367b94ea 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 e6e9cb0e..f315f327 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 26c26cad..6f33bd0a 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 b176c6cd..769fcf13 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 fb802526..4dcf65d9 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 aa60849c..c2fc2471 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 fbdbc0c8..4f9df27c 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 e0fe5b91..f353228f 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 f416cd80..cad806ff 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 5d176a33..05b10121 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 bdc83b65..ffe648f3 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 21500b3d..265ff97c 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 f280cb53..d771836f 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 3aa608e5..42e6499e 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 1884f30e..73bb6b39 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 d7e491e0..b4652537 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 a99f291e..fb99f5f1 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 27e1585e..19c04dea 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 71d6e986..8a15cd2a 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 18c6a84f..1ac8ae04 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 70809200..a5590bf7 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 a3ad13f1..56c5ca3b 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 d82e3839..0233750d 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 1bdf3bef..d99c4323 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 e1572204..0862f291 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 2eee0792..e1f82a5b 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 2c0b6021..5de885a2 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 00b9298b..952e13ce 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 0cfa9bb8..e9e05933 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 2ba36c97..d9e48b0e 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 96f00eaf..b5d8e232 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 71f58215..c11d81a1 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 4ae5b46d..87d9519a 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 323d6951..41c2f89d 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 651177a8..2b4ba281 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 2c4d1efa..c64c58ec 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 8f484f36..0cca2d2a 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 dd7586b7..e21da50e 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 01a68335..cb23c016 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 ad5a0913..f75904cb 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 1e1464a3..3f385645 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 a69d31dd..a3ca35a8 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 a0a60f7d..85222d73 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/118] 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 85222d73..cb54b49f 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/118] =?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 e910b66c..5d2f30ca 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 00000000..01928e4a
--- /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 00000000..2a391df2
--- /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 00000000..bebffae8
--- /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 00000000..e9fd493d
--- /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 00000000..49a2bb31
--- /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 00000000..d52cb7ac
--- /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/118] 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 93018e63..060cd028 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 810b4ce6..69982d1f 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 b23abf7e..e92449b5 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 eca045ee..29c754a3 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 8178c6c9..cb383f34 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 367b94ea..54b4a597 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 f315f327..dac09e25 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 6f33bd0a..b13c36ff 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 769fcf13..46227e5b 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 4dcf65d9..0d8085a2 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 c2fc2471..e9b56734 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 4f9df27c..d8e8b850 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 f353228f..ee6c6470 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 cad806ff..72a0c874 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 05b10121..4c1cb388 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 ffe648f3..e2eab8ad 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 265ff97c..a87abd1e 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 d771836f..5abd8b72 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 42e6499e..54915d93 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 73bb6b39..2ffb816c 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 b4652537..96242c7f 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 fb99f5f1..9aee79ec 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 19c04dea..0186508f 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 8a15cd2a..099b6d42 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 1ac8ae04..dc713f6f 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 a5590bf7..fd8774e7 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 56c5ca3b..fdf62275 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 0233750d..5f38caae 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 d99c4323..eb59d803 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 0862f291..44269e11 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 e1f82a5b..cb276177 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 5de885a2..bf88c4b4 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 952e13ce..c0b766fb 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 e9e05933..6818d4b2 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 d9e48b0e..adf69463 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 b5d8e232..0ef3dd35 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 c11d81a1..8fb29bd1 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 87d9519a..cc62f11f 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 41c2f89d..ba2743cf 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 2b4ba281..4e19cd04 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 c64c58ec..44731c37 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 0cca2d2a..5d0b5d33 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 e21da50e..4d70ea50 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 cb23c016..7be75143 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 f75904cb..9573581a 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 3f385645..1ef40262 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 a3ca35a8..31c33aef 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 cb54b49f..ead07f25 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/118] 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 ead07f25..7e16e7f9 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/118] 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 00000000..dff9f13a
--- /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 00000000..898a3832
--- /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 00000000..59f480be
--- /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 00000000..67feaece
--- /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 00000000..b5d4dcc2
--- /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 a3ca35a8..2f0334fd 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 882bcba5..9a2a541c 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/118] 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 060cd028..712df126 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 69982d1f..c91b4958 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 e92449b5..520c1e42 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 29c754a3..fe37ec13 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 cb383f34..0888075f 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 54b4a597..4ab76b5f 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 dac09e25..90728702 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 b13c36ff..1c1728a7 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 46227e5b..fb9086f0 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 0d8085a2..aa392cc4 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 e9b56734..22c5c4b5 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 d8e8b850..d447a81f 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 ee6c6470..d0d5e947 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 72a0c874..c1969b21 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 4c1cb388..8b2f3754 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 e2eab8ad..27cce4ad 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 a87abd1e..98ea973a 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 5abd8b72..c37f1e88 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 54915d93..0c2a6b13 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 2ffb816c..2cc60c22 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 96242c7f..6e39af9b 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 59f480be..e8f300d2 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 9aee79ec..29cde0f5 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 0186508f..e0ca84aa 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 099b6d42..6d51ed4b 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 dc713f6f..21e1c193 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 fd8774e7..b267a6a6 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 fdf62275..140d60d7 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 5f38caae..2ec099dd 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 eb59d803..b0c04a02 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 44269e11..ea019369 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 cb276177..c7b09098 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 bf88c4b4..37e925de 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 c0b766fb..5a9de04c 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 6818d4b2..958e1095 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 adf69463..8f1f1a34 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 0ef3dd35..074a7d53 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 8fb29bd1..8af2b0ed 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 cc62f11f..e3db2eab 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 ba2743cf..00afede1 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 4e19cd04..11a44487 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 44731c37..5c5133b4 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 5d0b5d33..7869b0a2 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 4d70ea50..e04c0d0d 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 7be75143..be07366e 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 9573581a..531d3f3f 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 1ef40262..179a5e5a 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 d73379e6..d3e879b9 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 7e16e7f9..220d6398 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/118] 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 220d6398..390b6bbd 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/118] =?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 9b7a8169..47c0ea5c 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 9aee79ec..39393f18 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/118] 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 5c5133b4..ae0156b7 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 e04c0d0d..5327df29 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 be07366e..5e528e37 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/118] =?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 5d2f30ca..c9eaa008 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 9bb53564..3f91e084 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 47c0ea5c..34bfc928 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 4cecaf97..1018e9eb 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 0cd42177..3e533f84 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 f2aed66f..949e0998 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/118] 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 712df126..178ba5eb 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 c91b4958..b484e5b6 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 520c1e42..6d072eaf 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 fe37ec13..3d470684 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 0888075f..32caa568 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 4ab76b5f..aa11dea0 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 90728702..3b292515 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 1c1728a7..3cf2e2b8 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 fb9086f0..8b643aba 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 aa392cc4..8a0cabf5 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 22c5c4b5..72387540 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 d447a81f..d92bb90c 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 d0d5e947..7a22b272 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 c1969b21..017303a1 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 8b2f3754..34f727d8 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 27cce4ad..e01d332d 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 98ea973a..9fd19561 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 c37f1e88..69a3d028 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 0c2a6b13..c4a1c2f4 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 2cc60c22..11fd1bf1 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 6e39af9b..853ca262 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 e8f300d2..6ac21d8b 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 c58d8981..3b31b466 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 e0ca84aa..73900c93 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 6d51ed4b..4705666c 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 21e1c193..5ddddddc 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 b267a6a6..8b616086 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 140d60d7..347b22b5 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 2ec099dd..e023f90e 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 b0c04a02..b05497a5 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 ea019369..8b29f574 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 c7b09098..50d6bb7b 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 37e925de..0bad5cde 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 5a9de04c..7dc2351d 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 958e1095..c3608412 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 8f1f1a34..d3182775 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 074a7d53..dbe3a9a3 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 8af2b0ed..053d9e14 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 e3db2eab..21b904f6 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 00afede1..daa693a9 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 11a44487..c63e2428 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 ae0156b7..ea1ba947 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 7869b0a2..9757a5bd 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 5327df29..279616f7 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 5e528e37..aada257c 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 531d3f3f..ad6bb60f 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 179a5e5a..f186dc52 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 d3e879b9..dc020611 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 390b6bbd..e2f20e01 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/118] 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 e2f20e01..6d2ab508 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/118] 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 c58d8981..cefb0dbd 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/118] 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 00000000..34e4e4e0
--- /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 00000000..9d8aa946
--- /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 57e00105..5f4ed16b 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 00000000..14a9b44b
--- /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 00000000..6c91723d
--- /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 11fd1bf1..4a50cfc5 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 949e0998..3de8f128 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/118] 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 0218a06c..3c71dbd1 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 c9eaa008..dd77f61f 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 00000000..073c623d
--- /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 00000000..0d0c9357
--- /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 4a50cfc5..d88f93e1 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 a50d895e..87fff882 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 a65553f5..66eea9f4 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 0c7eca76..d95b4df2 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 0000d4ad..3d03f803 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 9a2a541c..8d659f98 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/118] 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 178ba5eb..26a20e15 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 b484e5b6..0f242d66 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 6d072eaf..db68c058 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 3d470684..2ea48b10 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 32caa568..5bd52048 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 aa11dea0..72e09faa 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 3b292515..563b621e 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 3cf2e2b8..2f10f2df 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 8b643aba..c5da7f09 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 8a0cabf5..f5f8430e 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 72387540..7b13be76 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 d92bb90c..16efd0e5 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 7a22b272..d414feb5 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 017303a1..f71bb229 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 34f727d8..e324a109 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 e01d332d..c6fedb24 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 9fd19561..897ca571 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 69a3d028..c4f286dc 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 c4a1c2f4..9fd4e9f2 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 d88f93e1..dcd445f2 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 853ca262..e59028fc 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 6ac21d8b..46d61294 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 3d03f803..98518f39 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 73900c93..479479a5 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 4705666c..20da32a6 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 5ddddddc..4cb9eaef 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 8b616086..69e895d1 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 347b22b5..a9c80cf8 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 e023f90e..38eb428d 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 b05497a5..0ab32b84 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 8b29f574..22da775f 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 50d6bb7b..9edaf22c 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 0bad5cde..59e80814 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 7dc2351d..b7aec07f 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 c3608412..246be429 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 d3182775..142d3b28 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 dbe3a9a3..13ad2611 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 053d9e14..3e0cf7a6 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 21b904f6..4041d27a 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 daa693a9..ea62b279 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 c63e2428..3bc3f8d4 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 ea1ba947..da8ea683 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 9757a5bd..931e19ec 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 279616f7..40a47947 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 aada257c..a0509913 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 ad6bb60f..ed3d635d 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 f186dc52..58130c98 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 dc020611..d1faf7f2 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 6d2ab508..a3b1b017 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/118] 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 a3b1b017..21b926ef 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/118] 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 b8674dc5..fbcb447f 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 00000000..dd3acea8
--- /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 00000000..25f62d28
--- /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 00000000..f6782c0c
--- /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 00000000..cf5c25c4
--- /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 00000000..b67aad8d
--- /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 d95b4df2..794f4b0d 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 dc020611..ab3b4e00 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 8d659f98..5d55bf36 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/118] 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 26a20e15..6ed5b90a 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 0f242d66..634d1de9 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 db68c058..1fef4274 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 2ea48b10..1ceddee6 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 5bd52048..d46d44df 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 72e09faa..116a9bfa 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 563b621e..b909d7cd 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 2f10f2df..371c8402 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 c5da7f09..dadd5e9c 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 f5f8430e..89b57210 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 7b13be76..90477234 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 16efd0e5..e86e1b16 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 d414feb5..11339657 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 f71bb229..6a6e6fa1 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 e324a109..dd1bfa4b 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 c6fedb24..602e7efa 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 897ca571..874632c3 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 c4f286dc..26e865b0 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 9fd4e9f2..7114447a 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 dcd445f2..21803daa 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 f6782c0c..53c81a85 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 e59028fc..e808c3b8 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 46d61294..822be21a 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 98518f39..fac7b083 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 479479a5..4e80e9df 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 20da32a6..ba8919f0 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 4cb9eaef..b9b984ec 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 69e895d1..adf451af 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 a9c80cf8..2a360ba0 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 38eb428d..f12afb1e 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 0ab32b84..589fab59 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 22da775f..ba36c913 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 9edaf22c..19a05cb4 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 59e80814..384ac89a 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 b7aec07f..bcd8a089 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 246be429..04000412 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 142d3b28..65184227 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 13ad2611..afd9242f 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 3e0cf7a6..517f82dc 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 4041d27a..6b3b8bf6 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 ea62b279..bfd3a363 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 3bc3f8d4..bdcce261 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 da8ea683..2bfe98c5 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 931e19ec..40a9fb79 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 40a47947..83fad62c 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 a0509913..78173511 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 ed3d635d..66811a88 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 58130c98..cfdab6ae 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 0cca0329..7475975b 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 21b926ef..8254fe7a 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/118] 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 8254fe7a..f2e7f4b3 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/118] 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 2325032b..44a2d64a 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/118] 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 dcd445f2..036498ba 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 794f4b0d..395f9d66 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/118] 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 6ed5b90a..3090ca45 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 634d1de9..947949dc 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 1fef4274..55b1af32 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 1ceddee6..a003bb22 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 d46d44df..a68edc2a 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 116a9bfa..7665d483 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 b909d7cd..0a9e9de1 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 371c8402..cccc93fa 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 dadd5e9c..77fdd9e8 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 89b57210..e3a57c5a 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 90477234..1350b2a1 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 e86e1b16..995ab5c6 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 11339657..09b5d83a 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 6a6e6fa1..216cf70a 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 dd1bfa4b..e2ae3187 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 602e7efa..fc5f8142 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 874632c3..8bd77e7d 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 26e865b0..17490356 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 7114447a..7f116ee1 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 c6ea2167..8815a53f 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 53c81a85..8eca78ff 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 e808c3b8..a635e80a 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 822be21a..0267aca1 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 fac7b083..2f39f381 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 4e80e9df..8fbe69f2 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 ba8919f0..9b3777d0 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 b9b984ec..f3db8dbe 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 adf451af..4111988e 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 2a360ba0..2981373a 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 f12afb1e..f1a790ae 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 589fab59..94c99bd0 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 ba36c913..525160b0 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 19a05cb4..dfe61a4f 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 384ac89a..4f11b56e 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 bcd8a089..d2b39680 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 04000412..765e9034 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 65184227..a2691c53 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 afd9242f..46a5acbe 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 517f82dc..2db5ceb5 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 6b3b8bf6..e70bca9c 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 bfd3a363..aa800265 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 bdcce261..464fa02b 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 2bfe98c5..97953cfa 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 40a9fb79..4747d49a 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 83fad62c..665a45f3 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 78173511..85a2e532 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 66811a88..f905c1ee 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 cfdab6ae..f08c31c6 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 7475975b..cd313773 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 f2e7f4b3..4a248e82 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/118] 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 4a248e82..1118cac7 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/118] 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 5d55bf36..56ea66de 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/118] 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 3090ca45..1cfbf387 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 947949dc..b0a58d5d 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 55b1af32..e8f97bad 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 a003bb22..8f3ed716 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 a68edc2a..9bf2737c 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 7665d483..7bf1d36a 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 0a9e9de1..86a8b1c8 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 cccc93fa..1f6c3732 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 77fdd9e8..b99b2100 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 e3a57c5a..916a8748 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 1350b2a1..92c54839 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 995ab5c6..cc84663d 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 09b5d83a..bb1897f2 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 216cf70a..1d22c0e9 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 e2ae3187..6fba0318 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 fc5f8142..689721b0 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 8bd77e7d..4a07fd0d 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 17490356..7ca3eaa1 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 7f116ee1..e66fc233 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 8815a53f..636587aa 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 8eca78ff..8e082972 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 a635e80a..3651e5eb 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 0267aca1..1823ca27 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 2f39f381..77cc3558 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 8fbe69f2..c9c43e53 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 9b3777d0..2f2414eb 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 f3db8dbe..0a302ac7 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 4111988e..75c85a8b 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 2981373a..e79ec5ad 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 f1a790ae..f19eef04 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 94c99bd0..4b2abe6f 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 525160b0..75948164 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 dfe61a4f..6b303a45 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 4f11b56e..152f3230 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 d2b39680..6653c80b 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 765e9034..0d5a54b2 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 a2691c53..28208602 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 46a5acbe..eb9c2727 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 2db5ceb5..e82af147 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 e70bca9c..6fefd452 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 aa800265..91633f7c 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 464fa02b..28e42a7a 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 97953cfa..7eea48e2 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 4747d49a..c46e8a1e 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 665a45f3..fc5fff69 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 85a2e532..8a0e25c8 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 f905c1ee..e98c3026 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 f08c31c6..2717e6e4 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 cd313773..c0169d0a 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 1118cac7..cc70a8d6 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/118] 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 cc70a8d6..30edbd21 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/118] 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 e5a7814b..33c7f502 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 256bf7e2..a35733da 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';
?>
-
+
|