Bug fix found by @daencore

Bug fix found by @daencore
This commit is contained in:
novgorodschi catalin
2026-07-28 09:08:19 +03:00
parent 7642151569
commit b5ed6642cf
2 changed files with 68 additions and 11 deletions
+46
View File
@@ -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
+22 -11
View File
@@ -34,7 +34,28 @@ if (!admin_config_template_available()) {
$myFile = "../../config.php";
$fh = fopen($myFile, 'w') or die("<br/><br/><br/>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("<br/><br/><br/>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'] ?? '');