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];
}