<?php
include("../include/vars_adm.php");
require_once("../include/define.inc.php");
include("../include/util.inc.php");
include("../include/utiljs.php");

define("DBG",true);


//jeu d'essai (normalement, récup de la session)
//$HTTP_INI='http://localhost/prog/.meta/maj_gibii.ini';
//$HTTP_MAJ='http://localhost/prog/b2i_distrib';



//Hypothèses
//----------
/* 	Le serveur FTP et le répertoire sont quelconques et sont fournis par des paramètres 
	globaux. Le répertoire des versions de GiBii contient des sous-répertoires de noms 
	versionX.Y et parfois versionX.Y.Z.
	Chacun de ces versionX.Y contient :
		- la distrib complète sous le nom distrib_X_Y_Z.zip
		- un dossier correctifs contenant un fichier du genre Z_blablabla.zip qui permet
		de passer de la version X.Y.u à X.Y.Z, pour tout u inférieur à Z. Il s'agit donc 
		d'un correctif cumulant les correctifs 1, 2, 3,...Z.
*/

function debug($msg) {
	if (DBG) print $msg.'<br />';
}	
function erreur($msg) { 
	alert($msg);exit();
	//return false; 
}

//---------------------------
function get_ini() {
global $HTTP_INI;
////alert("get_ini");
if (empty($HTTP_INI)) {
	$_SESSION['maj_log']="Les références du serveur wiki ne sont pas renseignées dans les options";
	return false;
	}
$ch=@file_get_contents($HTTP_INI);
if ($ch===false) {
	$_SESSION['maj_log']="Impossible d'accéder à $HTTP_INI";
	return false;
	}
creertousrep(LOCAL_INI);
$fp=@fopen(LOCAL_INI,'w');
if (!$fp) {
	$_SESSION['maj_log']="Impossible d'accéder à ".LOCAL_INI." en écriture.";
	return false;
	}
fwrite($fp,$ch);
fclose($fp);
return parse_ini_file(LOCAL_INI,true);
}


//---------------------------			
function analyse_ini(&$ini) {
global $VERSION_GIBII, $HTTP_MAJ;
//alert("analyse_ini");
$v100gibii=vbase100($VERSION_GIBII);	// 050303
$v100gibii2=$v100gibii-($v100gibii%100);  // 050300
$cor_act=$cor_fichier=$dis_act=$dis_fichier='';
$v100minsup=$v100actsup=0;
foreach($ini as $section => $lignes) {
	$v100section=vbase100($section);
	foreach($lignes as $nom => $valeur) {
		$$nom=$valeur;
		}
	$v100act=vbase100($act);
	$v100min=vbase100($min);
	if ($v100section==$v100gibii2 && isset($correctif)) {
		//section avec même version principale (5.3) : on garde le correctif s'il existe
		$cor_act=$act;
		$cor_fichier=$HTTP_MAJ.'/'.$dir.'/correctifs/'.$correctif;
		}
	$v100act=vbase100($act);
	if (($v100minsup<$v100min && $v100min<=$v100gibii) || ($v100minsup==$v100min && $v100act>$v100actsup)) {
		//meilleure section que les précédentes pour obtenir une distrib
		//print " = AVANT : minsup=$v100minsup, v100actsup=$v100actsup, dis_fichier=$dis_fichier<br>";
		$v100minsup=$v100min;
		$v100actsup=$v100act;
		$dis_act=$act;
		$dis_fichier=$HTTP_MAJ.'/'.$dir.'/'.$dis_act;
		//print " # APRES minsup=$v100minsup, v100actsup=$v100actsup, dis_fichier=$dis_fichier<br><br>";
		}
	}
if ($cor_act || $dis_act) {
	$_SESSION['maj_existe']=true;
	$_SESSION['maj_dejavue']=false;
	$_SESSION['maj_log']="Il existe une mise à jour.";
	$_SESSION['cor_act']=$cor_act;
	$_SESSION['cor_fic']=$cor_fichier;
	$_SESSION['dis_act']=$dis_act;
	$_SESSION['dis_fic']=$dis_fichier;
	if (isset($cor_msg) && !empty($cor_msg)) $cor_msg=$HTTP_MAJ.'/'.$cor_msg;
	else $cor_msg='';
	if (isset($dis_msg) && !empty($dis_msg)) $dis_msg=$HTTP_MAJ.'/'.$dis_msg;
	else $dis_msg='';
	$_SESSION['cor_msg']=$cor_msg;
	$_SESSION['dis_msg']=$dis_msg;
	}
else {
	$_SESSION['maj_existe']=false;
	$_SESSION['maj_log']="Pas de mise à jour actuellement.";
	}
//dbg('_SESSION');
return $_SESSION['maj_existe'];
}


//---------------------------			
function maj_existe() {
//Y a-t-il une maj sur le site
if (!isset($_SESSION['maj_existe'])) {
	//test d'existence tous les 2 jours au plus (paramétrable)
	$_SESSION['maj_existe']=false; //a priori, mais analyse_ini peut le modifier
	if ($_SESSION['HTTP_FREQ_MAJ']==0) return false;
	$last=strtotime($_SESSION['HTTP_LAST']);
	$now=strtotime("now");
	$nbjours=(int) (($now-$last)/86400);
	if ($nbjours<$_SESSION['HTTP_FREQ_MAJ']) return false;
	$ini=get_ini();

	//print_r($_SESSION);exit();

	if ($ini===false) return false;
	else return analyse_ini($ini);
	}
else return $_SESSION['maj_existe'];
}
//12255232	
?>
