]> git.pld-linux.org Git - projects/buildlogs.git/blame - index.php
- move status table html closure after parsing logfile
[projects/buildlogs.git] / index.php
CommitLineData
a7f1713c 1<?php
2ob_start("ob_gzhandler", 1);
3$buildlogs_server = "buildlogs.pld-linux.org";
a6cc6dd6 4$url = "index.php";
a7f1713c 5$fail_or_ok = array( "FAIL", "OK" );
6/*
9dcdc6b4 7$database = 'sqlite:/home/services/ftp/buildlogs2.db';
a7f1713c 8$root_directory = "/home/services/ftp/pub/pld-buildlogs";
9*/
10
11// $database, $root_directory and others are taken from buildlogs.inc
f27dac56 12include('buildlogs.inc');
a7f1713c 13
14/* It should be set */
15
16$langs["en_US"]["charset"]="ISO-8859-1";
17$langs["pl_PL"]["charset"]="ISO-8859-2";
18
19$lang="en_US";
20if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"]))
21{
22 $rows=explode(";",$_SERVER["HTTP_ACCEPT_LANGUAGE"]);
23 $rows=explode(",",$rows[0]);
24 $lang_detected=rtrim($rows[0]);
25} else if (preg_match("/opera/i",$_SERVER["HTTP_USER_AGENT"]))
26{
27 $lang_detected=preg_replace("/.*\[(.*)\].*/i","\\1",$_SERVER["HTTP_USER_AGENT"]);
28}
29
30// FIXME - some array
31$lang_detected=preg_replace("/^pl$/i","pl_PL",$lang_detected);
32
33if (isset($lang_detected) && isset($langs[$lang_detected]))
34{
35 $lang=$lang_detected;
36}
37
38if (isset($_GET["lang"]))$_SESSION["lang"]=$_GET["lang"];
39if (isset($_SESSION["lang"]))$lang=$_SESSION["lang"];
40
41putenv("LANG=$lang");
42setlocale(LC_ALL,$lang);
43bindtextdomain("messages","locale");
44textdomain("messages");
45
46if (isset($_GET["dist"]) && isset($_GET["arch"]))
47{
48 $dist = basename($_GET["dist"]);
49 $arch = basename($_GET["arch"]);
50}
51
52if (isset($_POST["dist"])) $dist = basename($_POST["dist"]);
53if (isset($_POST["arch"])) $arch = basename($_POST["arch"]);
54
55if (isset($_GET["name"])) {
8f0e31ba 56 $name_url = urlencode($_GET["name"]);
a7f1713c 57 $name = basename($_GET["name"]);
58}
59if (isset($_GET["ok"]))$ok=(int)$_GET["ok"];
60else $ok="";
61if (isset($_GET["ns"]))$ns=(int)$_GET["ns"];
62else $ns="";
63if (isset($_GET["cnt"]))$cnt=(int)$_GET["cnt"];
64else $cnt = 50;
65if (isset($_GET["action"]))$action=$_GET["action"];
66else $action="";
67if (isset($_GET["off"]))$off=(int)$_GET["off"];
68else $off = 0;
69if (isset($_GET["id"]))$id=$_GET["id"];
70
71if (isset($_POST["str"]))$str=$_POST["str"];
72if (isset($_POST["action"]))$action=$_POST["action"];
73
dbb4d4ae
AM
74if ($arch == "src")
75 $arch = "SRPMS";
76
a7f1713c 77function myheader()
78{
79echo '<' . '?xml version="1.0" encoding="' . _("ISO-8859-1") .'"?' . ">\n";
80echo '<' . '?xml-stylesheet href="#internalStyle" type="text/css"?' . ">\n";
81?>
82<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
83 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
84<html xmlns="http://www.w3.org/1999/xhtml">
85 <head>
86 <title>PLD Build Logs</title>
87 <?php echo '<meta http-equiv="Content-type" content="text/html; charset=' . _("ISO-8859-1") .'"/>' ."\n";?>
88 <style type="text/css"><!--
89A { text-decoration: none; }
90A:hover { text-decoration: underline; }
2ba2cc91
ER
91H1 { font-family: arial,helvetica,sans-serif;
92 font-size: 20pt;
a7f1713c 93 font-weight: bold;}
2ba2cc91
ER
94H2 { font-family: arial,helvetica,sans-serif;
95 font-size: 18pt;
a7f1713c 96 font-weight: bold;}
2ba2cc91 97BODY,TD { font-family: arial,helvetica,sans-serif;
a7f1713c 98 font-size: 13pt; }
2ba2cc91
ER
99TH { font-family: arial,helvetica,sans-serif;
100 font-size: 13pt;
a7f1713c 101 font-weight: bold; }
2ba2cc91
ER
102/* error lines from build logs */
103.error {
104 background-color: #b00;
105}
e926de50
ER
106.verbose {
107 color: #886;
108}
109.section {
110 color: #111;
111 background-color: #161;
112}
a7f1713c 113//-->
114</style>
115 </head>
116 <!-- Diffrent color for visited link doesn't make much sense here...
117 this page is autogenerated and it might be misleading after some
118 build log changes. -->
119 <body bgcolor="#ffffff" text="#000000" link="#5f26cd" vlink="#5f26cd">
120<?php
121}
122
123function start_pre()
124{
125 echo "<table cellpadding=\"10\"><tr><td bgcolor=\"#000000\">".
126 "<font color=\"#cccccc\"><pre style=\"width: 2048px;overflow: scroll\">";
127}
128
129function end_pre()
130{
131 echo "</pre></font></td></tr></table>\n";
132}
133
134function trailer()
135{
136 echo "</body></html>";
137}
138
139
140function mydie($msg)
141{
142 echo "Fatal error: $msg";
143}
144
145
146
147function list_logs()
148{
149 global $database;
150 global $arch, $dist, $ok;
151 global $big_url, $ns;
152 global $off, $cnt, $root_directory, $url;
153
154 $big_url = "$url?dist=$dist&amp;arch=$arch&amp;ok=$ok&amp;ns=$ns&amp;cnt=$cnt";
155
156 if ($ok == 1) {
157 echo "<h1>"._("Listing of")." $dist/$arch/OK "
158 ."(<a href=\"$big_url&amp;ok=0\">"._("fail")."</a>)</h1>\n";
159 } else {
160 echo "<h1>"._("Listing of")." $dist/$arch/FAIL "
161 ."(<a href=\"$big_url&amp;ok=1\">"._("ok")."</a>)</h1>\n";
162 }
163
164 echo "<div align=\"center\"><table cols=\"4\" border=\"0\" cellspacing=\"1\" ".
165 "cellpadding=\"3\" bgcolor=\"#000000\" width=\"90%\">\n";
166 echo "<tr><th bgcolor=\"#CCCCFF\" align=\"right\" width=\"1%\">"._("No.")."</th>".
167 "<th bgcolor=\"#CCCCFF\" align=\"left\" width=\"80%\">"._("Log File").
168 "[<a href=\"$big_url&amp;ns=1\">"._("sort")."</a>]</th>".
169 "<th bgcolor=\"#CCCCFF\" align=\"right\" width=\"15%\">"._("Size")."</th> ".
170 "<th bgcolor=\"#CCCCFF\" align=\"left\">"._("Age").
171 "[<a href=\"$big_url&amp;ns=0\">"._("sort")."</a>]</th>".
172 "</tr>";
173
174 if ($ns != 1) $ns = 0;
175 if (!isset($ok)) $ok = 0;
176// if (!isset($off)) $off = 0;
177// if (!isset($cnt)) $cnt = 50;
178 if ($ns == 0) $order = "mtime DESC";
179 else $order = "name";
180
181 $query = "SELECT log_id, dist, arch, ok, name, mtime, size, id FROM logs WHERE "
182 . "dist = '$dist' AND arch = '$arch' AND ok = $ok ORDER BY $order LIMIT $cnt OFFSET $off";
183
184 try {
185 $dbh = new PDO("$database");
186 } catch (PDOException $e) {
187 mydie("new PDO: " . $e->getMessage());
188 }
189 $now = time();
190 $i = $off;
191 foreach ($dbh->query("$query") as $row) {
8f0e31ba 192 $name = $row["name"];
193 $id = $row["id"];
194 $dist = $row["dist"];
195 $arch = $row["arch"];
196 $f = $name;
197 $name_url = urlencode($name);
a7f1713c 198 $t = $now - $row["mtime"];
199 $s = $row["size"];
200 $h = $row["log_id"];
201
202 $t /= 60;
203 if ($t >= 60) {
204 $t /= 60;
205 if ($t >= 24) {
206 $t /= 24;
207 $t = round($t);
208 $t = $t . "&nbsp;" . ngettext("day","days",$t);
209 } else {
210 $t = round($t);
211 $t = $t . "&nbsp;" . ngettext("hour","hours",$t);
212 }
213 } else {
214 $t = round($t);
215 $t = $t . "&nbsp;" . ngettext("minute","minutes",$t);
216 }
8f0e31ba 217 $u = "$url?dist=$dist&amp;arch=$arch&amp;ok=$ok&amp;name=$name_url&amp;id=$id";
a7f1713c 218 echo "<tr><td bgcolor=\"#CCCCCC\" align=\"right\">".($i+1).".</td>".
219 "<td bgcolor=\"#CCCCCC\"><a href=\"$u\">$f</a> ".
220 "[<a href=\"$u&amp;action=text\">"._("text")."</a> | ".
221 "<a href=\"$u&amp;action=tail\">"._("tail")."</a>]".
222 "</td><td bgcolor=\"#CCCCCC\" align=\"right\">".
223 "$s</td><td bgcolor=\"#CCCCCC\">$t</td></tr>\n";
224 $i++;
225 }
226 $count = $i - $off;
227 echo "</table></div>\n";
228
229 $backarr = "&lt;&lt;&lt;&nbsp;";
230 $back = _("Page back");
231 $forward = _("Page forward");
232 $forwardarr = "&nbsp;&gt;&gt;&gt;";
233
234 echo "<p><table width=\"90%\" align=\"center\"><tr><td align=\"left\" width=\"1%\">";
235
236 if ($off > 0) {
237 $noff = $off - $count;
238 if ($noff < 0)
239 $noff = 0;
240 $hrefurl = "<a href=\"$big_url&amp;off=$noff\">";
241 echo "$hrefurl$backarr</a></td><td align=\"left\">$hrefurl$back</a>";
242 } else {
243 echo "$backarr</td><td align=\"left\">$back";
244 }
245
246 echo "</td>\n<td align=\"center\">";
247
248 if (isset($dist) && isset($arch)) {
249 echo "[<a href=\"$big_url&amp;action=qa\">"._("View <quot>rpm&nbsp;-qa</quot> of builder")."</a>]";
250 } else {
251 echo "&nbsp;";
252 }
253
254 echo "</td>\n<td align=right>";
255 if ($cnt == $count) {
256 $noff = $off + $cnt;
257 if ($noff < 0)
258 $noff = 0;
259 $hrefurl = "<a href=\"$big_url&amp;off=$noff\">";
260 echo "$hrefurl$forward</a></td><td align=right width=1%>$hrefurl$forwardarr</a>";
261 } else {
262 echo "$forward</td><td align=right width=1%>$forwardarr";
263 }
264 echo "</td>\n</tr></table></p>";
265}
266
267function file_name()
268{
8f0e31ba 269 global $ok, $dist, $arch, $name, $name_url, $id;
a7f1713c 270
271 if (isset($name) && isset($ok) && isset($arch) && isset($dist)) {
272 if (isset($id) && $id != '') {
273 $name = $name . ",$id";
274 }
275 $w = $ok ? "OK" : "FAIL";
276 return "$dist/$arch/$w/$name.bz2";
277 }
278}
279
280function dump_log($tail)
281{
8f0e31ba 282 global $ok, $url, $dist, $arch, $name, $name_url;
a7f1713c 283 global $root_directory, $big_url, $ns, $id, $cnt, $off;
284 global $buildlogs_server;
285
286 $f = file_name();
287
288 if ($f == false)
289 return;
290
291 $df = preg_replace("/.*\/([^\/]*)$/", "\\1", $f);
292 $df = preg_replace("/\.(bz2|gz)$/", "", $df);
293
294 echo "<h1>$df</h1>";
295
296 echo "<table border=\"0\" cellpadding=\"3\" cellspacing=\"1\" bgcolor=\"#000000\">";
297
298 function one_item($h, $t) {
299 echo "<tr><td bgcolor=\"#ccccff\">$h:</td>".
300 "<td bgcolor=\"#cccccc\">$t</td></tr>";
301 }
302
303 function href($h, $c) {
304 return "<a href=\"$h\">$c</a>";
305 }
306
2ba2cc91
ER
307 one_item(_("Status"), ($ok == 1 ?
308 "<font color=\"green\"><b>"._("OK")."</b></font>" :
a7f1713c 309 "<font color=\"red\"><b>"._("Failed")."</b></a>"));
2ba2cc91
ER
310 one_item(_("Source URL"),
311 href("ftp://$buildlogs_server/$f",
a7f1713c 312 "ftp://$buildlogs_server/$f"));
313
314 $big_url = "$url?dist=$dist&amp;arch=$arch&amp;ok=$ok&amp;ns=$ns&amp;cnt=$cnt";
315 $bu = "$big_url&amp;off=$off";
316
2ba2cc91 317 one_item(_("text/plain URL"),
8f0e31ba 318 href("$bu&amp;name=$name_url&amp;id=$id&amp;action=text",
a7f1713c 319 _("View!")));
320 if ($tail) {
2ba2cc91 321 one_item(_("full text"),
8f0e31ba 322 href("$bu&amp;name=$name_url&amp;id=$id",
a7f1713c 323 _("View!")));
324 }
325
326 if (isset($dist) && isset($arch)) {
327 one_item(_("rpm -qa of builder"), href("$bu&amp;action=qa", _("View!")));
328 } else {
329 one_item(_("rpm -qa of builder"), _("Not available"));
330 }
35a4c15e 331 one_item("Date", date("Y/m/d H:i:s", filemtime("$root_directory/$f")));
a7f1713c 332 /*
2ba2cc91 333 echo "<tr><td>Here:</td><td>" .
a7f1713c 334 "<a href=\"$url?idx=$idx&amp;ok=$ok&amp;id=$id\">".
335 "http://" . getenv("SERVER_NAME") .
336 getenv("SCRIPT_NAME") . "?idx=$idx&amp;ok=$ok&amp;id=$id</a>" .
337 "</td></tr>"; */
338
a7f1713c 339
340
341 # what can I say beside PHP suxx? how the fuck should I create
342 # bidirectional pipe? gotta use wget
343
344 if (preg_match("/\.bz2$/", $f)) {
345 $filter = "bzcat";
346 } elseif (preg_match("/\.gz$/", $f)) {
347 $filter = "zcat";
348 } else {
349 $filter = "cat";
350 }
351
8f0e31ba 352 $cmd = "$filter '$root_directory/$f'";
a7f1713c 353 if ($tail)
354 $cmd = "$cmd | tail -n 100";
355 $fd = popen($cmd, "r");
e926de50
ER
356 $toc = array();
357 ob_start();
283f4590 358 $err_count = 0;
a7f1713c 359 while (($s = fgets($fd, 102400)) != false) {
360 if (strlen($s) > 800) {
361 $s = chunk_split($s, 800, "\n ");
362 $s = trim($s);
363 }
364 $s = htmlspecialchars($s);
2ba2cc91 365 // highlight errors
9f767302 366 if (preg_match("/errors?:/i", $s)) {
283f4590 367 $err_count++;
283f4590 368 $toc[] = "error $err_count";
98e99288
ER
369 $err[] = $s;
370 $s = "<span class=error id=error-$err_count>$s</span>";
e926de50
ER
371 } elseif (substr($s, 0, 2) == "+ ") {
372 // shell verbose
373 $s = "<span class=verbose>$s</span>";
374 } elseif (preg_match("/^Executing\(%(?P<section>\w+)\)/", $s, $m)) {
375 // rpm build section
e926de50 376 $toc[] = $m['section'];
98e99288
ER
377 $err[] = $s;
378 $s = "<span class=section id={$m['section']}>$s</span>";
901abf2c
ER
379 } elseif (preg_match("/^Processing files: (?P<pkg>(?P<name>.+)-[^-]+-[^-]+)/", $s, $m)) {
380 // processing files
901abf2c 381 $toc[] = "files ".$m['name'];
98e99288
ER
382 $err[] = $s;
383 $s = "<span class=section id=files-{$m['name']}>$s</span>";
2ba2cc91 384 }
a7f1713c 385 echo $s;
386 }
a7f1713c 387 pclose($fd);
e926de50
ER
388 $code = ob_get_contents();
389 ob_end_clean();
390
f43fc7b7
ER
391 echo "</table>";
392
e926de50
ER
393 if (!empty($toc)) {
394 echo "<h2>"._("Toc:")."</h2>";
395 echo "<ul class=toc>";
98e99288 396 foreach ($toc as $i => $section) {
901abf2c
ER
397 $id = str_replace(" ", "-", $section);
398 echo "<li><a href=#{$id}>{$section}</a></li>";
98e99288 399 echo "<code>{$err[$i]}</code>";
e926de50
ER
400 }
401 echo "</ul>";
402 }
403
404 echo "<h2>"._("Content:")."</h2>";
405
406 start_pre();
407 echo $code;
408 end_pre();
a7f1713c 409
410?>
411 <table width="100%">
412 <tr>
413 <td align=left>
414 [<a href="<?php echo $bu; ?>"><?=_("Back to list of logs")?></a>]
415 </td>
416 <td align=right>
2ba2cc91 417 [<a href="<?php echo "$bu&amp;action=qa"
a7f1713c 418 ?>"><?=_("View rpm -qa of builder")?></a>]
419 </td>
420 </tr>
421 </table>
422<?php
423
424}
425
426function dump_text()
427{
428 global $root_directory;
429 global $buildlogs_server;
430
431 header("Content-type: text/plain");
432
433 $f = file_name();
434 if ($f == false)
435 return;
436
437 echo "# src : ftp://$buildlogs_server/$f\n";
2ba2cc91 438 echo "# date : " .
a7f1713c 439 date("Y/m/d H:i:s", filemtime("$root_directory/$f")) . "\n";
440
441 if (preg_match("/\.bz2$/", $f)) {
442 $filter = "bzcat";
443 } elseif (preg_match("/\.gz$/", $f)) {
444 $filter = "zcat";
445 } else {
446 $filter = "cat";
447 }
448
8f0e31ba 449 $cmd = "$filter '$root_directory/$f'";
a7f1713c 450 $fd = popen($cmd, "r");
451 while (($s = fgets($fd, 1000)) != false) {
452 echo $s;
453 }
454 pclose($fd);
455}
456
457function list_archs()
458{
459 global $addr, $url, $cnt,$ok,$ns;
460
461 if (!isset($cnt))
462 $cnt = 50;
463
464 $big_url = "$url?ok=$ok&amp;ns=$ns&amp;cnt=$cnt";
465
466 echo "<table width=\"100%\" border=\"0\">\n";
467 echo "<tr><td bgcolor=\"#cccccc\" nowrap=\"nowrap\">"._("Failed")."</td><td bgcolor=\"#cccccc\">"._("Ok")."</td></tr>\n";
8f0e31ba 468 foreach ($addr as $dist => $ddist) {
506bb488 469 foreach ($ddist as $arch) {
a7f1713c 470 echo "<tr><td nowrap=\"nowrap\">".
506bb488 471 "<a href=\"$url?dist=$dist&amp;arch=$arch&amp;ok=0&amp;cnt=$cnt\">
472 $dist/$arch</a></td><td nowrap=\"nowrap\">".
a7f1713c 473 "[<a href=\"$url?dist=$dist&amp;arch=$arch&amp;ok=1&amp;cnt=$cnt\">OK</a>]</td>".
474 #"<td>[<a href=\"$url?idx=$i&amp;action=qa\">qa</a>]</td>".
475 "</tr>\n";
506bb488 476 }
a7f1713c 477 }
478 echo "</table><hr />\n";
479
480 echo "<div align=\"center\">";
481 echo "<a href=\"$big_url&amp;action=adv_search\">"._("Advanced Search")."</a><br />\n";
482
483 echo "<a href=\"$url\">main()</a><hr />\n";
484 echo "<a href=\"http://www.pld-linux.org/\"><img src=\"powpld.png\" ".
485 "alt=\""._("Powered by PLD Linux")."\" border=\"0\" /></a><br />\n" .
486 "<small>(c) 2002 ".
487 "<a href=\"mailto:feedback@pld-linux.org\">PLD&nbsp;Team</a><br />\n".
f43fc7b7 488 '$Revision: 1.21 $'.
a7f1713c 489 "</small></div>\n";
490
491 # smile ;)
492 echo "<div align=\"center\"><small>";
493 $pow = array("vim", "php", "brain", "power", "electricity",
494 "coffee", "ufo", "penguin", "GNOME", "ELF", "DWARF",
495 "voodoo magic", "Linux", "x-files", "X", "foobar",
2ba2cc91 496 "/dev/null", "/dev/zero", "/dev/drzewo",
a7f1713c 497 "Leppe'", "matrix", "Neo", "PDP-11",
498 "Ken", "GNU antilope", "PDP-7", "ITS", "Multics",
2ba2cc91 499 "foobarbaz", "ed", "Joe", "Unix conspiracy",
a7f1713c 500 "overclock", "The Right Thing",
501 "The Bad Thing", "Star Treck", "NSA", "NASA",
502 "achelon", "VAX", "Real Programmer",
503 "Real Operating System", "Real Computer",
504 "computron", "bogon", "quantum bogodynamics",
505 "BOFH", "/dev/ill", "nasi tu byli",
506 "Paranoid Android", "Lunatic Corp", "Parallel thinking",
507 "sfistak", "Linus", "The Golden Path", "Dark Side of the Force",
508 "Przewodniczacego Lepper-a", "KDE", "Microsoft Windows 2003", "sqlite3",
3cf4f3e8 509 "synergy", "six Cray XMT Supercomputers"
a7f1713c 510 # feel free to add sth if you change this file ;)
511 );
512 echo _("Powered by")." ";
513 $max = 1;
514 for ($i = 0; $i < $max; $i++) {
515 $x = rand(0, count($pow) - 1);
516 if ($pow[$x] == "") $i--;
517 else echo $pow[$x] . ($i == $max - 1 ? "." : ", ");
518 $pow[$x] = "";
519 }
520 echo "</small></div>";
521
774eb927
AM
522 echo "<div align=\"center\"><small>";
523 echo "Your IP: " . $_SERVER['REMOTE_ADDR'];
524 echo "</small></div>";
525
a7f1713c 526 if (isset($dist) && isset($arch)) {
a6cc6dd6 527 echo "<form action=\"index.php\" method=\"post\">";
a7f1713c 528 echo "<input type=\"hidden\" name=\"dist\" value=\"$dist\" />";
529 echo "<input type=\"hidden\" name=\"arch\" value=\"$arch\" />";
530 echo "<input type=\"hidden\" name=\"action\" value=\"sqa\" />";
531 echo "<input type=\"text\" size=\"14\" name=\"str\" /><br />";
532 echo "<input type=\"submit\" name=\"submit\" value=\""._("Search rpmqa!")."\" />";
533 echo "</form>";
534 }
535}
536
537function get_qa()
538{
539 global $dist, $arch;
540
541 if (!isset($dist) || !isset($arch))
542 return false;
f0694a44 543 $addr = "http://ftp1.pld-linux.org/dists/$dist/.stat/builder/$dist/rpmqa-$arch.txt";
a7f1713c 544 return fopen("$addr", "r");
545}
546
547function search_qa()
548{
549 global $url, $str, $dist, $arch;
550
551 $f = get_qa();
552 echo "<h1>"._("Search results for")." '$str' "._("in")." $dist/$arch</h1>";
553
554 start_pre();
555
556 if ($f == 0) {
557 echo _("Sorry, cannot open.");
558 } else {
559 while (($s = fgets($f, 1000)) != false) {
560 if (stristr($s, $str))
561 echo $s;
562 }
563 echo "/* EOF */";
564 }
565 end_pre();
566}
567
568function dump_qa($plain)
569{
570 global $url, $dist, $arch;
571
572 $f = get_qa();
573
574 if ($plain) {
2ba2cc91 575 header("Content-type: text/plain");
a7f1713c 576 echo _("# rpm -qa of")." $dist/$arch\n";
577 } else {
578 echo "<h1>"._("rpm -qa of")." $a</h1>";
579 echo "<a href=\"$url?dist=$dist&amp;arch=$arch&amp;action=qatxt\">"._("text/plain version")."</a>";
580 start_pre();
581 }
582
583 if ($f == 0) {
584 echo _("Sorry, cannot open.");
585 } else {
586 while (($s = fgets($f, 1000)) != false) {
587 echo $s;
588 }
589 }
590
591 if (!$plain)
592 end_pre();
593}
594
595
596function adv_search()
597{
598 global $database, $addr, $fail_or_ok, $url, $_POST, $off, $cnt, $root_directory, $ok, $ns;
599
600 $big_url = "$url?ok=$ok&amp;ns=$ns&amp;cnt=$cnt";
601
602 echo "<script><!--\n".
603 "function checkboxToggle() {\n".
604 "for (var i=0;i<document.forms[0].elements.length;i++) {\n".
605 "var e = document.forms[0].elements[i];\n".
606 "if ((e.name != 'all') && (e.type=='checkbox'))\n".
607 "e.checked = document.forms[0].all.checked;\n".
608 "}\n }\n -->\n </script>\n";
609
610/* Shut up warnings */
8f0e31ba 611 if (!isset($_POST["n2"])) $_POST["n2"] = "";
a7f1713c 612 if (!isset($_POST["age1"])) $_POST["age1"] = "";
613 if (!isset($_POST["age2"])) $_POST["age2"] = "";
614 if (!isset($_POST["size1"])) $_POST["size1"] = "";
615 if (!isset($_POST["size2"])) $_POST["size2"] = "";
616
a6cc6dd6 617 echo "<form action=\"index.php?action=adv_search\" method=\"post\">";
a7f1713c 618
619 echo "<div align=\"center\">";
620 echo "<table border=\"0\">\n";
621 echo "<tr>\n";
622 echo "<td>"._("Package name")."</td>\n";
8f0e31ba 623 echo "<td><input type=\"text\" size=\"20\" name=\"n2\" value=\"". $_POST["name"] ."\"/></td>\n";
a7f1713c 624 echo "</tr>\n";
625
626 echo "<tr>\n";
627 echo "<td>"._("Days")."</td>\n";
628 echo "<td>"._("From").": <input type=\"text\" size=\"20\" name=\"age1\" value=\"". $_POST["age1"] ."\" /></td>\n";
629 echo "<td>"._("To").": <input type=\"text\" size=\"20\" name=\"age2\" value=\"". $_POST["age2"] ."\" /></td>\n";
630 echo "</tr>\n";
631
632 echo "<tr>\n";
633 echo "<td>"._("Size")."</td>\n";
634 echo "<td>"._("From").": <input type=\"text\" size=\"20\" name=\"size1\" value=\"". $_POST["size1"] ."\" /></td>\n";
635 echo "<td>"._("To").": <input type=\"text\" size=\"20\" name=\"size2\" value=\"". $_POST["size2"] ."\" /></td>\n";
636 echo "</tr>\n";
637
638 echo "<tr>\n";
639 echo "<td>"._("Search logs:")."</td>\n";
640 echo "</tr>\n";
641
642 echo "<tr>\n";
643 echo "<td>"._("Failed")."</td>\n";
644 echo "<td>"._("OK")."</td>\n";
645 echo "</tr>\n";
646
506bb488 647 $i = 1;
8f0e31ba 648 foreach ($addr as $dist => $ddist) {
506bb488 649 foreach ($ddist as $arch) {
a7f1713c 650 echo "<tr>\n";
651 $name="as0_".$i;
a7f1713c 652 if (!isset($_POST["$name"])) {
653 $check = " ";
654 } else {
1b44998a 655 $check=" checked='checked'";
a7f1713c 656 }
8f0e31ba 657 echo "<td><input name=\"$name\" id=\"$name\" type=\"checkbox\"$check /><label for=\"$name\">". "$dist/$arch" ."</label></td>\n";
a7f1713c 658 $name="as1_".$i;
8f0e31ba 659 if (!isset($_POST["$n2"])) {
a7f1713c 660 $check = " ";
661 } else {
1b44998a 662 $check=" checked='checked'";
a7f1713c 663 }
8f0e31ba 664 echo "<td><input name=\"$name\" id=\"$name\" type=\"checkbox\"$check /><label for=\"$name\">". "$dist/$arch" ."</label></td>\n";
a7f1713c 665 echo "</tr>\n";
506bb488 666 $i++;
667 }
a7f1713c 668 }
669
670 echo "<tr>\n";
8f0e31ba 671 echo "<td><label><input name=\"all\" type=\"checkbox\" checked=\"on\" onClick=\"checkboxToggle()\">"._("Toggle checkboxes")."</label>&nbsp;<input type=\"submit\" name=\"submit\" value=\""._("Search!")."\" /></td>";
a7f1713c 672 echo "</tr>\n";
673
674 echo "</table>\n";
675
676// if (isset($_POST["name"]) || isset($_POST["age1"]) || isset($_POST["age2"]) ||
677// isset($_POST["size1"]) || isset($_POST["size2"])
8f0e31ba 678 if (($_POST["n2"]!="") || ($_POST["age1"]!="") || ($_POST["age2"]!="") ||
a7f1713c 679 ($_POST["size1"]!="") || ($_POST["size2"]!=""))
680 {
681 $query = "SELECT log_id, dist, arch, ok, name, size, mtime, id FROM logs WHERE 1 ";
8f0e31ba 682 if ($_POST["n2"] != "") {
683 $n = addslashes($_POST["n2"]);
a7f1713c 684 $query .= "AND name LIKE '$n%' ";
685 }
686 $now = time();
687
688 if ($_POST["age1"] != "") {
689 $age = $now - (int)$_POST["age1"] * 24 * 3600;
690 $query .= "AND mtime > $age ";
691 }
692
693 if ($_POST["age2"] != "") {
694 $age = $now - (int)$_POST["age2"] * 24 * 3600;
695 $query .= "AND mtime < $age ";
696 }
697
698 if ($_POST["size1"] != "") {
699 $size = (int)$_POST["size1"];
700 $query .= "AND size > $size ";
701 }
702
703 if ($_POST["size2"] != "") {
704 $size = (int)$_POST["size2"];
705 $query .= "AND size < $size ";
706 }
707
708 $or = "AND (";
506bb488 709 $i = 1;
8f0e31ba 710 foreach ($addr as $dist => $ddist) {
506bb488 711 foreach ($ddist as $arch) {
712 for ($j = 0; $j < 2; $j++) {
713 if (isset($_POST["as" . $j . "_" .$i])) {
8f0e31ba 714 $query .= "$or (dist = '$dist' AND arch = '$arch' AND ok = $j)";
a7f1713c 715 $or = " OR ";
716 }
717 }
506bb488 718 $i++;
719 }
a7f1713c 720 }
721 if ($or == " OR ") $query .= ")";
722// if (!isset($cnt)) $cnt = 50;
723// if (!isset($off)) $off = 0;
724 if (!isset($ns)) $ns = 0;
725 switch ($ns) {
726 case 0:
727 $query .= " ORDER BY mtime DESC";
728 break;
729 case 1:
730 $query .= " ORDER BY name";
731 break;
732 case 2:
733 $query .= " ORDER BY dist, arch, name";
734 break;
735 }
736 $query .= " LIMIT $cnt OFFSET $off ";
2ba2cc91 737
a7f1713c 738 try {
739 $dbh = new PDO("$database");
740 } catch (PDOException $e) {
741 mydie("new PDO: " . $e->getMessage());
742 }
743 $result = $dbh->query("$query")->fetchAll();
744
745 if ($result == FALSE) {
746 echo _("Nothing found");
747 } else {
748 echo "<table border=\"0\" cellspacing=\"1\" ".
749 "cellpadding=3 bgcolor=\"#000000\" width=\"90%\">\n";
750 echo "<tr><th bgcolor=\"#CCCCFF\" align=\"left\" width=\"10%\">"._("Builder").
751 "[<a href=\"$big_url&amp;ns=2\">"._("sort")."</a>]</th>";
752 echo "<th bgcolor=\"#CCCCFF\" align=\"left\" width=\"60%\">"._("Log File").
753 "[<a href=\"$big_url&amp;ns=1\">"._("sort")."</a>]</th>".
754 "<th bgcolor=\"#CCCCFF\" align=\"right\" width=\"15%\">"._("Size")."</th> ".
755 "<th bgcolor=\"#CCCCFF\" align=\"left\">"._("Age").
756 "[<a href=\"$big_url&amp;ns=0\">"._("sort")."</a>]</th>".
757 "</th></tr>";
758 $i = $off;
759// for ($i = $off; $i < $off + $count; $i++) {
760 foreach ($result as $row) {
761 $dist = $row["dist"];
762 $arch = $row["arch"];
763 $name = $row["name"];
8f0e31ba 764 $name_url = urlencode($name);
a7f1713c 765 $id = $row["id"];
766 $f = $name;
a7f1713c 767 $t = $now - $row["mtime"];
768 $s = $row["size"];
769 $t /= 60;
770 if ($t >= 60) {
771 $t /= 60;
772 if ($t >= 24) {
773 $t /= 24;
774 $t = round($t);
775 $t = $t . "&nbsp;" . ngettext("day","days",$t);
776 } else {
777 $t = round($t);
778 $t = $t . "&nbsp;" . ngettext("hour","hours",$t);
779 }
780 } else {
781 $t = round($t);
782 $t = $t . "&nbsp;" . ngettext("minute","minutes",$t);
783 }
784
785// $big_url = "$url?idx=$i&amp;ok=$j&amp;ns=$ns&amp;cnt=$cnt";
786 $ok = $row["ok"];
8f0e31ba 787 $u = "$url?dist=$dist&amp;arch=$arch&amp;name=$name_url&amp;ok=$ok&amp;id=$id";
a7f1713c 788 $b = "$url?dist=$dist&amp;arch=$arch&amp;ok=$ok&amp;ns=$ns&amp;off=$off&amp;cnt=$cnt";
789
790 $builder = "$dist/$arch/". $fail_or_ok[$ok];
791 echo "<tr>";
792 echo "<td bgcolor=\"#CCCCCC\"><a href=\"$b\">$builder</a></td>";
793 echo "<td bgcolor=\"#CCCCCC\"><a href=\"$u\">$f</a> ".
794 "[<a href=\"$u&amp;action=text\">"._("text")."</a> | ".
795 "<a href=\"$u&amp;action=tail\">"._("tail")."</a>]".
796 "</td><td bgcolor=\"#CCCCCC\" align=\"right\">".
797 "$s</td><td bgcolor=\"#CCCCCC\">$t</td></tr>\n";
798 $i++;
799 }
800 echo "</table></div>\n";
801
802 $backarr = "&lt;&lt;&lt;&nbsp;";
803 $back = _("Page back");
804 $forward = _("Page forward");
805 $forwardarr = "&nbsp;&gt;&gt;&gt;";
806
807 }
808// FIXME
809/*
810 echo "<p><table width=\"90%\" align=\"center\"><tr><td align=left width=1%>";
811
812 if ($off > 0) {
813 $noff = $off - $cnt;
814 if ($noff < 0)
815 $noff = 0;
816 $hrefurl = "<a href=\"$big_url&amp;off=$noff\">";
817 echo "$hrefurl$backarr</a></td><td align=left>$hrefurl$back</a>";
818 } else {
819 echo "$backarr</td><td align=left>$back";
820 }
821
822 echo "</td>\n<td align=\"center\">";
823 echo "</td>\n<td align=\"right\">";
824
825 if ($off + $cnt < count($list))
826 {
827 $noff = $off + $cnt;
828 if ($noff < 0)
829 $noff = 0;
830 $hrefurl = "<a href=\"$big_url&amp;off=$noff\">";
831 echo "$hrefurl$forward</a></td><td align=\"right\" width=\"1%\">$hrefurl$forwardarr</a>";
832 }
833 else
834 {
835 echo "$forward</td><td align=\"right\" width=\"1%\">$forwardarr";
836 }
837
838 echo "</td>\n</tr></table></p>";
839*/
840 } else
841 {
842 echo _("Enter something!");
843 }
4086dafb 844 echo "</div></form>\n";
a7f1713c 845}
846
847function welcome()
848{
849?>
850<table border="0" width="100%"><tr><td width="20%">&nbsp;</td><td>
851<h1><?=_("Welcome!")?></h1>
852<p><?=_("Welcome to PLD Build Logs WWW interface.")?></p><p>
853<?=_("Feel free to email bug reports, complaints and feature requests ")?>
854<!-- ech... niech strace... -->
2ba2cc91 855<a href="mailto:feedback@pld-linux.org"><?=_("to us")?></a>. <?=_("Positive opinions are also")?>
a7f1713c 856<a href="mailto:feedback@pld-linux.org"><?=_("welcome")?></a> ;)</p>
f43fc7b7 857<p>Version: $Id: index.php,v 1.21 2013/09/07 16:58:53 glen Exp $</p>
a7f1713c 858</td><td width="20%">&nbsp;</td></tr>
859</table>
860<?php
861}
862
863header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
864header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
865header("Cache-Control: no-cache, must-revalidate");
866header("Pragma: no-cache");
867
868//phpinfo();
869if ($action == "text") {
870 dump_text();
871} else if ($action == "adv_search") {
872 myheader();
873 adv_search();
874 trailer();
875} else if ($action == "qatxt") {
876 dump_qa(1);
877} else {
878 myheader();
879 echo "<table cellpadding=\"10\" width=\"100%\"><tr><td valign=\"top\" width=\"10%\">";
880 list_archs();
881 echo "</td><td valign=\"top\">";
882 flush();
883 if ($action == "qa")
884 dump_qa(0);
885 else if ($action == "sqa")
886 search_qa();
887 else if (isset($id) || isset($name))
888 dump_log($action == "tail");
889 else if (isset($dist))
890 list_logs();
891 else
892 welcome();
893 echo "</td></tr></table>";
894 trailer();
895}
896?>
This page took 0.175158 seconds and 4 git commands to generate.