示例#1
0
 function displayCounters($type, $display = 1)
 {
     global $DB, $CFG_GLPI;
     $ok = 0;
     $warningdata = 0;
     $warningconnection = 0;
     $critical = 0;
     $ok_soft = 0;
     $warningdata_soft = 0;
     $warningconnection_soft = 0;
     $critical_soft = 0;
     $acknowledge = 0;
     $play_sound = 0;
     if ($type == 'Ressources') {
         $ok = countElementsInTable("glpi_plugin_monitoring_services", "(`state`='OK' OR `state`='UP') AND `state_type`='HARD'\n                    AND `entities_id` IN (" . $_SESSION['glpiactiveentities_string'] . ")\n                    AND `is_acknowledged`='0'");
         $warningdata = countElementsInTable("glpi_plugin_monitoring_services", "((`state`='WARNING' AND `event` IS NOT NULL) \n                        OR `state`='RECOVERY' OR `state`='FLAPPING')\n                    AND `event` IS NOT NULL\n                    AND `state_type`='HARD'\n                    AND `entities_id` IN (" . $_SESSION['glpiactiveentities_string'] . ")\n                    AND `is_acknowledged`='0'");
         $warningconnection = countElementsInTable("glpi_plugin_monitoring_services", "(`state`='UNKNOWN' OR `state` IS NULL\n                    OR (`state`='WARNING' AND `event` IS NULL))\n                    AND `state_type`='HARD'\n                    AND `entities_id` IN (" . $_SESSION['glpiactiveentities_string'] . ")\n                    AND `is_acknowledged`='0'");
         $critical = countElementsInTable("glpi_plugin_monitoring_services", "(`state`='DOWN' OR `state`='UNREACHABLE' OR `state`='CRITICAL' OR `state`='DOWNTIME')\n                    AND `state_type`='HARD'\n                    AND `entities_id` IN (" . $_SESSION['glpiactiveentities_string'] . ")\n                    AND `is_acknowledged`='0'");
         $warningdata_soft = countElementsInTable("glpi_plugin_monitoring_services", "((`state`='WARNING' AND `event` IS NOT NULL) \n                        OR `state`='RECOVERY' OR `state`='FLAPPING')\n                    AND `state_type`='SOFT'\n                    AND `entities_id` IN (" . $_SESSION['glpiactiveentities_string'] . ")\n                    AND `is_acknowledged`='0'");
         $warningconnection_soft = countElementsInTable("glpi_plugin_monitoring_services", "(`state`='UNKNOWN' OR `state` IS NULL\n                    OR (`state`='WARNING' AND `event` IS NULL))\n                    AND `state_type`='SOFT'\n                    AND `entities_id` IN (" . $_SESSION['glpiactiveentities_string'] . ")\n                    AND `is_acknowledged`='0'");
         $critical_soft = countElementsInTable("glpi_plugin_monitoring_services", "(`state`='DOWN' OR `state`='UNREACHABLE' OR `state`='CRITICAL' OR `state`='DOWNTIME')\n                    AND `state_type`='SOFT'\n                    AND `entities_id` IN (" . $_SESSION['glpiactiveentities_string'] . ")\n                    AND `is_acknowledged`='0'");
         $ok_soft = countElementsInTable("glpi_plugin_monitoring_services", "(`state`='OK' OR `state`='UP') AND `state_type`='SOFT'\n                    AND `entities_id` IN (" . $_SESSION['glpiactiveentities_string'] . ")\n                    AND `is_acknowledged`='0'");
         $acknowledge = countElementsInTable("glpi_plugin_monitoring_services", "`state_type`='HARD'\n                    AND `entities_id` IN (" . $_SESSION['glpiactiveentities_string'] . ")\n                    AND `is_acknowledged`='1'");
         // ** Manage play sound if critical increase since last refresh
         if (isset($_SESSION['plugin_monitoring_dashboard_Ressources'])) {
             if ($critical > $_SESSION['plugin_monitoring_dashboard_Ressources']) {
                 $play_sound = 1;
             }
         }
         $_SESSION['plugin_monitoring_dashboard_Ressources'] = $critical;
     } else {
         if ($type == 'Componentscatalog') {
             $pmComponentscatalog_Host = new PluginMonitoringComponentscatalog_Host();
             $queryCat = "SELECT * FROM `glpi_plugin_monitoring_componentscatalogs`";
             $resultCat = $DB->query($queryCat);
             while ($data = $DB->fetch_array($resultCat)) {
                 $query = "SELECT COUNT(*) AS cpt FROM `" . $pmComponentscatalog_Host->getTable() . "`\n               LEFT JOIN `glpi_plugin_monitoring_services` \n                  ON `plugin_monitoring_componentscatalogs_hosts_id`=`" . $pmComponentscatalog_Host->getTable() . "`.`id`\n               WHERE `plugin_monitoring_componentscalalog_id`='" . $data['id'] . "'\n                  AND (`state`='DOWN' OR `state`='UNREACHABLE' OR `state`='CRITICAL' OR `state`='DOWNTIME')\n                  AND `state_type`='HARD'\n                  AND `entities_id` IN (" . $_SESSION['glpiactiveentities_string'] . ")\n                  AND `is_acknowledged`='0'";
                 $result = $DB->query($query);
                 $data2 = $DB->fetch_assoc($result);
                 if ($data2['cpt'] > 0) {
                     $critical++;
                 } else {
                     $query = "SELECT COUNT(*) AS cpt, `glpi_plugin_monitoring_services`.`state` \n                     FROM `" . $pmComponentscatalog_Host->getTable() . "`\n                  LEFT JOIN `glpi_plugin_monitoring_services` \n                     ON `plugin_monitoring_componentscatalogs_hosts_id`=`" . $pmComponentscatalog_Host->getTable() . "`.`id`\n                  WHERE `plugin_monitoring_componentscalalog_id`='" . $data['id'] . "'\n                     AND (`state`='WARNING' OR `state`='UNKNOWN' OR `state`='RECOVERY' OR `state`='FLAPPING' OR `state` IS NULL)\n                     AND `state_type`='HARD'\n                     AND `entities_id` IN (" . $_SESSION['glpiactiveentities_string'] . ")\n                     AND `is_acknowledged`='0'";
                     $result = $DB->query($query);
                     $data2 = $DB->fetch_assoc($result);
                     if ($data2['cpt'] > 0) {
                         $warningdata++;
                     } else {
                         $query = "SELECT COUNT(*) AS cpt FROM `" . $pmComponentscatalog_Host->getTable() . "`\n                     LEFT JOIN `glpi_plugin_monitoring_services` \n                        ON `plugin_monitoring_componentscatalogs_hosts_id`=`" . $pmComponentscatalog_Host->getTable() . "`.`id`\n                     WHERE `plugin_monitoring_componentscalalog_id`='" . $data['id'] . "'\n                     AND (`state`='OK' OR `state`='UP') AND `state_type`='HARD'\n                     AND `entities_id` IN (" . $_SESSION['glpiactiveentities_string'] . ")\n                     AND `is_acknowledged`='0'";
                         $result = $DB->query($query);
                         $data2 = $DB->fetch_assoc($result);
                         if ($data2['cpt'] > 0) {
                             $ok++;
                         }
                     }
                 }
                 $query = "SELECT COUNT(*) AS cpt FROM `" . $pmComponentscatalog_Host->getTable() . "`\n               LEFT JOIN `glpi_plugin_monitoring_services` \n                  ON `plugin_monitoring_componentscatalogs_hosts_id`=`" . $pmComponentscatalog_Host->getTable() . "`.`id`\n               WHERE `plugin_monitoring_componentscalalog_id`='" . $data['id'] . "'\n                  AND (`state`='DOWN' OR `state`='UNREACHABLE' OR `state`='CRITICAL' OR `state`='DOWNTIME')\n                  AND `state_type`='SOFT'\n                  AND `entities_id` IN (" . $_SESSION['glpiactiveentities_string'] . ")\n                  AND `is_acknowledged`='0'";
                 $result = $DB->query($query);
                 $data2 = $DB->fetch_assoc($result);
                 if ($data2['cpt'] > 0) {
                     $critical_soft++;
                 } else {
                     $query = "SELECT COUNT(*) AS cpt FROM `" . $pmComponentscatalog_Host->getTable() . "`\n                  LEFT JOIN `glpi_plugin_monitoring_services` \n                     ON `plugin_monitoring_componentscatalogs_hosts_id`=`" . $pmComponentscatalog_Host->getTable() . "`.`id`\n                  WHERE `plugin_monitoring_componentscalalog_id`='" . $data['id'] . "'\n                     AND (`state`='WARNING' OR `state`='UNKNOWN' OR `state`='RECOVERY' OR `state`='FLAPPING' OR `state` IS NULL)\n                     AND `state_type`='SOFT'\n                     AND `entities_id` IN (" . $_SESSION['glpiactiveentities_string'] . ")\n                     AND `is_acknowledged`='0'";
                     $result = $DB->query($query);
                     $data2 = $DB->fetch_assoc($result);
                     if ($data2['cpt'] > 0) {
                         $warningdata_soft++;
                     } else {
                         $query = "SELECT COUNT(*) AS cpt FROM `" . $pmComponentscatalog_Host->getTable() . "`\n                     LEFT JOIN `glpi_plugin_monitoring_services` \n                        ON `plugin_monitoring_componentscatalogs_hosts_id`=`" . $pmComponentscatalog_Host->getTable() . "`.`id`\n                     WHERE `plugin_monitoring_componentscalalog_id`='" . $data['id'] . "'\n                        AND (`state`='OK' OR `state`='UP') AND `state_type`='SOFT'\n                        AND `entities_id` IN (" . $_SESSION['glpiactiveentities_string'] . ")\n                        AND `is_acknowledged`='0'";
                         $result = $DB->query($query);
                         $data2 = $DB->fetch_assoc($result);
                         if ($data2['cpt'] > 0) {
                             $ok_soft++;
                         }
                     }
                 }
             }
             // ** Manage play sound if critical increase since last refresh
             if (isset($_SESSION['plugin_monitoring_dashboard_Componentscatalog'])) {
                 if ($critical > $_SESSION['plugin_monitoring_dashboard_Componentscatalog']) {
                     $play_sound = 1;
                 }
             }
             $_SESSION['plugin_monitoring_dashboard_Componentscatalog'] = $critical;
         } else {
             if ($type == 'Businessrules') {
                 $ok = countElementsInTable("glpi_plugin_monitoring_servicescatalogs", "(`state`='OK' OR `state`='UP') AND `state_type`='HARD'\n                 AND `entities_id` IN (" . $_SESSION['glpiactiveentities_string'] . ")\n                 AND `is_acknowledged`='0'");
                 $warningdata = countElementsInTable("glpi_plugin_monitoring_servicescatalogs", "(`state`='WARNING' OR `state`='UNKNOWN'\n                        OR `state`='RECOVERY' OR `state`='FLAPPING')\n                    AND `state_type`='HARD'\n                    AND `entities_id` IN (" . $_SESSION['glpiactiveentities_string'] . ")\n                    AND `is_acknowledged`='0'");
                 $critical = countElementsInTable("glpi_plugin_monitoring_servicescatalogs", "(`state`='DOWN' OR `state`='UNREACHABLE' OR `state`='CRITICAL' OR `state`='DOWNTIME')\n                    AND `state_type`='HARD'\n                    AND `entities_id` IN (" . $_SESSION['glpiactiveentities_string'] . ")\n                    AND `is_acknowledged`='0'");
                 $warningdata_soft = countElementsInTable("glpi_plugin_monitoring_servicescatalogs", "(`state`='WARNING' OR `state`='UNKNOWN' \n                        OR `state`='RECOVERY' OR `state`='FLAPPING')\n                    AND `state_type`='SOFT'\n                    AND `entities_id` IN (" . $_SESSION['glpiactiveentities_string'] . ")\n                    AND `is_acknowledged`='0'");
                 $critical_soft = countElementsInTable("glpi_plugin_monitoring_servicescatalogs", "(`state`='DOWN' OR `state`='UNREACHABLE' OR `state`='CRITICAL' OR `state`='DOWNTIME')\n                    AND `state_type`='SOFT'\n                    AND `entities_id` IN (" . $_SESSION['glpiactiveentities_string'] . ")\n                    AND `is_acknowledged`='0'");
                 $ok_soft = countElementsInTable("glpi_plugin_monitoring_servicescatalogs", "(`state`='OK' OR `state`='UP') AND `state_type`='SOFT'\n                  AND `entities_id` IN (" . $_SESSION['glpiactiveentities_string'] . ")\n                    AND `is_acknowledged`='0'");
                 // ** Manage play sound if critical increase since last refresh
                 if (isset($_SESSION['plugin_monitoring_dashboard_Businessrules'])) {
                     if ($critical > $_SESSION['plugin_monitoring_dashboard_Businessrules']) {
                         $play_sound = 1;
                     }
                 }
                 $_SESSION['plugin_monitoring_dashboard_Businessrules'] = $critical;
             }
         }
     }
     if ($display == '0') {
         $a_return = array();
         $a_return['ok'] = strval($ok);
         $a_return['ok_soft'] = strval($ok_soft);
         $a_return['warningdata'] = strval($warningdata);
         $a_return['warningconnection'] = strval($warningconnection);
         $a_return['warningdata_soft'] = strval($warningdata_soft);
         $a_return['warningconnection_soft'] = strval($warningconnection_soft);
         $a_return['critical'] = strval($critical);
         $a_return['critical_soft'] = strval($critical_soft);
         $a_return['acknowledge'] = strval($acknowledge);
         return $a_return;
     }
     $critical_link = $CFG_GLPI['root_doc'] . "/plugins/monitoring/front/service.php?hidesearch=1&reset=reset" . "&field[0]=3&searchtype[0]=contains&contains[0]=CRITICAL&link[1]=AND" . "&field[1]=23&searchtype[1]=equals&contains[1]=0&link[2]=OR" . "&field[2]=3&searchtype[2]=contains&contains[2]=DOWN&link[3]=AND" . "&field[3]=23&searchtype[3]=equals&contains[3]=0&link[4]=OR" . "&field[4]=3&searchtype[4]=contains&contains[4]=UNREACHABLE&link[5]=AND" . "&field[5]=23&searchtype[5]=equals&contains[5]=0" . "&itemtype=PluginMonitoringService&start=0&glpi_tab=3'";
     $warning_link = $CFG_GLPI['root_doc'] . "/plugins/monitoring/front/service.php?hidesearch=1&reset=reset" . "&field[0]=3&searchtype[0]=contains&contains[0]=FLAPPING&link[1]=OR" . "&field[1]=3&searchtype[1]=contains&contains[1]=RECOVERY&link[2]=OR" . "&field[2]=3&searchtype[2]=contains&contains[2]=WARNING&link[3]=OR" . "&field[3]=3&searchtype[3]=contains&contains[3]=UNKNOWN" . "&itemtype=PluginMonitoringService&start=0&glpi_tab=3'";
     $warningdata_link = $CFG_GLPI['root_doc'] . "/plugins/monitoring/front/service.php?hidesearch=1&reset=reset" . "&field[0]=3&searchtype[0]=contains&contains[0]=FLAPPING&link[1]=OR" . "&field[1]=3&searchtype[1]=contains&contains[1]=RECOVERY&link[2]=OR" . "&field[2]=3&searchtype[2]=contains&contains[2]=WARNING&link[3]=AND" . "&field[3]=9&searchtype[3]=contains&contains[3]=^" . "&itemtype=PluginMonitoringService&start=0&glpi_tab=3'";
     $warningconnection_link = $CFG_GLPI['root_doc'] . "/plugins/monitoring/front/service.php?hidesearch=1&reset=reset" . "&field[0]=3&searchtype[0]=contains&contains[0]=UNKNOWN&link[1]=OR" . "&field[1]=3&searchtype[1]=contains&contains[1]=NULL&link[2]=OR" . "&field[2]=3&searchtype[2]=contains&contains[2]=WARNING&link[3]=AND" . "&field[3]=9&searchtype[3]=contains&contains[3]=^\$" . "&itemtype=PluginMonitoringService&start=0&glpi_tab=3'";
     $ok_link = $CFG_GLPI['root_doc'] . "/plugins/monitoring/front/service.php?hidesearch=1&reset=reset&" . "field[0]=3&searchtype[0]=contains&contains[0]=OK&link[1]=OR" . "&field[1]=3&searchtype[1]=contains&contains[1]=UP" . "&itemtype=PluginMonitoringService&start=0&glpi_tab=3'";
     $acknowledge_link = $CFG_GLPI['root_doc'] . "/plugins/monitoring/front/service.php?hidesearch=1&reset=reset&" . "field[0]=23&searchtype[0]=equals&contains[0]=1" . "&itemtype=PluginMonitoringService&start=0&glpi_tab=3'";
     echo "<table align='center'>";
     echo "<tr>";
     echo "<td>";
     $background = '';
     if ($critical > 0) {
         $background = 'background="' . $CFG_GLPI['root_doc'] . '/plugins/monitoring/pics/bg_critical.png"';
     }
     echo "<table class='tab_cadre' width='414' height='130' " . $background . " >";
     echo "<tr>";
     echo "<th style='background-color:transparent;'>";
     if ($type == 'Ressources' or $type == 'Componentscatalog') {
         echo "<a href='" . $critical_link . ">" . "<font color='black' style='font-size: 12px;font-weight: bold;'>" . __('Critical', 'monitoring') . "</font></a>";
     } else {
         echo __('Critical', 'monitoring');
     }
     echo "</td>";
     echo "</tr>";
     echo "<tr>";
     echo "<th style='background-color:transparent;'>";
     if ($type == 'Ressources' or $type == 'Componentscatalog') {
         echo "<a href='" . $critical_link . ">" . "<font color='black' style='font-size: 52px;font-weight: bold;'>" . $critical . "</font></a>";
     } else {
         echo "<font style='font-size: 52px;'>" . $critical . "</font>";
     }
     echo "</th>";
     echo "</tr>";
     echo "<tr>";
     echo "<th style='background-color:transparent;'>";
     echo "<font style='font-size: 11px;'>Soft : " . $critical_soft . "</font>";
     echo "</th>";
     echo "</tr>";
     echo "</table>";
     echo "</td>";
     echo "<td>";
     $background = '';
     if ($warningdata > 0) {
         $background = 'background="' . $CFG_GLPI['root_doc'] . '/plugins/monitoring/pics/bg_warning.png"';
     }
     if ($type == 'Ressources') {
         echo "<table class='tab_cadre' width='188' height='130' " . $background . " >";
     } else {
         echo "<table class='tab_cadre' width='316' height='130' " . $background . " >";
     }
     echo "<tr>";
     echo "<th style='background-color:transparent;'>";
     if ($type == 'Ressources') {
         echo "<a href='" . $warningdata_link . ">" . "<font color='black' style='font-size: 12px;font-weight: bold;'>" . __('Warning', 'monitoring') . "</font></a>";
     } else {
         if ($type == 'Componentscatalog') {
             echo "<a href='" . $warning_link . ">" . "<font color='black' style='font-size: 12px;font-weight: bold;'>" . __('Warning', 'monitoring') . "</font></a>";
         } else {
             echo __('Warning', 'monitoring');
         }
     }
     echo "</td>";
     echo "</tr>";
     echo "<tr>";
     echo "<th style='background-color:transparent;'>";
     if ($type == 'Ressources') {
         echo "<a href='" . $warningdata_link . ">" . "<font color='black' style='font-size: 52px;'>" . $warningdata . "</font></a>";
     } else {
         if ($type == 'Componentscatalog') {
             echo "<a href='" . $warning_link . ">" . "<font color='black' style='font-size: 52px;'>" . $warningdata . "</font></a>";
         } else {
             echo "<font style='font-size: 52px;'>" . $warningdata . "</font>";
         }
     }
     echo "</th>";
     echo "</tr>";
     echo "<tr>";
     echo "<th style='background-color:transparent;'>";
     echo "<font style='font-size: 11px;'>Soft : " . $warningdata_soft . "</font>";
     echo "</th>";
     echo "</tr>";
     echo "</table>";
     echo "</td>";
     if ($type == 'Ressources') {
         echo "<td>";
         $background = '';
         if ($warningconnection > 0) {
             $background = 'background="' . $CFG_GLPI['root_doc'] . '/plugins/monitoring/pics/bg_warning_yellow.png"';
         }
         echo "<table class='tab_cadre' width='188' height='130' " . $background . " >";
         echo "<tr>";
         echo "<th style='background-color:transparent;'>";
         if ($type == 'Ressources' or $type == 'Componentscatalog') {
             echo "<a href='" . $warningconnection_link . ">" . "<font color='black' style='font-size: 12px;font-weight: bold;'>" . __('Warning (connection)', 'monitoring') . "</font></a>";
         } else {
             echo __('Warning (connection)', 'monitoring');
         }
         echo "</td>";
         echo "</tr>";
         echo "<tr>";
         echo "<th style='background-color:transparent;'>";
         if ($type == 'Ressources' or $type == 'Componentscatalog') {
             echo "<a href='" . $warningconnection_link . ">" . "<font color='black' style='font-size: 52px;'>" . $warningconnection . "</font></a>";
         } else {
             echo "<font style='font-size: 52px;'>" . $warningconnection . "</font>";
         }
         echo "</th>";
         echo "</tr>";
         echo "<tr>";
         echo "<th style='background-color:transparent;'>";
         echo "<font style='font-size: 11px;'>Soft : " . $warningconnection_soft . "</font>";
         echo "</th>";
         echo "</tr>";
         echo "</table>";
         echo "</td>";
     }
     echo "<td>";
     $background = '';
     if ($ok > 0) {
         $background = 'background="' . $CFG_GLPI['root_doc'] . '/plugins/monitoring/pics/bg_ok.png"';
     }
     echo "<table class='tab_cadre' width='158' height='130' " . $background . " >";
     echo "<tr>";
     echo "<th style='background-color:transparent;'>";
     if ($type == 'Ressources' or $type == 'Componentscatalog') {
         echo "<a href='" . $ok_link . ">" . "<font color='black' style='font-size: 12px;font-weight: bold;'>" . __('OK', 'monitoring') . "</font></a>";
     } else {
         echo __('OK', 'monitoring');
     }
     echo "</td>";
     echo "</tr>";
     echo "<tr>";
     echo "<th style='background-color:transparent;'>";
     if ($type == 'Ressources' or $type == 'Componentscatalog') {
         echo "<a href='" . $ok_link . ">" . "<font color='black' style='font-size: 52px;font-weight: bold;'>" . $ok . "</font></a>";
     } else {
         echo "<font style='font-size: 52px;'>" . $ok . "</font>";
     }
     echo "</th>";
     echo "</tr>";
     echo "<tr>";
     echo "<th style='background-color:transparent;'>";
     echo "<font style='font-size: 11px;'>Soft : " . $ok_soft . "</font>";
     echo "</th>";
     echo "</tr>";
     echo "</table>";
     echo "</td>";
     echo "<td>";
     $background = '';
     if ($acknowledge > 0) {
         $background = 'background="' . $CFG_GLPI['root_doc'] . '/plugins/monitoring/pics/bg_acknowledge.png"';
     }
     echo "<table class='tab_cadre' width='120' height='130' " . $background . " >";
     echo "<tr>";
     echo "<th style='background-color:transparent;'>";
     if ($type == 'Ressources' or $type == 'Componentscatalog') {
         echo "<a href='" . $acknowledge_link . "'>" . "<font color='black' style='font-size: 12px;font-weight: bold;'>" . __('Acknowledge', 'monitoring') . "</font></a>";
     } else {
         echo __('Acknowledge', 'monitoring');
     }
     echo "</td>";
     echo "</tr>";
     echo "<tr>";
     echo "<th style='background-color:transparent;'>";
     if ($type == 'Ressources' or $type == 'Componentscatalog') {
         echo "<a href='" . $acknowledge_link . "'>" . "<font color='black' style='font-size: 52px;font-weight: bold;'>" . $acknowledge . "</font></a>";
     } else {
         echo "<font style='font-size: 52px;'>" . $acknowledge . "</font>";
     }
     echo "</th>";
     echo "</tr>";
     echo "<tr>";
     echo "<th style='background-color:transparent;'>&nbsp;";
     echo "</th>";
     echo "</tr>";
     echo "</table>";
     echo "</td>";
     echo "</tr>";
     echo "</table><br/>";
     // ** play sound
     if ($play_sound == '1') {
         echo '<audio autoplay="autoplay">
              <source src="../audio/star-trek.ogg" type="audio/ogg" />
              Your browser does not support the audio element.
            </audio>';
     }
 }
   static function getServicesList($statetype, $view) {
      global $DB;

      $services = array();

      if ($view == 'Ressources') {

         switch ($statetype) {

            case "ok":
               $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 (`state`='OK' OR `state`='UP') AND `state_type`='HARD'";
               $result = $DB->query($query);
               while ($data=$DB->fetch_array($result)) {
                  $itemtype = $data['itemtype'];
                  $item = new $itemtype();
                  $item->getFromDB($data['items_id']);

                  $services[] = "(".$itemtype.") ".$item->getName()."\n=> ".$data['name'];
               }
               break;

            case "warning":
               $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 (`state`='WARNING' OR `state`='UNKNOWN' OR `state`='RECOVERY' OR `state`='FLAPPING' OR `state` IS NULL)
                    AND `state_type`='HARD'";
               $result = $DB->query($query);
               while ($data=$DB->fetch_array($result)) {
                  $itemtype = $data['itemtype'];
                  $item = new $itemtype();
                  $item->getFromDB($data['items_id']);

                  $services[] = "(".$itemtype.") ".$item->getName()."\n=> ".$data['name'];
               }
               break;

            case "critical":
               $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 (`state`='DOWN' OR `state`='UNREACHABLE' OR `state`='CRITICAL' OR `state`='DOWNTIME')
                    AND `state_type`='HARD'";
               $result = $DB->query($query);
               while ($data=$DB->fetch_array($result)) {
                  $itemtype = $data['itemtype'];
                  $item = new $itemtype();
                  $item->getFromDB($data['items_id']);

                  $services[] = "(".$itemtype.") ".$item->getName()."\n=> ".$data['name'];
               }
               break;
         }

      } else if ($view == 'Componentscatalog') {
         $pmComponentscatalog_Host = new PluginMonitoringComponentscatalog_Host();
         $queryCat = "SELECT * FROM `glpi_plugin_monitoring_componentscatalogs`";
         $resultCat = $DB->query($queryCat);
         while ($data=$DB->fetch_array($resultCat)) {

            $query = "SELECT * FROM `".$pmComponentscatalog_Host->getTable()."`
               WHERE `plugin_monitoring_componentscalalog_id`='".$data['id']."'";
            $result = $DB->query($query);
            $state = array();
            $state['ok'] = 0;
            $state['warning'] = 0;
            $state['critical'] = 0;
            while ($dataComponentscatalog_Host=$DB->fetch_array($result)) {

               $state['ok'] += countElementsInTable("glpi_plugin_monitoring_services",
                       "(`state`='OK' OR `state`='UP') AND `state_type`='HARD'
                          AND `plugin_monitoring_componentscatalogs_hosts_id`='".$dataComponentscatalog_Host['id']."'");


               $state['warning'] += countElementsInTable("glpi_plugin_monitoring_services",
                       "(`state`='WARNING' OR `state`='UNKNOWN' OR `state`='RECOVERY' OR `state`='FLAPPING' OR `state` IS NULL)
                          AND `state_type`='HARD'
                          AND `plugin_monitoring_componentscatalogs_hosts_id`='".$dataComponentscatalog_Host['id']."'");

               $state['critical'] += countElementsInTable("glpi_plugin_monitoring_services",
                       "(`state`='DOWN' OR `state`='UNREACHABLE' OR `state`='CRITICAL' OR `state`='DOWNTIME')
                          AND `state_type`='HARD'
                          AND `plugin_monitoring_componentscatalogs_hosts_id`='".$dataComponentscatalog_Host['id']."'");

            }
            if ($state['critical'] > 0) {
               if ($statetype == 'critical') {
                  $services[] = "(Catalog) ".$data['name'];
               }
            } else if ($state['warning'] > 0) {
               if ($statetype == 'warning') {
                  $services[] = "(Catalog) ".$data['name'];
               }
            } else if ($state['ok'] > 0) {
               if ($statetype == 'ok') {
                  $services[] = "(Catalog) ".$data['name'];
               }
            }
         }
      } else if ($view == 'Businessrules') {

      }
      return $services;
   }
 function showWidget($id)
 {
     global $LANG, $DB, $CFG_GLPI;
     $pmService = new PluginMonitoringService();
     $pmComponentscatalog_Host = new PluginMonitoringComponentscatalog_Host();
     $input = '';
     $this->getFromDB($id);
     $data = $this->fields;
     $input .= '<table  class="tab_cadre_fixe" style="width:158px;">';
     $input .= '<tr class="tab_bg_1">';
     $input .= '<th colspan="2" style="font-size:18px;" height="60">';
     $input .= $data['name'] . "&nbsp;";
     $input .= '</th>';
     $input .= '</tr>';
     $stateg = array();
     $stateg['OK'] = 0;
     $stateg['WARNING'] = 0;
     $stateg['CRITICAL'] = 0;
     $a_gstate = array();
     $nb_ressources = 0;
     $query = "SELECT * FROM `" . $pmComponentscatalog_Host->getTable() . "`\n         WHERE `plugin_monitoring_componentscalalog_id`='" . $data['id'] . "'";
     $result = $DB->query($query);
     while ($dataComponentscatalog_Host = $DB->fetch_array($result)) {
         $queryService = "SELECT * FROM `" . $pmService->getTable() . "`\n            WHERE `plugin_monitoring_componentscatalogs_hosts_id`='" . $dataComponentscatalog_Host['id'] . "'\n               AND `entities_id` IN (" . $_SESSION['glpiactiveentities_string'] . ")";
         $resultService = $DB->query($queryService);
         while ($dataService = $DB->fetch_array($resultService)) {
             $nb_ressources++;
             $state = array();
             $state['OK'] = 0;
             $state['WARNING'] = 0;
             $state['CRITICAL'] = 0;
             if ($dataService['state_type'] != "HARD") {
                 $a_gstate[$dataService['id']] = "OK";
             } else {
                 switch ($dataService['state']) {
                     case 'UP':
                     case 'OK':
                         $state['OK']++;
                         break;
                     case 'DOWN':
                     case 'UNREACHABLE':
                     case 'CRITICAL':
                     case 'DOWNTIME':
                         $state['CRITICAL']++;
                         break;
                     case 'WARNING':
                     case 'UNKNOWN':
                     case 'RECOVERY':
                     case 'FLAPPING':
                         $state['WARNING']++;
                         break;
                 }
                 if ($state['CRITICAL'] >= 1) {
                     $a_gstate[$dataService['id']] = "CRITICAL";
                 } else {
                     if ($state['WARNING'] >= 1) {
                         $a_gstate[$dataService['id']] = "WARNING";
                     } else {
                         $a_gstate[$dataService['id']] = "OK";
                     }
                 }
             }
         }
     }
     foreach ($a_gstate as $value) {
         $stateg[$value]++;
     }
     $input .= '<tr class="tab_bg_1">';
     $input .= '<td>';
     $input .= $LANG['plugin_monitoring']['service'][0] . "&nbsp;:";
     $input .= '</td>';
     $input .= '<th align="center" height="40" width="50%">';
     $link = $CFG_GLPI['root_doc'] . "/plugins/monitoring/front/service.php?reset=reset&field[0]=8&searchtype[0]=equals&contains[0]=" . $id . "&itemtype=PluginMonitoringService&start=0&glpi_tab=3";
     $input .= '<a href="' . $link . '">' . $nb_ressources . '</a>';
     $input .= '</th>';
     $input .= '</tr>';
     $background = '';
     $count = 0;
     $link = '';
     if ($stateg['CRITICAL'] > 0) {
         $count = $stateg['CRITICAL'];
         $background = 'background="' . $CFG_GLPI['root_doc'] . '/plugins/monitoring/pics/bg_critical.png"';
         $link = $CFG_GLPI['root_doc'] . "/plugins/monitoring/front/service.php?reset=reset&field[0]=3&searchtype[0]=equals&contains[0]=CRITICAL" . "&link[1]=AND&field[1]=8&searchtype[1]=equals&contains[1]=" . $id . "&link[2]=OR&field[2]=3&searchtype[2]=equals&contains[2]=DOWN" . "&link[3]=AND&field[3]=8&searchtype[3]=equals&contains[3]=" . $id . "&link[4]=OR&field[4]=3&searchtype[4]=equals&contains[4]=UNREACHABLE" . "&link[5]=AND&field[5]=8&searchtype[5]=equals&contains[5]=" . $id . "&itemtype=PluginMonitoringService&start=0&glpi_tab=3";
     } else {
         if ($stateg['WARNING'] > 0) {
             $count = $stateg['WARNING'];
             $background = 'background="' . $CFG_GLPI['root_doc'] . '/plugins/monitoring/pics/bg_warning.png"';
             $link = $CFG_GLPI['root_doc'] . "/plugins/monitoring/front/service.php?reset=reset&field[0]=3&searchtype[0]=equals&contains[0]=WARNING" . "&link[1]=AND&field[1]=8&searchtype[1]=equals&contains[1]=" . $id . "&link[2]=OR&field[2]=3&searchtype[2]=equals&contains[2]=UNKNOWN" . "&link[3]=AND&field[3]=8&searchtype[3]=equals&contains[3]=" . $id . "&link[4]=OR&field[4]=3&searchtype[4]=equals&contains[4]=RECOVERY" . "&link[5]=AND&field[5]=8&searchtype[5]=equals&contains[5]=" . $id . "&link[6]=OR&field[6]=3&searchtype[6]=equals&contains[6]=FLAPPING" . "&link[7]=AND&field[7]=8&searchtype[7]=equals&contains[7]=" . $id . "&itemtype=PluginMonitoringService&start=0&glpi_tab=3";
         } else {
             if ($stateg['OK'] > 0) {
                 $count = $stateg['OK'];
                 $background = 'background="' . $CFG_GLPI['root_doc'] . '/plugins/monitoring/pics/bg_ok.png"';
                 $link = $CFG_GLPI['root_doc'] . "/plugins/monitoring/front/service.php?reset=reset&field[0]=3&searchtype[0]=equals&contains[0]=OK" . "&link[1]=AND&field[1]=8&searchtype[1]=equals&contains[1]=" . $id . "&link[2]=OR&field[2]=3&searchtype[2]=equals&contains[2]=UP" . "&itemtype=PluginMonitoringService&start=0&glpi_tab=3";
             }
         }
     }
     $input .= "<tr " . $background . ">";
     $input .= '<th style="background-color:transparent;" ' . $background . ' colspan="2" height="100">';
     $input .= '<a href="' . $link . '"><font style="font-size: 52px; color:black">' . $count . '</font></a>';
     $input .= '</th>';
     $input .= '</tr>';
     $input .= '</table>';
     return $input;
 }
   function getRessources($componentscatalogs_id, $state, $state_type='HARD') {
      global $DB;

      $a_services = array();

      $pmComponentscatalog_Host = new PluginMonitoringComponentscatalog_Host();
      $pmService = new PluginMonitoringService();

      $query = "SELECT * FROM `glpi_plugin_monitoring_services`
         LEFT JOIN `".$pmComponentscatalog_Host->getTable()."`
            ON `plugin_monitoring_componentscatalogs_hosts_id`=
               `".$pmComponentscatalog_Host->getTable()."`.`id`
         WHERE `plugin_monitoring_componentscalalog_id`='".$componentscatalogs_id."'
            AND `state_type` LIKE '".$state_type."'
         ORDER BY `name`";
      $result = $DB->query($query);
      while ($data=$DB->fetch_array($result)) {
         $pmService->getFromDB($dataService["id"]);
         if ($pmService->getShortState()) {
         // if (PluginMonitoringHost::getState($data['state'],
                                               // $data['state_type'],
                                               // '',
                                               // $data['is_acknowledged']) == $state) {
            $a_services[] = $data;
         }
      }
      return $a_services;
   }
 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;
 }
示例#6
0
   function displayCounters($type, $display=1) {
      global $DB,$CFG_GLPI;

      $ok = 0;
      $warningdata = 0;
      $warningconnection = 0;
      $critical = 0;
      $ok_soft = 0;
      $warningdata_soft = 0;
      $warningconnection_soft = 0;
      $critical_soft = 0;
      $acknowledge = 0;

      $play_sound = 0;

      if ($type == 'Ressources') {
         $ok = $this->countServicesQuery("
            `glpi_plugin_monitoring_services`.`state_type`='HARD'
            AND `glpi_plugin_monitoring_services`.`state`='OK'
            AND `glpi_plugin_monitoring_hosts`.`is_acknowledged`='0'
            AND `glpi_plugin_monitoring_services`.`is_acknowledged`='0'");

         $warningdata = $this->countServicesQuery("
            `glpi_plugin_monitoring_services`.`state_type`='HARD'
            AND (
                  (`glpi_plugin_monitoring_services`.`state`='WARNING' AND `glpi_plugin_monitoring_services`.`event` IS NOT NULL AND `glpi_plugin_monitoring_services`.`event` <> '') OR
                  (`glpi_plugin_monitoring_services`.`state`='RECOVERY') OR
                  (`glpi_plugin_monitoring_services`.`state`='FLAPPING')
            )
            AND `glpi_plugin_monitoring_hosts`.`is_acknowledged`='0'
            AND `glpi_plugin_monitoring_services`.`is_acknowledged`='0'");

         $warningconnection = $this->countServicesQuery("
            `glpi_plugin_monitoring_services`.`state_type`='HARD'
            AND (
                  (`glpi_plugin_monitoring_services`.`state`='WARNING' AND `glpi_plugin_monitoring_services`.`event` IS NULL) OR
                  (`glpi_plugin_monitoring_services`.`state`='UNKNOWN') OR
                  (`glpi_plugin_monitoring_services`.`state` IS NULL)
            )
            AND `glpi_plugin_monitoring_hosts`.`is_acknowledged`='0'
            AND `glpi_plugin_monitoring_services`.`is_acknowledged`='0'");

         $critical = $this->countServicesQuery("
            `glpi_plugin_monitoring_services`.`state_type`='HARD'
            AND `glpi_plugin_monitoring_services`.`state`='CRITICAL'
            AND `glpi_plugin_monitoring_hosts`.`is_acknowledged`='0'
            AND `glpi_plugin_monitoring_services`.`is_acknowledged`='0'");


         $ok_soft = $this->countServicesQuery("
            `glpi_plugin_monitoring_services`.`state_type`!='HARD'
            AND `glpi_plugin_monitoring_services`.`state`='OK'
            AND `glpi_plugin_monitoring_hosts`.`is_acknowledged`='0'
            AND `glpi_plugin_monitoring_services`.`is_acknowledged`='0'");

         $warningdata_soft = $this->countServicesQuery("
            `glpi_plugin_monitoring_services`.`state_type`!='HARD'
            AND (
                  (`glpi_plugin_monitoring_services`.`state`='WARNING' AND `glpi_plugin_monitoring_services`.`event` IS NOT NULL) OR
                  (`glpi_plugin_monitoring_services`.`state`='RECOVERY') OR
                  (`glpi_plugin_monitoring_services`.`state`='FLAPPING')
            )
            AND `glpi_plugin_monitoring_hosts`.`is_acknowledged`='0'
            AND `glpi_plugin_monitoring_services`.`is_acknowledged`='0'");

         $warningconnection_soft = $this->countServicesQuery("
            `glpi_plugin_monitoring_services`.`state_type`!='HARD'
            AND (
                  (`glpi_plugin_monitoring_services`.`state`='WARNING' AND `glpi_plugin_monitoring_services`.`event` IS NULL) OR
                  (`glpi_plugin_monitoring_services`.`state`='UNKNOWN') OR
                  (`glpi_plugin_monitoring_services`.`state` IS NULL)
            )
            AND `glpi_plugin_monitoring_hosts`.`is_acknowledged`='0'
            AND `glpi_plugin_monitoring_services`.`is_acknowledged`='0'");

         $critical_soft = $this->countServicesQuery("
            `glpi_plugin_monitoring_services`.`state_type`!='HARD'
            AND `glpi_plugin_monitoring_services`.`state`='CRITICAL'
            AND `glpi_plugin_monitoring_hosts`.`is_acknowledged`='0'
            AND `glpi_plugin_monitoring_services`.`is_acknowledged`='0'");


         $acknowledge = $this->countServicesQuery("
            `glpi_plugin_monitoring_services`.`is_acknowledged`='1'");
            // `glpi_plugin_monitoring_hosts`.`is_acknowledged`='1'
            // OR `glpi_plugin_monitoring_services`.`is_acknowledged`='1'");

         // ** Manage play sound if critical increase since last refresh
            if (isset($_SESSION['plugin_monitoring_dashboard_Ressources'])) {
               if ($critical > $_SESSION['plugin_monitoring_dashboard_Ressources']) {
                  $play_sound = 1;
               }
            }
            $_SESSION['plugin_monitoring_dashboard_Ressources'] = $critical;

      } else if ($type == 'Componentscatalog') {
         $pmComponentscatalog_Host = new PluginMonitoringComponentscatalog_Host();
         $queryCat = "SELECT * FROM `glpi_plugin_monitoring_componentscatalogs`";
         $resultCat = $DB->query($queryCat);
         while ($data=$DB->fetch_array($resultCat)) {

            $query = "SELECT COUNT(*) AS cpt FROM `".$pmComponentscatalog_Host->getTable()."`
               LEFT JOIN `glpi_plugin_monitoring_services`
                  ON `plugin_monitoring_componentscatalogs_hosts_id`=`".$pmComponentscatalog_Host->getTable()."`.`id`
               WHERE `plugin_monitoring_componentscalalog_id`='".$data['id']."'
                  AND (`state`='DOWN' OR `state`='UNREACHABLE' OR `state`='CRITICAL' OR `state`='DOWNTIME')
                  AND `state_type`='HARD'
                  AND `entities_id` IN (".$_SESSION['glpiactiveentities_string'].")
                  AND `is_acknowledged`='0'";
//            Toolbox::logInFile("pm", "Query critical - $query\n");
            $result = $DB->query($query);
            $data2 = $DB->fetch_assoc($result);
            if ($data2['cpt'] > 0) {
               $critical++;
            } else {
               $query = "SELECT COUNT(*) AS cpt, `glpi_plugin_monitoring_services`.`state`
                     FROM `".$pmComponentscatalog_Host->getTable()."`
                  LEFT JOIN `glpi_plugin_monitoring_services`
                     ON `plugin_monitoring_componentscatalogs_hosts_id`=`".$pmComponentscatalog_Host->getTable()."`.`id`
                  WHERE `plugin_monitoring_componentscalalog_id`='".$data['id']."'
                     AND (`state`='WARNING' OR `state`='UNKNOWN' OR `state`='RECOVERY' OR `state`='FLAPPING' OR `state` IS NULL)
                     AND `state_type`='HARD'
                     AND `entities_id` IN (".$_SESSION['glpiactiveentities_string'].")
                     AND `is_acknowledged`='0'";
               $result = $DB->query($query);
               $data2 = $DB->fetch_assoc($result);
               if ($data2['cpt'] > 0) {
                  $warningdata++;
               } else {
                  $query = "SELECT COUNT(*) AS cpt FROM `".$pmComponentscatalog_Host->getTable()."`
                     LEFT JOIN `glpi_plugin_monitoring_services`
                        ON `plugin_monitoring_componentscatalogs_hosts_id`=`".$pmComponentscatalog_Host->getTable()."`.`id`
                     WHERE `plugin_monitoring_componentscalalog_id`='".$data['id']."'
                     AND (`state`='OK' OR `state`='UP') AND `state_type`='HARD'
                     AND `entities_id` IN (".$_SESSION['glpiactiveentities_string'].")
                     AND `is_acknowledged`='0'";
                  $result = $DB->query($query);
                  $data2 = $DB->fetch_assoc($result);
                  if ($data2['cpt'] > 0) {
                     $ok++;
                  }
               }
            }

           $query = "SELECT COUNT(*) AS cpt FROM `".$pmComponentscatalog_Host->getTable()."`
               LEFT JOIN `glpi_plugin_monitoring_services`
                  ON `plugin_monitoring_componentscatalogs_hosts_id`=`".$pmComponentscatalog_Host->getTable()."`.`id`
               WHERE `plugin_monitoring_componentscalalog_id`='".$data['id']."'
                  AND (`state`='DOWN' OR `state`='UNREACHABLE' OR `state`='CRITICAL' OR `state`='DOWNTIME')
                  AND `state_type`='SOFT'
                  AND `entities_id` IN (".$_SESSION['glpiactiveentities_string'].")
                  AND `is_acknowledged`='0'";
            $result = $DB->query($query);
            $data2 = $DB->fetch_assoc($result);
            if ($data2['cpt'] > 0) {
               $critical_soft++;
            } else {
               $query = "SELECT COUNT(*) AS cpt FROM `".$pmComponentscatalog_Host->getTable()."`
                  LEFT JOIN `glpi_plugin_monitoring_services`
                     ON `plugin_monitoring_componentscatalogs_hosts_id`=`".$pmComponentscatalog_Host->getTable()."`.`id`
                  WHERE `plugin_monitoring_componentscalalog_id`='".$data['id']."'
                     AND (`state`='WARNING' OR `state`='UNKNOWN' OR `state`='RECOVERY' OR `state`='FLAPPING' OR `state` IS NULL)
                     AND `state_type`='SOFT'
                     AND `entities_id` IN (".$_SESSION['glpiactiveentities_string'].")
                     AND `is_acknowledged`='0'";
               $result = $DB->query($query);
               $data2 = $DB->fetch_assoc($result);
               if ($data2['cpt'] > 0) {
                  $warningdata_soft++;
               } else {
                  $query = "SELECT COUNT(*) AS cpt FROM `".$pmComponentscatalog_Host->getTable()."`
                     LEFT JOIN `glpi_plugin_monitoring_services`
                        ON `plugin_monitoring_componentscatalogs_hosts_id`=`".$pmComponentscatalog_Host->getTable()."`.`id`
                     WHERE `plugin_monitoring_componentscalalog_id`='".$data['id']."'
                        AND (`state`='OK' OR `state`='UP') AND `state_type`='SOFT'
                        AND `entities_id` IN (".$_SESSION['glpiactiveentities_string'].")
                        AND `is_acknowledged`='0'";
                  $result = $DB->query($query);
                  $data2 = $DB->fetch_assoc($result);
                  if ($data2['cpt'] > 0) {
                     $ok_soft++;
                  }
               }
            }
         }

         // ** Manage play sound if critical increase since last refresh
            if (isset($_SESSION['plugin_monitoring_dashboard_Componentscatalog'])) {
               if ($critical > $_SESSION['plugin_monitoring_dashboard_Componentscatalog']) {
                  $play_sound = 1;
               }
            }
            $_SESSION['plugin_monitoring_dashboard_Componentscatalog'] = $critical;

      } else if ($type == 'Businessrules') {
         $ok = countElementsInTable("glpi_plugin_monitoring_servicescatalogs",
                 "(`state`='OK' OR `state`='UP') AND `state_type`='HARD'
                 AND `entities_id` IN (".$_SESSION['glpiactiveentities_string'].")
                 AND `is_acknowledged`='0'");

         $warningdata = countElementsInTable("glpi_plugin_monitoring_servicescatalogs",
                 "(`state`='WARNING' OR `state`='UNKNOWN'
                        OR `state`='RECOVERY' OR `state`='FLAPPING')
                    AND `state_type`='HARD'
                    AND `entities_id` IN (".$_SESSION['glpiactiveentities_string'].")
                    AND `is_acknowledged`='0'");

         $critical = countElementsInTable("glpi_plugin_monitoring_servicescatalogs",
                 "(`state`='DOWN' OR `state`='UNREACHABLE' OR `state`='CRITICAL' OR `state`='DOWNTIME')
                    AND `state_type`='HARD'
                    AND `entities_id` IN (".$_SESSION['glpiactiveentities_string'].")
                    AND `is_acknowledged`='0'");

         $warningdata_soft = countElementsInTable("glpi_plugin_monitoring_servicescatalogs",
                 "(`state`='WARNING' OR `state`='UNKNOWN'
                        OR `state`='RECOVERY' OR `state`='FLAPPING')
                    AND `state_type`='SOFT'
                    AND `entities_id` IN (".$_SESSION['glpiactiveentities_string'].")
                    AND `is_acknowledged`='0'");

         $critical_soft = countElementsInTable("glpi_plugin_monitoring_servicescatalogs",
                 "(`state`='DOWN' OR `state`='UNREACHABLE' OR `state`='CRITICAL' OR `state`='DOWNTIME')
                    AND `state_type`='SOFT'
                    AND `entities_id` IN (".$_SESSION['glpiactiveentities_string'].")
                    AND `is_acknowledged`='0'");

         $ok_soft = countElementsInTable("glpi_plugin_monitoring_servicescatalogs",
                 "(`state`='OK' OR `state`='UP') AND `state_type`='SOFT'
                  AND `entities_id` IN (".$_SESSION['glpiactiveentities_string'].")
                    AND `is_acknowledged`='0'");

         // ** Manage play sound if critical increase since last refresh
            if (isset($_SESSION['plugin_monitoring_dashboard_Businessrules'])) {
               if ($critical > $_SESSION['plugin_monitoring_dashboard_Businessrules']) {
                  $play_sound = 1;
               }
            }
            $_SESSION['plugin_monitoring_dashboard_Businessrules'] = $critical;

      }
      if ($display == '0') {
         $a_return = array();
         $a_return['ok'] = strval($ok);
         $a_return['ok_soft'] = strval($ok_soft);
         $a_return['warningdata'] = strval($warningdata);
         $a_return['warningconnection'] = strval($warningconnection);
         $a_return['warningdata_soft'] = strval($warningdata_soft);
         $a_return['warningconnection_soft'] = strval($warningconnection_soft);
         $a_return['critical'] = strval($critical);
         $a_return['critical_soft'] = strval($critical_soft);
         $a_return['acknowledge'] = strval($acknowledge);
         return $a_return;
      }

      $critical_link = $CFG_GLPI['root_doc'].
               "/plugins/monitoring/front/service.php?hidesearch=1"
//              . "&reset=reset"
              . "&criteria[0][field]=3"
              . "&criteria[0][searchtype]=contains"
              . "&criteria[0][value]=CRITICAL"

              . "&criteria[1][link]=AND"
              . "&criteria[1][field]=7"
              . "&criteria[1][searchtype]=equals"
              . "&criteria[1][value]=0"

              . "&criteria[2][link]=AND"
              . "&criteria[2][field]=8"
              . "&criteria[2][searchtype]=equals"
              . "&criteria[2][value]=0"
              . "&search=Search"
              . "&itemtype=PluginMonitoringService"
              . "&start=0"
              . "&glpi_tab=3'";
      //_glpi_csrf_token=
      $warning_link = $CFG_GLPI['root_doc'].
               "/plugins/monitoring/front/service.php?hidesearch=1"
//              . "&reset=reset"
              . "&criteria[0][field]=3"
              . "&criteria[0][searchtype]=contains"
              . "&criteria[0][value]=FLAPPING"

              . "&criteria[1][link]=AND"
              . "&criteria[1][field]=7"
              . "&criteria[1][searchtype]=equals"
              . "&criteria[1][value]=0"

              . "&criteria[2][link]=AND"
              . "&criteria[2][field]=8"
              . "&criteria[2][searchtype]=equals"
              . "&criteria[2][value]=0"

              . "&criteria[3][link]=OR"
              . "&criteria[3][field]=3"
              . "&criteria[3][searchtype]=contains"
              . "&criteria[3][value]=RECOVERY"

              . "&criteria[4][link]=AND"
              . "&criteria[4][field]=7"
              . "&criteria[4][searchtype]=equals"
              . "&criteria[4][value]=0"

              . "&criteria[5][link]=AND"
              . "&criteria[5][field]=8"
              . "&criteria[5][searchtype]=equals"
              . "&criteria[5][value]=0"

              . "&criteria[6][link]=OR"
              . "&criteria[6][field]=3"
              . "&criteria[6][searchtype]=contains"
              . "&criteria[6][value]=UNKNOWN"

              . "&criteria[7][link]=AND"
              . "&criteria[7][field]=7"
              . "&criteria[7][searchtype]=equals"
              . "&criteria[7][value]=0"

              . "&criteria[8][link]=AND"
              . "&criteria[8][field]=8"
              . "&criteria[8][searchtype]=equals"
              . "&criteria[8][value]=0"

              . "&criteria[9][link]=AND"
              . "&criteria[9][field]=3"
              . "&criteria[9][searchtype]=contains"
              . "&criteria[9][value]=WARNING"

              . "&criteria[10][link]=AND"
              . "&criteria[10][field]=7"
              . "&criteria[10][searchtype]=equals"
              . "&criteria[10][value]=0"

              . "&criteria[11][link]=AND"
              . "&criteria[11][field]=8"
              . "&criteria[11][searchtype]=equals"
              . "&criteria[11][value]=0"

              . "&search=Search"
              . "&itemtype=PluginMonitoringService"
              . "&start=0"
              . "&glpi_tab=3'";
      $warningdata_link = $CFG_GLPI['root_doc'].
               "/plugins/monitoring/front/service.php?hidesearch=1"
//              . "&reset=reset"
              . "&criteria[0][field]=3"
              . "&criteria[0][searchtype]=contains"
              . "&criteria[0][value]=FLAPPING"

              . "&criteria[1][link]=AND"
              . "&criteria[1][field]=7"
              . "&criteria[1][searchtype]=equals"
              . "&criteria[1][value]=0"

              . "&criteria[2][link]=AND"
              . "&criteria[2][field]=8"
              . "&criteria[2][searchtype]=equals"
              . "&criteria[2][value]=0"

              . "&criteria[2][link]=OR"
              . "&criteria[3][field]=3"
              . "&criteria[3][searchtype]=contains"
              . "&criteria[3][value]=RECOVERY"

              . "&criteria[4][link]=AND"
              . "&criteria[4][field]=7"
              . "&criteria[4][searchtype]=equals"
              . "&criteria[4][value]=0"

              . "&criteria[5][link]=AND"
              . "&criteria[5][field]=8"
              . "&criteria[5][searchtype]=equals"
              . "&criteria[5][value]=0"

              . "&criteria[6][link]=OR"
              . "&criteria[6][field]=3"
              . "&criteria[6][searchtype]=contains"
              . "&criteria[6][value]=WARNING"

              . "&criteria[7][link]=AND"
              . "&criteria[7][field]=7"
              . "&criteria[7][searchtype]=equals"
              . "&criteria[7][value]=0"

              . "&criteria[8][link]=AND"
              . "&criteria[8][field]=8"
              . "&criteria[8][searchtype]=equals"
              . "&criteria[8][value]=0"

              . "&itemtype=PluginMonitoringService"
              . "&start=0"
              . "&glpi_tab=3'";
      $warningconnection_link = $CFG_GLPI['root_doc'].
               "/plugins/monitoring/front/service.php?hidesearch=1"
//              . "&reset=reset"
              . "&criteria[0][field]=3"
              . "&criteria[0][searchtype]=contains"
              . "&criteria[0][value]=UNKNOWN"

              . "&criteria[1][link]=AND"
              . "&criteria[1][field]=7"
              . "&criteria[1][searchtype]=equals"
              . "&criteria[1][value]=0"

              . "&criteria[2][link]=AND"
              . "&criteria[2][field]=8"
              . "&criteria[2][searchtype]=equals"
              . "&criteria[2][value]=0"

              . "&criteria[3][link]=OR"
              . "&criteria[3][field]=3"
              . "&criteria[3][searchtype]=contains"
              . "&criteria[3][value]=NULL"

              . "&criteria[4][link]=AND"
              . "&criteria[4][field]=7"
              . "&criteria[4][searchtype]=equals"
              . "&criteria[4][value]=0"

              . "&criteria[5][link]=AND"
              . "&criteria[5][field]=8"
              . "&criteria[5][searchtype]=equals"
              . "&criteria[5][value]=0"

              . "&itemtype=PluginMonitoringService"
              . "&start=0"
              . "&glpi_tab=3'";
      $ok_link = $CFG_GLPI['root_doc'].
               "/plugins/monitoring/front/service.php?hidesearch=1"
//              . "&reset=reset"
              . "&criteria[0][field]=3"
              . "&criteria[0][searchtype]=contains"
              . "&criteria[0][value]=OK"

              . "&itemtype=PluginMonitoringService"
              . "&start=0"
              . "&glpi_tab=3'";
      $acknowledge_link = $CFG_GLPI['root_doc'].
               "/plugins/monitoring/front/service.php?hidesearch=1"
//              . "&reset=reset"
              . "&criteria[0][field]=7"
              . "&criteria[0][searchtype]=equals"
              . "&criteria[0][value]=1"

              . "&itemtype=PluginMonitoringService"
              . "&start=0"
              . "&glpi_tab=3'";

      echo "<table align='center'>";
      echo "<tr>";
      echo "<td width='414'>";
         $background = '';
         if ($critical > 0) {
            $background = 'background="'.$CFG_GLPI['root_doc'].'/plugins/monitoring/pics/bg_critical.png"';
         }
         echo "<table class='tab_cadre' width='100%' height='130' ".$background." >";
         echo "<tr>";
         echo "<th style='background-color:transparent;'>";
         if ($type == 'Ressources' OR $type == 'Componentscatalog') {
            echo "<a href='".$critical_link.">".
                    "<font color='black' style='font-size: 12px;font-weight: bold;'>".__('Critical', 'monitoring')."</font></a>";
         } else {
            echo __('Critical', 'monitoring');
         }
         echo "</td>";
         echo "</tr>";
         echo "<tr>";
         echo "<th style='background-color:transparent;'>";
         if ($type == 'Ressources' OR $type == 'Componentscatalog') {
            echo "<a href='".$critical_link.">".
                    "<font color='black' style='font-size: 52px;font-weight: bold;'>".$critical."</font></a>";
         } else {
            echo "<font style='font-size: 52px;'>".$critical."</font>";
        }
         echo "</th>";
         echo "</tr>";
         echo "<tr><td>";
         echo "<p style='font-size: 11px; text-align: center;'> Soft : ".$critical_soft."</p>";
         echo "</td></tr>";
         echo "</table>";
      echo "</td>";

      echo "<td width='188'>";
         $background = '';
         if ($warningdata > 0) {
            $background = 'background="'.$CFG_GLPI['root_doc'].'/plugins/monitoring/pics/bg_warning.png"';
         }
         if ($type == 'Ressources') {
            echo "<table class='tab_cadre' width='100%' height='130' ".$background." >";
         } else {
            echo "<table class='tab_cadre' width='100%' height='130' ".$background." >";
         }
         echo "<tr>";
         echo "<th style='background-color:transparent;'>";
         if ($type == 'Ressources') {
            echo "<a href='".$warningdata_link.">".
                    "<font color='black' style='font-size: 12px;font-weight: bold;'>".__('Warning', 'monitoring')."</font></a>";
         } else {
            if ($type == 'Componentscatalog') {
               echo "<a href='".$warning_link.">".
                       "<font color='black' style='font-size: 12px;font-weight: bold;'>".__('Warning', 'monitoring')."</font></a>";
            } else {
               echo __('Warning', 'monitoring');
            }
         }
         echo "</td>";
         echo "</tr>";
         echo "<tr>";
         echo "<th style='background-color:transparent;'>";
         if ($type == 'Ressources') {
            echo "<a href='".$warningdata_link.">".
                    "<font color='black' style='font-size: 52px;'>".$warningdata."</font></a>";
         } else if ($type == 'Componentscatalog') {
            echo "<a href='".$warning_link.">".
                    "<font color='black' style='font-size: 52px;'>".$warningdata."</font></a>";
         } else {
            echo "<font style='font-size: 52px;'>".$warningdata."</font>";
         }
         echo "</th>";
         echo "</tr>";
         echo "<tr><td>";
         echo "<p style='font-size: 11px; text-align: center;'> Soft : ".$warningdata_soft."</p>";
         echo "</td></tr>";
         echo "</table>";
      echo "</td>";

      if ($type == 'Ressources') {
         echo "<td width='188'>";
            $background = '';
            if ($warningconnection > 0) {
               $background = 'background="'.$CFG_GLPI['root_doc'].'/plugins/monitoring/pics/bg_warning_yellow.png"';
            }
            echo "<table class='tab_cadre' width='100%' height='130' ".$background." >";
            echo "<tr>";
            echo "<th style='background-color:transparent;'>";
            if ($type == 'Ressources' OR $type == 'Componentscatalog') {
               echo "<a href='".$warningconnection_link.">".
                       "<font color='black' style='font-size: 12px;font-weight: bold;'>".__('Warning (connection)', 'monitoring')."</font></a>";
            } else {
               echo __('Warning (connection)', 'monitoring');
            }
            echo "</td>";
            echo "</tr>";
            echo "<tr>";
            echo "<th style='background-color:transparent;'>";
            if ($type == 'Ressources' OR $type == 'Componentscatalog') {
               echo "<a href='".$warningconnection_link.">".
                       "<font color='black' style='font-size: 52px;'>".$warningconnection."</font></a>";
            } else {
               echo "<font style='font-size: 52px;'>".$warningconnection."</font>";
            }
            echo "</th>";
            echo "</tr>";
            echo "<tr><td>";
            echo "<p style='font-size: 11px; text-align: center;'> Soft : ".$warningconnection_soft."</p>";
            echo "</td></tr>";
            echo "</table>";
         echo "</td>";
      }

      echo "<td width='148'>";
         $background = '';
         if ($ok > 0) {
            $background = 'background="'.$CFG_GLPI['root_doc'].'/plugins/monitoring/pics/bg_ok.png"';
         }
         echo "<table class='tab_cadre' width='100%' height='130' ".$background." >";
         echo "<tr>";
         echo "<th style='background-color:transparent;'>";
         if ($type == 'Ressources' OR $type == 'Componentscatalog') {
            echo "<a href='".$ok_link.">".
                    "<font color='black' style='font-size: 12px;font-weight: bold;'>".__('OK', 'monitoring')."</font></a>";
         } else {
            echo __('OK', 'monitoring');
         }
         echo "</td>";
         echo "</tr>";
         echo "<tr>";
         echo "<th style='background-color:transparent;'>";
         if ($type == 'Ressources' OR $type == 'Componentscatalog') {
            echo "<a href='".$ok_link.">".
                    "<font color='black' style='font-size: 52px;font-weight: bold;'>".$ok."</font></a>";
         } else {
            echo "<font style='font-size: 52px;'>".$ok."</font>";
         }
         echo "</th>";
         echo "</tr>";
         echo "<tr><td>";
         echo "<p style='font-size: 11px; text-align: center;'> Soft : ".$ok_soft."</p>";
         echo "</td></tr>";
         echo "</table>";
      echo "</td>";

      echo "<td width='120'>";
         $background = '';
         if ($acknowledge > 0) {
            $background = 'background="'.$CFG_GLPI['root_doc'].'/plugins/monitoring/pics/bg_acknowledge.png"';
         }
         echo "<table class='tab_cadre' width='100%' height='130' ".$background." >";
         echo "<tr>";
         echo "<th style='background-color:transparent;'>";
         if ($type == 'Ressources' OR $type == 'Componentscatalog') {
            echo "<a href='".$acknowledge_link."'>".
                    "<font color='black' style='font-size: 12px;font-weight: bold;'>".__('Acknowledge', 'monitoring')."</font></a>";
         } else {
            echo __('Acknowledge', 'monitoring');
         }
         echo "</td>";
         echo "</tr>";
         echo "<tr>";
         echo "<th style='background-color:transparent;'>";
         if ($type == 'Ressources' OR $type == 'Componentscatalog') {
            echo "<a href='".$acknowledge_link."'>".
                    "<font color='black' style='font-size: 52px;font-weight: bold;'>".$acknowledge."</font></a>";
         } else {
            echo "<font style='font-size: 52px;'>".$acknowledge."</font>";
         }
         echo "</th>";
         echo "</tr>";
         echo "<tr><td>";
         echo "<p style='font-size: 11px; text-align: center;'>&nbsp;</p>";
         echo "</td></tr>";
         echo "</table>";
      echo "</td>";

      echo "</tr>";
      echo "</table><br/>";

      // ** play sound
      if ($play_sound == '1') {
         echo '<audio autoplay="autoplay">
                 <source src="../audio/star-trek.ogg" type="audio/ogg" />
                 Your browser does not support the audio element.
               </audio>';
      }
   }