7 const UNITS
= ["Bytes", "KB", "MB"];
9 function human_size($s) {
10 $l = floor(log10($s));
11 return sprintf("%1.1F %s", $s/pow(10,$l-($l%3
)), UNITS
[$l/3]);
14 function human_date($t) {
15 $d = date_create("@".$_SERVER["REQUEST_TIME"]);
16 for ($i = 1; $i < 7; ++
$i) {
17 if ($t > $d->modify("-$i days")->format("U")) {
28 return gmdate("Y-m-d", $t);
31 function package_versions($package) {
33 foreach (glob("phars/$package/*.ext.phar*") as $phar) {
34 list($name, $enc) = explode(".ext.phar", basename($phar));
35 $data = new Phar($phar);
36 $meta = $data->getMetadata();
38 $release = $meta["release"];
40 $release = substr($name, strlen($package)+
1);
43 $size = filesize($phar);
44 $date = isset($meta["date"]) ?
strtotime($meta["date"]) : filemtime($phar);
45 $pharext = isset($meta["version"]) ?
$meta["version"] : "2.0.1";
46 $versions[$release][$enc] = compact("phar", "date", "size", "pharext");
47 uksort($versions[$release], function($a, $b) {
50 if ($al < $bl) return -1;
51 if ($al > $bl) return 1;
55 uksort($versions, "version_compare");
59 $packages = array_map("basename", glob("phars/*", GLOB_NOSORT|GLOB_ONLYDIR
));
60 sort($packages, SORT_NATURAL|SORT_FLAG_CASE
);
62 if (in_array($_SERVER["QUERY_STRING"], $packages, true)) {
63 $package = $_SERVER["QUERY_STRING"];
69 if (!defined("INCLUDED")) {
70 if (($acc = $req->getHeader("Accept", Header
::class))) {
71 $neg = basename($acc->negotiate(["text/html", "application/json"]));
75 include_once "$neg.php";