diff options
Diffstat (limited to 'routes')
| -rw-r--r-- | routes/admin.php | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/routes/admin.php b/routes/admin.php new file mode 100644 index 0000000..9915fde --- /dev/null +++ b/routes/admin.php @@ -0,0 +1,27 @@ +<?php + +use Digitigrade\GlobalSettings; +use Digitigrade\Model\UserAccount; +use Digitigrade\Router; + +Router::getInstance()->mount('/admin/settings/:prefix', function (array $args) { + UserAccount::requireByCurrentSession()->requireAdmin(); + render_template('global_settings_page', ['prefix' => $args['prefix']]); +}); + +Router::getInstance()->mount('/fragment/admin/settings/:prefix', function (array $args) { + UserAccount::requireByCurrentSession()->requireAdmin(); + $saved = false; + if ($_SERVER['REQUEST_METHOD'] == 'POST') { + // update all the settings from the page + $settings = GlobalSettings::getInstance(); + foreach ($_POST as $key => $value) { + // same workaround as in settings_field + $key = str_replace('<DOT>', '.', $key); + error_log("setting '$key' to '$value'"); + $settings->set($key, $value); + } + $saved = true; + } + render_template('settings_editor', ['prefix' => $args['prefix'], 'saved' => $saved]); +});
\ No newline at end of file |
