<?php
mysqli_report(MYSQLI_REPORT_OFF);
$site=$argv[1];
$newpass=getenv('NEWDBPASS');
if($newpass===false||$newpass===''){echo "  [$site] NEWDBPASS vide\n";exit(9);}
$f=getenv('HOME')."/$site/wp-config.php";
$c=@file_get_contents($f);
if($c===false){echo "  [$site] pas de wp-config\n";exit(3);}
$g=function($k)use($c){return preg_match("/define\(\s*['\"]".$k."['\"]\s*,\s*['\"]([^'\"]*)/",$c,$m)?$m[1]:'';};
$hp=explode(':',$g('DB_HOST'));
$host=$hp[0]; $port=isset($hp[1])?(int)$hp[1]:3306;
$db=@mysqli_connect($host,$g('DB_USER'),$newpass,$g('DB_NAME'),$port);
if(!$db){echo "  [$site] nouveau mdp REFUSE par la base ({$g('DB_NAME')}) -> wp-config INCHANGE\n";exit(2);}
mysqli_close($db);
$esc=str_replace(['\\',"'"],['\\\\',"\\'"],$newpass);
$new=preg_replace_callback(
  "/define\(\s*(['\"])DB_PASSWORD\\1\s*,\s*(['\"]).*?\\2\s*\)/s",
  function($m)use($esc){return "define('DB_PASSWORD', '".$esc."')";},
  $c,-1,$cnt);
if($cnt<1){echo "  [$site] define DB_PASSWORD introuvable -> INCHANGE\n";exit(4);}
@copy($f,$f.'.bak-dbpass-20260712b');
if(@file_put_contents($f,$new)===false){echo "  [$site] ecriture KO\n";exit(5);}
echo "  [$site] OK: nouveau mdp valide (base {$g('DB_NAME')}) + wp-config mis a jour\n";
exit(0);
