polishing
[m6w6/replicator] / public / index.php
1 <!doctype html>
2 <html>
3 <head>
4 <meta charset="utf-8">
5 <title>Replicator</title>
6 <link rel="stylesheet" href="concise/css/concise.min.css">
7 <link href="//fonts.googleapis.com/css?family=Droid+Sans" rel="stylesheet" type="text/css">
8 <meta name="viewport" content="width=device-width, initial-scale=1">
9 <style>
10 body {
11 padding-bottom: 4em;
12 }
13 .footer {
14 bottom: 0;
15 position: fixed;
16 width: 100%;
17 text-align: center;
18 }
19 .header, .footer {
20 background: #62B3E7;
21 padding: 1em 0;
22 }
23 .header h1 {
24 font-weight: bold;
25 }
26 .header h1 a, .footer a:hover {
27 text-decoration: none;
28 }
29 .header h1 a:hover {
30 text-decoration: underline;
31 }
32 .header h1 big , .footer, .footer a {
33 color: #fdfdfd;
34 text-shadow: grey 0 0 .1em;
35 }
36 .header h1 small {
37 color: #666;
38 text-shadow: white 0 0 .2em;
39 }
40 li {
41 list-style-type: circle;
42 }
43 </style>
44 </head>
45 <body>
46 <div class="header">
47 <header>
48 <h1 class="container">
49 <a href="?"><big>Replicator</big></a><br>
50 <small>Replicating PECL releases as pharext packages since 2015</small>
51 </h1>
52 <a href="https://github.com/m6w6/replicator"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/652c5b9acfaddf3a9c326fa6bde407b87f7be0f4/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6f72616e67655f6666373630302e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_orange_ff7600.png"></a>
53 </header>
54 </div>
55 <div class="container">
56 <?php $packages = array_map("basename", glob("phars/*")); ?>
57
58 <?php if ($_SERVER["QUERY_STRING"] && in_array($_SERVER["QUERY_STRING"], $packages, true)) : ?>
59
60 <h2><?= $package = $_SERVER["QUERY_STRING"]; ?></h2>
61 <table class="table table-full">
62 <thead>
63 <tr>
64 <th class="text-left">Package</th>
65 <th class="text-left">Date</th>
66 <th class="text-right">Size</th>
67 </tr>
68 </thead>
69 <tbody>
70 <?php foreach (array_reverse(glob("phars/$package/*.ext.phar*")) as $phar) : ?>
71
72 <tr>
73 <td class="text-left">
74 <a href="<?= htmlspecialchars($phar) ?>"
75 ><?= htmlspecialchars(basename($phar)) ?></a>
76 </td>
77 <td class="text-left">
78 <?php
79
80 $time = time();
81 $dsec = 86400;
82 $lmod = filemtime($phar);
83 $days = [1 => "today", "yesterday"];
84 do {
85 for ($i = 1; $i < 7; ++$i) {
86 if ($lmod > $time - $dsec * $i) {
87 switch ($i) {
88 case 1:
89 echo "today";
90 break 3;
91 case 2:
92 echo "yesterday";
93 break 3;
94 default:
95 echo "$i days ago";
96 break 3;
97 }
98 }
99 }
100 echo date("Y-m-d", $lmod);
101 } while (false);
102
103 ?>
104
105 </td>
106 <td class="text-right">
107 <?php
108
109 $u = ["Bytes", "KB", "MB"];
110 $s = filesize($phar);
111 $l = floor(log10($s));
112 printf("%1.1F %s\n", $s/pow(10,$l-($l%3)), $u[$l/3]);
113
114 ?>
115 </td>
116 </tr>
117 <?php endforeach; ?>
118
119 </tbody>
120 </table>
121 <?php else: ?>
122
123 <h2>Available Packages</h2>
124 <ul class="list-inline">
125 <?php foreach (array_map("htmlspecialchars", $packages) as $index => $package) : ?>
126 <?php $next = strtolower($package{0}); ?>
127 <?php if (isset($prev) && $next != $prev) : ?>
128
129 </ul>
130 <ul class="list-inline">
131 <?php endif; ?>
132
133 <li><a href="?<?= $package ?>"><?= $package ?></a></li>
134 <?php $prev = $next; ?>
135 <?php endforeach; ?>
136
137 </ul>
138 <?php endif; ?>
139
140 </div>
141 <div class="footer">
142 <footer>
143 &copy; 2015 m6w6, Michael Wallner
144 </footer>
145 </div>
146 </body>
147 </html>