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'] ?? '');