diff --git a/GameEngine/Admin/Mods/config_template.php b/GameEngine/Admin/Mods/config_template.php
index 32008ba9..2eae36b1 100644
--- a/GameEngine/Admin/Mods/config_template.php
+++ b/GameEngine/Admin/Mods/config_template.php
@@ -258,6 +258,52 @@ if (!function_exists('admin_config_template_path')) {
}
}
+ // Comutatoare adaugate dupa modelul lui %GP%: bonusurile de alianta si
+ // statisticile grafice Plus.
+ //
+ // BUG REPARAT: aceste placeholdere erau rezolvate DOAR de
+ // editNewFunctions. Orice alta pagina din panou (Server Configuration,
+ // Log Settings, PLUS Settings, NewsBox, Admin Info, Extra Settings)
+ // regenereaza si ea config.php din acelasi sablon, dar le lasa
+ // neinlocuite - deci in config ajungea
+ // define("NEW_FUNCTIONS_ALLIANCE_BONUSES", %ALLIANCEBONUSES%);
+ // adica eroare de parsare si server cazut cu 500 pana la reparare
+ // manuala a fisierului.
+ //
+ // Ca si la %GP%, blocul de aici e doar REZERVA: pastreaza valoarea
+ // curenta pentru modulele care nu trimit nimic. Modulul care chiar
+ // detine setarea o trimite prin $overrides, iar bucla de mai sus
+ // ruleaza INAINTE, deci alegerea adminului are intaietate.
+ $boolFallbacks = array(
+ '%ALLIANCEBONUSES%' => 'NEW_FUNCTIONS_ALLIANCE_BONUSES',
+ '%PLUSSTATS%' => 'NEW_FUNCTIONS_PLUS_STATISTICS',
+ );
+
+ foreach ($boolFallbacks as $ovPlaceholder => $constant) {
+ if (strpos($text, $ovPlaceholder) === false) {
+ continue;
+ }
+
+ $value = (defined($constant) && constant($constant)) ? 'true' : 'false';
+ $text = str_replace($ovPlaceholder, $value, $text);
+ }
+
+ // Setarile numerice ale statisticilor, tot ca rezerva.
+ $numFallbacks = array(
+ '%PLUSSTATSHOURS%' => array('PLUS_STATS_INTERVAL_HOURS', 6),
+ '%PLUSSTATSKEEP%' => array('PLUS_STATS_KEEP_DAYS', 0),
+ );
+
+ foreach ($numFallbacks as $ovPlaceholder => $info) {
+ if (strpos($text, $ovPlaceholder) === false) {
+ continue;
+ }
+
+ list($constant, $default) = $info;
+ $value = defined($constant) ? constant($constant) : $default;
+ $text = str_replace($ovPlaceholder, (string) $value, $text);
+ }
+
// Pachetul grafic si comutatorul de pachete proprii.
//
// ATENTIE LA ORDINE: acest bloc trebuie sa ruleze DUPA bucla de
diff --git a/GameEngine/Admin/Mods/editNewFunctions.php b/GameEngine/Admin/Mods/editNewFunctions.php
index 4c805fe9..2030b201 100644
--- a/GameEngine/Admin/Mods/editNewFunctions.php
+++ b/GameEngine/Admin/Mods/editNewFunctions.php
@@ -34,7 +34,28 @@ if (!admin_config_template_available()) {
$myFile = "../../config.php";
$fh = fopen($myFile, 'w') or die("
Can't open file: GameEngine\config.php");
- $text = admin_config_template_contents();
+ // Aceste setari trebuie trimise prin $overrides, NU prin tz_config_set
+ // dupa ce functia a returnat: rezerva centrala din
+ // admin_config_template_contents() ar consuma placeholderele inainte,
+ // iar alegerea adminului s-ar pierde tacut la fiecare salvare.
+ $abChoice = (isset($_POST['alliance_bonuses']) && $_POST['alliance_bonuses'] === 'true')
+ ? 'true' : 'false';
+
+ $psChoice = (isset($_POST['plus_statistics']) && $_POST['plus_statistics'] === 'true')
+ ? 'true' : 'false';
+
+ $psHours = isset($_POST['plus_stats_hours']) ? (float) $_POST['plus_stats_hours'] : 6;
+ if ($psHours < 0.25 || $psHours > 168) { $psHours = 6; }
+
+ $psKeep = isset($_POST['plus_stats_keep']) ? (int) $_POST['plus_stats_keep'] : 0;
+ if ($psKeep < 0 || $psKeep > 3650) { $psKeep = 0; }
+
+ $text = admin_config_template_contents(array(
+ '%ALLIANCEBONUSES%' => $abChoice,
+ '%PLUSSTATS%' => $psChoice,
+ '%PLUSSTATSHOURS%' => $psHours,
+ '%PLUSSTATSKEEP%' => $psKeep,
+ ));
$SUPPORT_MSGS_IN_ADMIN = (ADMIN_RECEIVE_SUPPORT_MESSAGES == false ? 'false' : 'true');
$ADMINS_RAIDABLE = (ADMIN_ALLOW_INCOMING_RAIDS == false ? 'false' : 'true');
@@ -112,17 +133,7 @@ $fh = fopen($myFile, 'w') or die("
Can't open file: GameEngine\con
tz_config_set($text, '%HOMEPAGE%', HOMEPAGE);
tz_config_set($text, '%SERVER%', SERVER);
tz_config_set($text, '%NEW_FUNCTIONS_OASIS%', $_POST['new_functions_oasis'] ?? '');
- tz_config_set($text, '%ALLIANCEBONUSES%', $_POST['alliance_bonuses'] ?? 'false');
- tz_config_set($text, '%PLUSSTATS%', $_POST['plus_statistics'] ?? 'false');
- // intervalul si retentia: valori numerice, cu limite rezonabile
- $psHours = isset($_POST['plus_stats_hours']) ? (float) $_POST['plus_stats_hours'] : 6;
- if ($psHours < 0.25 || $psHours > 168) { $psHours = 6; }
- tz_config_set($text, '%PLUSSTATSHOURS%', $psHours);
-
- $psKeep = isset($_POST['plus_stats_keep']) ? (int) $_POST['plus_stats_keep'] : 0;
- if ($psKeep < 0 || $psKeep > 3650) { $psKeep = 0; }
- tz_config_set($text, '%PLUSSTATSKEEP%', $psKeep);
tz_config_set($text, '%NEW_FUNCTIONS_ALLIANCE_INVITATION%', $_POST['new_functions_alliance_invitation'] ?? '');
tz_config_set($text, '%NEW_FUNCTIONS_EMBASSY_MECHANICS%', $_POST['new_functions_embassy_mechanics'] ?? '');
tz_config_set($text, '%NEW_FUNCTIONS_FORUM_POST_MESSAGE%', $_POST['new_functions_forum_post_message'] ?? '');