summaryrefslogblamecommitdiffstats
path: root/scripts/dbContent.php
blob: 7ee850239f172c035b641c0f16f64b5093067aa7 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
      









                                                                           
                       
                                                                     





                                                     
                                                     


                       




                                                                                                                   
                                                                                                                     

                                                                                                                   
                                                                                                                   





























                                                                                                                   
 








                                                                                           
 








                                                                              
 










                                                                                                                  
 







                                                                                                             
 









                                                                                               
 












                                                                                                             
 







                                                                                                        
 








                                                                            
 









                                                                                                          
 








                                                                                                              
 















                                                                                                                        
 
 

                














                           
                   






                                          










                                     
<? php
/*
 * Copyright (c) 2011 - OpenSLX GmbH, RZ Uni Freiburg
 * This program is free software distributed under the GPL version 2.
 * See http://gpl.openslx.org/
 *
 * If you have any feedback please consult http://feedback.openslx.org/ and
 * send your suggestions, praise, or complaints to feedback@openslx.org
 *
 * General information about OpenSLX can be found at http://openslx.org/
 */
// generate mysql graph
$name = substr(str_replace("/", "", $_SERVER['SCRIPT_NAME']), 0, -4);
$dotname = $name . '.dot';
$pngname = $name . '.png';

echo "Opening Database Connection...\n";
$link = mysql_connect('localhost', 'root', '123456');
if (!$link) {
  die('keine Verbindung möglich: ' . mysql_error());
}
mysql_select_db('pbs');
error_reporting(1);


$format['groupnode']  = '"%s" [shape=trapezium, fontcolor="#ffffffff", style=filled, fillcolor="#004A99FF"];'."\n";
$format['personnode']   = '"%s" [shape=ellipse, fontcolor="#ffffffff", style=filled, fillcolor="#FF0000FF"];'."\n";
$format['poolnode']   = '"%s" [shape=ellipse, fontcolor="#000000ff", style=filled, fillcolor="#00FF00FF"];'."\n";
$format['membershipnode'] = '"%s" [shape=ellipse, fontcolor="#ffffffff", style=filled, fillcolor="#990000FF"];'."\n";
$format['clientnode']   = '"%s" [shape=ellipse, fontcolor="#000000ff", style=filled, fillcolor="#FFFF00FF"];'."\n";
$format['rolenode']   = '"%s" [fontcolor="#000000ff", style=filled, fillcolor="#FF0099FF"];'."\n";
$format['bootmenunode'] = '"%s" [shape=ellipse, fontcolor="#000000ff", style=filled, fillcolor="#009999FF"];'."\n";
$format['bootisonode']  = '"%s" [shape=ellipse, fontcolor="#000000ff", style=filled, fillcolor="#FF9900FF"];'."\n";
$format['bootosnode'] = '"%s" [fontcolor="#000000ff", style=filled, fillcolor="#99FF99FF"];'."\n";

$format['groupgroup']     = '"%s" -> "%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";