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;
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">
125 echo "<table cellpadding=\"10\"><tr><td bgcolor=\"#000000\">".
126 "<font color=\"#cccccc\"><pre style=\"white-space: pre-line; word-break: break-all;\">";
131 echo "</pre></font></td></tr></table>\n";
136 echo "</body></html>";
142 echo "Fatal error: $msg";
150 global $arch, $dist, $ok;
151 global $big_url, $ns;
152 global $off, $cnt, $root_directory, $url;
154 $big_url = "$url?dist=$dist&arch=$arch&ok=$ok&ns=$ns&cnt=$cnt";
157 echo "<h1>"._("Listing of")." $dist/$arch/OK "
158 ."(<a href=\"$big_url&ok=0\">"._("fail")."</a>)</h1>\n";
160 echo "<h1>"._("Listing of")." $dist/$arch/FAIL "
161 ."(<a href=\"$big_url&ok=1\">"._("ok")."</a>)</h1>\n";
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&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&ns=0\">"._("sort")."</a>]</th>".
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";
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";
185 $dbh = new PDO("$database");
186 } catch (PDOException $e) {
187 mydie("new PDO: " . $e->getMessage());
191 foreach ($dbh->query("$query") as $row) {
192 $name = $row["name"];
194 $dist = $row["dist"];
195 $arch = $row["arch"];
197 $name_url = urlencode($name);
198 $t = $now - $row["mtime"];
208 $t = $t . " " . ngettext("day","days",$t);
211 $t = $t . " " . ngettext("hour","hours",$t);
215 $t = $t . " " . ngettext("minute","minutes",$t);
217 $u = "$url?dist=$dist&arch=$arch&ok=$ok&name=$name_url&id=$id";
218 echo "<tr><td bgcolor=\"#CCCCCC\" align=\"right\">".($i+1).".</td>".
219 "<td bgcolor=\"#CCCCCC\"><a href=\"$u\">$f</a> ".
220 "[<a href=\"$u&action=text\">"._("text")."</a> | ".
221 "<a href=\"$u&action=tail\">"._("tail")."</a>]".
222 "</td><td bgcolor=\"#CCCCCC\" align=\"right\">".
223 "$s</td><td bgcolor=\"#CCCCCC\">$t</td></tr>\n";
227 echo "</table></div>\n";
229 $backarr = "<<< ";
230 $back = _("Page back");
231 $forward = _("Page forward");
232 $forwardarr = " >>>";
234 echo "<p><table width=\"90%\" align=\"center\"><tr><td align=\"left\" width=\"1%\">";
237 $noff = $off - $count;
240 $hrefurl = "<a href=\"$big_url&off=$noff\">";
241 echo "$hrefurl$backarr</a></td><td align=\"left\">$hrefurl$back</a>";
243 echo "$backarr</td><td align=\"left\">$back";
246 echo "</td>\n<td align=\"center\">";
248 if (isset($dist) && isset($arch)) {
249 echo "[<a href=\"$big_url&action=qa\">"._("View <quot>rpm -qa</quot> of builder")."</a>]";
254 echo "</td>\n<td align=right>";
255 if ($cnt == $count) {
259 $hrefurl = "<a href=\"$big_url&off=$noff\">";
260 echo "$hrefurl$forward</a></td><td align=right width=1%>$hrefurl$forwardarr</a>";
262 echo "$forward</td><td align=right width=1%>$forwardarr";
264 echo "</td>\n</tr></table></p>";
269 global $ok, $dist, $arch, $name, $name_url, $id;
271 if (isset($name) && isset($ok) && isset($arch) && isset($dist)) {
272 if (isset($id) && $id != '') {
273 $name = $name . ",$id";
275 $w = $ok ? "OK" : "FAIL";
276 return "$dist/$arch/$w/$name.bz2";
280 function dump_log($tail)
282 global $ok, $url, $dist, $arch, $name, $name_url;
283 global $root_directory, $big_url, $ns, $id, $cnt, $off;
284 global $buildlogs_server;
291 $df = preg_replace("/.*\/([^\/]*)$/", "\\1", $f);
292 $df = preg_replace("/\.(bz2|gz)$/", "", $df);
296 echo "<table border=\"0\" cellpadding=\"3\" cellspacing=\"1\" bgcolor=\"#000000\">";
298 function one_item($h, $t) {
299 echo "<tr><td bgcolor=\"#ccccff\">$h:</td>".
300 "<td bgcolor=\"#cccccc\">$t</td></tr>";
303 function href($h, $c) {
304 return "<a href=\"$h\">$c</a>";
307 one_item(_("Status"), ($ok == 1 ?
308 "<font color=\"green\"><b>"._("OK")."</b></font>" :
309 "<font color=\"red\"><b>"._("Failed")."</b></a>"));
310 one_item(_("Source URL"),
311 href("ftp://$buildlogs_server/$f",
312 "ftp://$buildlogs_server/$f"));
314 $big_url = "$url?dist=$dist&arch=$arch&ok=$ok&ns=$ns&cnt=$cnt";
315 $bu = "$big_url&off=$off";
317 one_item(_("text/plain URL"),
318 href("$bu&name=$name_url&id=$id&action=text",
321 one_item(_("full text"),
322 href("$bu&name=$name_url&id=$id",
326 if (isset($dist) && isset($arch)) {
327 one_item(_("rpm -qa of builder"), href("$bu&action=qa", _("View!")));
329 one_item(_("rpm -qa of builder"), _("Not available"));
331 one_item("Date", date("Y/m/d H:i:s", filemtime("$root_directory/$f")));
333 echo "<tr><td>Here:</td><td>" .
334 "<a href=\"$url?idx=$idx&ok=$ok&id=$id\">".
335 "http://" . getenv("SERVER_NAME") .
336 getenv("SCRIPT_NAME") . "?idx=$idx&ok=$ok&id=$id</a>" .
341 # what can I say beside PHP suxx? how the fuck should I create
342 # bidirectional pipe? gotta use wget
344 if (preg_match("/\.bz2$/", $f)) {
346 } elseif (preg_match("/\.gz$/", $f)) {
352 $cmd = "$filter '$root_directory/$f'";
353 $fd = popen($cmd, "r");
357 $first_cut_done = false;
361 while (($s = fgets($fd, 102400)) != false) {
363 if (strlen($s) > 800) {
364 $s = chunk_split($s, 800, "\n ");
371 $s = htmlspecialchars($s);
373 if (preg_match("/(?:fail|error(s|\sCS\d+)?):/i", $s)) {
376 $toc_elem = "error $err_count";
378 $s = "<span class=error id=error-$err_count>$s</span>";
379 } elseif (preg_match("/(?:undefined reference to)/i", $s)) {
382 $toc_elem = "error $err_count";
384 $s = "<span class=error id=error-$err_count>$s</span>";
385 } elseif (preg_match("#^\+ /usr/bin/make\b.*\b(?P<target>check)\b#", $s, $m)) {
387 $toc_elem = "make {$m['target']}";
389 $s = "<span class=line id=make-{$m['target']}>$s</span>";
390 } elseif (substr($s, 0, 2) == "+ ") {
392 $s = "<span class=verbose>$s</span>";
393 } elseif (preg_match("/^Executing\(%(?P<section>\w+)\)/", $s, $m)) {
395 $toc_elem = $m['section'];
397 $s = "<span class=section id={$m['section']}>$s</span>";
398 } elseif (preg_match("/^Processing files: (?P<pkg>(?P<name>.+)-[^-]+-[^-]+)/", $s, $m)) {
401 $toc_elem = "files ".$m['name'];
403 $s = "<span class=section id=files-{$m['name']}>$s</span>";
404 } elseif (preg_match("/^ended at: (?P<date>.+), done in (?P<time>[\d:.]+)/", $s, $m)) {
411 // if error/processing found truncate early but keep last 100 lines before error
412 if ($tail && $first_cut && !$first_cut_done && $out_buf_size > 100) {
413 array_splice($out_buf, 0, $out_buf_size - 100);
415 $first_cut_done = true;
418 // if (not in tail mode) or (in tail mode but we have an error)
419 if (!$tail || $first_cut) {
428 // no errors found, no processing found but we are in tail mode
429 if ($tail && !$first_cut_done && $out_buf_size > 100) {
430 array_splice($out_buf, 0, $out_buf_size - 100);
434 $code = join('', $out_buf);
437 one_item(_("Runtime"), $time);
443 echo "<h2>"._("Toc:")."</h2>";
444 echo "<ul class=toc>";
445 foreach ($toc as $i => $section) {
446 $id = str_replace(" ", "-", $section);
447 echo "<li><a href=#{$id}>{$section}</a></li>";
448 echo "<code>{$err[$i]}</code>";
453 echo "<h2>"._("Content:")."</h2>";
463 [<a href="<?php echo $bu; ?>"><?=_("Back to list of logs")?></a>]
466 [<a href="<?php echo "$bu&action=qa"
467 ?>"><?=_("View rpm -qa of builder")?></a>]
477 global $root_directory;
478 global $buildlogs_server;
480 header("Content-type: text/plain");
486 echo "# src : ftp://$buildlogs_server/$f\n";
488 date("Y/m/d H:i:s", filemtime("$root_directory/$f")) . "\n";
490 if (preg_match("/\.bz2$/", $f)) {
492 } elseif (preg_match("/\.gz$/", $f)) {
498 $cmd = "$filter '$root_directory/$f'";
499 $fd = popen($cmd, "r");
500 while (($s = fgets($fd, 1000)) != false) {
506 function list_archs()
508 global $addr, $url, $cnt,$ok,$ns;
513 $big_url = "$url?ok=$ok&ns=$ns&cnt=$cnt";
515 echo "<table width=\"100%\" border=\"0\">\n";
516 echo "<tr><td bgcolor=\"#cccccc\" nowrap=\"nowrap\">"._("Failed")."</td><td bgcolor=\"#cccccc\">"._("Ok")."</td></tr>\n";
517 foreach ($addr as $dist => $ddist) {
518 foreach ($ddist as $arch) {
519 echo "<tr><td nowrap=\"nowrap\">".
520 "<a href=\"$url?dist=$dist&arch=$arch&ok=0&cnt=$cnt\">
521 $dist/$arch</a></td><td nowrap=\"nowrap\">".
522 "[<a href=\"$url?dist=$dist&arch=$arch&ok=1&cnt=$cnt\">OK</a>]</td>".
523 #"<td>[<a href=\"$url?idx=$i&action=qa\">qa</a>]</td>".
527 echo "</table><hr />\n";
529 echo "<div align=\"center\">";
530 echo "<a href=\"$big_url&action=adv_search\">"._("Advanced Search")."</a><br />\n";
532 echo "<a href=\"$url\">main()</a><hr />\n";
533 echo "<a href=\"http://www.pld-linux.org/\"><img src=\"powpld.png\" ".
534 "alt=\""._("Powered by PLD Linux")."\" border=\"0\" /></a><br />\n" .
535 "<small>(c) ". date("Y") . " ".
536 "<a href=\"mailto:feedback@pld-linux.org\">PLD Team</a><br />\n".
541 echo "<div align=\"center\"><small>";
542 $pow = array("vim", "php", "brain", "power", "electricity",
543 "coffee", "ufo", "penguin", "GNOME", "ELF", "DWARF",
544 "voodoo magic", "Linux", "x-files", "X", "foobar",
545 "/dev/null", "/dev/zero", "/dev/drzewo",
546 "Leppe'", "matrix", "Neo", "PDP-11",
547 "Ken", "GNU antilope", "PDP-7", "ITS", "Multics",
548 "foobarbaz", "ed", "Joe", "Unix conspiracy",
549 "overclock", "The Right Thing",
550 "The Bad Thing", "Star Treck", "NSA", "NASA",
551 "achelon", "VAX", "Real Programmer",
552 "Real Operating System", "Real Computer",
553 "computron", "bogon", "quantum bogodynamics",
554 "BOFH", "/dev/ill", "nasi tu byli",
555 "Paranoid Android", "Lunatic Corp", "Parallel thinking",
556 "sfistak", "Linus", "The Golden Path", "Dark Side of the Force",
557 "Przewodniczacego Lepper-a", "KDE", "Microsoft Windows 2003", "sqlite3",
558 "synergy", "six Cray XMT Supercomputers"
559 # feel free to add sth if you change this file ;)
561 echo _("Powered by")." ";
563 for ($i = 0; $i < $max; $i++) {
564 $x = rand(0, count($pow) - 1);
565 if ($pow[$x] == "") $i--;
566 else echo $pow[$x] . ($i == $max - 1 ? "." : ", ");
569 echo "</small></div>";
571 echo "<div align=\"center\"><small>";
572 echo "Your IP: " . $_SERVER['REMOTE_ADDR'];
573 echo "</small></div>";
575 if (isset($dist) && isset($arch)) {
576 echo "<form action=\"index.php\" method=\"post\">";
577 echo "<input type=\"hidden\" name=\"dist\" value=\"$dist\" />";
578 echo "<input type=\"hidden\" name=\"arch\" value=\"$arch\" />";
579 echo "<input type=\"hidden\" name=\"action\" value=\"sqa\" />";
580 echo "<input type=\"text\" size=\"14\" name=\"str\" /><br />";
581 echo "<input type=\"submit\" name=\"submit\" value=\""._("Search rpmqa!")."\" />";
590 if (!isset($dist) || !isset($arch))
592 $addr = "http://ftp1.pld-linux.org/dists/$dist/.stat/builder/$dist/rpmqa-$arch.txt";
593 return fopen("$addr", "r");
598 global $url, $str, $dist, $arch;
601 echo "<h1>"._("Search results for")." '$str' "._("in")." $dist/$arch</h1>";
606 echo _("Sorry, cannot open.");
608 while (($s = fgets($f, 1000)) != false) {
609 if (stristr($s, "Query done at:")) {
610 echo "rpmqa database from " . strstr($s, ":") . "\n";
614 if (stristr($s, $str))
622 function dump_qa($plain)
624 global $url, $dist, $arch;
629 header("Content-type: text/plain");
630 echo _("# rpm -qa of")." $dist/$arch\n";
632 echo "<h1>"._("rpm -qa of")." $a</h1>";
633 echo "<a href=\"$url?dist=$dist&arch=$arch&action=qatxt\">"._("text/plain version")."</a>";
638 echo _("Sorry, cannot open.");
640 while (($s = fgets($f, 1000)) != false) {
650 function adv_search()
652 global $database, $addr, $fail_or_ok, $url, $_POST, $off, $cnt, $root_directory, $ok, $ns;
654 $big_url = "$url?ok=$ok&ns=$ns&cnt=$cnt";
656 echo "<script><!--\n".
657 "function checkboxToggle() {\n".
658 "for (var i=0;i<document.forms[0].elements.length;i++) {\n".
659 "var e = document.forms[0].elements[i];\n".
660 "if ((e.name != 'all') && (e.type=='checkbox'))\n".
661 "e.checked = document.forms[0].all.checked;\n".
662 "}\n }\n -->\n </script>\n";
664 /* Shut up warnings */
665 if (!isset($_POST["n2"])) $_POST["n2"] = "";
666 if (!isset($_POST["age1"])) $_POST["age1"] = "";
667 if (!isset($_POST["age2"])) $_POST["age2"] = "";
668 if (!isset($_POST["size1"])) $_POST["size1"] = "";
669 if (!isset($_POST["size2"])) $_POST["size2"] = "";
671 echo "<form action=\"index.php?action=adv_search\" method=\"post\">";
673 echo "<div align=\"center\">";
674 echo "<table border=\"0\">\n";
676 echo "<td>"._("Package name")."</td>\n";
677 echo "<td><input type=\"text\" size=\"20\" name=\"n2\" value=\"". $_POST["name"] ."\"/></td>\n";
681 echo "<td>"._("Days")."</td>\n";
682 echo "<td>"._("From").": <input type=\"text\" size=\"20\" name=\"age1\" value=\"". $_POST["age1"] ."\" /></td>\n";
683 echo "<td>"._("To").": <input type=\"text\" size=\"20\" name=\"age2\" value=\"". $_POST["age2"] ."\" /></td>\n";
687 echo "<td>"._("Size")."</td>\n";
688 echo "<td>"._("From").": <input type=\"text\" size=\"20\" name=\"size1\" value=\"". $_POST["size1"] ."\" /></td>\n";
689 echo "<td>"._("To").": <input type=\"text\" size=\"20\" name=\"size2\" value=\"". $_POST["size2"] ."\" /></td>\n";
693 echo "<td>"._("Search logs:")."</td>\n";
697 echo "<td>"._("Failed")."</td>\n";
698 echo "<td>"._("OK")."</td>\n";
702 foreach ($addr as $dist => $ddist) {
703 foreach ($ddist as $arch) {
706 if (!isset($_POST["$name"])) {
709 $check=" checked='checked'";
711 echo "<td><input name=\"$name\" id=\"$name\" type=\"checkbox\"$check /><label for=\"$name\">". "$dist/$arch" ."</label></td>\n";
713 if (!isset($_POST["$n2"])) {
716 $check=" checked='checked'";
718 echo "<td><input name=\"$name\" id=\"$name\" type=\"checkbox\"$check /><label for=\"$name\">". "$dist/$arch" ."</label></td>\n";
725 echo "<td><label><input name=\"all\" type=\"checkbox\" checked=\"on\" onClick=\"checkboxToggle()\">"._("Toggle checkboxes")."</label> <input type=\"submit\" name=\"submit\" value=\""._("Search!")."\" /></td>";
730 // if (isset($_POST["name"]) || isset($_POST["age1"]) || isset($_POST["age2"]) ||
731 // isset($_POST["size1"]) || isset($_POST["size2"])
732 if (($_POST["n2"]!="") || ($_POST["age1"]!="") || ($_POST["age2"]!="") ||
733 ($_POST["size1"]!="") || ($_POST["size2"]!=""))
735 $query = "SELECT log_id, dist, arch, ok, name, size, mtime, id FROM logs WHERE 1 ";
736 if ($_POST["n2"] != "") {
737 $n = addslashes($_POST["n2"]);
738 $query .= "AND name LIKE '$n%' ";
742 if ($_POST["age1"] != "") {
743 $age = $now - (int)$_POST["age1"] * 24 * 3600;
744 $query .= "AND mtime > $age ";
747 if ($_POST["age2"] != "") {
748 $age = $now - (int)$_POST["age2"] * 24 * 3600;
749 $query .= "AND mtime < $age ";
752 if ($_POST["size1"] != "") {
753 $size = (int)$_POST["size1"];
754 $query .= "AND size > $size ";
757 if ($_POST["size2"] != "") {
758 $size = (int)$_POST["size2"];
759 $query .= "AND size < $size ";
764 foreach ($addr as $dist => $ddist) {
765 foreach ($ddist as $arch) {
766 for ($j = 0; $j < 2; $j++) {
767 if (isset($_POST["as" . $j . "_" .$i])) {
768 $query .= "$or (dist = '$dist' AND arch = '$arch' AND ok = $j)";
775 if ($or == " OR ") $query .= ")";
776 // if (!isset($cnt)) $cnt = 50;
777 // if (!isset($off)) $off = 0;
778 if (!isset($ns)) $ns = 0;
781 $query .= " ORDER BY mtime DESC";
784 $query .= " ORDER BY name";
787 $query .= " ORDER BY dist, arch, name";
790 $query .= " LIMIT $cnt OFFSET $off ";
793 $dbh = new PDO("$database");
794 } catch (PDOException $e) {
795 mydie("new PDO: " . $e->getMessage());
797 $result = $dbh->query("$query")->fetchAll();
799 if ($result == FALSE) {
800 echo _("Nothing found");
802 echo "<table border=\"0\" cellspacing=\"1\" ".
803 "cellpadding=3 bgcolor=\"#000000\" width=\"90%\">\n";
804 echo "<tr><th bgcolor=\"#CCCCFF\" align=\"left\" width=\"10%\">"._("Builder").
805 "[<a href=\"$big_url&ns=2\">"._("sort")."</a>]</th>";
806 echo "<th bgcolor=\"#CCCCFF\" align=\"left\" width=\"60%\">"._("Log File").
807 "[<a href=\"$big_url&ns=1\">"._("sort")."</a>]</th>".
808 "<th bgcolor=\"#CCCCFF\" align=\"right\" width=\"15%\">"._("Size")."</th> ".
809 "<th bgcolor=\"#CCCCFF\" align=\"left\">"._("Age").
810 "[<a href=\"$big_url&ns=0\">"._("sort")."</a>]</th>".
813 // for ($i = $off; $i < $off + $count; $i++) {
814 foreach ($result as $row) {
815 $dist = $row["dist"];
816 $arch = $row["arch"];
817 $name = $row["name"];
818 $name_url = urlencode($name);
821 $t = $now - $row["mtime"];
829 $t = $t . " " . ngettext("day","days",$t);
832 $t = $t . " " . ngettext("hour","hours",$t);
836 $t = $t . " " . ngettext("minute","minutes",$t);
839 // $big_url = "$url?idx=$i&ok=$j&ns=$ns&cnt=$cnt";
841 $u = "$url?dist=$dist&arch=$arch&name=$name_url&ok=$ok&id=$id";
842 $b = "$url?dist=$dist&arch=$arch&ok=$ok&ns=$ns&off=$off&cnt=$cnt";
844 $builder = "$dist/$arch/". $fail_or_ok[$ok];
846 echo "<td bgcolor=\"#CCCCCC\"><a href=\"$b\">$builder</a></td>";
847 echo "<td bgcolor=\"#CCCCCC\"><a href=\"$u\">$f</a> ".
848 "[<a href=\"$u&action=text\">"._("text")."</a> | ".
849 "<a href=\"$u&action=tail\">"._("tail")."</a>]".
850 "</td><td bgcolor=\"#CCCCCC\" align=\"right\">".
851 "$s</td><td bgcolor=\"#CCCCCC\">$t</td></tr>\n";
854 echo "</table></div>\n";
856 $backarr = "<<< ";
857 $back = _("Page back");
858 $forward = _("Page forward");
859 $forwardarr = " >>>";
864 echo "<p><table width=\"90%\" align=\"center\"><tr><td align=left width=1%>";
870 $hrefurl = "<a href=\"$big_url&off=$noff\">";
871 echo "$hrefurl$backarr</a></td><td align=left>$hrefurl$back</a>";
873 echo "$backarr</td><td align=left>$back";
876 echo "</td>\n<td align=\"center\">";
877 echo "</td>\n<td align=\"right\">";
879 if ($off + $cnt < count($list))
884 $hrefurl = "<a href=\"$big_url&off=$noff\">";
885 echo "$hrefurl$forward</a></td><td align=\"right\" width=\"1%\">$hrefurl$forwardarr</a>";
889 echo "$forward</td><td align=\"right\" width=\"1%\">$forwardarr";
892 echo "</td>\n</tr></table></p>";
896 echo _("Enter something!");
898 echo "</div></form>\n";
904 <table border="0" width="100%"><tr><td width="20%"> </td><td>
905 <h1><?=_("Welcome!")?></h1>
906 <p><?=_("Welcome to PLD Build Logs WWW interface.")?></p><p>
907 <?=_("Feel free to email bug reports, complaints and feature requests ")?>
908 <!-- ech... niech strace... -->
909 <a href="mailto:feedback@pld-linux.org"><?=_("to us")?></a>. <?=_("Positive opinions are also")?>
910 <a href="mailto:feedback@pld-linux.org"><?=_("welcome")?></a> ;)</p>
911 <p>Version: $Id: index.php,v 1.31 2014/10/15 08:37:38 arekm Exp $</p>
912 </td><td width="20%"> </td></tr>
917 header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
918 header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
919 header("Cache-Control: no-cache, must-revalidate");
920 header("Pragma: no-cache");
923 if ($action == "text") {
925 } else if ($action == "adv_search") {
929 } else if ($action == "qatxt") {
933 echo "<table cellpadding=\"10\" width=\"100%\"><tr><td valign=\"top\" width=\"10%\">";
935 echo "</td><td valign=\"top\">";
939 else if ($action == "sqa")
941 else if (isset($id) || isset($name))
942 dump_log($action == "tail");
943 else if (isset($dist))
947 echo "</td></tr></table>";