This repository has been archived on 2019-08-08. You can view files and clone it, but cannot push or open issues/pull-requests.
minecraft-checker/moreinfos.php

143 lines
6.9 KiB
PHP
Executable File

<?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;
}
?>