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