"%s";'."\n"; $format['personmember'] = '"%s" -> "%s";'."\n"; $format['rolemember'] = '"%s" -> "%s";'."\n"; $format['membergroup'] = '"%s" -> "%s";'."\n"; $format['personrequest'] = '"%s" -> "%s" [style=dotted];'."\n"; $format['poolgroup'] = '"%s" -> "%s";'."\n"; $format['clientgroup'] = '"%s" -> "%s";'."\n"; $format['clientpool'] = '"%s" -> "%s";'."\n"; $format['bootisogroup'] = '"%s" -> "%s";'."\n"; $format['bootmenugroup'] = '"%s" -> "%s";'."\n"; $format['bootosbootmenu'] = '"%s" -> "%s";'."\n"; $format['bootosgroup'] = '"%s" -> "%s";'."\n"; function getGroups() { global $format; $q = "SELECT groupID,title FROM pbs_group"; $groups = "subgraph cluster_0 {"; $groups .= "label=Groups;"; $result = mysql_query($q); while($data = mysql_fetch_array($result)) { $groups .= sprintf($format['groupnode'] , "Group".$data['groupID']); } $groups .= "}"; return $groups; } function recGroups($groupID, $level = 0, $data = '') { global $format; $q = "SELECT groupID FROM pbs_groupgroups WHERE parentID = $groupID"; $result = mysql_query($q); while($data = mysql_fetch_array($result)) { $groups .= sprintf($format['groupgroup'], "Group".$groupID, "Group".$data['groupID']); $groups .= recGroups($data['groupID']); } return $groups; } function getPersons() { global $format; $q = "SELECT personID,title FROM pbs_person"; $result = mysql_query($q); while($data = mysql_fetch_array($result)) { $persons .= sprintf($format['personnode'] , "Person". $data['personID']); } return $persons; } function getMemberships() { global $format; $q = "SELECT personID,groupID,membershipID,roleID FROM pbs_membership"; $result = mysql_query($q); while($data = mysql_fetch_array($result)) { $memberships .= sprintf($format['membershipnode'], "Member".$data['membershipID']); $memberships .= sprintf($format['personmember'], "Person".$data['personID'], "Member".$data['membershipID']); $memberships .= sprintf($format['rolemember'], "Role".$data['roleID'], "Member".$data['membershipID']); $memberships .= sprintf($format['membergroup'], "Member".$data['membershipID'], "Group".$data['groupID']); } return $memberships; } function getRequests() { global $format; $q = "SELECT personID,groupID FROM pbs_grouprequest"; $result = mysql_query($q); while($data = mysql_fetch_array($result)) { $memberships .= sprintf($format['peronrequests'], "Group".$data['groupID'], "Person".$data['personID']); } return $memberships; } function getPools() { global $format; $q = "SELECT poolID,groupID FROM pbs_pool"; $result = mysql_query($q); while($data = mysql_fetch_array($result)) { $pools .= sprintf($format['poolnode'] , "Pool".$data['poolID']); $pools .= sprintf($format['poolgroup'], "Pool".$data['poolID'], "Group".$data['groupID']); } return $pools; } function getClients() { global $format; $q = "SELECT clientID,groupID FROM pbs_client"; $result = mysql_query($q); while($data = mysql_fetch_array($result)) { $clients .= sprintf($format['clientnode'] , "Client".$data['clientID']); $query2 = "SELECT clientID, poolID FROM pbs_poolentries WHERE clientID = '".$data['clientID']."'"; $result2 = mysql_query($query2); if(mysql_num_rows($result2) == 0) { $clients .= sprintf($format['clientgroup'], "Client".$data['clientID'], "Group".$data['groupID']); } } return $clients; } function clientPools() { global $format; $q = "SELECT clientID,poolID FROM pbs_poolentries"; $result = mysql_query($q); while($data = mysql_fetch_array($result)) { $clientpools .= sprintf($format['clientpool'], "Client".$data['clientID'], "Pool".$data['poolID']); } return $clientpools; } function getRoles() { global $format; $q = "SELECT roleID,groupID FROM pbs_role"; $result = mysql_query($q); while($data = mysql_fetch_array($result)) { $roles .= sprintf($format['rolenode'] , "Role".$data['roleID']); # $roles .= "Role".$data['roleID'] ." -> " . "Group".$data['groupID'].";\n"; } return $roles; } function getBootiso() { global $format; $q = "SELECT bootisoID,groupID FROM pbs_bootiso"; $result = mysql_query($q); while($data = mysql_fetch_array($result)) { $bootiso .= sprintf($format['bootisonode'] , "BootIso".$data['bootisoID']); $bootiso .= sprintf($format['bootisogroup'], "BootIso".$data['bootisoID'], "Group".$data['groupID']); } return $bootiso; } function getBootMenus() { global $format; $q = "SELECT bootmenuID,groupID FROM pbs_bootmenu"; $result = mysql_query($q); while($data = mysql_fetch_array($result)) { $bootmenu .= sprintf($format['bootmenunode'] , "BootMenu".$data['bootmenuID']); $bootmenu .= sprintf($format['bootmenugroup'], "BootMenu".$data['bootmenuID'], "Group".$data['groupID']); } return $bootmenu; } function getBootos() { global $format; $q = "SELECT bootosID,groupID FROM pbs_bootos"; $result = mysql_query($q); while($data = mysql_fetch_array($result)) { $bootos .= sprintf($format['bootosnode'] , "BootOs".$data['bootosID']); $q2 = "SELECT * FROM pbs_bootmenuentries WHERE bootosID = ".$data['bootosID'].""; $result2 = mysql_query($q2); if(mysql_num_rows($result2)) { while($data2 = mysql_fetch_array($result2)) { $bootos .= sprintf($format['bootosbootmenu'], "BootOs".$data['bootosID'], "BootMenu".$data2['bootmenuID']); } } else { $bootos .= sprintf($format['bootosgroup'], "BootOs".$data['bootosID'], "Group".$data['groupID']); } } return $bootos; } ## Concatenation $defs = ''; $defs .= getGroups(); $defs .= recGroups(1); $defs .= getPersons(); $defs .= getMemberships(); $defs .= getRoles(); $defs .= getRequests(); $defs .= getPools(); $defs .= getClients(); $defs .= clientPools(); $defs .= getBootiso(); $defs .= getBootMenus(); $defs .= getBootos(); $str = 'digraph x { node []; ranksep=3; size="20,20"; overlap="0:true"'."\n"; $str .= str_replace("\n", "\n\t", $defs); $str .= "}"; echo "Write to file ...\n"; // Create the dot file $fp = fopen($dotname, "w"); fputs ($fp, $str); fclose ($fp); // Generate the image echo "Generate the image ...\n"; exec("dot -Tpng $dotname >$pngname"); // delete the dot file unlink ($dotname); echo "Ready!\n";