예제 #1
0
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>';
}
예제 #2
0
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>';
}
예제 #3
0
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;
}
예제 #4
0
<?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);
}