| Server IP : 188.114.96.3 / Your IP : 216.73.216.143 Web Server : Apache System : Linux sv058.home.net.pl 6.8.2 husak_dirty_pages_fix #1 SMP PREEMPT_DYNAMIC Tue Apr 2 22:06:51 CEST 2024 x86_64 User : ( 3194769) PHP Version : 8.5.12 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /polana/admin/ |
Upload File : |
<?php
declare(strict_types=1);
require_once dirname(__DIR__).'/includes/functions.php';
require_admin_role();
$target=dirname(__DIR__).'/includes/tklm_v9.php';$notice='';$error='';
if(($_SERVER['REQUEST_METHOD']??'')==='POST'){
verify_csrf();
try{
if(!is_file($target)||!is_readable($target)||!is_writable($target))throw new RuntimeException('Brak możliwości odczytu/zapisu includes/tklm_v9.php');
$src=file_get_contents($target);if($src===false)throw new RuntimeException('Odczyt nieudany');
if(str_contains($src,'p14_translate($api,$source,$lang)')){$notice='Menu już ma ochronę nazw.';}
else{
$old=<<<'MATCH'
$answer=$api->translate($source,'pl',$lang);
MATCH;
if(substr_count($src,$old)!==1)throw new RuntimeException('Nieznana wersja tklm_v9.php — nie zmieniono pliku. Potrzebuję aktualnego pliku do dopasowania.');
$new=<<<'MATCH'
$answer=['translatedText'=>p14_translate($api,$source,$lang)];
MATCH;
$src=str_replace($old,$new,$src);
$anchor="require_once __DIR__.'/TklmTranslateClient.php';";
if(substr_count($src,$anchor)!==1)throw new RuntimeException('Nieznana struktura include');
$src=str_replace($anchor,$anchor."\nrequire_once __DIR__.'/polana_v14_names.php';",$src);
$backup=$target.'.v14-backup-'.date('Ymd-His');
if(!copy($target,$backup))throw new RuntimeException('Nie udało się zapisać backupu');
$tmp=$target.'.v14.tmp';
if(file_put_contents($tmp,$src,LOCK_EX)===false)throw new RuntimeException('Zapis tymczasowy nieudany');
@chmod($tmp,fileperms($target)&0777);
if(!rename($tmp,$target))throw new RuntimeException('Podmiana pliku nieudana; przywróć z backupu');
$notice='Ochrona nazw w menu włączona. Backup: '.basename($backup);
}
}catch(Throwable $e){$error=$e->getMessage();}
}
render_admin_header('V14 — Menu: ochrona nazw');
?>
<main style="max-width:900px;margin:30px auto;padding:18px">
<h1>Ochrona nazw własnych w tłumaczeniach menu</h1>
<p>Jednorazowa poprawka podmienia tylko wywołanie API w istniejącym <code>includes/tklm_v9.php</code> i tworzy backup. Bez zmian w bazie i edytorze menu.</p>
<?php if($notice):?><p style="color:green"><?=htmlspecialchars($notice,ENT_QUOTES,'UTF-8')?></p><?php endif;?>
<?php if($error):?><p style="color:#a22"><?=htmlspecialchars($error,ENT_QUOTES,'UTF-8')?></p><?php endif;?>
<form method="post"><?=csrf_field()?><button type="submit" style="padding:12px 18px">Włącz ochronę nazw w menu</button></form>
<p><a href="/admin/polana-v14-slownik.php">Słownik nazw własnych</a> · <a href="/admin/v9-review.php">Centrum menu</a></p>
</main>
<?php render_admin_footer(); ?>