remove var_dump
[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 padding-top: 10em;
13 }
14 .header {
15 top: 0;
16 width: 100%;
17 }
18 .footer {
19 bottom: 0;
20 width: 100%;
21 text-align: center;
22 }
23 .header, .footer {
24 position: fixed;
25 box-shadow: 0px 0px 1em .4em #89a;
26 background: #62B3E7;
27 padding: 1em 0;
28 }
29 .header h1 {
30 font-weight: bold;
31 }
32 .header h1 a, .footer a:hover {
33 text-decoration: none;
34 }
35 .header h1 a:hover {
36 text-decoration: underline;
37 }
38 .header h1 big {
39 /* normalize browser difference */
40 font-size: 1.8em;
41 }
42 .header h1 big, .footer, .footer a {
43 color: #fdfdfd;
44 text-shadow: grey 0 0 .1em;
45 }
46 .header h1 small {
47 color: #666;
48 text-shadow: white 0 0 .2em;
49 }
50 li {
51 list-style-type: circle;
52 }
53 </style>
54 </head>
55 <body>
56 <div class="header">
57 <header>
58 <h1 class="container">
59 <a href="?"><big>Replicator</big></a><br>
60 <small>Replicating PECL releases as pharext packages since 2015</small>
61 </h1>
62 <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>
63 </header>
64 </div>
65 <div class="container">
66 <?php
67
68 $packages = array_map("basename", glob("phars/*", GLOB_NOSORT|GLOB_ONLYDIR));
69 sort($packages, SORT_NATURAL|SORT_FLAG_CASE);
70
71 ?>
72
73 <?php if ($_SERVER["QUERY_STRING"] && in_array($_SERVER["QUERY_STRING"], $packages, true)) : ?>
74
75 <h2><?= $package = $_SERVER["QUERY_STRING"]; ?></h2>
76 <table class="table table-full">
77 <thead>
78 <tr>
79 <th class="text-left" colspan="4">Package</th>
80 <th class="text-left">Date</th>
81 <th class="text-right">Size</th>
82 <th class="text-right">Pharext</th>
83 </tr>
84 </thead>
85 <tbody>
86
87 <?php
88
89 $versions = [];
90 foreach (glob("phars/$package/*.ext.phar*") as $phar) {
91 list($name, $enc) = explode(".ext.phar", basename($phar));
92 $data = new Phar($phar);
93 $meta = $data->getMetadata();
94 if ($meta) {
95 $release = $meta["release"];
96 } else {
97 $release = substr($name, strlen($package)+1);
98 }
99 $versions[$release][$enc] = [$phar, $meta];
100 uksort($versions[$release], function($a, $b) {
101 $al = strlen($a);
102 $bl = strlen($b);
103 if ($al < $bl) return -1;
104 if ($al > $bl) return 1;
105 return 0;
106 });
107 }
108 uksort($versions, "version_compare");
109
110 ?>
111 <?php foreach (array_reverse($versions) as $version => $phars) : ?>
112
113 <tr>
114 <td class="text-left">
115 <?= htmlspecialchars($package) ?>
116 <?= htmlspecialchars($version) ?>
117 </td>
118
119 <?php foreach ($phars as $ext => list($phar, $meta)) : ?>
120 <td class="text-left">
121 <a href="<?= htmlspecialchars($phar) ?>"
122 >ext.phar<?= htmlspecialchars($ext) ?></a>
123 </td>
124 <?php endforeach; ?>
125 <?php for($i = 0; $i < 3-count($phars); ++$i) : ?>
126
127 <td></td>
128 <?php endfor; ?>
129
130 <td class="text-left">
131 <?php
132
133 $time = time();
134 $dsec = 86400;
135 $lmod = filemtime($phar);
136 $days = [1 => "today", "yesterday"];
137 do {
138 for ($i = 1; $i < 7; ++$i) {
139 if ($lmod > $time - $dsec * $i) {
140 switch ($i) {
141 case 1:
142 echo "today";
143 break 3;
144 case 2:
145 echo "yesterday";
146 break 3;
147 default:
148 echo "$i days ago";
149 break 3;
150 }
151 }
152 }
153 echo date("Y-m-d", $lmod);
154 } while (false);
155
156 ?>
157
158 </td>
159 <td class="text-right">
160 <?php
161
162 $u = ["Bytes", "KB", "MB"];
163 $s = filesize($phar);
164 $l = floor(log10($s));
165 printf("%1.1F %s\n", $s/pow(10,$l-($l%3)), $u[$l/3]);
166
167 ?>
168 </td>
169 <td class="text-right">
170 <?php
171 if ($meta) {
172 printf("v%s\n", $meta["version"]);
173 } else {
174 print "v2.0.1\n";
175 }
176 ?>
177 </td>
178 </tr>
179 <?php endforeach; ?>
180
181 </tbody>
182 </table>
183 <?php else: ?>
184
185 <h2>Available Packages</h2>
186 <ul class="list-inline">
187 <?php foreach (array_map("htmlspecialchars", $packages) as $index => $package) : ?>
188 <?php $next = strtolower($package{0}); ?>
189 <?php if (isset($prev) && $next != $prev) : ?>
190
191 </ul>
192 <ul class="list-inline">
193 <?php endif; ?>
194
195 <li><a href="?<?= $package ?>"><?= $package ?></a></li>
196 <?php $prev = $next; ?>
197 <?php endforeach; ?>
198
199 </ul>
200 <?php endif; ?>
201 </div>
202 <div class="footer">
203 <footer>
204 &copy; 2015 m6w6, Michael Wallner &mdash; Powered by <a href="//github.com/m6w6/pharext">pharext
205 <?php
206 require_once "../vendor/autoload.php";
207 printf("v%s\n", pharext\Metadata::version());
208 ?>
209 </a>
210 </footer>
211 </div>
212 </body>
213 </html>