<?php
#=
/****************************************************************************
Copyright 2002, Daniel Deycard, Jacques Messines, Alain Pomirol
(CATICE Académie de Bordeaux)

This file is part of Gibii.

Gibii is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

Gibii is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Gibii; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

****************************************************************************/

//Fonctions utilisées uniquement par le Sadmin
function optimize($show=0) {
global $db;

if ($show==1) print "<table border=1 align=\"center\"><tr class='rubrique'><td><div align=center>Table</div></td><td><div align=center>Taille</div></td><td><div align=center>Statut</div></td><td><div align=center>Espace récupéré</div></td></tr>";
$tot_data = 0;
$tot_idx = 0;
$total_gain = 0;
$histo=0;
$cpt=0;

setlocale(LC_NUMERIC,"");

$asql = 'SHOW TABLE STATUS FROM '.$db;
$result = query($asql);
if (@mysql_num_rows($result)) {
 while ($row = @mysql_fetch_array($result)) {
    $tot_data = $row['Data_length'];
    $tot_idx  = $row['Index_length'];
    $total = $tot_data + $tot_idx;
    $total = $total / 1024 ;
    $total = round ($total,1);
    $gain= $row['Data_free'];
    $gain = $gain / 1024 ;
    $total_gain += $gain;
    $gain=round($gain,2);
    $local_query = 'OPTIMIZE TABLE '.$row[0];
    $resultat  = query($local_query);
    if ($show==1) {
     if ($gain == 0) {
                  print "<tr class='sadmin_paire'><td>"."$row[0]"."</td>"."<td>"."$total"." Ko"."</td>"."<td>Déjà optimisée</td><td>0 Ko</td></tr>";
             } else {
               print "<tr  class='sadmin_impaire'><td><b>"."$row[0]"."</b></td>"."<td><b>"."$total"." Ko"."</b></td>"."<td><b>Optimisée</b></td><td><b>"."$gain"." Ko</b></td></tr>";
              }
     } //fin $show=1
        }   //fin while

    }
    if ($show==1) {
     print "</table>";
     print "</center>";
     print "<br>";
     $total_fr = round ($total_gain,2);
     print "<center><b>Résultat de l'optimisation</b><br><br>Espace total récupéré :  $total_fr Ko<br>";
    }

    //Stockage historique optimisations
    //Vérifier table _optimize
    $sql_query = "CREATE TABLE IF NOT EXISTS _optimize(gain decimal(10,1))";
    $result = @mysql_query($sql_query);
    //$sql_query= "ALTER TABLE `_optimize` CHANGE `gain` `gain` DECIMAL( 10, 1 ) DEFAULT NULL";
    //$result = @mysql_query($sql_query);
    setlocale(LC_NUMERIC,"us");
    $sql_query = "INSERT INTO _optimize SET gain=".seci($total_fr);
    $result = @mysql_query($sql_query);
    setlocale(LC_NUMERIC,"");
    //On va relire l'historique
    $sql_query = "SELECT * FROM _optimize";
    $result = @mysql_query ($sql_query);
    while ($row = @mysql_fetch_row($result)) {
        $histo += $row[0];
        $cpt += 1;
    }

    if ($show=+1) {
    print "Vous avez effectué l'optimisation $cpt fois<br>"
        ."et récupéré $histo Ko depuis la première fois !</center>";
    print "</table>";
    }

}

function lancer_maj() {
global $MODULE,$VERSION_B2I,$VERSION_GIBII,$db;
$dir_source_maj="./maj";
$dir_cible_maj="./maj_faites";
clearstatcache();
if (!file_exists($dir_source_maj)) mkdir($dir_source_maj,0777);
if (!file_exists($dir_cible_maj)) mkdir($dir_cible_maj,0777);
$tab_fich=array();
if ($handle=opendir($dir_source_maj)) {
    while ($fich=readdir($handle)) {
        $bout=explode(".",$fich);
        if ($bout) $ext=strtoupper($bout[count($bout)-1]);
        if ($fich !="." && $fich !=".." && $ext=="PHP")
                $tab_fich[]=$fich;
        } //fin recherche fichiers
	}


//Vérif cohérence des versions de GiBii et du référentiel B2i
getparams();
$vv=verif_version();
if (!$vv) {
	alert("Incohérence entre votre version de GiSCCo ($VERSION_GIBII) et le référentiel du B2i ($VERSION_B2I)\nVous devez passer le script de conversion du référentiel sur la v. 4.7 avant de passer à la v. $VERSION_GIBII");
	exit;
	}


//inclusion des fichiers dans l'ordre alphabétique au cas où ça serait important..
//au passage on les envoie dans ./maj_faites
if (count($tab_fich)) {
    set_time_limit(0);
    session_start();
    sort($tab_fich);

    ?><!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN">
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    <title>Mise à jour de GiBii</title>
    <link rel="stylesheet" href="../include/general.css">
    </head>
    <body class="arial_sadmin">
	<h2>Mise à jour...</h2><hr />

    <?php
    //pour les scripts de maj, il faut quelques données
    //on ouvre une session qui ne sert que dans les fichiers de maj
    for ($nb_fichmaj=0;$nb_fichmaj<count($tab_fich);$nb_fichmaj++) {
        //inclusion fait un bête include (il est dans util.inc.php)
        $fichier=$tab_fich[$nb_fichmaj];
        include($dir_source_maj."/".$fichier);
        //Déplacement
        if (copy($dir_source_maj."/".$fichier,$dir_cible_maj."/".$fichier))
          	unlink($dir_source_maj."/".$fichier);
        }
    unset($_SESSION);  //on casse tout. index2.php fera le travail normal
    ?>
    <form name="houps" action="index2.php" method="post">
    <input type="submit" value="Continuer" />
    </form>
    <?php
    superflush();
    voircetendroit();
    print "</body></html>";
    }
else {
	header("Location: ../sadmin/index2.php");
	}
}

?>