function showBADetail($id)
 {
     global $CFG_GLPI;
     $pMonitoringBusinessrule = new PluginMonitoringBusinessrule();
     $pMonitoringBusinessrulegroup = new PluginMonitoringBusinessrulegroup();
     $pMonitoringService = new PluginMonitoringService();
     $this->getFromDB($id);
     echo "<table class='tab_cadrehov'>";
     $a_groups = $pMonitoringBusinessrulegroup->find("`plugin_monitoring_servicescatalogs_id`='" . $id . "'");
     echo "<tr class='tab_bg_1'>";
     $color = PluginMonitoringDisplay::getState($this->fields['state'], $this->fields['state_type']);
     $pic = $color;
     $color = str_replace("_soft", "", $color);
     echo "<td rowspan='" . count($a_groups) . "' class='center' width='200' bgcolor='" . $color . "'>";
     echo "<strong style='font-size: 20px'>" . $this->getName() . "</strong><br/>";
     echo "<img src='" . $CFG_GLPI['root_doc'] . "/plugins/monitoring/pics/box_" . $pic . "_40.png'/>";
     echo "</td>";
     $i = 0;
     foreach ($a_groups as $gdata) {
         $a_brulesg = $pMonitoringBusinessrule->find("`plugin_monitoring_businessrulegroups_id`='" . $gdata['id'] . "'");
         if ($i > 0) {
             echo "<tr>";
         }
         $state = array();
         $state['red'] = 0;
         $state['red_soft'] = 0;
         $state['orange'] = 0;
         $state['orange_soft'] = 0;
         $state['green'] = 0;
         $state['green_soft'] = 0;
         foreach ($a_brulesg as $brulesdata) {
             $pMonitoringService->getFromDB($brulesdata['plugin_monitoring_services_id']);
             $state[PluginMonitoringDisplay::getState($pMonitoringService->fields['state'], $pMonitoringService->fields['state_type'])]++;
         }
         $color = "";
         if ($gdata['operator'] == 'or') {
             if ($state['green'] >= 1) {
                 $color = "green";
             } else {
                 if ($state['orange'] >= 1) {
                     $color = "orange";
                 } else {
                     if ($state['orange_soft'] >= 1) {
                         $color = "orange";
                     } else {
                         if ($state['red'] >= 1) {
                             $color = "red";
                         } else {
                             if ($state['red_soft'] >= 1) {
                                 $color = "red";
                             }
                         }
                     }
                 }
             }
         } else {
             $num_min = str_replace(" of:", "", $gdata['operator']);
             if ($state['green'] >= $num_min) {
                 $color = "green";
             } else {
                 if ($state['orange'] >= $num_min) {
                     $color = "orange";
                 } else {
                     if ($state['orange_soft'] >= $num_min) {
                         $color = "orange";
                     } else {
                         if ($state['red'] >= $num_min) {
                             $color = "red";
                         } else {
                             if ($state['red_soft'] >= $num_min) {
                                 $color = "red";
                             }
                         }
                     }
                 }
             }
         }
         echo "<td class='center' bgcolor='" . $color . "'>";
         echo $gdata['name'] . "<br/>[ " . $gdata['operator'] . " ]";
         echo "</td>";
         echo "<td bgcolor='" . $color . "'>";
         echo "<table>";
         foreach ($a_brulesg as $brulesdata) {
             echo "<tr class='tab_bg_1'>";
             $pMonitoringService->getFromDB($brulesdata['plugin_monitoring_services_id']);
             PluginMonitoringDisplay::displayLine($pMonitoringService->fields);
             echo "</tr>";
         }
         echo "</table>";
         echo "</th>";
         echo "</tr>";
         $i++;
     }
     echo "</tr>";
     echo "</table>";
 }
Exemplo n.º 2
0
 function getCounterOfView($id, $a_counter)
 {
     global $DB;
     $a_hosts = $this->find("`itemtype`='host'" . " AND `plugin_monitoring_displayviews_id`='" . $id . "'");
     foreach ($a_hosts as $data) {
         $query = "SELECT * FROM `glpi_plugin_monitoring_services`" . " LEFT JOIN `glpi_plugin_monitoring_componentscatalogs_hosts`" . "    ON `plugin_monitoring_componentscatalogs_hosts_id`=" . " `glpi_plugin_monitoring_componentscatalogs_hosts`.`id`" . " WHERE `items_id`='" . $data['items_id'] . "'" . "    AND `itemtype`='" . $data['extra_infos'] . "'" . "    AND `glpi_plugin_monitoring_services`.`id` IS NOT NULL";
         $result = $DB->query($query);
         while ($data2 = $DB->fetch_array($result)) {
             $ret = PluginMonitoringDisplay::getState($data2['state'], $data2['state_type'], '', $data2['is_acknowledged']);
             if (strstr($ret, '_soft')) {
                 $a_counter['ok']++;
             } else {
                 if ($ret == 'red') {
                     $a_counter['critical']++;
                 } else {
                     if ($ret == 'redblue') {
                         $a_counter['acknowledge']++;
                     } else {
                         if ($ret == 'orange' || $ret == 'yellow') {
                             $a_counter['warning']++;
                         } else {
                             $a_counter['ok']++;
                         }
                     }
                 }
             }
         }
     }
     return $a_counter;
 }
Exemplo n.º 3
0
 function checkState($stateevent, $date, $services_id, $event)
 {
     $state = PluginMonitoringDisplay::getState($stateevent, "HARD", $event);
     if ($state == 'red') {
         // Critial
         if ($this->currentstate == 'ok') {
             // Add
             $input = array();
             $input['plugin_monitoring_services_id'] = $this->plugin_monitoring_services_id;
             $input['begin_date'] = $date;
             $this->unavaibilities_id = $this->add($input);
             $this->currentstate = 'critical';
         }
     } else {
         // Ok
         if ($this->currentstate == 'critical') {
             // update
             $input = array();
             $input['id'] = $this->unavaibilities_id;
             $input['end_date'] = $date;
             $this->getFromDB($this->unavaibilities_id);
             $input['duration'] = strtotime($date) - strtotime($this->fields['begin_date']);
             $this->update($input);
             $this->unavaibilities_id = 0;
             $this->currentstate = 'ok';
         }
     }
 }
Exemplo n.º 4
0
 function generateConfig($weathermaps_id)
 {
     global $DB, $CFG_GLPI;
     if ($weathermaps_id < 1) {
         return;
     }
     $conf = "\n";
     $pmWeathermapnode = new PluginMonitoringWeathermapnode();
     $pmComponent = new PluginMonitoringComponent();
     $pmService = new PluginMonitoringService();
     $this->getFromDB($weathermaps_id);
     if ($this->fields['background'] != '') {
         $conf .= "BACKGROUND " . GLPI_PLUGIN_DOC_DIR . "/monitoring/weathermapbg/" . $this->fields['background'] . "\n";
         //$conf .= "BACKGROUND http://192.168.20.194".$CFG_GLPI['root_doc']."/plugins/monitoring/front/send.php?file=weathermapbg/".$this->fields['background']."\n";
     }
     // image file to generate
     $conf .= "IMAGEOUTPUTFILE " . GLPI_PLUGIN_DOC_DIR . "/monitoring/weathermap-" . $weathermaps_id . ".png\n";
     $conf .= "\n";
     $conf .= "WIDTH " . $this->fields["width"] . "\nHEIGHT " . $this->fields["height"] . "\nHTMLSTYLE overlib\nTITLE " . $this->fields["name"] . "\nTIMEPOS 10 20 Cree le : " . Html::convDateTime(date("Y-m-d H:i:s")) . "\n\nKEYPOS DEFAULT 10 " . ($this->fields["height"] - $this->fields["width"] / 16) . "\nKEYSTYLE  DEFAULT horizontal " . $this->fields["width"] / 4 . "\nKEYTEXTCOLOR 0 0 0\nKEYOUTLINECOLOR 0 0 0\nKEYBGCOLOR 255 255 255\nBGCOLOR 255 255 255\nTITLECOLOR 0 0 0\nTIMECOLOR 0 0 0\nSCALE DEFAULT 0.0001 0.1   255 255 255   255 255 255  \nSCALE DEFAULT 0.1 50   0 255 0   255 215 0  \nSCALE DEFAULT 50 100   255 215 0   255 0 0  \n\nSET key_hidezero_DEFAULT 1\n\n# End of global section\n\n# TEMPLATE-only NODEs:\nNODE DEFAULT\n\tMAXVALUE 100\n\n# TEMPLATE-only LINKs:\nLINK DEFAULT\n\tWIDTH 4\n\tBANDWIDTH 100M\n\n# regular NODEs:\n";
     $query = "SELECT * FROM `" . getTableForItemType("PluginMonitoringWeathermapnode") . "`\n         WHERE `plugin_monitoring_weathermaps_id`='" . $weathermaps_id . "'\n         ORDER BY `name`";
     $result = $DB->query($query);
     $link = '';
     while ($data = $DB->fetch_array($result)) {
         $name = $data['name'];
         if ($name == '') {
             $itemtype = $data['itemtype'];
             $item = new $itemtype();
             $item->getFromDB($data['items_id']);
             $name = $item->getName();
             $link = $item->getLinkURL();
         }
         $conf .= "NODE " . preg_replace("/[^A-Za-z0-9_]/", "", $data['name']) . "_" . $data['id'] . "\n" . "   LABEL " . $name . "\n" . "   POSITION " . $data['x'] . " " . $data['y'] . "\n";
         if ($link != '') {
             $conf .= "   INFOURL " . $link . "\n";
         }
         $conf .= "\n";
     }
     $conf .= "\n\n# regular LINKs:\n";
     $bwlabelpos = array();
     $bwlabelpos[0] = "BWLABELPOS 81 39";
     $bwlabelpos[1] = "BWLABELPOS 71 29";
     $i = 0;
     $doublelink = array();
     $doublelinkbegin = array();
     $doublelinkdiff = array();
     $doublelinknumber = array();
     $query = "SELECT `" . getTableForItemType("PluginMonitoringWeathermaplink") . "`.*, \n            count(`" . getTableForItemType("PluginMonitoringWeathermaplink") . "`.`id`) as `cnt` \n            FROM `" . getTableForItemType("PluginMonitoringWeathermaplink") . "` \n         LEFT JOIN `" . getTableForItemType("PluginMonitoringWeathermapnode") . "`\n            ON `plugin_monitoring_weathermapnodes_id_1` = `" . getTableForItemType("PluginMonitoringWeathermapnode") . "`.`id`\n\n         WHERE `plugin_monitoring_weathermaps_id`='" . $weathermaps_id . "'\n         group by `plugin_monitoring_weathermapnodes_id_1`, `plugin_monitoring_weathermapnodes_id_2`\n         HAVING cnt >1";
     $result = $DB->query($query);
     while ($data = $DB->fetch_array($result)) {
         $tlink = $data['plugin_monitoring_weathermapnodes_id_1'] . "-" . $data['plugin_monitoring_weathermapnodes_id_2'];
         $doublelink[$tlink] = $data['cnt'];
         $doublelinknumber[$tlink] = 0;
         $beg = 0;
         $diff = 0;
         switch ($data['cnt']) {
             case 2:
                 $beg = -22;
                 $diff = 44;
                 break;
             case 3:
                 $beg = -33;
                 $diff = 33;
                 break;
             case 4:
                 $beg = -39;
                 $diff = 26;
                 break;
             case 5:
                 $beg = -60;
                 $diff = 30;
                 break;
         }
         $doublelinkbegin[$tlink] = $beg;
         $doublelinkdiff[$tlink] = $diff;
     }
     $query = "SELECT * FROM `" . getTableForItemType("PluginMonitoringWeathermapnode") . "`\n         WHERE `plugin_monitoring_weathermaps_id`='" . $weathermaps_id . "'\n         ORDER BY `name`";
     $result = $DB->query($query);
     while ($data = $DB->fetch_array($result)) {
         $queryl = "SELECT * FROM `" . getTableForItemType("PluginMonitoringWeathermaplink") . "`\n            WHERE `plugin_monitoring_weathermapnodes_id_1`='" . $data['id'] . "'";
         $resultl = $DB->query($queryl);
         while ($datal = $DB->fetch_array($resultl)) {
             $bandwidth = $datal['bandwidth_in'] . " " . $datal['bandwidth_out'];
             if ($datal['bandwidth_in'] == $datal['bandwidth_out']) {
                 $bandwidth = $datal['bandwidth_in'];
             }
             $pmWeathermapnode->getFromDB($datal['plugin_monitoring_weathermapnodes_id_2']);
             $queryevent = "SELECT * FROM `glpi_plugin_monitoring_serviceevents`\n               WHERE `plugin_monitoring_services_id`='" . $datal['plugin_monitoring_services_id'] . "'\n                  ORDER BY `date` DESC\n                  LIMIT 1";
             $resultevent = $DB->query($queryevent);
             $in = '';
             $out = '';
             while ($dataevent = $DB->fetch_array($resultevent)) {
                 $pmService->getFromDB($datal['plugin_monitoring_services_id']);
                 $pmComponent->getFromDB($pmService->fields['plugin_monitoring_components_id']);
                 $matches1 = array();
                 preg_match("/" . $pmComponent->fields['weathermap_regex_in'] . "/m", $dataevent['perf_data'], $matches1);
                 if (isset($matches1[1])) {
                     $in = $matches1[1];
                 }
                 $matches1 = array();
                 preg_match("/" . $pmComponent->fields['weathermap_regex_out'] . "/m", $dataevent['perf_data'], $matches1);
                 if (isset($matches1[1])) {
                     $out = $matches1[1];
                 }
             }
             $in = $this->checkBandwidth("in", $in, $bandwidth);
             $out = $this->checkBandwidth("out", $out, $bandwidth);
             $nodesuffix = '';
             $tlink = $datal['plugin_monitoring_weathermapnodes_id_1'] . "-" . $datal['plugin_monitoring_weathermapnodes_id_2'];
             if (isset($doublelink[$tlink])) {
                 $nodesuffix = ":" . ($doublelinkbegin[$tlink] + $doublelinknumber[$tlink] * $doublelinkdiff[$tlink]) . ":0";
                 $doublelinknumber[$tlink]++;
             }
             $conf .= "LINK " . preg_replace("/[^A-Za-z0-9_]/", "", $data['name']) . "_" . $data['id'] . "-" . preg_replace("/[^A-Za-z0-9_]/", "", $pmWeathermapnode->fields['name']) . "_" . $pmWeathermapnode->fields['id'] . $nodesuffix . "\n";
             $timezone = '0';
             if (isset($_SESSION['plugin_monitoring_timezone'])) {
                 $timezone = $_SESSION['plugin_monitoring_timezone'];
             }
             $timezone_file = str_replace("+", ".", $timezone);
             //            if (file_exists(GLPI_ROOT."/files/_plugins/monitoring/PluginMonitoringService-".$datal['plugin_monitoring_services_id']."-2h".$timezone_file.".gif")) {
             $conf .= "   INFOURL " . $CFG_GLPI['root_doc'] . "/plugins/monitoring/front/display.form.php?itemtype=PluginMonitoringService&items_id=" . $datal['plugin_monitoring_services_id'] . "\n" . "   OVERLIBGRAPH " . $CFG_GLPI['root_doc'] . "/plugins/monitoring/front/send.php?file=PluginMonitoringService-" . $datal['plugin_monitoring_services_id'] . "-2h" . $timezone_file . ".png\n";
             //            }
             $conf .= "   " . $bwlabelpos[$i] . "\n";
             // Manage for port down
             $retflag = PluginMonitoringDisplay::getState($pmService->fields['state'], $pmService->fields['state_type'], '', $pmService->fields['is_acknowledged']);
             if ($retflag == 'red') {
                 $conf .= "   TARGET static:" . $datal['bandwidth_in'] . ":" . $datal['bandwidth_out'] . "\n";
             } else {
                 $conf .= "   TARGET static:" . $in . ":" . $out . "\n";
             }
             $conf .= "   NODES " . preg_replace("/[^A-Za-z0-9_]/", "", $data['name']) . "_" . $data['id'] . $nodesuffix . " " . preg_replace("/[^A-Za-z0-9_]/", "", $pmWeathermapnode->fields['name']) . "_" . $pmWeathermapnode->fields['id'] . $nodesuffix . "\n";
             $conf .= "   BANDWIDTH " . $bandwidth . "\n\n";
             $i++;
             if ($i == '2') {
                 $i = 0;
             }
         }
     }
     return $conf;
 }
 function getRessources($componentscatalogs_id, $state, $state_type = 'HARD')
 {
     global $DB;
     $a_services = array();
     $pmComponentscatalog_Host = new PluginMonitoringComponentscatalog_Host();
     $query = "SELECT * FROM `glpi_plugin_monitoring_services`         \n         LEFT JOIN `" . $pmComponentscatalog_Host->getTable() . "`\n            ON `plugin_monitoring_componentscatalogs_hosts_id`=\n               `" . $pmComponentscatalog_Host->getTable() . "`.`id`\n         WHERE `plugin_monitoring_componentscalalog_id`='" . $componentscatalogs_id . "'\n            AND `state_type` LIKE '" . $state_type . "'\n         ORDER BY `name`";
     $result = $DB->query($query);
     while ($data = $DB->fetch_array($result)) {
         if (PluginMonitoringDisplay::getState($data['state'], $data['state_type'], '', $data['is_acknowledged']) == $state) {
             $a_services[] = $data;
         }
     }
     return $a_services;
 }
 function showForm($items_id, $servicescatalogs_id, $options = array())
 {
     global $LANG, $CFG_GLPI;
     if ($items_id != '') {
         $this->getFromDB($items_id);
     } else {
         $this->getEmpty();
     }
     $this->showFormHeader($options);
     $rand = mt_rand();
     echo "<tr class='tab_bg_1'>";
     echo "<td>";
     echo "<input type='hidden' name='plugin_monitoring_servicescatalogs_id' value='" . $servicescatalogs_id . "'/>";
     echo $LANG['common'][16] . "&nbsp;:";
     echo "</td>";
     echo "<td>";
     echo "<input type='text' name='name' value='" . $this->fields["name"] . "' size='30'/>";
     echo "</td>";
     if ($items_id != '') {
         echo "<th colspan='2' width='60%'>";
         echo $LANG['plugin_monitoring']['service'][0];
         echo "&nbsp;";
         echo "<img onClick=\"Ext.get('ressources" . $rand . "').setDisplayed('block')\"\n                    title=\"" . $LANG['buttons'][8] . "\" alt=\"" . $LANG['buttons'][8] . "\"\n                    class='pointer'  src='" . $CFG_GLPI["root_doc"] . "/pics/add_dropdown.png'>";
         echo "</th>";
         echo "</tr>";
         echo "<tr>";
     }
     echo "<td valign='top'>";
     echo $LANG['rulesengine'][9] . "&nbsp;:";
     echo "</td>";
     echo "<td valign='top'>";
     $first_operator = array();
     $first_operator['or'] = "or";
     $first_operator['2 of:'] = $LANG['plugin_monitoring']['businessrule'][2];
     $first_operator['3 of:'] = $LANG['plugin_monitoring']['businessrule'][3];
     $first_operator['4 of:'] = $LANG['plugin_monitoring']['businessrule'][4];
     $first_operator['5 of:'] = $LANG['plugin_monitoring']['businessrule'][5];
     $first_operator['6 of:'] = $LANG['plugin_monitoring']['businessrule'][6];
     $first_operator['7 of:'] = $LANG['plugin_monitoring']['businessrule'][7];
     $first_operator['8 of:'] = $LANG['plugin_monitoring']['businessrule'][8];
     $first_operator['9 of:'] = $LANG['plugin_monitoring']['businessrule'][9];
     $first_operator['10 of:'] = $LANG['plugin_monitoring']['businessrule'][10];
     Dropdown::showFromArray('operator', $first_operator, array("value" => $this->fields['operator']));
     echo "</td>";
     if ($items_id != '') {
         echo "<td colspan='2'>";
         // ** Dropdown to display
         echo "<div style='display:none' id='ressources" . $rand . "' >";
         echo "<table>";
         echo "<tr class='tab_bg_1'>";
         echo "<td>";
         echo "<form name='form' method='post' action='" . $CFG_GLPI['root_doc'] . "/plugins/monitoring/front/businessrule.form.php'>";
         echo "<input type='hidden' name='plugin_monitoring_businessrulegroups_id' value='" . $items_id . "' />";
         PluginMonitoringBusinessrule::dropdownService(0, array('name' => 'type'));
         echo "<input type='submit' name='add' value=\"" . $LANG['buttons'][8] . "\" class='submit'>";
         echo "</form>";
         echo "</td>";
         echo "</tr>";
         echo "</table>";
         echo "<hr>";
         echo "</div>";
         echo "<table width='100%'>";
         $pmBusinessrule = new PluginMonitoringBusinessrule();
         $pmService = new PluginMonitoringService();
         $a_services = $pmBusinessrule->find("`plugin_monitoring_businessrulegroups_id`='" . $servicescatalogs_id . "'");
         foreach ($a_services as $gdata) {
             if ($pmService->getFromDB($gdata['plugin_monitoring_services_id'])) {
                 $shortstate = PluginMonitoringDisplay::getState($pmService->fields['state'], $pmService->fields['state_type']);
                 echo "<tr class='tab_bg_1'>";
                 echo "<td>";
                 echo "<img src='" . $CFG_GLPI['root_doc'] . "/plugins/monitoring/pics/box_" . $shortstate . "_32.png'/>";
                 echo "</td>";
                 echo "<td>";
                 $pmComponentscatalog_Host = new PluginMonitoringComponentscatalog_Host();
                 $pmService->getFromDB($gdata["plugin_monitoring_services_id"]);
                 $pmComponentscatalog_Host->getFromDB($pmService->fields['plugin_monitoring_componentscatalogs_hosts_id']);
                 echo $pmService->getLink(1);
                 echo " " . $LANG['networking'][25] . " ";
                 $itemtype2 = $pmComponentscatalog_Host->fields['itemtype'];
                 $item2 = new $itemtype2();
                 $item2->getFromDB($pmComponentscatalog_Host->fields['items_id']);
                 echo $item2->getLink(1);
                 echo "</td>";
                 echo "<td>";
                 echo "<input type='submit' name='deletebusinessrules-" . $gdata['id'] . "' value=\"" . $LANG['buttons'][6] . "\" class='submit'>";
                 echo "</td>";
             } else {
                 // resource deleted
                 echo "<tr class='tab_bg_1'>";
                 echo "<td colspan='2' bgcolor='#ff0000'>";
                 echo $LANG['plugin_monitoring']['service'][23];
                 echo "</td>";
                 echo "<td>";
                 echo "<input type='submit' name='deletebusinessrules-" . $gdata['id'] . "' value=\"" . $LANG['buttons'][53] . "\" class='submit'>";
                 echo "</td>";
             }
         }
         echo "</tr>";
     }
     echo "</table>";
     echo "</td>";
     echo "</tr>";
     $this->showFormButtons($options);
     return true;
 }
Exemplo n.º 7
0
    /**
     * Display info of device
     * 
     * @global type $DB
     * @param type $id
     */
    function showWidget2Frame($id)
    {
        global $DB, $CFG_GLPI;
        $pmDisplayview_item = new PluginMonitoringDisplayview_item();
        $pmDisplayview_item->getFromDB($id);
        $itemtype = $pmDisplayview_item->fields['extra_infos'];
        $item = new $itemtype();
        $item->getFromDB($pmDisplayview_item->fields['items_id']);
        $critical = 0;
        $warning = 0;
        $ok = 0;
        $acknowledge = 0;
        $query = "SELECT * FROM `glpi_plugin_monitoring_services`" . " LEFT JOIN `glpi_plugin_monitoring_componentscatalogs_hosts`" . "    ON `plugin_monitoring_componentscatalogs_hosts_id`=" . " `glpi_plugin_monitoring_componentscatalogs_hosts`.`id`" . " WHERE `items_id`='" . $item->fields['id'] . "'" . "    AND `itemtype`='" . $itemtype . "'" . "    AND `glpi_plugin_monitoring_services`.`id` IS NOT NULL";
        $result = $DB->query($query);
        while ($data = $DB->fetch_array($result)) {
            $ret = PluginMonitoringDisplay::getState($data['state'], $data['state_type'], '', $data['is_acknowledged']);
            if (strstr($ret, '_soft')) {
                $ok++;
            } else {
                if ($ret == 'red') {
                    $critical++;
                } else {
                    if ($ret == 'redblue') {
                        $acknowledge++;
                    } else {
                        if ($ret == 'orange' || $ret == 'yellow') {
                            $warning++;
                        } else {
                            $ok++;
                        }
                    }
                }
            }
        }
        $class = 'ok';
        if ($critical > 0) {
            $nb_ressources = $critical;
            $class = 'crit';
        } else {
            if ($warning > 0) {
                $nb_ressources = $warning;
                $class = 'warn';
            } else {
                $nb_ressources = $ok;
            }
        }
        echo '<div class="ch-item">
         <div class="ch-info-' . $class . '">
			<h1><a href="';
        if ($item->can($item->getID(), 'r')) {
            echo $item->getFormURL() . '?id=' . $item->getID() . '&forcetab=PluginMonitoringHost$0';
        } else {
            echo $CFG_GLPI['root_doc'] . "/plugins/monitoring/front/displayhost.php?itemtype=" . $itemtype . "&items_id=" . $item->getID();
        }
        echo '">' . '<span id="devicea-' . $id . '">' . $item->getName() . '</span></a></h1>
			<p>' . $nb_ressources . '<font style="font-size: 14px;"> / ' . ($ok + $warning + $critical + $acknowledge) . '</font></p>
         </div>
		</div>';
        echo "<script>\n         fittext('devicea-" . $id . "');\n      </script>";
    }