<?php
/** patch-mail-google.php — admingrandfather.com: notificările de mesaj acceptate de Google.
 *  core/smtp_mailer.php: numele firmei în From între ghilimele (RFC 5322) — rezolvă „550 5.7.1 missing a valid address in From”; Reply-To validat;
 *  scoate curățarea veche din patch-from-name (numele real rămâne). api/_enquiry_email.php: subiect simplu „New enquiry #… - vehicul”, fără text ascuns.
 *  Backup + Restore. Șterge-l după folosire. */
const KEY = '0cec0e4fc60b65d70dabed35c2748c1f';
if (!isset($_GET['key']) || !hash_equals(KEY, (string)$_GET['key'])) { http_response_code(404); exit('Not found'); }
header('Content-Type: text/html; charset=utf-8');
$R = rtrim($_SERVER['DOCUMENT_ROOT'] ?: __DIR__, '/');
$T = json_decode(base64_decode('W1siY29yZS9zbXRwX21haWxlci5waHAiLCAic210cF9mcm9tX25hbWUiLCBbWyJmcm9tLW5hbWUgZm4iLCAiZnVuY3Rpb24gc210cF9taW1lX2hlYWRlcigkc3RyKSB7XG4gICAgaWYgKHByZWdfbWF0Y2goJy9bXlxceDIwLVxceDdlXS8nLCAkc3RyKSkge1xuICAgICAgICByZXR1cm4gJz0/VVRGLTg/Qj8nIC4gYmFzZTY0X2VuY29kZSgkc3RyKSAuICc/PSc7XG4gICAgfVxuICAgIHJldHVybiAkc3RyO1xufSIsICJmdW5jdGlvbiBzbXRwX21pbWVfaGVhZGVyKCRzdHIpIHtcbiAgICBpZiAocHJlZ19tYXRjaCgnL1teXFx4MjAtXFx4N2VdLycsICRzdHIpKSB7XG4gICAgICAgIHJldHVybiAnPT9VVEYtOD9CPycgLiBiYXNlNjRfZW5jb2RlKCRzdHIpIC4gJz89JztcbiAgICB9XG4gICAgcmV0dXJuICRzdHI7XG59XG5cbi8qKiBOdW1lbGUgZXhwZWRpdG9ydWx1aSBjYSBcdTIwMWVkaXNwbGF5IG5hbWVcdTIwMWQgdmFsaWQgUkZDIDUzMjI6IFx1MDBlZW50cmUgZ2hpbGltZWxlLCBjYSB2aXJndWxhIC8gJiAvIHB1bmN0ZWxlXG4gKiAgZGluIG51bWVsZSBmaXJtZWkgKFx1MjAxZUFVVE8gU0FMRVMgJiBDT05TSUdOTUVOVCwgTC5MLkMuXHUyMDFkKSBzXHUwMTAzIG51IHJ1cFx1MDEwMyBhbnRldHVsIEZyb20gKEdvb2dsZTogNTUwIDUuNy4xKS4gKi9cbmZ1bmN0aW9uIHNtdHBfZnJvbV9uYW1lKCRuYW1lKSB7XG4gICAgJG5hbWUgPSB0cmltKHByZWdfcmVwbGFjZSgnL1tcXHJcXG5cXHRcIlxcXFxcXFxcXSsvJywgJyAnLCAoc3RyaW5nKSRuYW1lKSk7XG4gICAgaWYgKCRuYW1lID09PSAnJykgJG5hbWUgPSAnV2Vic2l0ZSc7XG4gICAgaWYgKHByZWdfbWF0Y2goJy9bXlxceDIwLVxceDdlXS8nLCAkbmFtZSkpIHJldHVybiAnPT9VVEYtOD9CPycgLiBiYXNlNjRfZW5jb2RlKCRuYW1lKSAuICc/PSc7XG4gICAgcmV0dXJuICdcIicgLiAkbmFtZSAuICdcIic7XG59Il0sIFsiZnJvbSBoZWFkZXIiLCAiICAgICRoZWFkZXJzW10gPSAnRnJvbTogJyAuIHNtdHBfbWltZV9oZWFkZXIoJGRpc3BsYXlOYW1lKSAuICcgPCcgLiBTTVRQX0ZST00gLiAnPic7IiwgIiAgICAkaGVhZGVyc1tdID0gJ0Zyb206ICcgLiBzbXRwX2Zyb21fbmFtZSgkZGlzcGxheU5hbWUpIC4gJyA8JyAuIFNNVFBfRlJPTSAuICc+JzsiXSwgWyJyZXBseS10byIsICIgICAgaWYgKCRyZXBseVRvKSAkaGVhZGVyc1tdID0gJ1JlcGx5LVRvOiAnIC4gJHJlcGx5VG87IiwgIiAgICBpZiAoJHJlcGx5VG8gJiYgZmlsdGVyX3Zhcih0cmltKChzdHJpbmcpJHJlcGx5VG8pLCBGSUxURVJfVkFMSURBVEVfRU1BSUwpKSAkaGVhZGVyc1tdID0gJ1JlcGx5LVRvOiAnIC4gdHJpbSgoc3RyaW5nKSRyZXBseVRvKTsiXV1dLCBbImFwaS9fZW5xdWlyeV9lbWFpbC5waHAiLCAiTmV3IGVucXVpcnkgIyIsIFtbInN1YmplY3QiLCAiICAgICRzdWJqZWN0ID0gJ0VucXVpcnkgIycgLiAkcmVmIC4gJyAtICcgLiAoJGNhciA/ICRjYXJbJ3RpdGxlJ10gOiAnQ29udGFjdCBmb3JtJykgLiAnIC0gJyAuICRjb21wYW55OyIsICIgICAgJHN1YmplY3QgPSAnTmV3IGVucXVpcnkgIycgLiAkcmVmIC4gJyAtICcgLiAoJGNhciA/ICRjYXJbJ3RpdGxlJ10gOiAnY29udGFjdCBmb3JtJyk7ICAgLy8gZlx1MDEwM3JcdTAxMDMgbnVtZWxlIGZpcm1laSAodmlyZ3VsZSAvICYgLyBMLkwuQy4pIl0sIFsibm8gaGlkZGVuIHRleHQiLCAiICAgICRodG1sIC49ICc8ZGl2IHN0eWxlPVwiZGlzcGxheTpub25lO21heC1oZWlnaHQ6MDtvdmVyZmxvdzpoaWRkZW47b3BhY2l0eTowXCI+JyAuIGVlX2goJG5hbWUgLiAoJGNhciA/ICcgaXMgaW50ZXJlc3RlZCBpbiAnIC4gJGNhclsndGl0bGUnXSA6ICcgc2VudCBhIG1lc3NhZ2UnKSkgLiAnPC9kaXY+JztcbiIsICIiXV1dXQ=='), true);
$BAK = '.bak-mailgoogle'; $out = []; $mode = $_POST['mode'] ?? '';
if ($mode === 'apply') {
    try {
        $write = [];
        foreach ($T as [$rel, $marker, $E]) {
            $f = $R . '/' . $rel; $c = (string)@file_get_contents($f);
            if ($c === '') throw new RuntimeException("$rel missing");
            if ($rel === 'core/smtp_mailer.php') $c = preg_replace('#\R    /\* from-name: doar caractere sigure \*/\R[^\r\n]*\R#', "\n", $c);   // patch-from-name, dacă a fost aplicat
            if (strpos($c, $marker) !== false) { $out[] = "$rel: already updated"; if ($c !== (string)file_get_contents($f)) $write[$rel] = $c; continue; }
            foreach ($E as [$l, $a, $r]) {
                if (strpos($c, $a) === false && strpos($c, "\r\n") !== false) { $a = str_replace("\n", "\r\n", $a); $r = str_replace("\n", "\r\n", $r); }
                $n = substr_count($c, $a); if ($n !== 1) throw new RuntimeException("$rel / $l: anchor found $n times");
                $c = str_replace($a, $r, $c);
            }
            token_get_all($c, TOKEN_PARSE); $write[$rel] = $c;
        }
        foreach ($write as $rel => $c) { $f = $R . '/' . $rel; if (!is_file($f . $BAK)) copy($f, $f . $BAK); file_put_contents($f, $c); if (function_exists('opcache_invalidate')) @opcache_invalidate($f, true); $out[] = "$rel updated"; }
        $out[] = 'Done. Send a test from the site (new email address) or with smtp-set.php.';
    } catch (Throwable $e) { $out[] = 'Nothing changed — ' . $e->getMessage(); }
}
if ($mode === 'restore') foreach ($T as [$rel]) { $f = $R . '/' . $rel; if (is_file($f . $BAK)) { copy($f . $BAK, $f); @unlink($f . $BAK); $out[] = "$rel restored"; } }
?><!doctype html><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Mail for Google</title>
<div style="font:15px/1.6 system-ui,sans-serif;max-width:640px;margin:30px auto;padding:0 16px">
<h2>Enquiry emails — Google-friendly</h2>
<?php foreach ($out as $m) echo '<p>&#10003; ' . htmlspecialchars($m) . '</p>'; ?>
<form method="post"><input type="hidden" name="mode" value="apply"><button style="background:#1d5fd1;color:#fff;border:0;border-radius:6px;padding:11px 18px;font-weight:600">Apply</button></form>
<form method="post" style="margin-top:10px"><input type="hidden" name="mode" value="restore"><button>Restore</button></form>
<p style="color:#b42318;font-weight:600">Delete patch-mail-google.php after use.</p></div>
