<?php date_default_timezone_set('Europe/Paris'); if (isset($_GET['i'])) { $data = new DomDocument(); $data->load('data.xml'); $dataNode = $data->getElementsByTagName('data')->item(0); $mcupdatesNode = $dataNode->getElementsByTagName('mcupdates')->item(0); $releaseS = $mcupdatesNode->getElementsByTagName('release'); // $lastVersions_e = explode('|', file_get_contents('lastVersions.txt')); $prevRelease = false; for ($c = $releaseS->length, $i = 0; $i < $c; $i++) { $release = $releaseS->item($i); if ($_GET['i'] == $release->getAttribute('id')) { $releaseInfos = $release->getElementsByTagName('infos')->item(0); $releaseDateE = explode('/', $releaseInfos->getAttribute('date')); $date = $releaseInfos->getAttribute('date'); echo 'Sortie le '.date('d', $date).'/'.date('m', $date).'/'.date('Y', $date); /*if (date('G', $date) != 0 OR date('i', $date) != 0) { echo ' à '.date('G', $date).':'.date('i', $date).' (environ)'; }*/ echo '.<br/>'; if ($release->getAttribute('name') != $releaseInfos->getAttribute('givenName')) { echo 'Le nom de la version donné dans le jeu est '.$releaseInfos->getAttribute('givenName').' mais le nom réel est '.$release->getAttribute('name').'.<br/>'; } // Téléchargement echo '<div class="download"><h4>Téléchargement</h4> Nom : <strong>minecraft.jar</strong> Taille : <strong>'.$releaseInfos->getAttribute('size').' octets</strong><br/> MD5 : <strong>'.$releaseInfos->getAttribute('md5').'</strong><br/> SHA-1 : <strong>'.$releaseInfos->getAttribute('sha1').'</strong><br/>'; if (is_dir($releaseInfos->getAttribute('directory'))) { $downloadLocal = $releaseInfos->getAttribute('directory').'/minecraft.jar'; } if (@fopen($releaseInfos->getAttribute('link'), 'r') AND ($release->getAttribute('type') != 'r' OR $i+1 == $c)) { $downloadServer = $releaseInfos->getAttribute('link'); } else { // TODO AR? Prévoir ça (variable $changes par exemple) } // TODO AR $downloadWiki if (isset($downloadLocal) OR isset($downloadServer) OR isset($downloadWiki)) { if (isset($downloadLocal)) { echo '<a href="'.$downloadLocal.'">Depuis ce serveur</a><br/>'; } if (isset($downloadServer)) { echo '<a href="'.$downloadServer.'">Depuis minecraft.net</a><br/> '; } if (isset($downloadWiki)) { echo '<a href="'.$downloadWiki.'">Depuis Minecaft Wiki</a><br/> '; } } else { echo 'Aucun lien de téléchargement n\'est disponible.'; } echo '</div>'; echo '<div class="changelog"> <h4>Changelog</h4> Langue : Français<br/> <a class="wikiLink" href="'.$releaseInfos->getAttribute('wiki').'">Lien vers le wiki</a><br/> </div>'; $text = '<ul>'; if ($release->getElementsByTagName('files')->item(0)) { echo '<div class="files"> <h4>Fichiers du .jar</h4>'; $directory = $releaseInfos->getAttribute('directory'); $haveLink = (is_dir($directory) AND is_dir($directory.'/content')); $elementS = $release->getElementsByTagName('files')->item(0)->childNodes; $filesModificationsStat = array(0, 0, 0, 0); $directoryXML = directoryXML($elementS, $releaseInfos->getAttribute('directory').'/content'); if ($prevRelease) echo 'Comparaison par rapport à la version : '.$prevRelease->getAttribute('name').'.<br/>'; echo '<span class="changeStats">'.$filesModificationsStat[3].' fichiers au total, '.$filesModificationsStat[2].' inchangés, '.$filesModificationsStat[1].' ajoutés et '.$filesModificationsStat[0].' modifiés (dont fichiers obstrués). <input class="releaseFilesButton" type="button" value="+" /></span><br/>'; // TODO Supprimer (s) (conditions) echo '<div class="releaseFiles" style="display: none;"><p>Tri selon les fichiers modifiés : <input type="radio" name="filesSelectionChangement" class="fileSelectionChangementAll" title="Pas de filtre pour les modifications de fichier" checked /><input type="radio" name="filesSelectionChangement" class="fileSelectionChangementChanged" title="Filtrer les fichiers restés inchangés" /><input type="radio" name="filesSelectionChangement" class="fileSelectionChangementAdded" title="Filtrer les fichiers uniquement modifiés (ne garder que les fichiers ajoutés)"/></p><p> Tri selon le type de fichier : <input type="radio" name="filesSelectionClass" class="fileSelectionClassAll" title="Pas de filtre pour les types de fichiers"/><input type="radio" name="filesSelectionClass" checked class="fileSelectionClassNontechnic" title="Filtrer les fichiers obstrués"/><input type="radio" name="filesSelectionClass" class="fileSelectionClassNone" title="Filtrer les fichiers .class"/></p><div class="releaseFilesContainer"> <strong class="minecraftDotJar">Minecraft.jar</strong><br/><ul>'.$directoryXML.'</ul></div></div>'; echo '</div>'; } exit(); } else { $prevRelease = $release; } } echo 'ERREUR L\'information demmandée n\'a pas été trouvée.<br/> Si il s\'agit d\'une sortie récente, attendez un peu et réésayez.'; } else { echo 'ERREUR Les informations demmandées ne sont pas correctes.'; } function directoryXML($XML, $path) { global $filesModificationsStat; global $haveLink; $text = ''; for ($c = $XML->length, $i = 0; $i < $c; $i++) { $element = $XML->item($i); if ($element->tagName == 'dir') { if ($directoryXML = directoryXML($element->childNodes, $path.'/'.$element->getAttribute('name'))) { $text .= '<li><span class="dir closed">'.$element->getAttribute('name').'</span><ul class="dirUl" style="display: none;">'.$directoryXML.'</ul></li>'; } } elseif ($element->tagName == 'file') { /* if ((isset($_GET['allowClass']) OR strlen(@$exploded[0]) > 3 OR @$exploded[1] != 'class' OR $element->getAttribute('comparaison')== 'addded') AND (isset($_GET['allowSame']) OR $element->getAttribute('comparaison')!= 'same')) { */ $className = 'file'; switch ($element->getAttribute('comparaison')) { case 'change': $comparaison = '≠'; $className .= ' change'; $filesModificationsStat[0]++; break; case 'added': $comparaison = '+'; $className .= ' added'; $filesModificationsStat[1]++; break; case 'same'; $comparaison = '='; $className .= ' same'; $filesModificationsStat[2]++; break; default: $comparaison = '?'; break; } $exploded = explode('.', $element->getAttribute('name')); if (@$exploded[1] == 'class') { $className .= ' class'; } if (strlen($exploded[0]) < 4 AND @$exploded[1] == 'class') { $className .= ' technic'; } if (@$exploded[1] == 'png') { $className .= ' image'; } if (@$exploded[1] == 'txt') { $className .= ' txt'; } $filesModificationsStat[3]++; $text .= '<li><span class="'.$className.'">'; if ($haveLink) { $text.= '<a href="'.$path.'/'.$element->getAttribute('name').'">'; } $text .= $element->getAttribute('name'); if ($haveLink) { $text .= '</a>'; } $text .= '</span>('.$comparaison.')</li>'; } } return $text; } ?>