2 ob_start("ob_gzhandler", 1);
3 $buildlogs_server = "buildlogs.pld-linux.org";
5 $fail_or_ok = array( "FAIL", "OK" );
7 $database = 'sqlite:/home/services/ftp/buildlogs2.db';
8 $root_directory = "/home/services/ftp/pub/pld-buildlogs";
11 // $database, $root_directory and others are taken from buildlogs.inc
12 include('buildlogs.inc');
14 /* It should be set */
16 $langs["en_US"]["charset"]="ISO-8859-1";
17 $langs["pl_PL"]["charset"]="ISO-8859-2";
20 if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"]))
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"]))
27 $lang_detected=preg_replace("/.*\[(.*)\].*/i","\\1",$_SERVER["HTTP_USER_AGENT"]);
31 $lang_detected=preg_replace("/^pl$/i","pl_PL",$lang_detected);
33 if (isset($lang_detected) && isset($langs[$lang_detected]))
38 if (isset($_GET["lang"]))$_SESSION["lang"]=$_GET["lang"];
39 if (isset($_SESSION["lang"]))$lang=$_SESSION["lang"];
42 setlocale(LC_ALL,$lang);
43 bindtextdomain("messages","locale");
44 textdomain("messages");
46 if (isset($_GET["dist"]) && isset($_GET["arch"]))
48 $dist = basename($_GET["dist"]);
49 $arch = basename($_GET["arch"]);
52 if (isset($_POST["dist"])) $dist = basename($_POST["dist"]);
53 if (isset($_POST["arch"])) $arch = basename($_POST["arch"]);
55 if (isset($_GET["name"])) {
56 $name_url = urlencode($_GET["name"]);
57 $name = basename($_GET["name"]);
59 if (isset($_GET["ok"]))$ok=(int)$_GET["ok"];
61 if (isset($_GET["ns"]))$ns=(int)$_GET["ns"];
63 if (isset($_GET["cnt"]))$cnt=(int)$_GET["cnt"];
65 if (isset($_GET["action"]))$action=$_GET["action"];
67 if (isset($_GET["off"]))$off=(int)$_GET["off"];
69 if (isset($_GET["id"]))$id=$_GET["id"];
71 if (isset($_POST["str"]))$str=$_POST["str"];
72 if (isset($_POST["action"]))$action=$_POST["action"];
79 echo '<' . '?xml version="1.0" encoding="' . _("ISO-8859-1") .'"?' . ">\n";
80 echo '<' . '?xml-stylesheet href="#internalStyle" type="text/css"?' . ">\n";
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">
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"><!--
89 A { text-decoration: none; }
90 A:hover { text-decoration: underline; }
91 H1 { font-family: arial,helvetica,sans-serif;
94 H2 { font-family: arial,helvetica,sans-serif;
97 BODY,TD { font-family: arial,helvetica,sans-serif;
99 TH { font-family: arial,helvetica,sans-serif;
102 /* error lines from build logs */
104 background-color: #b00;
111 background-color: #161;
119 <!-- Diffrent color for visited link doesn't make much sense here...
120 this page is autogenerated and it might be misleading after some
121 build log changes. -->
122 <body bgcolor="#ffffff" text="#000000" link="#5f26cd" vlink="#5f26cd">
128 echo "<table cellpadding=\"10\"><tr><td bgcolor=\"#000000\">".
129 "<font color=\"#cccccc\"><pre style=\"white-space: pre-line; word-break: break-all;\">";
134 echo "</pre></font></td></tr></table>\n";
139 echo "</body></html>";
145 echo "Fatal error: $msg";
153 global $arch, $dist, $ok;
154 global $big_url, $ns;
155 global $off, $cnt, $root_directory, $url;
157 $big_url = "$url?dist=$dist&arch=$arch&ok=$ok&ns=$ns&cnt=$cnt";
160 echo "<h1>"._("Listing of")." $dist/$arch/OK "
161 ."(<a href=\"$big_url&ok=0\">"._("fail")."</a>)</h1>\n";
163 echo "<h1>"._("Listing of")." $dist/$arch/FAIL "
164 ."(<a href=\"$big_url&ok=1\">"._("ok")."</a>)</h1>\n";
167 echo "<div align=\"center\"><table cols=\"4\" border=\"0\" cellspacing=\"1\" ".
168 "cellpadding=\"3\" bgcolor=\"#000000\" width=\"90%\">\n";
169 echo "<tr><th bgcolor=\"#CCCCFF\" align=\"right\" width=\"1%\">"._("No.")."</th>".
170 "<th bgcolor=\"#CCCCFF\" align=\"left\" width=\"80%\">"._("Log File").
171 "[<a href=\"$big_url&ns=1\">"._("sort")."</a>]</th>".
172 "<th bgcolor=\"#CCCCFF\" align=\"right\" width=\"15%\">"._("Size")."</th> ".
173 "<th bgcolor=\"#CCCCFF\" align=\"left\">"._("Age").
174 "[<a href=\"$big_url&ns=0\">"._("sort")."</a>]</th>".
177 if ($ns != 1) $ns = 0;
178 if (!isset($ok)) $ok = 0;
179 // if (!isset($off)) $off = 0;
180 // if (!isset($cnt)) $cnt = 50;
181 if ($ns == 0) $order = "mtime DESC";
182 else $order = "name";
184 $query = "SELECT log_id, dist, arch, ok, name, mtime, size, id FROM logs WHERE "
185 . "dist = '$dist' AND arch = '$arch' AND ok = $ok ORDER BY $order LIMIT $cnt OFFSET $off";
188 $dbh = new PDO("$database");
189 } catch (PDOException $e) {
190 mydie("new PDO: " . $e->getMessage());
194 foreach ($dbh->query("$query") as $row) {
195 $name = $row["name"];
197 $dist = $row["dist"];
198 $arch = $row["arch"];
200 $name_url = urlencode($name);
201 $t = $now - $row["mtime"];
211 $t = $t . " " . ngettext("day","days",$t);
214 $t = $t . " " . ngettext("hour","hours",$t);
218 $t = $t . " " . ngettext("minute","minutes",$t);
220 $u = "$url?dist=$dist&arch=$arch&ok=$ok&name=$name_url&id=$id";
221 echo "<tr><td bgcolor=\"#CCCCCC\" align=\"right\">".($i+1).".</td>".
222 "<td bgcolor=\"#CCCCCC\"><a href=\"$u\">$f</a> ".
223 "[<a href=\"$u&action=text\">"._("text")."</a> | ".
224 "<a href=\"$u&action=tail\">"._("tail")."</a>]".
225 "</td><td bgcolor=\"#CCCCCC\" align=\"right\">".
226 "$s</td><td bgcolor=\"#CCCCCC\">$t</td></tr>\n";
230 echo "</table></div>\n";
232 $backarr = "<<< ";
233 $back = _("Page back");
234 $forward = _("Page forward");
235 $forwardarr = " >>>";
237 echo "<p><table width=\"90%\" align=\"center\"><tr><td align=\"left\" width=\"1%\">";
240 $noff = $off - $count;
243 $hrefurl = "<a href=\"$big_url&off=$noff\">";
244 echo "$hrefurl$backarr</a></td><td align=\"left\">$hrefurl$back</a>";
246 echo "$backarr</td><td align=\"left\">$back";
249 echo "</td>\n<td align=\"center\">";
251 if (isset($dist) && isset($arch)) {
252 echo "[<a href=\"$big_url&action=qa\">"._("View <quot>rpm -qa</quot> of builder")."</a>]";
257 echo "</td>\n<td align=right>";
258 if ($cnt == $count) {
262 $hrefurl = "<a href=\"$big_url&off=$noff\">";
263 echo "$hrefurl$forward</a></td><td align=right width=1%>$hrefurl$forwardarr</a>";
265 echo "$forward</td><td align=right width=1%>$forwardarr";
267 echo "</td>\n</tr></table></p>";
272 global $ok, $dist, $arch, $name, $name_url, $id;
274 if (isset($name) && isset($ok) && isset($arch) && isset($dist)) {
275 if (isset($id) && $id != '') {
276 $name = $name . ",$id";
278 $w = $ok ? "OK" : "FAIL";
279 return "$dist/$arch/$w/$name.bz2";
283 function dump_log($tail)
285 global $ok, $url, $dist, $arch, $name, $name_url;
286 global $root_directory, $big_url, $ns, $id, $cnt, $off;
287 global $buildlogs_server;
294 $df = preg_replace("/.*\/([^\/]*)$/", "\\1", $f);
295 $df = preg_replace("/\.(bz2|gz)$/", "", $df);
299 echo "<table border=\"0\" cellpadding=\"3\" cellspacing=\"1\" bgcolor=\"#000000\" width=\"100%\">";
301 function one_item($h, $t) {
302 echo "<tr><td bgcolor=\"#ccccff\">$h:</td>".
303 "<td bgcolor=\"#cccccc\">$t</td></tr>";
306 function href($h, $c) {
307 return "<a href=\"$h\">$c</a>";
310 one_item(_("Status"), ($ok == 1 ?
311 "<font color=\"green\"><b>"._("OK")."</b></font>" :
312 "<font color=\"red\"><b>"._("Failed")."</b></a>"));
313 one_item(_("Source URL"),
314 href("ftp://$buildlogs_server/$f",
315 "ftp://$buildlogs_server/$f"));
317 $big_url = "$url?dist=$dist&arch=$arch&ok=$ok&ns=$ns&cnt=$cnt";
318 $bu = "$big_url&off=$off";
320 one_item(_("text/plain URL"),
321 href("$bu&name=$name_url&id=$id&action=text",
324 one_item(_("full text"),
325 href("$bu&name=$name_url&id=$id",
329 if (isset($dist) && isset($arch)) {
330 one_item(_("rpm -qa of builder"), href("$bu&action=qa", _("View!")));
332 one_item(_("rpm -qa of builder"), _("Not available"));
334 one_item("Date", date("Y/m/d H:i:s", filemtime("$root_directory/$f")));
336 echo "<tr><td>Here:</td><td>" .
337 "<a href=\"$url?idx=$idx&ok=$ok&id=$id\">".
338 "http://" . getenv("SERVER_NAME") .
339 getenv("SCRIPT_NAME") . "?idx=$idx&ok=$ok&id=$id</a>" .
344 # what can I say beside PHP suxx? how the fuck should I create
345 # bidirectional pipe? gotta use wget
347 if (preg_match("/\.bz2$/", $f)) {
349 } elseif (preg_match("/\.gz$/", $f)) {
355 $cmd = "$filter '$root_directory/$f'";
356 $fd = popen($cmd, "r");
360 $first_cut_done = false;
364 while (($s = fgets($fd, 102400)) != false) {
369 $s = htmlspecialchars($s);
371 if (preg_match("/(?:fail|error(s|\sCS\d+)?):/i", $s)) {
374 $toc_elem = "error $err_count";
376 $s = "<span class=error id=error-$err_count>$s</span>";
377 } elseif (preg_match("/(?:undefined reference to|recipe for target '.*?' failed)/i", $s)) {
380 $toc_elem = "error $err_count";
382 $s = "<span class=error id=error-$err_count>$s</span>";
383 } elseif (preg_match("#^\+ /usr/bin/make\b.*\b(?P<target>check)\b#", $s, $m)) {
385 $toc_elem = "make {$m['target']}";
387 $s = "<span class=line id=make-{$m['target']}>$s</span>";
388 } elseif (preg_match('/^(?P<line>- For complete changelog see:) (?P<link>.+)$/', $s, $m)) {
389 // rpm changelog link
390 $link = "<a href=\"{$m['link']}\">{$m['link']}</a>";
391 $s = "<span class=changelog>{$m['line']} $link<br/></span>";
392 } elseif (preg_match('/^(?P<line>\* \w{3} \w{3} [ \d]{2} \d{4} .*?) (?P<hash>[a-z0-9]{7})$/', $s, $m)) {
394 $url = "http://git.pld-linux.org/?p=packages/{$name_url}.git;a=commitdiff;h={$m['hash']}";
395 $link = "<a href=\"$url\">{$m['hash']}</a>";
396 $s = "<span class=changelog>{$m['line']} $link<br/></span>";
397 } elseif (substr($s, 0, 2) == "+ ") {
399 $s = "<span class=verbose>$s</span>";
400 } elseif (preg_match("/^Executing\(%(?P<section>\w+)\)/", $s, $m)) {
402 $toc_elem = $m['section'];
404 $s = "<span class=section id={$m['section']}>$s</span>";
405 } elseif (preg_match("/^Processing files: (?P<pkg>(?P<name>.+)-[^-]+-[^-]+)/", $s, $m)) {
408 $toc_elem = "files ".$m['name'];
410 $s = "<span class=section id=files-{$m['name']}>$s</span>";
411 } elseif (preg_match("/^ended at: (?P<date>.+), done in (?P<time>[\d:.]+)/", $s, $m)) {
418 // if error/processing found truncate early but keep last 100 lines before error
419 if ($tail && $first_cut && !$first_cut_done && $out_buf_size > 100) {
420 array_splice($out_buf, 0, $out_buf_size - 100);
422 $first_cut_done = true;
425 // if (not in tail mode) or (in tail mode but we have an error)
426 if (!$tail || $first_cut) {
435 // no errors found, no processing found but we are in tail mode
436 if ($tail && !$first_cut_done && $out_buf_size > 100) {
437 array_splice($out_buf, 0, $out_buf_size - 100);
441 $code = join('', $out_buf);
444 one_item(_("Runtime"), $time);
450 echo "<h2>"._("Toc:")."</h2>";
451 echo "<ul class=toc>";
452 foreach ($toc as $i => $section) {
453 $id = str_replace(" ", "-", $section);
454 echo "<li><a href=#{$id}>{$section}</a></li>";
455 echo "<code>{$err[$i]}</code>";
460 echo "<h2>"._("Content:")."</h2>";
470 [<a href="<?php echo $bu; ?>"><?=_("Back to list of logs")?></a>]
473 [<a href="<?php echo "$bu&action=qa"
474 ?>"><?=_("View rpm -qa of builder")?></a>]
484 global $root_directory;
485 global $buildlogs_server;
487 header("Content-type: text/plain");
493 echo "# src : ftp://$buildlogs_server/$f\n";
495 date("Y/m/d H:i:s", filemtime("$root_directory/$f")) . "\n";
497 if (preg_match("/\.bz2$/", $f)) {
498 if (is_executable("/usr/bin/lbzcat"))
502 } elseif (preg_match("/\.gz$/", $f)) {
508 $cmd = "$filter '$root_directory/$f'";
509 $fd = popen($cmd, "r");
510 while (($s = fgets($fd, 1000)) != false) {
516 function list_archs()
518 global $addr, $url, $cnt,$ok,$ns;
523 $big_url = "$url?ok=$ok&ns=$ns&cnt=$cnt";
525 echo "<table width=\"100%\" border=\"0\">\n";
526 echo "<tr><td bgcolor=\"#cccccc\" nowrap=\"nowrap\">"._("Failed")."</td><td bgcolor=\"#cccccc\">"._("Ok")."</td></tr>\n";
527 foreach ($addr as $dist => $ddist) {
528 echo "<tr><td colspan=2 nowrap=\"nowrap\"><hr/></td></tr>\n";
529 foreach ($ddist as $arch) {
530 echo "<tr><td nowrap=\"nowrap\">".
531 "<a href=\"$url?dist=$dist&arch=$arch&ok=0&cnt=$cnt\">
532 $dist/$arch</a></td><td nowrap=\"nowrap\">".
533 "[<a href=\"$url?dist=$dist&arch=$arch&ok=1&cnt=$cnt\">OK</a>]</td>".
534 #"<td>[<a href=\"$url?idx=$i&action=qa\">qa</a>]</td>".
538 echo "</table><hr />\n";
540 echo "<div align=\"center\">";
541 echo "<a href=\"$big_url&action=adv_search\">"._("Advanced Search")."</a><br />\n";
543 echo "<a href=\"$url\">main()</a><hr />\n";
544 echo "<a href=\"http://www.pld-linux.org/\"><img src=\"powpld.png\" ".
545 "alt=\""._("Powered by PLD Linux")."\" border=\"0\" /></a><br />\n" .
546 "<small>(c) 2002-". date("Y") . " ".
547 "<a href=\"mailto:feedback@pld-linux.org\">PLD Team</a><br />\n".
552 echo "<div align=\"center\"><small>";
553 $pow = array("vim", "php", "brain", "power", "electricity",
554 "coffee", "ufo", "penguin", "GNOME", "ELF", "DWARF",
555 "voodoo magic", "Linux", "x-files", "X", "foobar",
556 "/dev/null", "/dev/zero", "/dev/drzewo",
557 "Leppe'", "matrix", "Neo", "PDP-11",
558 "Ken", "GNU antilope", "PDP-7", "ITS", "Multics",
559 "foobarbaz", "ed", "Joe", "Unix conspiracy",
560 "overclock", "The Right Thing",
561 "The Bad Thing", "Star Treck", "NSA", "NASA",
562 "achelon", "VAX", "Real Programmer",
563 "Real Operating System", "Real Computer",
564 "computron", "bogon", "quantum bogodynamics",
565 "BOFH", "/dev/ill", "nasi tu byli",
566 "Paranoid Android", "Lunatic Corp", "Parallel thinking",
567 "sfistak", "Linus", "The Golden Path", "Dark Side of the Force",
568 "Przewodniczacego Lepper-a", "KDE", "Microsoft Windows 2003", "sqlite3",
569 "synergy", "six Cray XMT Supercomputers"
570 # feel free to add sth if you change this file ;)
572 echo _("Powered by")." ";
574 for ($i = 0; $i < $max; $i++) {
575 $x = rand(0, count($pow) - 1);
576 if ($pow[$x] == "") $i--;
577 else echo $pow[$x] . ($i == $max - 1 ? "." : ", ");
580 echo "</small></div>";
582 echo "<div align=\"center\"><small>";
583 echo "Your IP: " . $_SERVER['REMOTE_ADDR'];
584 echo "</small></div>";
586 if (isset($dist) && isset($arch)) {
587 echo "<form action=\"index.php\" method=\"post\">";
588 echo "<input type=\"hidden\" name=\"dist\" value=\"$dist\" />";
589 echo "<input type=\"hidden\" name=\"arch\" value=\"$arch\" />";
590 echo "<input type=\"hidden\" name=\"action\" value=\"sqa\" />";
591 echo "<input type=\"text\" size=\"14\" name=\"str\" /><br />";
592 echo "<input type=\"submit\" name=\"submit\" value=\""._("Search rpmqa!")."\" />";
601 if (!isset($dist) || !isset($arch))
603 $addr = "http://ftp1.pld-linux.org/dists/$dist/.stat/builder/$dist/rpmqa-$arch.txt";
604 return fopen("$addr", "r");
609 global $url, $str, $dist, $arch;
612 echo "<h1>"._("Search results for")." '$str' "._("in")." $dist/$arch</h1>";
617 echo _("Sorry, cannot open.");
619 while (($s = fgets($f, 1000)) != false) {
620 if (stristr($s, "Query done at:")) {
621 echo "rpmqa database from " . strstr($s, ":") . "\n";
625 if (stristr($s, $str))
633 function dump_qa($plain)
635 global $url, $dist, $arch;
640 header("Content-type: text/plain");
641 echo _("# rpm -qa of")." $dist/$arch\n";
643 echo "<h1>"._("rpm -qa of")." $a</h1>";
644 echo "<a href=\"$url?dist=$dist&arch=$arch&action=qatxt\">"._("text/plain version")."</a>";
649 echo _("Sorry, cannot open.");
651 while (($s = fgets($f, 1000)) != false) {
661 function adv_search()
663 global $database, $addr, $fail_or_ok, $url, $_POST, $off, $cnt, $root_directory, $ok, $ns;
665 $big_url = "$url?ok=$ok&ns=$ns&cnt=$cnt";
667 echo "<script><!--\n".
668 "function checkboxToggle() {\n".
669 "for (var i=0;i<document.forms[0].elements.length;i++) {\n".
670 "var e = document.forms[0].elements[i];\n".
671 "if ((e.name != 'all') && (e.type=='checkbox'))\n".
672 "e.checked = document.forms[0].all.checked;\n".
673 "}\n }\n -->\n </script>\n";
675 /* Shut up warnings */
676 if (!isset($_POST["n2"])) $_POST["n2"] = "";
677 if (!isset($_POST["age1"])) $_POST["age1"] = "";
678 if (!isset($_POST["age2"])) $_POST["age2"] = "";
679 if (!isset($_POST["size1"])) $_POST["size1"] = "";
680 if (!isset($_POST["size2"])) $_POST["size2"] = "";
682 echo "<form action=\"index.php?action=adv_search\" method=\"post\">";
684 echo "<div align=\"center\">";
685 echo "<table border=\"0\">\n";
687 echo "<td>"._("Package name")."</td>\n";
688 echo "<td><input type=\"text\" size=\"20\" name=\"n2\" value=\"". $_POST["name"] ."\"/></td>\n";
692 echo "<td>"._("Days")."</td>\n";
693 echo "<td>"._("From").": <input type=\"text\" size=\"20\" name=\"age1\" value=\"". $_POST["age1"] ."\" /></td>\n";
694 echo "<td>"._("To").": <input type=\"text\" size=\"20\" name=\"age2\" value=\"". $_POST["age2"] ."\" /></td>\n";
698 echo "<td>"._("Size")."</td>\n";
699 echo "<td>"._("From").": <input type=\"text\" size=\"20\" name=\"size1\" value=\"". $_POST["size1"] ."\" /></td>\n";
700 echo "<td>"._("To").": <input type=\"text\" size=\"20\" name=\"size2\" value=\"". $_POST["size2"] ."\" /></td>\n";
704 echo "<td>"._("Search logs:")."</td>\n";
708 echo "<td>"._("Failed")."</td>\n";
709 echo "<td>"._("OK")."</td>\n";
713 foreach ($addr as $dist => $ddist) {
714 foreach ($ddist as $arch) {
717 if (!isset($_POST["$name"])) {
720 $check=" checked='checked'";
722 echo "<td><input name=\"$name\" id=\"$name\" type=\"checkbox\"$check /><label for=\"$name\">". "$dist/$arch" ."</label></td>\n";
724 if (!isset($_POST["$n2"])) {
727 $check=" checked='checked'";
729 echo "<td><input name=\"$name\" id=\"$name\" type=\"checkbox\"$check /><label for=\"$name\">". "$dist/$arch" ."</label></td>\n";
736 echo "<td><label><input name=\"all\" type=\"checkbox\" checked=\"on\" onClick=\"checkboxToggle()\">"._("Toggle checkboxes")."</label> <input type=\"submit\" name=\"submit\" value=\""._("Search!")."\" /></td>";
741 // if (isset($_POST["name"]) || isset($_POST["age1"]) || isset($_POST["age2"]) ||
742 // isset($_POST["size1"]) || isset($_POST["size2"])
743 if (($_POST["n2"]!="") || ($_POST["age1"]!="") || ($_POST["age2"]!="") ||
744 ($_POST["size1"]!="") || ($_POST["size2"]!=""))
746 $query = "SELECT log_id, dist, arch, ok, name, size, mtime, id FROM logs WHERE 1 ";
747 if ($_POST["n2"] != "") {
748 $n = addslashes($_POST["n2"]);
749 $query .= "AND name LIKE '$n%' ";
753 if ($_POST["age1"] != "") {
754 $age = $now - (int)$_POST["age1"] * 24 * 3600;
755 $query .= "AND mtime > $age ";
758 if ($_POST["age2"] != "") {
759 $age = $now - (int)$_POST["age2"] * 24 * 3600;
760 $query .= "AND mtime < $age ";
763 if ($_POST["size1"] != "") {
764 $size = (int)$_POST["size1"];
765 $query .= "AND size > $size ";
768 if ($_POST["size2"] != "") {
769 $size = (int)$_POST["size2"];
770 $query .= "AND size < $size ";
775 foreach ($addr as $dist => $ddist) {
776 foreach ($ddist as $arch) {
777 for ($j = 0; $j < 2; $j++) {
778 if (isset($_POST["as" . $j . "_" .$i])) {
779 $query .= "$or (dist = '$dist' AND arch = '$arch' AND ok = $j)";
786 if ($or == " OR ") $query .= ")";
787 // if (!isset($cnt)) $cnt = 50;
788 // if (!isset($off)) $off = 0;
789 if (!isset($ns)) $ns = 0;
792 $query .= " ORDER BY mtime DESC";
795 $query .= " ORDER BY name";
798 $query .= " ORDER BY dist, arch, name";
801 $query .= " LIMIT $cnt OFFSET $off ";
804 $dbh = new PDO("$database");
805 } catch (PDOException $e) {
806 mydie("new PDO: " . $e->getMessage());
808 $result = $dbh->query("$query")->fetchAll();
810 if ($result == FALSE) {
811 echo _("Nothing found");
813 echo "<table border=\"0\" cellspacing=\"1\" ".
814 "cellpadding=3 bgcolor=\"#000000\" width=\"90%\">\n";
815 echo "<tr><th bgcolor=\"#CCCCFF\" align=\"left\" width=\"10%\">"._("Builder").
816 "[<a href=\"$big_url&ns=2\">"._("sort")."</a>]</th>";
817 echo "<th bgcolor=\"#CCCCFF\" align=\"left\" width=\"60%\">"._("Log File").
818 "[<a href=\"$big_url&ns=1\">"._("sort")."</a>]</th>".
819 "<th bgcolor=\"#CCCCFF\" align=\"right\" width=\"15%\">"._("Size")."</th> ".
820 "<th bgcolor=\"#CCCCFF\" align=\"left\">"._("Age").
821 "[<a href=\"$big_url&ns=0\">"._("sort")."</a>]</th>".
824 // for ($i = $off; $i < $off + $count; $i++) {
825 foreach ($result as $row) {
826 $dist = $row["dist"];
827 $arch = $row["arch"];
828 $name = $row["name"];
829 $name_url = urlencode($name);
832 $t = $now - $row["mtime"];
840 $t = $t . " " . ngettext("day","days",$t);
843 $t = $t . " " . ngettext("hour","hours",$t);
847 $t = $t . " " . ngettext("minute","minutes",$t);
850 // $big_url = "$url?idx=$i&ok=$j&ns=$ns&cnt=$cnt";
852 $u = "$url?dist=$dist&arch=$arch&name=$name_url&ok=$ok&id=$id";
853 $b = "$url?dist=$dist&arch=$arch&ok=$ok&ns=$ns&off=$off&cnt=$cnt";
855 $builder = "$dist/$arch/". $fail_or_ok[$ok];
857 echo "<td bgcolor=\"#CCCCCC\"><a href=\"$b\">$builder</a></td>";
858 echo "<td bgcolor=\"#CCCCCC\"><a href=\"$u\">$f</a> ".
859 "[<a href=\"$u&action=text\">"._("text")."</a> | ".
860 "<a href=\"$u&action=tail\">"._("tail")."</a>]".
861 "</td><td bgcolor=\"#CCCCCC\" align=\"right\">".
862 "$s</td><td bgcolor=\"#CCCCCC\">$t</td></tr>\n";
865 echo "</table></div>\n";
867 $backarr = "<<< ";
868 $back = _("Page back");
869 $forward = _("Page forward");
870 $forwardarr = " >>>";
875 echo "<p><table width=\"90%\" align=\"center\"><tr><td align=left width=1%>";
881 $hrefurl = "<a href=\"$big_url&off=$noff\">";
882 echo "$hrefurl$backarr</a></td><td align=left>$hrefurl$back</a>";
884 echo "$backarr</td><td align=left>$back";
887 echo "</td>\n<td align=\"center\">";
888 echo "</td>\n<td align=\"right\">";
890 if ($off + $cnt < count($list))
895 $hrefurl = "<a href=\"$big_url&off=$noff\">";
896 echo "$hrefurl$forward</a></td><td align=\"right\" width=\"1%\">$hrefurl$forwardarr</a>";
900 echo "$forward</td><td align=\"right\" width=\"1%\">$forwardarr";
903 echo "</td>\n</tr></table></p>";
907 echo _("Enter something!");
909 echo "</div></form>\n";
915 <table border="0" width="100%"><tr><td width="20%"> </td><td>
916 <h1><?=_("Welcome!")?></h1>
917 <p><?=_("Welcome to PLD Build Logs WWW interface.")?></p><p>
918 <?=_("Feel free to email bug reports, complaints and feature requests ")?>
919 <!-- ech... niech strace... -->
920 <a href="mailto:feedback@pld-linux.org"><?=_("to us")?></a>. <?=_("Positive opinions are also")?>
921 <a href="mailto:feedback@pld-linux.org"><?=_("welcome")?></a> ;)</p>
922 <p>Version: $Id: index.php,v 1.37 2014/10/20 12:59:06 glen Exp $</p>
923 </td><td width="20%"> </td></tr>
928 header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
929 header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
930 header("Cache-Control: no-cache, must-revalidate");
931 header("Pragma: no-cache");
934 if ($action == "text") {
936 } else if ($action == "adv_search") {
940 } else if ($action == "qatxt") {
944 echo "<table cellpadding=\"10\" width=\"100%\"><tr><td valign=\"top\" width=\"10%\">";
946 echo "</td><td valign=\"top\">";
950 else if ($action == "sqa")
952 else if (isset($id) || isset($name))
953 dump_log($action == "tail");
954 else if (isset($dist))
958 echo "</td></tr></table>";