function generate_tree($id, $mode = '') { # selected item # get childs $child_array = get_childs($id, $mode); # get information of selected item $query = 'SELECT DISTINCT attr_value as name,ItemLinks.fk_id_item AS item_id, (SELECT config_class FROM ConfigItems,ConfigClasses WHERE id_class=fk_id_class AND id_item=item_id) AS type, (SELECT attr_value FROM ConfigValues, ItemLinks, ConfigAttrs, ConfigClasses WHERE ConfigValues.fk_id_item = ItemLinks.fk_item_linked2 AND id_attr = ConfigValues.fk_id_attr AND attr_name = "icon_image" AND id_class = fk_id_class AND config_class = "os" AND ItemLinks.fk_id_item = item_id ) AS os_icon FROM ConfigValues,ItemLinks,ConfigAttrs,ConfigClasses WHERE ItemLinks.fk_id_item=ConfigValues.fk_id_item AND id_attr=ItemLinks.fk_id_attr AND ConfigAttrs.visible="yes" AND fk_id_class=id_class AND (SELECT naming_attr FROM ConfigAttrs WHERE id_attr=ConfigValues.fk_id_attr)="yes" AND ItemLinks.fk_id_item="' . $id . '" ORDER BY config_class DESC,attr_value'; $selected_item_info = db_handler($query, "assoc", "Get informations on selected item"); # get informations about host # prepend inforomation from selected host to the top of the list array_unshift($child_array, get_informations($id)); # set values of selected item AND put all childs (generated bevore) in it. $root_item = array($id => array("id" => $id, "selected" => TRUE, "status" => 'open', "name" => $selected_item_info["name"], "type" => $selected_item_info["type"], "os_icon" => $selected_item_info["os_icon"], "childs" => $child_array)); # get parents $parents_flat = get_parents($id); # make the parents array ordered top2down $parents_flat = array_reverse($parents_flat); # prepare list (if there are parents call the prepare function if (!empty($parents_flat)) { $tree = prepare_dependency($parents_flat, $root_item); } else { $tree = $root_item; } ## Display the top tree item # check for parent loop error if (isset($tree[0]["status"]) and $tree[0]["status"] == "loop_error") { # make a error item at the top $dependency_tree = array("root" => array("id" => "root", "status" => 'open', "name" => TXT_DEPVIEW_ERROR_LOOP, "type" => "warn", "childs" => $tree)); } else { # make a root tree at the top $dependency_tree = array("root" => array("id" => "root", "status" => 'open', "name" => "Top level", "type" => "parent", "childs" => $tree)); } //echo "<pre>"; //var_dump($tree); //echo "</pre>"; echo '<div>'; displayTree_list($dependency_tree); echo '</div>'; }
function display_details($infos, $rank, $total_step) { $datas = array(); foreach ($rank as $id => $nb_answers) { $percent = round($nb_answers / $total_step * 100); $name = get_informations($id)->name; echo '<p>' . $name . ' : ' . $percent . ' % </p> <p class="bars" data-percent="' . $percent . '"></p>'; $datas[] = $percent; } echo '<script type="text/javascript">var datas = ' . json_encode($datas) . ';</script>'; }
function get_childs($id, $mode, $levels = 0) { global $all_childs; $all_childs[$id] = TRUE; $childs = array(); $services = array(); $child_id = 0; # get entries linked as child $query = 'SELECT DISTINCT attr_value,ItemLinks.fk_id_item AS item_id, (SELECT config_class FROM ConfigItems,ConfigClasses WHERE id_class=fk_id_class AND id_item=item_id) AS config_class, (SELECT attr_value FROM ConfigValues, ItemLinks, ConfigAttrs, ConfigClasses WHERE ConfigValues.fk_id_item = ItemLinks.fk_item_linked2 AND id_attr = ConfigValues.fk_id_attr AND attr_name = "icon_image" AND id_class = fk_id_class AND config_class = "os" AND ItemLinks.fk_id_item = item_id ) AS os_icon FROM ConfigValues,ItemLinks,ConfigAttrs,ConfigClasses WHERE ItemLinks.fk_id_item=ConfigValues.fk_id_item AND id_attr=ItemLinks.fk_id_attr AND ConfigAttrs.visible="yes" AND fk_id_class=id_class AND (SELECT naming_attr FROM ConfigAttrs WHERE id_attr=ConfigValues.fk_id_attr)="yes" AND ItemLinks.fk_item_linked2="' . $id . '" ORDER BY config_class DESC,attr_value'; $result = db_handler($query, 'result', "get childs from {$id}"); while ($entry = mysql_fetch_assoc($result)) { /* #special for services if($entry["config_class"] == "service"){ $host_query = 'SELECT attr_value AS hostname FROM ConfigValues,ConfigAttrs,ConfigClasses,ItemLinks WHERE fk_item_linked2=ConfigValues.fk_id_item AND id_attr=ConfigValues.fk_id_attr AND naming_attr="yes" AND fk_id_class = id_class AND config_class="host" AND ItemLinks.fk_id_item='.$entry["item_id"]; $hostname = db_handler($host_query, "getOne", "Get linked hostnames"); } */ # set child //var_dump($entry); if ($entry["config_class"] == "service") { if (!isset($childs["services"]["id"])) { $service_tree = array("id" => "service_{$id}", "status" => 'closed', "name" => "Services", "type" => "service"); $childs["services"] = $service_tree; } $childs["services"]["childs"][$child_id]["parent"] = $id; $childs["services"]["childs"][$child_id]["id"] = $entry["item_id"]; $childs["services"]["childs"][$child_id]["name"] = $entry["attr_value"]; $childs["services"]["childs"][$child_id]["type"] = $entry["config_class"]; # Nagiosview link if ($mode == "nagiosview") { $link = generate_nagios_service_link($id, $entry["attr_value"]); $childs["services"]["childs"][$child_id]["link"] = $link; } } elseif ($entry["config_class"] == "advanced-service") { if (!isset($childs["advanced-services"]["id"])) { $service_tree = array("id" => "service_{$id}", "status" => 'closed', "name" => "Advanced-services", "type" => "service"); $childs["advanced-services"] = $service_tree; } $childs["advanced-services"]["childs"][$child_id]["parent"] = $id; $childs["advanced-services"]["childs"][$child_id]["id"] = $entry["item_id"]; $childs["advanced-services"]["childs"][$child_id]["name"] = $entry["attr_value"]; $childs["advanced-services"]["childs"][$child_id]["type"] = "service"; // advanced services display as services # Nagiosview link if ($mode == "nagiosview") { $link = generate_nagios_service_link($id, $entry["attr_value"]); $childs["advanced-services"]["childs"][$child_id]["link"] = $link; } } elseif ($entry["config_class"] == "host") { $childs[$child_id]["parent"] = $id; $childs[$child_id]["id"] = $entry["item_id"]; $childs[$child_id]["name"] = $entry["attr_value"]; $childs[$child_id]["type"] = $entry["config_class"]; $childs[$child_id]["os_icon"] = $entry["os_icon"]; # Nagiosview link if ($mode == "nagiosview") { $link = generate_nagios_pnp_link($id); // $link = generate_nagios_pnp_link($id, $entry["attr_value"]); $childs[$child_id]["link"] = $link; } # check if that child is called a second time (prevent a endless looilds) if (!isset($all_childs[$entry["item_id"]])) { # save the child and parent combinatino, so that a loop can be prevented //$all_childs[ $childs[$child_id]["parent"].":".$childs[$child_id]["id"] ] = TRUE; //$all_childs[ $entry["item_id"] ] = TRUE; # get childs $childs[$child_id]["childs"] = get_childs($entry["item_id"], $mode, $levels + 1); # get informations about host # prepend the Host information to the beginning of the array array_unshift($childs[$child_id]["childs"], get_informations($entry["item_id"])); # remove from loop detection unset($all_childs[$entry["item_id"]]); } else { # re-iteration $childs[$child_id]["childs"] = error_loop($entry["item_id"]); $childs[$child_id]["status"] = "open"; } } # increase child id $child_id++; } # return child information NConf_DEBUG::set($childs, 'DEBUG', "child tree"); return $childs; }
<?php session_start(); $rank = retrieve_results($_SESSION["token"]); $first_key = array_keys($rank)[0]; // We add to the database the result add_to_result_list($first_key, $_SESSION["token"]); $total_step = get_steps(); $infos = array(); foreach ($rank as $id => $value) { $infos[] = get_informations($id); }