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