<?php
require_once "../init.php";

include BASE . "/lib/helper.php";
include BASE . "/lib/mysql.php";

$result = mysql_run_query(
  "SELECT DISTINCT " .
  "`todos`.`id`," .
  "`todos`.`file`," .
  "`todos`.`line`," .
  "`todos`.`description` " .
  "FROM `todos`;"
);

if (isset($_GET["graph"])) {

  if ($result -> num_rows > 0) {

    while ($row = $result->fetch_assoc())
      $knot_rows[$row["id"]] =
        $row["file"]. " (line ".$row["line"].") #".$row["id"].":\\n".
        str_replace("\"","\\\"",$row["description"]);

    $knots="";
    foreach ($knot_rows as $knot)
      $knots=$knots . "\"" . $knot . "\";\n";

  }

  $result = mysql_run_query(
    "SELECT DISTINCT " .
    "`todo_links`.`dependent`," .
    "`todo_links`.`depending_on` " .
    "FROM `todo_links`;"
  );

  if ($result -> num_rows > 0) {
    $count = 0;
    while ($row = $result->fetch_assoc()) {
      $link_rows[$count]["dependent"] =
        $knot_rows[$row["dependent"]];
      $link_rows[$count]["depending_on"] =
        $knot_rows[$row["depending_on"]];
      $count++;
    }

    $edges="";
    foreach ($link_rows as $link)
      $edges=$edges . "\"" . $link["depending_on"] . "\" -> \"" . $link["dependent"] . "\";\n";
  }

  header ("Content-type: image/png");
  passthru(
    "echo \"" . base64_encode(
      "digraph dependencies {\n" .
      "rankdir=LR;\n" .
      "fontname=dejavu;\n" .
      $knots .
      $edges .
      "}\n"
    ) . "\" | " .
    "base64 -d | " .
    "timeout 30 dot -Tpng -o/dev/stdout /dev/stdin"
  );

} else { // isset($_GET["graph"])

  if ($result -> num_rows > 0) {

    print "<html>\n";
    print "<head>\n";
    print "<title>Todos in the build scripts</title>\n";
    print "</head>\n";
    print "<body>\n";
    show_warning_on_offline_slave();

    while ($row = $result->fetch_assoc()) {
      print "<a href=\"#TODO" . $row["id"] . "\" name=\"TODO" . $row["id"] ."\">TODO #" . $row["id"] . "</a>";
      print " - ";
      print "<a href=\"";
      print git_url("builder","tree","master",$row["file"],$row["line"]);
      print "\">" . $row["file"] . "(line " . $row["line"] . ")</a>";
      print ":<br>\n";
      print str_replace("\\n","<br>\n",$row["description"]);
      print "<br>\n";
      print "<br>\n";
    }

    print "</body>\n";
    print "</html>\n";

  }

}

?>