public function __construct($util, $get = null) { parent::__construct($util); $this->model(); $model = new Model(); $nbsauve = 3; //nombre max de sauvegardes par étudiant $dec = 0; //valeur indentation $decsup = 2; //incrément d'indentation $nt = $this->util->getId(); $nf = substr('0000' . $nt, -4, 4); $refsauve = uniqid(); $repfic = 'dirrw/xml/'; $extene = '.xml'; // ne conserve que nbsauve fichiers $dir = opendir($repfic); $fics = array(); $nbfics = 0; while ($fic = readdir($dir)) { if (substr($fic, 0, 4) == $nf) { $fics[] = $fic; $nbfics++; } } if ($nbfics >= $nbsauve) { //il y a trop de fichiers on en supprime nbsauve-1 rsort($fics); for ($i = $nbsauve - 1; $i < $nbfics; $i++) { //normalement un seul à effacer unlink($repfic . $fics[$i]); } } closedir($dir); //sauvegarde, on en ajoute 1 dans le répertoire $nomfice = $repfic . $nf . $refsauve . "G" . $extene; $fic = fopen($nomfice, "w"); $entete = '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?' . ">\r\n"; fputs($fic, $entete); fputs($fic, $this->lgx($dec, "suivicomp", "", "", 1)); $dec += $decsup; fputs($fic, $this->lgx($dec, "sauvegarde", "ref", $refsauve, 2)); $dec += $decsup; fputs($fic, $this->lgx($dec, "ref", "", $refsauve, 3)); fputs($fic, $this->lgx($dec, "datesv", "", date("Y-m-d"), 3)); $dec -= $decsup; fputs($fic, $this->lgx($dec, "sauvegarde", "", "", 4)); $ligne = $model->getEtudiant($nt); fputs($fic, $this->lgx($dec, "etudiant", "numero", $nt, 2)); $dec += $decsup; fputs($fic, $this->lgx($dec, "nom", "", $ligne[0]["nom"], 3)); fputs($fic, $this->lgx($dec, "prenom", "", $ligne[0]["prenom"], 3)); fputs($fic, $this->lgx($dec, "mel", "", $ligne[0]["mel"], 3)); $tbs = $model->getSituationsXML($nt); //chaque situation foreach ($tbs as $situ) { $ns = $situ["ref"]; fputs($fic, $this->lgx($dec, "situation", "ref", $ns, 2)); $dec += $decsup; //chaque donnée d'une situ foreach ($situ as $cle => $val) { fputs($fic, $this->lgx($dec, $cle, "", $val, 3)); } //les commentaires $com = $model->getCommentaireSauve($ns); if (count($com > 0)) { foreach ($com as $valid) { fputs($fic, $this->lgx($dec, "avisprof", "", "", 1)); $dec += $decsup; //chaque donnée d'un comm foreach ($valid as $cle => $val) { fputs($fic, $this->lgx($dec, $cle, "", $val, 3)); } $dec -= $decsup; fputs($fic, $this->lgx($dec, "avisprof", "", "", 4)); } } //les activites citées $tbp = $model->getActiviteCitee($ns); //chaque activite citee foreach ($tbp as $act) { $numact = $act["idActivite"]; fputs($fic, $this->lgx($dec, "activitecitee", "numero", $numact, 2)); $dec += $decsup; //chaque donnée d'une activite citee foreach ($act as $cle => $val) { fputs($fic, $this->lgx($dec, $cle, "", $val, 3)); } $dec -= $decsup; fputs($fic, $this->lgx($dec, "activitecitee", "", "", 4)); } //les productions $tbp = $model->getProduction($ns); //chaque production foreach ($tbp as $prod) { $nc = $prod["numero"]; fputs($fic, $this->lgx($dec, "production", "numero", $nc, 2)); $dec += $decsup; //chaque donnée d'une production foreach ($prod as $cle => $val) { fputs($fic, $this->lgx($dec, $cle, "", $val, 3)); } $dec -= $decsup; fputs($fic, $this->lgx($dec, "production", "", "", 4)); } //les typologies (types situation obligatoires) $tbp = $model->getTypologies($ns); //chaque typologie foreach ($tbp as $typo) { //$nc=$prod["numero"]; fputs($fic, $this->lgx($dec, "typologie", "", "", 1)); $dec += $decsup; //chaque donnée d'une typologie foreach ($typo as $cle => $val) { fputs($fic, $this->lgx($dec, $cle, "", $val, 3)); } $dec -= $decsup; fputs($fic, $this->lgx($dec, "typologie", "", "", 4)); } $dec -= $decsup; fputs($fic, $this->lgx($dec, "situation", "", "", 4)); } //fin chaque situation $dec -= $decsup; fputs($fic, $this->lgx($dec, "etudiant", "", "", 4)); $dec -= $decsup; fputs($fic, $this->lgx($dec, "suivicomp", "", "", 4)); fclose($fic); $model->close(); $this->setViewMenu(); $data["fic"] = $nf . $refsauve . "G" . $extene; $data["auth"] = $this->util->estAuthent(); $this->view->init('sauvee.php', $data); $this->setViewBas(); }