]> git.pld-linux.org Git - projects/buildlogs.git/blob - index.php
- move status table html closure after parsing logfile
[projects/buildlogs.git] / index.php
1 <?php
2 ob_start("ob_gzhandler", 1);
3 $buildlogs_server = "buildlogs.pld-linux.org";
4 $url = "index.php";
5 $fail_or_ok = array( "FAIL", "OK" );
6 /*
7 $database = 'sqlite:/home/services/ftp/buildlogs2.db';
8 $root_directory = "/home/services/ftp/pub/pld-buildlogs";
9 */
10
11 // $database, $root_directory and others are taken from buildlogs.inc
12 include('buildlogs.inc');
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";
20 if (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
33 if (isset($lang_detected) && isset($langs[$lang_detected]))
34 {
35   $lang=$lang_detected;
36 }
37
38 if (isset($_GET["lang"]))$_SESSION["lang"]=$_GET["lang"];
39 if (isset($_SESSION["lang"]))$lang=$_SESSION["lang"];
40
41 putenv("LANG=$lang");
42 setlocale(LC_ALL,$lang);
43 bindtextdomain("messages","locale");
44 textdomain("messages");
45
46 if (isset($_GET["dist"]) && isset($_GET["arch"]))
47 {
48         $dist = basename($_GET["dist"]);
49         $arch = basename($_GET["arch"]);
50 }
51
52 if (isset($_POST["dist"])) $dist = basename($_POST["dist"]);
53 if (isset($_POST["arch"])) $arch = basename($_POST["arch"]);
54
55 if (isset($_GET["name"])) {
56   $name_url = urlencode($_GET["name"]);
57         $name = basename($_GET["name"]);
58 }
59 if (isset($_GET["ok"]))$ok=(int)$_GET["ok"];
60 else $ok="";
61 if (isset($_GET["ns"]))$ns=(int)$_GET["ns"];
62 else $ns="";
63 if (isset($_GET["cnt"]))$cnt=(int)$_GET["cnt"];
64 else $cnt = 50;
65 if (isset($_GET["action"]))$action=$_GET["action"];
66 else $action="";
67 if (isset($_GET["off"]))$off=(int)$_GET["off"];
68 else $off = 0;
69 if (isset($_GET["id"]))$id=$_GET["id"];
70
71 if (isset($_POST["str"]))$str=$_POST["str"];
72 if (isset($_POST["action"]))$action=$_POST["action"];
73
74 if ($arch == "src")
75         $arch = "SRPMS";
76
77 function myheader()
78 {
79 echo '<' . '?xml version="1.0" encoding="' . _("ISO-8859-1") .'"?' . ">\n";
80 echo '<' . '?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"><!--
89 A { text-decoration: none; }
90 A:hover { text-decoration: underline; }
91 H1 { font-family: arial,helvetica,sans-serif;
92      font-size: 20pt;
93      font-weight: bold;}
94 H2 { font-family: arial,helvetica,sans-serif;
95      font-size: 18pt;
96      font-weight: bold;}
97 BODY,TD { font-family: arial,helvetica,sans-serif;
98           font-size: 13pt; }
99 TH { font-family: arial,helvetica,sans-serif;
100      font-size: 13pt;
101      font-weight: bold; }
102 /* error lines from build logs */
103 .error {
104         background-color: #b00;
105 }
106 .verbose {
107         color: #886;
108 }
109 .section {
110         color: #111;
111         background-color: #161;
112 }
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
123 function start_pre()
124 {
125         echo "<table cellpadding=\"10\"><tr><td bgcolor=\"#000000\">".
126                 "<font color=\"#cccccc\"><pre style=\"width: 2048px;overflow: scroll\">";
127 }
128
129 function end_pre()
130 {
131         echo "</pre></font></td></tr></table>\n";
132 }
133
134 function trailer()
135 {
136         echo "</body></html>";
137 }
138
139
140 function mydie($msg)
141 {
142         echo "Fatal error: $msg";
143 }
144
145
146
147 function 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) {
192     $name = $row["name"];
193     $id = $row["id"];
194     $dist = $row["dist"];
195     $arch = $row["arch"];
196                 $f = $name;
197     $name_url = urlencode($name);
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                 }
217                 $u = "$url?dist=$dist&amp;arch=$arch&amp;ok=$ok&amp;name=$name_url&amp;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&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
267 function file_name()
268 {
269         global $ok, $dist, $arch, $name, $name_url, $id;
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
280 function dump_log($tail)
281 {
282         global $ok, $url, $dist, $arch, $name, $name_url;
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
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"));
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
317         one_item(_("text/plain URL"),
318                  href("$bu&amp;name=$name_url&amp;id=$id&amp;action=text",
319                       _("View!")));
320         if ($tail) {
321                 one_item(_("full text"),
322                          href("$bu&amp;name=$name_url&amp;id=$id",
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         }
331         one_item("Date", date("Y/m/d H:i:s", filemtime("$root_directory/$f")));
332         /*
333         echo "<tr><td>Here:</td><td>" .
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
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
352         $cmd = "$filter '$root_directory/$f'";
353         if ($tail)
354                 $cmd = "$cmd | tail -n 100";
355         $fd = popen($cmd, "r");
356         $toc = array();
357         ob_start();
358         $err_count = 0;
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);
365                 // highlight errors
366                 if (preg_match("/errors?:/i", $s)) {
367                         $err_count++;
368                         $toc[] = "error $err_count";
369                         $err[] = $s;
370                         $s = "<span class=error id=error-$err_count>$s</span>";
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
376                         $toc[] = $m['section'];
377                         $err[] = $s;
378                         $s = "<span class=section id={$m['section']}>$s</span>";
379                 } elseif (preg_match("/^Processing files: (?P<pkg>(?P<name>.+)-[^-]+-[^-]+)/", $s, $m)) {
380                         // processing files
381                         $toc[] = "files ".$m['name'];
382                         $err[] = $s;
383                         $s = "<span class=section id=files-{$m['name']}>$s</span>";
384                 }
385                 echo $s;
386         }
387         pclose($fd);
388         $code = ob_get_contents();
389         ob_end_clean();
390
391         echo "</table>";
392
393         if (!empty($toc)) {
394                 echo "<h2>"._("Toc:")."</h2>";
395                 echo "<ul class=toc>";
396                 foreach ($toc as $i => $section) {
397                         $id = str_replace(" ", "-", $section);
398                         echo "<li><a href=#{$id}>{$section}</a></li>";
399                         echo "<code>{$err[$i]}</code>";
400                 }
401                 echo "</ul>";
402         }
403
404         echo "<h2>"._("Content:")."</h2>";
405
406         start_pre();
407         echo $code;
408         end_pre();
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>
417            [<a href="<?php echo "$bu&amp;action=qa"
418                 ?>"><?=_("View rpm -qa of builder")?></a>]
419           </td>
420          </tr>
421         </table>
422 <?php
423
424 }
425
426 function 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";
438         echo "# date   : " .
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
449   $cmd = "$filter '$root_directory/$f'";
450         $fd = popen($cmd, "r");
451         while (($s = fgets($fd, 1000)) != false) {
452                 echo $s;
453         }
454         pclose($fd);
455 }
456
457 function 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";
468   foreach ($addr as $dist => $ddist) {
469     foreach ($ddist as $arch) {
470                 echo "<tr><td nowrap=\"nowrap\">".
471                      "<a href=\"$url?dist=$dist&amp;arch=$arch&amp;ok=0&amp;cnt=$cnt\">
472              $dist/$arch</a></td><td nowrap=\"nowrap\">".
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";
476     }
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".
488              '$Revision: 1.21 $'.
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",
496                      "/dev/null", "/dev/zero", "/dev/drzewo",
497                      "Leppe'", "matrix", "Neo", "PDP-11",
498                      "Ken", "GNU antilope", "PDP-7", "ITS", "Multics",
499                      "foobarbaz", "ed", "Joe", "Unix conspiracy",
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",
509          "synergy", "six Cray XMT Supercomputers"
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
522         echo "<div align=\"center\"><small>";
523                 echo "Your IP: " . $_SERVER['REMOTE_ADDR'];
524         echo "</small></div>";
525
526         if (isset($dist) && isset($arch)) {
527         echo "<form action=\"index.php\" method=\"post\">";
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
537 function get_qa()
538 {
539     global $dist, $arch;
540
541         if (!isset($dist) || !isset($arch))
542                 return false;
543         $addr = "http://ftp1.pld-linux.org/dists/$dist/.stat/builder/$dist/rpmqa-$arch.txt";
544     return fopen("$addr", "r");
545 }
546
547 function 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
568 function dump_qa($plain)
569 {
570         global $url, $dist, $arch;
571
572         $f = get_qa();
573
574         if ($plain) {
575                 header("Content-type: text/plain");
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
596 function 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 */
611   if (!isset($_POST["n2"])) $_POST["n2"] = "";
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
617   echo "<form action=\"index.php?action=adv_search\" method=\"post\">";
618
619   echo "<div align=\"center\">";
620   echo "<table border=\"0\">\n";
621   echo "<tr>\n";
622   echo "<td>"._("Package name")."</td>\n";
623   echo "<td><input type=\"text\" size=\"20\" name=\"n2\" value=\"". $_POST["name"] ."\"/></td>\n";
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
647   $i = 1;
648   foreach ($addr as $dist => $ddist) {
649     foreach ($ddist as $arch) {
650     echo "<tr>\n";
651     $name="as0_".$i;
652     if (!isset($_POST["$name"])) {
653         $check = " ";
654     } else {
655         $check=" checked='checked'";
656     }
657     echo "<td><input name=\"$name\" id=\"$name\" type=\"checkbox\"$check /><label for=\"$name\">". "$dist/$arch" ."</label></td>\n";
658     $name="as1_".$i;
659     if (!isset($_POST["$n2"])) {
660         $check = " ";
661     } else {
662         $check=" checked='checked'";
663     }
664     echo "<td><input name=\"$name\" id=\"$name\" type=\"checkbox\"$check /><label for=\"$name\">". "$dist/$arch" ."</label></td>\n";
665     echo "</tr>\n";
666     $i++;
667     }
668   }
669         
670   echo "<tr>\n";
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>";
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"])
678   if (($_POST["n2"]!="") || ($_POST["age1"]!="") || ($_POST["age2"]!="") ||
679     ($_POST["size1"]!="") || ($_POST["size2"]!=""))
680   {
681         $query = "SELECT log_id, dist, arch, ok, name, size, mtime, id FROM logs WHERE 1 ";
682         if ($_POST["n2"] != "") {
683                 $n = addslashes($_POST["n2"]);
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 (";
709   $i = 1;
710   foreach ($addr as $dist => $ddist) {
711     foreach ($ddist as $arch) {
712       for ($j = 0; $j < 2; $j++) {
713                           if (isset($_POST["as" . $j . "_" .$i])) {
714                                 $query .= "$or (dist = '$dist' AND arch = '$arch' AND ok = $j)";
715                                 $or = " OR ";
716                         }
717                 }
718     $i++;
719     }
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 ";
737
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"];
764       $name_url = urlencode($name);
765       $id = $row["id"];
766                         $f = $name;
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"];
787                         $u = "$url?dist=$dist&amp;arch=$arch&amp;name=$name_url&amp;ok=$ok&amp;id=$id";
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   }
844   echo "</div></form>\n";
845 }
846
847 function 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... -->
855 <a href="mailto:feedback@pld-linux.org"><?=_("to us")?></a>. <?=_("Positive opinions are also")?>
856 <a href="mailto:feedback@pld-linux.org"><?=_("welcome")?></a> ;)</p>
857 <p>Version: $Id: index.php,v 1.21 2013/09/07 16:58:53 glen Exp $</p>
858 </td><td width="20%">&nbsp;</td></tr>
859 </table>
860 <?php
861 }
862
863 header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
864 header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
865 header("Cache-Control: no-cache, must-revalidate");
866 header("Pragma: no-cache");
867
868 //phpinfo();
869 if ($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.157056 seconds and 3 git commands to generate.