]> git.pld-linux.org Git - projects/buildlogs.git/blame - index.php
- match CS (mono) errors
[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;
b530f30e 359 $time = "";
a7f1713c 360 while (($s = fgets($fd, 102400)) != false) {
361 if (strlen($s) > 800) {
362 $s = chunk_split($s, 800, "\n ");
363 $s = trim($s);
364 }
365 $s = htmlspecialchars($s);
2ba2cc91 366 // highlight errors
d1106683 367 if (preg_match("/error(s|\sCS\d+)?:/i", $s)) {
283f4590 368 $err_count++;
283f4590 369 $toc[] = "error $err_count";
98e99288
ER
370 $err[] = $s;
371 $s = "<span class=error id=error-$err_count>$s</span>";
e926de50
ER
372 } elseif (substr($s, 0, 2) == "+ ") {
373 // shell verbose
374 $s = "<span class=verbose>$s</span>";
375 } elseif (preg_match("/^Executing\(%(?P<section>\w+)\)/", $s, $m)) {
376 // rpm build section
e926de50 377 $toc[] = $m['section'];
98e99288
ER
378 $err[] = $s;
379 $s = "<span class=section id={$m['section']}>$s</span>";
901abf2c
ER
380 } elseif (preg_match("/^Processing files: (?P<pkg>(?P<name>.+)-[^-]+-[^-]+)/", $s, $m)) {
381 // processing files
901abf2c 382 $toc[] = "files ".$m['name'];
98e99288
ER
383 $err[] = $s;
384 $s = "<span class=section id=files-{$m['name']}>$s</span>";
b530f30e
ER
385 } elseif (preg_match("/^ended at: (?P<date>.+), done in (?P<time>[\d:.]+)/", $s, $m)) {
386 $time = $m['time'];
2ba2cc91 387 }
a7f1713c 388 echo $s;
389 }
a7f1713c 390 pclose($fd);
e926de50
ER
391 $code = ob_get_contents();
392 ob_end_clean();
393
b530f30e
ER
394 if ($time) {
395 one_item(_("Runtime"), $time);
396 }
397
f43fc7b7
ER
398 echo "</table>";
399
e926de50
ER
400 if (!empty($toc)) {
401 echo "<h2>"._("Toc:")."</h2>";
402 echo "<ul class=toc>";
98e99288 403 foreach ($toc as $i => $section) {
901abf2c
ER
404 $id = str_replace(" ", "-", $section);
405 echo "<li><a href=#{$id}>{$section}</a></li>";
98e99288 406 echo "<code>{$err[$i]}</code>";
e926de50
ER
407 }
408 echo "</ul>";
409 }
410
411 echo "<h2>"._("Content:")."</h2>";
412
413 start_pre();
414 echo $code;
415 end_pre();
a7f1713c 416
417?>
418 <table width="100%">
419 <tr>
420 <td align=left>
421 [<a href="<?php echo $bu; ?>"><?=_("Back to list of logs")?></a>]
422 </td>
423 <td align=right>
2ba2cc91 424 [<a href="<?php echo "$bu&amp;action=qa"
a7f1713c 425 ?>"><?=_("View rpm -qa of builder")?></a>]
426 </td>
427 </tr>
428 </table>
429<?php
430
431}
432
433function dump_text()
434{
435 global $root_directory;
436 global $buildlogs_server;
437
438 header("Content-type: text/plain");
439
440 $f = file_name();
441 if ($f == false)
442 return;
443
444 echo "# src : ftp://$buildlogs_server/$f\n";
2ba2cc91 445 echo "# date : " .
a7f1713c 446 date("Y/m/d H:i:s", filemtime("$root_directory/$f")) . "\n";
447
448 if (preg_match("/\.bz2$/", $f)) {
449 $filter = "bzcat";
450 } elseif (preg_match("/\.gz$/", $f)) {
451 $filter = "zcat";
452 } else {
453 $filter = "cat";
454 }
455
8f0e31ba 456 $cmd = "$filter '$root_directory/$f'";
a7f1713c 457 $fd = popen($cmd, "r");
458 while (($s = fgets($fd, 1000)) != false) {
459 echo $s;
460 }
461 pclose($fd);
462}
463
464function list_archs()
465{
466 global $addr, $url, $cnt,$ok,$ns;
467
468 if (!isset($cnt))
469 $cnt = 50;
470
471 $big_url = "$url?ok=$ok&amp;ns=$ns&amp;cnt=$cnt";
472
473 echo "<table width=\"100%\" border=\"0\">\n";
474 echo "<tr><td bgcolor=\"#cccccc\" nowrap=\"nowrap\">"._("Failed")."</td><td bgcolor=\"#cccccc\">"._("Ok")."</td></tr>\n";
8f0e31ba 475 foreach ($addr as $dist => $ddist) {
506bb488 476 foreach ($ddist as $arch) {
a7f1713c 477 echo "<tr><td nowrap=\"nowrap\">".
506bb488 478 "<a href=\"$url?dist=$dist&amp;arch=$arch&amp;ok=0&amp;cnt=$cnt\">
479 $dist/$arch</a></td><td nowrap=\"nowrap\">".
a7f1713c 480 "[<a href=\"$url?dist=$dist&amp;arch=$arch&amp;ok=1&amp;cnt=$cnt\">OK</a>]</td>".
481 #"<td>[<a href=\"$url?idx=$i&amp;action=qa\">qa</a>]</td>".
482 "</tr>\n";
506bb488 483 }
a7f1713c 484 }
485 echo "</table><hr />\n";
486
487 echo "<div align=\"center\">";
488 echo "<a href=\"$big_url&amp;action=adv_search\">"._("Advanced Search")."</a><br />\n";
489
490 echo "<a href=\"$url\">main()</a><hr />\n";
491 echo "<a href=\"http://www.pld-linux.org/\"><img src=\"powpld.png\" ".
492 "alt=\""._("Powered by PLD Linux")."\" border=\"0\" /></a><br />\n" .
493 "<small>(c) 2002 ".
494 "<a href=\"mailto:feedback@pld-linux.org\">PLD&nbsp;Team</a><br />\n".
d1106683 495 '$Revision: 1.23 $'.
a7f1713c 496 "</small></div>\n";
497
498 # smile ;)
499 echo "<div align=\"center\"><small>";
500 $pow = array("vim", "php", "brain", "power", "electricity",
501 "coffee", "ufo", "penguin", "GNOME", "ELF", "DWARF",
502 "voodoo magic", "Linux", "x-files", "X", "foobar",
2ba2cc91 503 "/dev/null", "/dev/zero", "/dev/drzewo",
a7f1713c 504 "Leppe'", "matrix", "Neo", "PDP-11",
505 "Ken", "GNU antilope", "PDP-7", "ITS", "Multics",
2ba2cc91 506 "foobarbaz", "ed", "Joe", "Unix conspiracy",
a7f1713c 507 "overclock", "The Right Thing",
508 "The Bad Thing", "Star Treck", "NSA", "NASA",
509 "achelon", "VAX", "Real Programmer",
510 "Real Operating System", "Real Computer",
511 "computron", "bogon", "quantum bogodynamics",
512 "BOFH", "/dev/ill", "nasi tu byli",
513 "Paranoid Android", "Lunatic Corp", "Parallel thinking",
514 "sfistak", "Linus", "The Golden Path", "Dark Side of the Force",
515 "Przewodniczacego Lepper-a", "KDE", "Microsoft Windows 2003", "sqlite3",
3cf4f3e8 516 "synergy", "six Cray XMT Supercomputers"
a7f1713c 517 # feel free to add sth if you change this file ;)
518 );
519 echo _("Powered by")." ";
520 $max = 1;
521 for ($i = 0; $i < $max; $i++) {
522 $x = rand(0, count($pow) - 1);
523 if ($pow[$x] == "") $i--;
524 else echo $pow[$x] . ($i == $max - 1 ? "." : ", ");
525 $pow[$x] = "";
526 }
527 echo "</small></div>";
528
774eb927
AM
529 echo "<div align=\"center\"><small>";
530 echo "Your IP: " . $_SERVER['REMOTE_ADDR'];
531 echo "</small></div>";
532
a7f1713c 533 if (isset($dist) && isset($arch)) {
a6cc6dd6 534 echo "<form action=\"index.php\" method=\"post\">";
a7f1713c 535 echo "<input type=\"hidden\" name=\"dist\" value=\"$dist\" />";
536 echo "<input type=\"hidden\" name=\"arch\" value=\"$arch\" />";
537 echo "<input type=\"hidden\" name=\"action\" value=\"sqa\" />";
538 echo "<input type=\"text\" size=\"14\" name=\"str\" /><br />";
539 echo "<input type=\"submit\" name=\"submit\" value=\""._("Search rpmqa!")."\" />";
540 echo "</form>";
541 }
542}
543
544function get_qa()
545{
546 global $dist, $arch;
547
548 if (!isset($dist) || !isset($arch))
549 return false;
f0694a44 550 $addr = "http://ftp1.pld-linux.org/dists/$dist/.stat/builder/$dist/rpmqa-$arch.txt";
a7f1713c 551 return fopen("$addr", "r");
552}
553
554function search_qa()
555{
556 global $url, $str, $dist, $arch;
557
558 $f = get_qa();
559 echo "<h1>"._("Search results for")." '$str' "._("in")." $dist/$arch</h1>";
560
561 start_pre();
562
563 if ($f == 0) {
564 echo _("Sorry, cannot open.");
565 } else {
566 while (($s = fgets($f, 1000)) != false) {
567 if (stristr($s, $str))
568 echo $s;
569 }
570 echo "/* EOF */";
571 }
572 end_pre();
573}
574
575function dump_qa($plain)
576{
577 global $url, $dist, $arch;
578
579 $f = get_qa();
580
581 if ($plain) {
2ba2cc91 582 header("Content-type: text/plain");
a7f1713c 583 echo _("# rpm -qa of")." $dist/$arch\n";
584 } else {
585 echo "<h1>"._("rpm -qa of")." $a</h1>";
586 echo "<a href=\"$url?dist=$dist&amp;arch=$arch&amp;action=qatxt\">"._("text/plain version")."</a>";
587 start_pre();
588 }
589
590 if ($f == 0) {
591 echo _("Sorry, cannot open.");
592 } else {
593 while (($s = fgets($f, 1000)) != false) {
594 echo $s;
595 }
596 }
597
598 if (!$plain)
599 end_pre();
600}
601
602
603function adv_search()
604{
605 global $database, $addr, $fail_or_ok, $url, $_POST, $off, $cnt, $root_directory, $ok, $ns;
606
607 $big_url = "$url?ok=$ok&amp;ns=$ns&amp;cnt=$cnt";
608
609 echo "<script><!--\n".
610 "function checkboxToggle() {\n".
611 "for (var i=0;i<document.forms[0].elements.length;i++) {\n".
612 "var e = document.forms[0].elements[i];\n".
613 "if ((e.name != 'all') && (e.type=='checkbox'))\n".
614 "e.checked = document.forms[0].all.checked;\n".
615 "}\n }\n -->\n </script>\n";
616
617/* Shut up warnings */
8f0e31ba 618 if (!isset($_POST["n2"])) $_POST["n2"] = "";
a7f1713c 619 if (!isset($_POST["age1"])) $_POST["age1"] = "";
620 if (!isset($_POST["age2"])) $_POST["age2"] = "";
621 if (!isset($_POST["size1"])) $_POST["size1"] = "";
622 if (!isset($_POST["size2"])) $_POST["size2"] = "";
623
a6cc6dd6 624 echo "<form action=\"index.php?action=adv_search\" method=\"post\">";
a7f1713c 625
626 echo "<div align=\"center\">";
627 echo "<table border=\"0\">\n";
628 echo "<tr>\n";
629 echo "<td>"._("Package name")."</td>\n";
8f0e31ba 630 echo "<td><input type=\"text\" size=\"20\" name=\"n2\" value=\"". $_POST["name"] ."\"/></td>\n";
a7f1713c 631 echo "</tr>\n";
632
633 echo "<tr>\n";
634 echo "<td>"._("Days")."</td>\n";
635 echo "<td>"._("From").": <input type=\"text\" size=\"20\" name=\"age1\" value=\"". $_POST["age1"] ."\" /></td>\n";
636 echo "<td>"._("To").": <input type=\"text\" size=\"20\" name=\"age2\" value=\"". $_POST["age2"] ."\" /></td>\n";
637 echo "</tr>\n";
638
639 echo "<tr>\n";
640 echo "<td>"._("Size")."</td>\n";
641 echo "<td>"._("From").": <input type=\"text\" size=\"20\" name=\"size1\" value=\"". $_POST["size1"] ."\" /></td>\n";
642 echo "<td>"._("To").": <input type=\"text\" size=\"20\" name=\"size2\" value=\"". $_POST["size2"] ."\" /></td>\n";
643 echo "</tr>\n";
644
645 echo "<tr>\n";
646 echo "<td>"._("Search logs:")."</td>\n";
647 echo "</tr>\n";
648
649 echo "<tr>\n";
650 echo "<td>"._("Failed")."</td>\n";
651 echo "<td>"._("OK")."</td>\n";
652 echo "</tr>\n";
653
506bb488 654 $i = 1;
8f0e31ba 655 foreach ($addr as $dist => $ddist) {
506bb488 656 foreach ($ddist as $arch) {
a7f1713c 657 echo "<tr>\n";
658 $name="as0_".$i;
a7f1713c 659 if (!isset($_POST["$name"])) {
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 $name="as1_".$i;
8f0e31ba 666 if (!isset($_POST["$n2"])) {
a7f1713c 667 $check = " ";
668 } else {
1b44998a 669 $check=" checked='checked'";
a7f1713c 670 }
8f0e31ba 671 echo "<td><input name=\"$name\" id=\"$name\" type=\"checkbox\"$check /><label for=\"$name\">". "$dist/$arch" ."</label></td>\n";
a7f1713c 672 echo "</tr>\n";
506bb488 673 $i++;
674 }
a7f1713c 675 }
676
677 echo "<tr>\n";
8f0e31ba 678 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 679 echo "</tr>\n";
680
681 echo "</table>\n";
682
683// if (isset($_POST["name"]) || isset($_POST["age1"]) || isset($_POST["age2"]) ||
684// isset($_POST["size1"]) || isset($_POST["size2"])
8f0e31ba 685 if (($_POST["n2"]!="") || ($_POST["age1"]!="") || ($_POST["age2"]!="") ||
a7f1713c 686 ($_POST["size1"]!="") || ($_POST["size2"]!=""))
687 {
688 $query = "SELECT log_id, dist, arch, ok, name, size, mtime, id FROM logs WHERE 1 ";
8f0e31ba 689 if ($_POST["n2"] != "") {
690 $n = addslashes($_POST["n2"]);
a7f1713c 691 $query .= "AND name LIKE '$n%' ";
692 }
693 $now = time();
694
695 if ($_POST["age1"] != "") {
696 $age = $now - (int)$_POST["age1"] * 24 * 3600;
697 $query .= "AND mtime > $age ";
698 }
699
700 if ($_POST["age2"] != "") {
701 $age = $now - (int)$_POST["age2"] * 24 * 3600;
702 $query .= "AND mtime < $age ";
703 }
704
705 if ($_POST["size1"] != "") {
706 $size = (int)$_POST["size1"];
707 $query .= "AND size > $size ";
708 }
709
710 if ($_POST["size2"] != "") {
711 $size = (int)$_POST["size2"];
712 $query .= "AND size < $size ";
713 }
714
715 $or = "AND (";
506bb488 716 $i = 1;
8f0e31ba 717 foreach ($addr as $dist => $ddist) {
506bb488 718 foreach ($ddist as $arch) {
719 for ($j = 0; $j < 2; $j++) {
720 if (isset($_POST["as" . $j . "_" .$i])) {
8f0e31ba 721 $query .= "$or (dist = '$dist' AND arch = '$arch' AND ok = $j)";
a7f1713c 722 $or = " OR ";
723 }
724 }
506bb488 725 $i++;
726 }
a7f1713c 727 }
728 if ($or == " OR ") $query .= ")";
729// if (!isset($cnt)) $cnt = 50;
730// if (!isset($off)) $off = 0;
731 if (!isset($ns)) $ns = 0;
732 switch ($ns) {
733 case 0:
734 $query .= " ORDER BY mtime DESC";
735 break;
736 case 1:
737 $query .= " ORDER BY name";
738 break;
739 case 2:
740 $query .= " ORDER BY dist, arch, name";
741 break;
742 }
743 $query .= " LIMIT $cnt OFFSET $off ";
2ba2cc91 744
a7f1713c 745 try {
746 $dbh = new PDO("$database");
747 } catch (PDOException $e) {
748 mydie("new PDO: " . $e->getMessage());
749 }
750 $result = $dbh->query("$query")->fetchAll();
751
752 if ($result == FALSE) {
753 echo _("Nothing found");
754 } else {
755 echo "<table border=\"0\" cellspacing=\"1\" ".
756 "cellpadding=3 bgcolor=\"#000000\" width=\"90%\">\n";
757 echo "<tr><th bgcolor=\"#CCCCFF\" align=\"left\" width=\"10%\">"._("Builder").
758 "[<a href=\"$big_url&amp;ns=2\">"._("sort")."</a>]</th>";
759 echo "<th bgcolor=\"#CCCCFF\" align=\"left\" width=\"60%\">"._("Log File").
760 "[<a href=\"$big_url&amp;ns=1\">"._("sort")."</a>]</th>".
761 "<th bgcolor=\"#CCCCFF\" align=\"right\" width=\"15%\">"._("Size")."</th> ".
762 "<th bgcolor=\"#CCCCFF\" align=\"left\">"._("Age").
763 "[<a href=\"$big_url&amp;ns=0\">"._("sort")."</a>]</th>".
764 "</th></tr>";
765 $i = $off;
766// for ($i = $off; $i < $off + $count; $i++) {
767 foreach ($result as $row) {
768 $dist = $row["dist"];
769 $arch = $row["arch"];
770 $name = $row["name"];
8f0e31ba 771 $name_url = urlencode($name);
a7f1713c 772 $id = $row["id"];
773 $f = $name;
a7f1713c 774 $t = $now - $row["mtime"];
775 $s = $row["size"];
776 $t /= 60;
777 if ($t >= 60) {
778 $t /= 60;
779 if ($t >= 24) {
780 $t /= 24;
781 $t = round($t);
782 $t = $t . "&nbsp;" . ngettext("day","days",$t);
783 } else {
784 $t = round($t);
785 $t = $t . "&nbsp;" . ngettext("hour","hours",$t);
786 }
787 } else {
788 $t = round($t);
789 $t = $t . "&nbsp;" . ngettext("minute","minutes",$t);
790 }
791
792// $big_url = "$url?idx=$i&amp;ok=$j&amp;ns=$ns&amp;cnt=$cnt";
793 $ok = $row["ok"];
8f0e31ba 794 $u = "$url?dist=$dist&amp;arch=$arch&amp;name=$name_url&amp;ok=$ok&amp;id=$id";
a7f1713c 795 $b = "$url?dist=$dist&amp;arch=$arch&amp;ok=$ok&amp;ns=$ns&amp;off=$off&amp;cnt=$cnt";
796
797 $builder = "$dist/$arch/". $fail_or_ok[$ok];
798 echo "<tr>";
799 echo "<td bgcolor=\"#CCCCCC\"><a href=\"$b\">$builder</a></td>";
800 echo "<td bgcolor=\"#CCCCCC\"><a href=\"$u\">$f</a> ".
801 "[<a href=\"$u&amp;action=text\">"._("text")."</a> | ".
802 "<a href=\"$u&amp;action=tail\">"._("tail")."</a>]".
803 "</td><td bgcolor=\"#CCCCCC\" align=\"right\">".
804 "$s</td><td bgcolor=\"#CCCCCC\">$t</td></tr>\n";
805 $i++;
806 }
807 echo "</table></div>\n";
808
809 $backarr = "&lt;&lt;&lt;&nbsp;";
810 $back = _("Page back");
811 $forward = _("Page forward");
812 $forwardarr = "&nbsp;&gt;&gt;&gt;";
813
814 }
815// FIXME
816/*
817 echo "<p><table width=\"90%\" align=\"center\"><tr><td align=left width=1%>";
818
819 if ($off > 0) {
820 $noff = $off - $cnt;
821 if ($noff < 0)
822 $noff = 0;
823 $hrefurl = "<a href=\"$big_url&amp;off=$noff\">";
824 echo "$hrefurl$backarr</a></td><td align=left>$hrefurl$back</a>";
825 } else {
826 echo "$backarr</td><td align=left>$back";
827 }
828
829 echo "</td>\n<td align=\"center\">";
830 echo "</td>\n<td align=\"right\">";
831
832 if ($off + $cnt < count($list))
833 {
834 $noff = $off + $cnt;
835 if ($noff < 0)
836 $noff = 0;
837 $hrefurl = "<a href=\"$big_url&amp;off=$noff\">";
838 echo "$hrefurl$forward</a></td><td align=\"right\" width=\"1%\">$hrefurl$forwardarr</a>";
839 }
840 else
841 {
842 echo "$forward</td><td align=\"right\" width=\"1%\">$forwardarr";
843 }
844
845 echo "</td>\n</tr></table></p>";
846*/
847 } else
848 {
849 echo _("Enter something!");
850 }
4086dafb 851 echo "</div></form>\n";
a7f1713c 852}
853
854function welcome()
855{
856?>
857<table border="0" width="100%"><tr><td width="20%">&nbsp;</td><td>
858<h1><?=_("Welcome!")?></h1>
859<p><?=_("Welcome to PLD Build Logs WWW interface.")?></p><p>
860<?=_("Feel free to email bug reports, complaints and feature requests ")?>
861<!-- ech... niech strace... -->
2ba2cc91 862<a href="mailto:feedback@pld-linux.org"><?=_("to us")?></a>. <?=_("Positive opinions are also")?>
a7f1713c 863<a href="mailto:feedback@pld-linux.org"><?=_("welcome")?></a> ;)</p>
d1106683 864<p>Version: $Id: index.php,v 1.23 2013/09/07 21:18:46 glen Exp $</p>
a7f1713c 865</td><td width="20%">&nbsp;</td></tr>
866</table>
867<?php
868}
869
870header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
871header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
872header("Cache-Control: no-cache, must-revalidate");
873header("Pragma: no-cache");
874
875//phpinfo();
876if ($action == "text") {
877 dump_text();
878} else if ($action == "adv_search") {
879 myheader();
880 adv_search();
881 trailer();
882} else if ($action == "qatxt") {
883 dump_qa(1);
884} else {
885 myheader();
886 echo "<table cellpadding=\"10\" width=\"100%\"><tr><td valign=\"top\" width=\"10%\">";
887 list_archs();
888 echo "</td><td valign=\"top\">";
889 flush();
890 if ($action == "qa")
891 dump_qa(0);
892 else if ($action == "sqa")
893 search_qa();
894 else if (isset($id) || isset($name))
895 dump_log($action == "tail");
896 else if (isset($dist))
897 list_logs();
898 else
899 welcome();
900 echo "</td></tr></table>";
901 trailer();
902}
903?>
This page took 0.230236 seconds and 4 git commands to generate.