<?php
mysqli_report(MYSQLI_REPORT_OFF);
$site=$argv[1];
$home=getenv('HOME');
$c=@file_get_contents("$home/$site/wp-config.php");
if($c===false){echo "  [$site] pas de wp-config\n";exit(1);}
$g=function($k)use($c){return preg_match("/define\(\s*['\"]".$k."['\"]\s*,\s*['\"]([^'\"]*)/",$c,$m)?$m[1]:'';};
$p=preg_match('/\$table_prefix\s*=\s*[\'"]([^\'"]+)[\'"]/',$c,$m)?$m[1]:'wp_';
$hp=explode(':',$g('DB_HOST'));
$db=@mysqli_connect($hp[0],$g('DB_USER'),$g('DB_PASSWORD'),$g('DB_NAME'),isset($hp[1])?(int)$hp[1]:3306);
if(!$db){echo "  [$site] DB KO\n";exit(1);}
$r=mysqli_query($db,"SELECT option_value FROM {$p}options WHERE option_name='active_plugins'");
$cur=($r&&($row=mysqli_fetch_row($r)))?$row[0]:'';
$curA=@unserialize($cur); $curN=is_array($curA)?count($curA):0;
echo "  [$site] active_plugins actuel = $curN\n";
$r=mysqli_query($db,"SELECT option_name,option_value FROM {$p}options WHERE option_name LIKE 'active_plugins_bak%'");
while($r&&($row=mysqli_fetch_row($r))){$a=@unserialize($row[1]);echo "  [$site] backup existant ".$row[0]." = ".(is_array($a)?count($a):'?')." plugins\n";}
$dir="$home/$site/wp-content/plugins";
$plugs=[];
foreach(glob("$dir/*",GLOB_ONLYDIR)?:[] as $d){
  $slug=basename($d);
  if($slug==='wp-file-manager') continue;
  $main="$slug/$slug.php";
  if(is_file("$dir/$main")){$plugs[]=$main;continue;}
  $found='';
  foreach(glob("$d/*.php")?:[] as $f){
    $h=@file_get_contents($f,false,null,0,8192);
    if($h!==false && stripos($h,'Plugin Name:')!==false){$found=$slug.'/'.basename($f);break;}
  }
  if($found)$plugs[]=$found;
}
foreach(glob("$dir/*.php")?:[] as $f){
  $h=@file_get_contents($f,false,null,0,8192);
  if($h!==false && stripos($h,'Plugin Name:')!==false)$plugs[]=basename($f);
}
sort($plugs);
$bakName="active_plugins_bak_20260713";
$esc=mysqli_real_escape_string($db,$cur);
mysqli_query($db,"INSERT INTO {$p}options (option_name,option_value,autoload) VALUES ('$bakName','$esc','no') ON DUPLICATE KEY UPDATE option_value='$esc'");
$ser='a:'.count($plugs).':{';
foreach($plugs as $i=>$pl){$ser.='i:'.$i.';s:'.strlen($pl).':"'.$pl.'";';}
$ser.='}';
$escSer=mysqli_real_escape_string($db,$ser);
mysqli_query($db,"UPDATE {$p}options SET option_value='$escSer' WHERE option_name='active_plugins'");
echo "  [$site] active_plugins reconstruit = ".count($plugs)." plugins (ancienne valeur sauvegardee dans option $bakName)\n";
foreach($plugs as $pl)echo "      + $pl\n";
mysqli_close($db);
