143 lines
6.9 KiB
PHP
Executable file
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;
|
|
}
|
|
|
|
?>
|