80 lines
3 KiB
PHP
80 lines
3 KiB
PHP
<?php
|
|
$_curr_page = 'downloads';
|
|
$title = 'Downloads';
|
|
$description = 'This page lists all version of Top Most Friend available for download, with the latest version at the top.';
|
|
|
|
$files = glob('dl/*/TopMostFriend.exe');
|
|
rsort($files);
|
|
|
|
$indent = "\r\n ";
|
|
$body = "{$indent}<h2>{$title}</h2>"
|
|
. "{$indent}<p>{$description}</p>"
|
|
. "{$indent}<p>Microsoft Windows XP Service Pack 3 and newer are supported, provided <a class=\"tmf-external\" href=\"https://www.microsoft.com/download/details.aspx?id=17851\" target=\"_blank\" rel=\"noopener\">.NET Framework 4.0</a> is installed.</p>"
|
|
. "{$indent}<span id=\"latest\"></span>";
|
|
|
|
foreach($files as $fileName) {
|
|
$folderName = dirname($fileName);
|
|
$changlogName = $folderName . DIRECTORY_SEPARATOR . 'changelog.txt';
|
|
|
|
$changelog = fopen($changlogName, 'rb');
|
|
if(!$changelog)
|
|
continue;
|
|
|
|
$versionInfo = fgets($changelog);
|
|
fclose($changelog);
|
|
if($versionInfo === false)
|
|
continue;
|
|
|
|
$versionInfo = trim($versionInfo);
|
|
if(empty($versionInfo))
|
|
continue;
|
|
|
|
$buttonClasses = [];
|
|
|
|
if(empty($hadLatest)) {
|
|
$hadLatest = true;
|
|
$isLatest = true;
|
|
$latestText = ' <a href="#latest">Latest!</a>';
|
|
$buttonClasses[] = 'tmf-button-latest';
|
|
} else {
|
|
$isLatest = false;
|
|
$latestText = '';
|
|
}
|
|
|
|
[$version, $date] = explode(' - ', $versionInfo, 2);
|
|
$versionId = $version;
|
|
$date = strtotime($date);
|
|
|
|
$sourceArchive = $folderName . '/topmostfriend-' . substr($version, 1) . '.zip';
|
|
|
|
$sha256File = $fileName . '.sha256';
|
|
$sha256Hash = is_file($sha256File) ? trim(file_get_contents($sha256File)) : '';
|
|
|
|
$body .= sprintf('%s<h3 id="%s"><a href="#%s">%s — <time datetime="%s">%s</time></a>%s</h3>', $indent, $versionId, $versionId, $version, date('c', $date), date('Y-m-d', $date), $latestText);
|
|
|
|
if(empty($sha256Hash))
|
|
$body .= '<p>SHA256 hash is missing.</p>';
|
|
else {
|
|
$sha256HashFile = hash_file('sha256', $fileName);
|
|
$sha256HashMatches = hash_equals($sha256Hash, $sha256HashFile) ? '' : ' <b>(does not match with actual file)</b>';
|
|
$body .= sprintf('<p>SHA256: <code>%s</code>%s</p>', $sha256Hash, $sha256HashMatches);
|
|
}
|
|
|
|
$body .= $indent . '<ul class="tmf-buttons' . (empty($buttonClasses) ? '' : (' ' . implode(' ', $buttonClasses))) .'">';
|
|
$indent .= ' ';
|
|
|
|
$body .= sprintf('%s<li class="tmf-button tmf-button-major"><a href="./%s">Download %s</a></li>', $indent, $fileName, $version);
|
|
$body .= sprintf('%s<li class="tmf-button"><a href="./changelog.php#%s">Changelog</a></li>', $indent, $version);
|
|
|
|
if(is_file($sourceArchive))
|
|
$body .= sprintf('%s<li class="tmf-button"><a href="./%s">Source Code (.zip)</a></li>', $indent, $sourceArchive);
|
|
|
|
$indent = substr($indent, 0, -4);
|
|
$body .= $indent . '</ul>'
|
|
. $indent . '<div class="tmf-clear"></div>';
|
|
}
|
|
|
|
$indent = substr($indent, 0, -4);
|
|
$body .= $indent;
|
|
|
|
require_once __DIR__ . '/_inc/out.php';
|