From 666f3ca98b17e997fea01564f66d910fec1b0d28 Mon Sep 17 00:00:00 2001 From: Yasen Pramatarov Date: Mon, 26 Aug 2024 21:19:21 +0300 Subject: [PATCH] Fixes adding, editing and deleting a platform --- app/config/jilo-web.conf.php | 5 +- app/helpers/config.php | 25 +++++++++ app/helpers/render.php | 31 +++++++---- app/pages/config.php | 71 +++++++++++++++++++++--- app/templates/config-add-platform.php | 39 +++++++++++++ app/templates/config-delete-platform.php | 29 ++++++++++ app/templates/config-edit-platform.php | 12 +++- app/templates/page-menu.php | 6 +- 8 files changed, 192 insertions(+), 26 deletions(-) create mode 100644 app/helpers/config.php create mode 100644 app/templates/config-add-platform.php create mode 100644 app/templates/config-delete-platform.php diff --git a/app/config/jilo-web.conf.php b/app/config/jilo-web.conf.php index 2a0c975..f84fb5e 100644 --- a/app/config/jilo-web.conf.php +++ b/app/config/jilo-web.conf.php @@ -37,9 +37,8 @@ return [ 'platforms' => [ '0' => [ - 'name' => 'meet.example.com', - // database with logs from Jilo - 'jilo_database' => '../../jilo/jilo.db', + 'name' => 'meet.example.com', + 'jilo_database' => '../../jilo/jilo.db', ], ], ]; diff --git a/app/helpers/config.php b/app/helpers/config.php new file mode 100644 index 0000000..a1fab9c --- /dev/null +++ b/app/helpers/config.php @@ -0,0 +1,25 @@ + $value) { + $output .= $indent . "'" . $key . "'" . ' => '; + + if (is_array($value)) { + $output .= formatArray($value, $indentLevel + 1); + } else { + $output .= var_export($value, true); + } + + $output .= ",\n"; + } + + $output .= str_repeat(' ', $indentLevel - 1) . ']'; + + return $output; +} + +?> diff --git a/app/helpers/render.php b/app/helpers/render.php index 5f9e554..c25a8ba 100644 --- a/app/helpers/render.php +++ b/app/helpers/render.php @@ -1,29 +1,36 @@ +
+ add +
$config_value) { + foreach ($configPart as $config_item => $config_value) { + if ($parent === 'platforms') { + $indent = 0; + } ?>
:
+ if ($parent === 'platforms') { ?>
edit + if (count($configPart) <= 1) { ?> delete delete @@ -32,14 +39,16 @@ function renderConfig($config, $indent, $platform=false) { $value) { - // Create a regex pattern to match the key-value pair for the specified platform ID - $pattern = "/((?:'[^']+'\s*=>\s*'[^']+'\s*,?\s*)*)('{$key}'\s*=>\s*)'[^']*'/s"; - // Replace using a callback to handle the match and replacement - $updatedContent = preg_replace_callback($pattern, function($matches) use ($value) { - return $matches[1] . $matches[2] . "'{$value}'"; - }, $updatedContent + // new platform adding + if (isset($_POST['new']) && $_POST['new'] === 'true') { + $newPlatform = [ + 'name' => $_POST['name'], + 'jilo_database' => $_POST['jilo_database'], + ]; + + // Determine the next available index for the new platform + $nextIndex = count($config['platforms']); + + // Add the new platform to the platforms array + $config['platforms'][$nextIndex] = $newPlatform; + + // Rebuild the PHP array syntax for the platforms + $platformsArray = formatArray($config['platforms']); + + // Replace the platforms section in the config file + $updatedContent = preg_replace( + '/\'platforms\'\s*=>\s*\[[\s\S]+?\],/s', + "'platforms' => {$platformsArray}", + $content ); + $updatedContent = preg_replace('/\s*\]\n/s', "\n", $updatedContent); + + // deleting a platform + } elseif (isset($_POST['delete']) && $_POST['delete'] === 'true') { + $platform = $_POST['platform']; + + $config['platforms'][$platform]['name'] = $_POST['name']; + $config['platforms'][$platform]['jilo_database'] = $_POST['jilo_database']; + + $platformsArray = formatArray($config['platforms'][$platform], 3); + + $updatedContent = preg_replace( + "/\s*'$platform'\s*=>\s*\[\s*'name'\s*=>\s*'[^']*',\s*'jilo_database'\s*=>\s*'[^']*',\s*\],/s", + "", + $content + ); + + + // an update to an existing platform + } else { + + $platform = $_POST['platform']; + + $config['platforms'][$platform]['name'] = $_POST['name']; + $config['platforms'][$platform]['jilo_database'] = $_POST['jilo_database']; + + $platformsArray = formatArray($config['platforms'][$platform], 3); + + $updatedContent = preg_replace( + "/\s*'$platform'\s*=>\s*\[\s*'name'\s*=>\s*'[^']*',\s*'jilo_database'\s*=>\s*'[^']*',\s*\],/s", + "\n '{$platform}' => {$platformsArray},", + $content + ); + } + + // check if file is writable if (!is_writable($config_file)) { $_SESSION['error'] = getError('Configuration file is not writable.'); @@ -45,9 +96,15 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') { // no form submitted, show the templates } else { switch ($action) { + case 'add': + include('../app/templates/config-add-platform.php'); + break; case 'edit': include('../app/templates/config-edit-platform.php'); break; + case 'delete': + include('../app/templates/config-delete-platform.php'); + break; default: include('../app/templates/config-list.php'); } diff --git a/app/templates/config-add-platform.php b/app/templates/config-add-platform.php new file mode 100644 index 0000000..b8e66c5 --- /dev/null +++ b/app/templates/config-add-platform.php @@ -0,0 +1,39 @@ + + +
+

Add new Jitsi platform

+
+ +
+ +
+
+ + * +
+
+ +

descriptive name for the platform

+
+
+ +
+
+ + * +
+
+ +

path to the database file (relative to the app root)

+
+
+ + + +
+ Cancel + +
+
+
+ diff --git a/app/templates/config-delete-platform.php b/app/templates/config-delete-platform.php new file mode 100644 index 0000000..54434ed --- /dev/null +++ b/app/templates/config-delete-platform.php @@ -0,0 +1,29 @@ + + +
+

Jilo web configuration for Jitsi platform ""

+
+

delete a platform:

+
+ $config_value) { ?> +
+
+ +
+
+
+ +
+
+ +
+ + +

Are you sure you want to delete this platform?

+
+ Cancel + +
+
+
+ diff --git a/app/templates/config-edit-platform.php b/app/templates/config-edit-platform.php index f6e7519..7db13ed 100644 --- a/app/templates/config-edit-platform.php +++ b/app/templates/config-edit-platform.php @@ -1,7 +1,7 @@
-

Jilo web configuration for Jitsi platform""

+

Jilo web configuration for Jitsi platform ""

edit the platform details:

@@ -13,11 +13,17 @@
+ +

descriptive name for the platform

+ +

path to the database file (relative to the app root)

+
-
 
- Cancel +
+ + Cancel
diff --git a/app/templates/page-menu.php b/app/templates/page-menu.php index e1d5c37..421e8ad 100644 --- a/app/templates/page-menu.php +++ b/app/templates/page-menu.php @@ -12,11 +12,13 @@ + $platform) { ?>
  • - - + +
  • +