* @param string nom du fichier à inclure * @param string langue à utiliser dans le fichier de sortie **/ function __construct() { // Document // $this->_dom = new DOMDocument('1.0', 'ISO-8859-15'); $this->_dom = new DOMDocument('1.0', 'UTF-8'); // Racine du document $this->_racine = $this->_dom->createElement('Versions'); $this->_dom->appendChild($this->_racine); // On demande l'indentation $this->_dom->formatOutput = true; } // function __construct($fichier, $lang='fr') function setAppVersion($release, $subrelease, $arvers) { $this->_versions[$release][$subrelease] = $arvers; } function addIcons() { // Génère la liste des icônes $icones_dir = scandir('autoupd/Icones'); $icones = array(); $i = 0; foreach( $icones_dir as $icone) { // Répertoires administratifs if ($icone == '.svn' || $icone == '.' || $icone == '..') continue; // C'est une icône à la racine if (! is_dir('autoupd/Icones/'. $icone)) { $icones['France'][$i++] = 'autoupd/Icones/'. $icone; } else { // Icône dans un sous réspertoire $icones_categorie = scandir('autoupd/Icones/'. $icone); $j = 0; foreach( $icones_categorie as $ic) { if ($ic{0} == '.') continue; $icones[$icone][$j++] = "autoupd/Icones/$icone/$ic"; } } } $this->_icones = $icones; } /** * renvoie le fichier * * @param baseurl URL de base * @param version Version des noeuds XML des versions * @return object objet dom à envoyer **/ function recup($baseurl, $version) { $dom = $this->_dom; $racine = $dom->getElementsByTagName('Versions')->item(0); // Traite les revisions foreach ($this->_versions as $version_key => $version_data) { $v = $dom->createElement('version'); $v->setAttribute('version', $version); $v->setAttribute('type', $version_key); foreach ($version_data as $subversion_key => $subversion_data) { $elem = $dom->createElement($subversion_key); $elem->setAttribute('major', $subversion_data['major']); $elem->setAttribute('minor', $subversion_data['minor']); $elem->setAttribute('rev', $subversion_data['rev']); $elem->setAttribute('svn', $subversion_data['svn']); $elem->setAttribute('c', $subversion_data['compress']); $elem->appendChild($dom->createTextNode($subversion_data['url'])); $v->appendChild($elem); } $racine->appendChild($v); } // Commun à toutes les versions $commun = $dom->createElement('version'); $commun->setAttribute('version', $version); $commun->setAttribute('type', 'common'); $racine->appendChild($commun); // Traite les icones $icones = $dom->createElement('icones'); $icones->setAttribute('base', $baseurl.'Icones/'); $commun->appendChild($icones); foreach ($this->_icones as $icone_key => $icone_data) { $pack = $dom->createElement('pack'); $pack->setAttribute('pays', $icone_key); $pack->setAttribute('path', ($icone_key == 'France' ? '/' : $icone_key)); foreach ($icone_data as $bmp) { $icdate = date("Y-m-d", filemtime($bmp)); $ic = $dom->createElement('icone'); $ic->setAttribute('date', $icdate); $ic->appendChild($dom->createTextNode(basename($bmp, ".bmp"))); $pack->appendChild($ic); } $icones->appendChild($pack); } $dom->normalize(); return $dom; } } ?>