mirror of
https://github.com/reactos/reactos.git
synced 2024-09-06 10:52:52 +00:00
231 lines
4.7 KiB
PHP
231 lines
4.7 KiB
PHP
<?php
|
|
|
|
include ('config.php');
|
|
|
|
function dm_usort_cmp ($a, $b) {
|
|
if ($a == $b) return 0;
|
|
return ($a > $b) ? -1 : 1;
|
|
}
|
|
|
|
function dm_usort_cmp_desc ($a, $b) {
|
|
if ($a == $b) return 0;
|
|
return ($a > $b) ? 1 : -1;
|
|
}
|
|
|
|
function printHeader()
|
|
{
|
|
?>
|
|
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
<html>
|
|
<head>
|
|
<title>ReactOS Revison ISOs</title>
|
|
<meta name="generator" content="Editpad">
|
|
<meta name="keywords" content="OS, ReactOS, operating system">
|
|
<meta name="author" content="ReactOS Project (ros-dev@reactos.com)">
|
|
<style>
|
|
.box
|
|
{
|
|
padding: 0px;
|
|
background-color: #88aadd;
|
|
border-left: 1px solid #f0f0f0;
|
|
border-right: 1px solid #000000;
|
|
border-top: 1px solid #f0f0f0;
|
|
border-bottom: 1px solid #000000;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body bgcolor="#88aadd">
|
|
<form method="post" action="">
|
|
<?php
|
|
}
|
|
|
|
function printMenu($revision)
|
|
{
|
|
?>
|
|
<table border="0" class="box" cellpadding="5">
|
|
<tr>
|
|
<td height="2px">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
|
|
<table border="0" cellpadding="0" cellspacing="0">
|
|
<tr>
|
|
<td>
|
|
<b>Branch:</b>
|
|
</td>
|
|
<td>
|
|
<select name="branch" tabindex="1">
|
|
<?php
|
|
|
|
$d = dir(ISO_PATH);
|
|
$i = 0;
|
|
$dirlist = array();
|
|
while (false !== ($entry = $d->read())) {
|
|
if ((strcasecmp($entry, ".") != 0) && (strcasecmp($entry, "..") != 0) && is_dir(ISO_PATH . "\\" . $entry) == "dir") {
|
|
$dirlist[$i++] = $entry;
|
|
}
|
|
}
|
|
$d->close();
|
|
|
|
if (is_array($dirlist)) {
|
|
usort($dirlist, "dm_usort_cmp");
|
|
reset($dirlist);
|
|
while (list($key, $val) = each($dirlist)) {
|
|
$branch = $val;
|
|
if ($branch == $_POST["branch"] || (!isset($_POST["branch"]) && $branch == "trunk"))
|
|
$selected = " selected";
|
|
else
|
|
$selected = "";
|
|
echo "<option$selected>$branch</option>";
|
|
}
|
|
}
|
|
|
|
?>
|
|
</select>
|
|
</td>
|
|
<td>
|
|
|
|
</td>
|
|
<td>
|
|
<b>Revision:</b>
|
|
</td>
|
|
<td>
|
|
<?php
|
|
echo "<input type=\"text\" name=\"revision\" size=\"10\" maxlength=\"10\" tabindex=\"2\" value=\"" . $revision . "\"></input>";
|
|
?>
|
|
</td>
|
|
<td>
|
|
|
|
</td>
|
|
<td>
|
|
<input type="submit" name="getiso" value="Download" tabindex="3" style="border: 1px solid #000000"></input>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="7">
|
|
<hr size="2" width="100%" />
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="4">
|
|
<input type="submit" name="getnextiso" value="Next ISO" tabindex="4" style="border: 1px solid #000000"></input>
|
|
</td>
|
|
<td colspan="3" align="right">
|
|
<input type="submit" name="getlatestiso" value="Latest ISO" tabindex="5" style="border: 1px solid #000000"></input>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td height="2px">
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<?php
|
|
}
|
|
|
|
function printFooter()
|
|
{
|
|
?>
|
|
</form>
|
|
|
|
<script>
|
|
var revision = document.getElementById('revision');
|
|
if (revision) revision.focus();
|
|
</script>
|
|
</body>
|
|
</html>
|
|
<?php
|
|
}
|
|
|
|
function locateRevisionISO($branch, $revision, $latest)
|
|
{
|
|
$revision = intval($revision);
|
|
$path = ISO_PATH . "\\" . $branch;
|
|
$d = dir($path);
|
|
$i = 0;
|
|
$filelist = array();
|
|
while (false !== ($entry = $d->read())) {
|
|
if (is_dir($path . "\\" . $entry) != "dir")
|
|
$filelist[$i++] = $entry;
|
|
}
|
|
$d->close();
|
|
|
|
if (is_array($filelist)) {
|
|
$sortFunction = $latest ? "dm_usort_cmp" : "dm_usort_cmp_desc";
|
|
usort($filelist, $sortFunction);
|
|
reset($filelist);
|
|
while (list($key, $filename) = each($filelist)) {
|
|
if (ereg('ReactOS-' . $branch . '-r([0-9]*).iso', $filename, $regs))
|
|
{
|
|
$thisRevision = intval($regs[1]);
|
|
if (($latest) && ($thisRevision < $revision))
|
|
return $regs[1];
|
|
else if ($thisRevision > $revision)
|
|
return $regs[1];
|
|
$lastRevision = $thisRevision;
|
|
}
|
|
}
|
|
}
|
|
|
|
return "";
|
|
}
|
|
|
|
function getNextRevisionISO($branch, $revision)
|
|
{
|
|
return locateRevisionISO($branch, $revision, false);
|
|
}
|
|
|
|
function getLatestRevisionISO($branch)
|
|
{
|
|
return locateRevisionISO($branch, 999999, true);
|
|
}
|
|
|
|
function main()
|
|
{
|
|
$branch = $_POST["branch"];
|
|
$revision = $_POST["revision"];
|
|
|
|
$filename = "ReactOS-" . $branch . "-r" . $revision . ".iso";
|
|
if (file_exists(ISO_PATH . $branch . "\\" . $filename))
|
|
{
|
|
$location = ISO_BASE_URL . $branch . "/" . $filename;
|
|
header("Location: $location");
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
printHeader();
|
|
printMenu($_POST["revision"]);
|
|
echo "<br><b>No ISO exist for branch '" . $branch . "' and revision " . $revision . ".</b><br><br>";
|
|
printFooter();
|
|
}
|
|
}
|
|
|
|
if (!empty($_POST["getiso"]) && !empty($_POST["branch"]) && !empty($_POST["revision"]) && is_numeric($_POST["revision"]))
|
|
main();
|
|
else if (!empty($_POST["getnextiso"]) && !empty($_POST["branch"]) && !empty($_POST["revision"]) && is_numeric($_POST["revision"]))
|
|
{
|
|
printHeader();
|
|
printMenu(getNextRevisionISO($_POST["branch"], $_POST["revision"]));
|
|
printFooter();
|
|
}
|
|
else if (!empty($_POST["getlatestiso"]) && !empty($_POST["branch"]))
|
|
{
|
|
printHeader();
|
|
printMenu(getLatestRevisionISO($_POST["branch"]));
|
|
printFooter();
|
|
}
|
|
else
|
|
{
|
|
printHeader();
|
|
printMenu($_POST["revision"]);
|
|
printFooter();
|
|
}
|
|
|
|
?>
|