diff --git a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php
index 7d52100e..acdcf5cd 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.27.00
+ * VERSION: 02.26.04
* PATH: /src/Extension/MokoWaaS.php
* NOTE: Handles Joomla system events for rebranding functionality
*/
@@ -878,6 +878,11 @@ class MokoWaaS extends CMSPlugin implements BootableExtensionInterface
$changed = true;
}
}
+ elseif ($params->get('demo_next_reset', '') !== '')
+ {
+ $params->set('demo_next_reset', '');
+ $changed = true;
+ }
// Demo Mode: Take Snapshot Now
if ((int) $params->get('demo_take_snapshot_now', 0) === 1)
@@ -1734,34 +1739,9 @@ class MokoWaaS extends CMSPlugin implements BootableExtensionInterface
{
require_once __DIR__ . '/../Service/DemoResetService.php';
- $tablesParam = $this->params->get('demo_snapshot_tables', '');
+ $includeMedia = (bool) $this->params->get('demo_snapshot_include_media', 1);
- // Handle both checkbox array and legacy newline-separated textarea
- if (is_array($tablesParam))
- {
- $tables = array_filter($tablesParam);
- }
- else
- {
- $tables = array_filter(array_map('trim', explode("\n", $tablesParam)));
- }
-
- $mediaDirs = $this->params->get('demo_snapshot_include_media', ['images']);
-
- // Handle legacy boolean value
- if ($mediaDirs === '1' || $mediaDirs === true)
- {
- $mediaDirs = ['images'];
- }
- elseif ($mediaDirs === '0' || $mediaDirs === false)
- {
- $mediaDirs = [];
- }
-
- return new \Moko\Plugin\System\MokoWaaS\Service\DemoResetService(
- $tables,
- (array) $mediaDirs
- );
+ return new \Moko\Plugin\System\MokoWaaS\Service\DemoResetService($includeMedia);
}
/**
diff --git a/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php b/src/packages/plg_system_mokowaas/Field/AllowedIpsField.php
index 9cdeb0d0..46466823 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.27.00
+ * VERSION: 02.26.04
* 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 6bd9bdb5..328f7c4d 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.27.00
+ * VERSION: 02.26.04
* 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 f8ab64d7..899a2b41 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.27.00
+ * VERSION: 02.26.04
* 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/NextResetField.php b/src/packages/plg_system_mokowaas/Field/NextResetField.php
index 5b81e40a..aa60d5cd 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.27.00
+ * VERSION: 02.26.04
* PATH: /src/Field/NextResetField.php
* BRIEF: Read-only field that displays the next scheduled reset in the site timezone
*/
@@ -32,6 +32,20 @@ class NextResetField extends FormField
protected function getInput()
{
+ // Check if demo mode is enabled via the form data
+ $demoEnabled = false;
+
+ if ($this->form)
+ {
+ $demoEnabled = (int) $this->form->getValue('demo_mode_enabled', 'params', 0) === 1;
+ }
+
+ if (!$demoEnabled)
+ {
+ return 'Demo mode is off'
+ . '';
+ }
+
if (empty($this->value))
{
return 'No reset scheduled — save the plugin config to calculate.
';
diff --git a/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php b/src/packages/plg_system_mokowaas/Field/SnapshotTablesField.php
index 557409bc..09c86dee 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.27.00
+ * VERSION: 02.26.04
* PATH: /src/Field/SnapshotTablesField.php
* BRIEF: Multi-select list field that loads DB tables with sensible defaults
*/
@@ -88,6 +88,11 @@ class SnapshotTablesField extends FormField
$selected = (array) $selected;
+ // Flatten nested arrays from broken save format [["#__content"],["#__categories"]]
+ $selected = array_map(function ($v) {
+ return is_array($v) ? reset($v) : $v;
+ }, $selected);
+
// Group tables
$grouped = [];
@@ -116,7 +121,7 @@ class SnapshotTablesField extends FormField
// Build HTML select with optgroups
$size = (int) ($this->element['size'] ?? 15);
- $html = '