diff --git a/admin/tools/settings_save.php b/admin/tools/settings_save.php index 83be1de3..2fdd5fc4 100644 --- a/admin/tools/settings_save.php +++ b/admin/tools/settings_save.php @@ -6,6 +6,11 @@ require SYSTEM . 'functions.php'; require SYSTEM . 'init.php'; require SYSTEM . 'login.php'; +// event system +require_once SYSTEM . 'hooks.php'; +$hooks = new Hooks(); +$hooks->load(); + if(!admin()) { http_response_code(500); die('Access denied.'); @@ -23,7 +28,7 @@ if (!isset($_POST['settings'])) { $settings = Settings::getInstance(); -$settings->save($_REQUEST['plugin'], $_POST['settings']); +$success = $settings->save($_REQUEST['plugin'], $_POST['settings']); $errors = $settings->getErrors(); if (count($errors) > 0) { @@ -31,4 +36,6 @@ if (count($errors) > 0) { die(implode('
', $errors)); } -echo 'Saved at ' . date('H:i'); +if ($success) { + echo 'Saved at ' . date('H:i'); +} diff --git a/system/hooks.php b/system/hooks.php index 81bbeac9..0ef6827d 100644 --- a/system/hooks.php +++ b/system/hooks.php @@ -68,6 +68,7 @@ define('HOOK_ADMIN_LOGIN_AFTER_ACCOUNT', ++$i); define('HOOK_ADMIN_LOGIN_AFTER_PASSWORD', ++$i); define('HOOK_ADMIN_LOGIN_AFTER_SIGN_IN', ++$i); define('HOOK_ADMIN_ACCOUNTS_SAVE_POST', ++$i); +define('HOOK_ADMIN_SETTINGS_BEFORE_SAVE', ++$i); define('HOOK_EMAIL_CONFIRMED', ++$i); define('HOOK_GUILDS_BEFORE_GUILD_HEADER', ++$i); define('HOOK_GUILDS_AFTER_GUILD_HEADER', ++$i); diff --git a/system/libs/Settings.php b/system/libs/Settings.php index 3ed320d2..60b2e58c 100644 --- a/system/libs/Settings.php +++ b/system/libs/Settings.php @@ -60,6 +60,16 @@ class Settings implements ArrayAccess } $settings = $this->settingsFile[$pluginName]; + + global $hooks; + if (!$hooks->trigger(HOOK_ADMIN_SETTINGS_BEFORE_SAVE, [ + 'name' => $pluginName, + 'values' => $values, + 'settings' => $settings, + ])) { + return false; + } + if (isset($settings['callbacks']['beforeSave'])) { if (!$settings['callbacks']['beforeSave']($settings, $values)) { return false; diff --git a/system/settings.php b/system/settings.php index 83a1d85e..bbd72e2f 100644 --- a/system/settings.php +++ b/system/settings.php @@ -1602,7 +1602,7 @@ Sent by MyAAC,
if ($key == 'server_path') { $server_path = $values[$key]; } - elseif (strpos($key, 'database_') !== false) { + elseif (str_contains($key, 'database_')) { $database[$key] = $values[$key]; }