alert(\"$message\"); history.go(-1);";
exit();
}
print "
\n";
echo "
".sprintf($msg["sauv_misc_restaure"],$file_name)."
\n";
if ($critical==1) {
$dbh=pmb_mysql_connect($host,$user,$password) or abort($msg["sauv_misc_ract_cant_connect"]);
pmb_mysql_select_db($db, $dbh) or abort(sprintf($msg["sauv_misc_ract_db_dont_exists"],$db));
}
//Récupération de la partie data
$f=fopen($filename,"r") or abort($msg["sauv_misc_ract_cant_open_file"]);
$line=fgets($f,4096);
$line=rtrim($line);
while ((!feof($f))&&($line!="#data-section")) {
$line=fgets($f,4096);
$line=rtrim($line);
}
if ($line!="#data-section") abort($msg["sauv_misc_ract_no_sauv"]);
/*$datas=fread($f,filesize($filename));
fclose($f);
//Si crypté
if ($crypt==1) {
echo "".$msg["sauv_misc_ract_decryt_msg"]."
";
flush();
$c=new Crypt(md5($phrase1),md5($phrase2));
$sign=substr($datas,0,8);
$dSign=$c->getDecrypt($sign);
if ($dSign!="PMBCrypt") abort($msg["sauv_misc_ract_bad_keys"]);
$datas=substr($datas,8);
$datas=$c->getDecrypt($datas);
}
*/
//Copie des données dans un fichier temporaire
$tempfile="temp_restaure";
$tempfiledest="../backup/backups/temp_restaure.sql";
//Si compressé
if ($compress==1) {
if ($decompress_type=="internal") $tempfile.=".bz2"; else $tempfile.=".sql.".$decompress_ext;
} else $tempfile.=".sql";
$tempfile="../backup/backups/".$tempfile;
$ftemp=fopen($tempfile,"w+") or abort($msg["sauv_misc_ract_create"]);
while (!feof($f)) {
fwrite($ftemp,fread($f,4096));
}
//fwrite($ftemp,$datas);
fclose($ftemp);
fclose($f);
//Décompression éventuelle
if ($compress==1) {
echo "".$msg["sauv_misc_ract_decompress"]."
";
flush();
if ($decompress_type=="external") {
$decompress=str_replace("%s",$tempfile,$decompress);
$decompress=str_replace("%sd",$tempfiledest,$decompress);
exec($decompress);
} else {
$ftempin=bzopen($tempfile,"r") or abort($msg["sauv_misc_ract_not_bz2"]);
$ftempout=fopen($tempfiledest,"w+") or abort($msg["sauv_misc_ract_create"]);
while (!feof($ftempin)) {
$datas=bzread($ftempin,2048);
fwrite($ftempout,$datas);
}
bzclose($ftempin);
fclose($ftempout);
@unlink($tempfile);
}
}
//Application des requêtes
echo "".$msg["sauv_misc_ract_restaure_tables"]."
";
if (!is_array($tables)) $tables=array();
$fsql=fopen($tempfiledest,"r") or abort($msg["sauv_misc_ract_open_failed"]);
$mod_query=0;
while (!feof($fsql)) {
$line="";
while ((substr($line,strlen($line)-1,1)!="\n")&&(!feof($fsql))) {
$line.=fgets($fsql,4096);
}
$line=rtrim($line);
if ($line!="") {
if (substr($line,0,1)=="#") {
if (($currentTable!="")&&($mod_query==1)) { echo sprintf($msg["sauv_misc_ract_restaured_t"],$currentTable)."
"; flush(); }
$currentTable=substr($line,1);
$as=array_search($currentTable,$tables);
if (($as!==false)&&($as!==null)) { $mod_query=1; echo sprintf($msg["sauv_misc_ract_start_restaure"],$currentTable)."
"; } else { $mod_query=0; echo sprintf($msg["sauv_misc_ract_ignore"],$currentTable)."
"; }
flush();
} else {
if ($mod_query==1) { pmb_mysql_query($line) or abort(sprintf($msg["sauv_misc_ract_invalid_request"],$line)); }
}
}
}
fclose($fsql);
@unlink($tempfiledest);
/* Succeed - Gestion du cas particulier :
* Dernière sauvegarde effectuée <=> sauv_log_succeed valorisé à 1 après sauvegarde
* Lors de la restauration, on récupère la valeur 0, enregistrée avant la fin de la sauvegarde.
*/
$requete="update sauv_log set sauv_log_succeed=1 where sauv_log_id=".$logid;
@pmb_mysql_query($requete);
echo "".$msg["sauv_misc_ract_correct"]."
";
echo "";
if ($critical==1) unlink($filename);
?>