fetch_assoc()) $knots .= "\"ba" . $row["id"] . "\" [label = \"" . $row["name"] . "\", fontcolor = \"" . $row["color"] . "\"];\n"; $query = "SELECT MAX(`ba_links`.`to`) AS `dependent`," . "`dependency_types`.`name` AS `dep_type`," . "MAX(`ba_links`.`from`) AS `depending_on`" . " FROM `ba_links`" . " JOIN `dependency_types` ON `ba_links`.`type`=`dependency_types`.`id`" . " JOIN `ba` ON `ba_links`.`from`=`ba`.`id`" . " JOIN `ba_copy` ON `ba_links`.`to`=`ba_copy`.`id`" . " GROUP BY CONCAT(`ba`.`group`,\"-\",`ba_copy`.`group`)"; if (array_key_exists("raw", $_GET)) print $query . ";\n"; $result = mysql_run_query($query); while ($row = $result->fetch_assoc()) { $edges .= "\"ba" . $row["depending_on"] . "\" -> \"ba" . $row["dependent"] . "\" [color = \""; switch ($row["dep_type"]) { case "run": $edges .= "#000000"; break; case "make": $edges .= "#0000ff"; break; case "link": $edges .= "#008000"; break; case "check": $edges .= "#000080"; break; default: $edges .= "#ff00ff"; } $edges .= "#000080"; $edges .= "\"];\n"; } if (array_key_exists("raw", $_GET)) { print "digraph dependencies {\n" . "rankdir=LR;\n" . "fontname=dejavu;\n" . $knots . $edges . "}\n"; } else { $input_file = tempnam("/tmp", "build-list-links."); $handle = fopen($input_file,"w"); fwrite($handle, "digraph dependencies {\n" . "rankdir=LR;\n" . "fontname=dejavu;\n" . $knots . $edges . "}\n" ); fclose($handle); header ("Content-type: image/png"); passthru( "timeout 30 dot -Tpng -o/dev/stdout " . $input_file ); unlink($input_file); }