diff --git a/site/plugins/admin/app/Controllers/PluginsController.php b/site/plugins/admin/app/Controllers/PluginsController.php index 3419888d..78f98b5a 100644 --- a/site/plugins/admin/app/Controllers/PluginsController.php +++ b/site/plugins/admin/app/Controllers/PluginsController.php @@ -156,4 +156,30 @@ class PluginsController extends Controller ] ); } + + /** + * Edit plugin process + * + * @param Request $request PSR7 request + * @param Response $response PSR7 response + */ + public function editProcess(Request $request, Response $response) : Response + { + $data = $request->getParsedBody(); + + $id = $data['id']; + $data = $data['data']; + + $site_plugin_settings_dir = PATH['config']['site'] . '/plugins/' . $id; + $site_plugin_settings_file = PATH['config']['site'] . '/plugins/' . $id . '/settings.yaml'; + + if (Filesystem::has($site_plugin_settings_file)) { + Filesystem::write($site_plugin_settings_file, $data); + } else { + ! Filesystem::has($site_plugin_settings_dir) and Filesystem::createDir($site_plugin_settings_dir); + Filesystem::write($site_plugin_settings_file, $data); + } + + return $response->withRedirect($this->router->pathFor('admin.plugins.edit') . '?id=' . $id); + } } diff --git a/site/plugins/admin/routes/web.php b/site/plugins/admin/routes/web.php index dc9fe89e..480e8b06 100644 --- a/site/plugins/admin/routes/web.php +++ b/site/plugins/admin/routes/web.php @@ -44,6 +44,7 @@ $app->group('/' . $admin_route, function () use ($app) : void { // Plugins Controller $app->get('/plugins', 'PluginsController:index')->setName('admin.plugins.index'); $app->get('/plugins/edit', 'PluginsController:edit')->setName('admin.plugins.edit'); + $app->post('/plugins/edit', 'PluginsController:editProcess')->setName('admin.plugins.editProcess'); $app->post('/plugins/update-status', 'PluginsController:pluginStatusProcess')->setName('admin.plugins.update-status'); // FieldsetsController