"%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";