[ARCHIVE 2012] Récupère des informations sur les nouvelles versions de Minecraft
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

143 lines
6.9KB

  1. <?php
  2. date_default_timezone_set('Europe/Paris');
  3. if (isset($_GET['i']))
  4. {
  5. $data = new DomDocument();
  6. $data->load('data.xml');
  7. $dataNode = $data->getElementsByTagName('data')->item(0);
  8. $mcupdatesNode = $dataNode->getElementsByTagName('mcupdates')->item(0);
  9. $releaseS = $mcupdatesNode->getElementsByTagName('release');
  10. // $lastVersions_e = explode('|', file_get_contents('lastVersions.txt'));
  11. $prevRelease = false;
  12. for ($c = $releaseS->length, $i = 0; $i < $c; $i++) {
  13. $release = $releaseS->item($i);
  14. if ($_GET['i'] == $release->getAttribute('id')) {
  15. $releaseInfos = $release->getElementsByTagName('infos')->item(0);
  16. $releaseDateE = explode('/', $releaseInfos->getAttribute('date'));
  17. $date = $releaseInfos->getAttribute('date');
  18. echo 'Sortie le '.date('d', $date).'/'.date('m', $date).'/'.date('Y', $date);
  19. /*if (date('G', $date) != 0 OR date('i', $date) != 0) {
  20. echo ' à '.date('G', $date).':'.date('i', $date).' (environ)';
  21. }*/
  22. echo '.<br/>';
  23. if ($release->getAttribute('name') != $releaseInfos->getAttribute('givenName')) {
  24. echo 'Le nom de la version donné dans le jeu est '.$releaseInfos->getAttribute('givenName').' mais le nom réel est '.$release->getAttribute('name').'.<br/>';
  25. }
  26. // Téléchargement
  27. echo '<div class="download"><h4>Téléchargement</h4>
  28. Nom : <strong>minecraft.jar</strong>
  29. Taille : <strong>'.$releaseInfos->getAttribute('size').' octets</strong><br/>
  30. MD5 : <strong>'.$releaseInfos->getAttribute('md5').'</strong><br/>
  31. SHA-1 : <strong>'.$releaseInfos->getAttribute('sha1').'</strong><br/>';
  32. if (is_dir($releaseInfos->getAttribute('directory'))) {
  33. $downloadLocal = $releaseInfos->getAttribute('directory').'/minecraft.jar'; }
  34. if (@fopen($releaseInfos->getAttribute('link'), 'r') AND ($release->getAttribute('type') != 'r' OR $i+1 == $c)) {
  35. $downloadServer = $releaseInfos->getAttribute('link');
  36. } else {
  37. // TODO AR? Prévoir ça (variable $changes par exemple)
  38. }
  39. // TODO AR $downloadWiki
  40. if (isset($downloadLocal) OR isset($downloadServer) OR isset($downloadWiki)) {
  41. if (isset($downloadLocal)) {
  42. echo '<a href="'.$downloadLocal.'">Depuis ce serveur</a><br/>'; }
  43. if (isset($downloadServer)) {
  44. echo '<a href="'.$downloadServer.'">Depuis minecraft.net</a><br/> '; }
  45. if (isset($downloadWiki)) {
  46. echo '<a href="'.$downloadWiki.'">Depuis Minecaft Wiki</a><br/> '; }
  47. } else {
  48. echo 'Aucun lien de téléchargement n\'est disponible.';
  49. }
  50. echo '</div>';
  51. echo '<div class="changelog">
  52. <h4>Changelog</h4>
  53. Langue : Français<br/>
  54. <a class="wikiLink" href="'.$releaseInfos->getAttribute('wiki').'">Lien vers le wiki</a><br/>
  55. </div>';
  56. $text = '<ul>';
  57. if ($release->getElementsByTagName('files')->item(0)) {
  58. echo '<div class="files">
  59. <h4>Fichiers du .jar</h4>';
  60. $directory = $releaseInfos->getAttribute('directory');
  61. $haveLink = (is_dir($directory) AND is_dir($directory.'/content'));
  62. $elementS = $release->getElementsByTagName('files')->item(0)->childNodes;
  63. $filesModificationsStat = array(0, 0, 0, 0);
  64. $directoryXML = directoryXML($elementS, $releaseInfos->getAttribute('directory').'/content');
  65. if ($prevRelease)
  66. echo 'Comparaison par rapport à la version : '.$prevRelease->getAttribute('name').'.<br/>';
  67. 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/>';
  68. // TODO Supprimer (s) (conditions)
  69. 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>
  70. 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">
  71. <strong class="minecraftDotJar">Minecraft.jar</strong><br/><ul>'.$directoryXML.'</ul></div></div>';
  72. echo '</div>';
  73. }
  74. exit();
  75. }
  76. else {
  77. $prevRelease = $release;
  78. }
  79. }
  80. echo 'ERREUR L\'information demmandée n\'a pas été trouvée.<br/>
  81. Si il s\'agit d\'une sortie récente, attendez un peu et réésayez.';
  82. } else {
  83. echo 'ERREUR Les informations demmandées ne sont pas correctes.';
  84. }
  85. function directoryXML($XML, $path) {
  86. global $filesModificationsStat;
  87. global $haveLink;
  88. $text = '';
  89. for ($c = $XML->length, $i = 0; $i < $c; $i++) {
  90. $element = $XML->item($i);
  91. if ($element->tagName == 'dir') {
  92. if ($directoryXML = directoryXML($element->childNodes, $path.'/'.$element->getAttribute('name'))) {
  93. $text .= '<li><span class="dir closed">'.$element->getAttribute('name').'</span><ul class="dirUl" style="display: none;">'.$directoryXML.'</ul></li>';
  94. }
  95. } elseif ($element->tagName == 'file') {
  96. /*
  97. 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')) { */
  98. $className = 'file';
  99. switch ($element->getAttribute('comparaison')) {
  100. case 'change':
  101. $comparaison = '≠';
  102. $className .= ' change';
  103. $filesModificationsStat[0]++;
  104. break;
  105. case 'added':
  106. $comparaison = '+';
  107. $className .= ' added';
  108. $filesModificationsStat[1]++;
  109. break;
  110. case 'same';
  111. $comparaison = '=';
  112. $className .= ' same';
  113. $filesModificationsStat[2]++;
  114. break;
  115. default:
  116. $comparaison = '?';
  117. break;
  118. }
  119. $exploded = explode('.', $element->getAttribute('name'));
  120. if (@$exploded[1] == 'class') {
  121. $className .= ' class';
  122. }
  123. if (strlen($exploded[0]) < 4 AND @$exploded[1] == 'class') {
  124. $className .= ' technic';
  125. }
  126. if (@$exploded[1] == 'png') {
  127. $className .= ' image';
  128. }
  129. if (@$exploded[1] == 'txt') {
  130. $className .= ' txt';
  131. }
  132. $filesModificationsStat[3]++;
  133. $text .= '<li><span class="'.$className.'">';
  134. if ($haveLink) { $text.= '<a href="'.$path.'/'.$element->getAttribute('name').'">'; }
  135. $text .= $element->getAttribute('name');
  136. if ($haveLink) { $text .= '</a>'; }
  137. $text .= '</span>('.$comparaison.')</li>';
  138. }
  139. }
  140. return $text;
  141. }
  142. ?>