コード例 #1
2
 /**
  * Display list of hosts
  */
 function showHostsBoard($params, $width = '', $limit = '')
 {
     global $DB, $CFG_GLPI;
     if (!isset($_SESSION['plugin_monitoring_reduced_interface'])) {
         $_SESSION['plugin_monitoring_reduced_interface'] = false;
     }
     $col_to_display = array(0, 10, 1, 2, 3, 6, 7, 8, 9, 11);
     $data = Search::prepareDatasForSearch('PluginMonitoringHost', $params, $col_to_display);
     $data['tocompute'] = $data['toview'];
     Search::constructSQL($data);
     //echo "<pre>";      print_r($data['sql']['search']);
     Search::constructDatas($data);
     //      if (! isset($_GET['order'])) {
     //         $_GET['order'] = "ASC";
     //      }
     //      if (! isset($_GET['sort'])) {
     //         $_GET['sort'] = "";
     //      }
     //
     //      $order = "ASC";
     //      if (isset($_GET['order'])) {
     //         $order = $_GET['order'];
     //      }
     //      $where = '';
     //      if (isset($_GET['field'])) {
     //         foreach ($_GET['field'] as $key=>$value) {
     //            $wheretmp = '';
     //            if (isset($_GET['link'][$key])) {
     //               $wheretmp.= " ".$_GET['link'][$key]." ";
     //            }
     //            $wheretmp .= Search::addWhere(
     //                                   "",
     //                                   0,
     //                                   "PluginMonitoringHost",
     //                                   $_GET['field'][$key],
     //                                   $_GET['searchtype'][$key],
     //                                   $_GET['contains'][$key]);
     //            if (!strstr($wheretmp, "``.``")) {
     //               if ($where != ''
     //                       AND !isset($_GET['link'][$key])) {
     //                  $where .= " AND ";
     //               }
     //               $where .= $wheretmp;
     //            }
     //         }
     //      }
     //      if ($where != '') {
     //         $where = "(".$where;
     //         $where .= ") AND ";
     //      }
     //      $where .= " CONCAT_WS('', `glpi_computers`.`entities_id`, `glpi_printers`.`entities_id`, `glpi_networkequipments`.`entities_id`) IN (".$_SESSION['glpiactiveentities_string'].")";
     //
     //      if ($where != '') {
     //         $where = " WHERE ".$where;
     //         $where = str_replace("`".getTableForItemType("PluginMonitoringDisplay")."`.",
     //                 "", $where);
     //
     //      }
     //
     //      $leftjoin = "
     //         LEFT JOIN `glpi_computers`
     //            ON `glpi_plugin_monitoring_hosts`.`items_id` = `glpi_computers`.`id`
     //               AND `glpi_plugin_monitoring_hosts`.`itemtype`='Computer'
     //         LEFT JOIN `glpi_printers`
     //            ON `glpi_plugin_monitoring_hosts`.`items_id` = `glpi_printers`.`id`
     //               AND `glpi_plugin_monitoring_hosts`.`itemtype`='Printer'
     //         LEFT JOIN `glpi_networkequipments`
     //            ON `glpi_plugin_monitoring_hosts`.`items_id` = `glpi_networkequipments`.`id`
     //               AND `glpi_plugin_monitoring_hosts`.`itemtype`='NetworkEquipment'
     //         LEFT JOIN `glpi_entities`
     //            ON CONCAT_WS('', `glpi_computers`.`entities_id`, `glpi_printers`.`entities_id`, `glpi_networkequipments`.`entities_id`) = `glpi_entities`.`id`
     //
     //      ";
     //
     //      // * ORDER
     //      $ORDERQUERY = "ORDER BY entity_name ASC, host_name ASC";
     //      $toview = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
     //      $toviewComplete = array(
     //          'ITEM_0' => 'entity_name',
     //          'ITEM_1' => 'host_name',
     //          'ITEM_2' => 'host_state',
     //          'ITEM_3' => 'service_state',
     //          'ITEM_4' => 'last_check',
     //          'ITEM_5' => 'event',
     //          'ITEM_6' => 'perf_data',
     //          'ITEM_7' => 'is_acknowledged'
     //      );
     //      foreach ($toview as $key => $val) {
     //         if ($_GET['sort']==$val) {
     //            $ORDERQUERY = Search::addOrderBy("PluginMonitoringHost", $_GET['sort'],
     //                                             $_GET['order'], $key);
     //            foreach ($toviewComplete as $keyi=>$vali) {
     //               $ORDERQUERY= str_replace($keyi, $vali, $ORDERQUERY);
     //            }
     //         }
     //      }
     //
     ////            `glpi_computers`.*
     //
     //      $query = "SELECT
     //            `glpi_entities`.`name` AS entity_name,
     //            CONCAT_WS('', `glpi_computers`.`id`, `glpi_printers`.`id`, `glpi_networkequipments`.`id`) AS idComputer,
     //            CONCAT_WS('', `glpi_computers`.`name`, `glpi_printers`.`name`, `glpi_networkequipments`.`name`) AS host_name,
     //            `glpi_plugin_monitoring_hosts`.*,
     //            `glpi_plugin_monitoring_hosts`.`state` AS host_state,
     //            `glpi_plugin_monitoring_hosts`.`is_acknowledged` AS host_acknowledged
     //         FROM `glpi_plugin_monitoring_hosts`
     //         ".$leftjoin."
     //         ".$where."
     //         ".$ORDERQUERY;
     //      // Toolbox::logInFile("pm", "Query hosts - $query\n");
     //
     //      $result = $DB->query($query);
     //
     //      if (! isset($_GET["start"])) {
     //         $_GET["start"]=0;
     //      }
     //      $start=$_GET['start'];
     //      if (! isset($_GET["order"])) {
     //         $_GET["order"]="ASC";
     //      }
     $rand = mt_rand();
     if (!isset($data['data']) || !isset($data['data']['totalcount'])) {
         return false;
     }
     // Contruct Pager parameters
     $globallinkto = Toolbox::append_params(array('criteria' => Toolbox::stripslashes_deep($data['search']['criteria']), 'metacriteria' => Toolbox::stripslashes_deep($data['search']['metacriteria'])), '&amp;');
     $parameters = "sort=" . $data['search']['sort'] . "&amp;order=" . $data['search']['order'] . '&amp;' . $globallinkto;
     if (isset($_GET['_in_modal'])) {
         $parameters .= "&amp;_in_modal=1";
     }
     // If the begin of the view is before the number of items
     if ($data['data']['count'] > 0) {
         // Display pager only for HTML
         if ($data['display_type'] == Search::HTML_OUTPUT) {
             $search_config_top = "";
             $search_config_bottom = "";
             Html::printPager($data['search']['start'], $data['data']['totalcount'], $data['search']['target'], $parameters, $data['itemtype'], 0, $search_config_top);
         }
         // Define begin and end var for loop
         // Search case
         $begin_display = $data['data']['begin'];
         $end_display = $data['data']['end'];
     }
     echo '<div id="custom_date" style="display:none"></div>';
     echo '<div id="custom_time" style="display:none"></div>';
     if ($width == '') {
         echo "<table class='tab_cadrehov' style='width:100%;'>";
     } else {
         echo "<table class='tab_cadrehov' style='width:" . $width . "px;'>";
     }
     $num = 0;
     if (Session::haveRight("plugin_monitoring_hostcommand", CREATE)) {
         // Host test command ...
         $pmCommand = new PluginMonitoringCommand();
         $a_commands = array();
         $a_list = $pmCommand->find("command_name LIKE 'host_action'");
         foreach ($a_list as $dt) {
             $host_command_name = $dt['name'];
             $host_command_command = $dt['command_line'];
         }
     }
     echo "<tr class='tab_bg_1'>";
     $this->showHeaderItem(__('Entity'), 0, $num, $begin_display, $globallinkto, 'host.php', 'PluginMonitoringHost');
     $this->showHeaderItem(__('Type'), 0, $num, $begin_display, $globallinkto, 'host.php', 'PluginMonitoringHost');
     $this->showHeaderItem(__('Host', 'monitoring'), 1, $num, $begin_display, $globallinkto, 'host.php', 'PluginMonitoringHost');
     $this->showHeaderItem(__('Host state'), 2, $num, $begin_display, $globallinkto, 'host.php', 'PluginMonitoringHost');
     if (isset($host_command_name)) {
         echo '<th>' . __('Host action', 'monitoring') . '</th>';
     }
     echo '<th>' . __('Host resources state', 'monitoring') . '</th>';
     echo '<th>' . __('IP address', 'monitoring') . '</th>';
     $this->showHeaderItem(__('Last check', 'monitoring'), 4, $num, $begin_display, $globallinkto, 'host.php', 'PluginMonitoringHost');
     $this->showHeaderItem(__('Result details', 'monitoring'), 5, $num, $begin_display, $globallinkto, 'host.php', 'PluginMonitoringHost');
     $this->showHeaderItem(__('Performance data', 'monitoring'), 6, $num, $begin_display, $globallinkto, 'host.php', 'PluginMonitoringHost');
     if (Session::haveRight("plugin_monitoring_acknowledge", READ) || Session::haveRight("plugin_monitoring_downtime", READ)) {
         $this->showHeaderItem(__('Maintenance', 'monitoring'), 7, $num, $begin_display, $globallinkto, 'host.php', 'PluginMonitoringHost');
     }
     echo "</tr>";
     foreach ($data['data']['rows'] as $row) {
         // Reduced array or not ?
         if ($_SESSION['plugin_monitoring_reduced_interface'] && $row[3]['displayname'] == 'UP') {
             continue;
         }
         if (isset($host_command_name)) {
             $row['host_command_name'] = $host_command_name;
             $row['host_command_command'] = $host_command_command;
         }
         // Get all host services except if state is ok or is already acknowledged ...
         $a_ret = PluginMonitoringHost::getServicesState($row['id'], "`glpi_plugin_monitoring_services`.`state` != 'OK'\n                                                         AND `glpi_plugin_monitoring_services`.`is_acknowledged` = '0'");
         $row['host_services_state'] = $a_ret[0];
         $row['host_services_state_list'] = $a_ret[1];
         // Get host first IP address
         $row['ip'] = __('Unknown IP address', 'monitoring');
         $ip = PluginMonitoringHostaddress::getIp($row[9]['displayname'], $row[1]['displayname'], '');
         if ($ip != '') {
             $row['ip'] = $ip;
         }
         echo "<tr class='tab_bg_3'>";
         $this->displayHostLine($row);
         echo "</tr>";
     }
     echo "</table>";
     echo "<br/>";
     Html::printPager($data['search']['start'], $data['data']['totalcount'], $data['search']['target'], $parameters, '', 0, $search_config_bottom);
 }
コード例 #2
0
ファイル: install.php プロジェクト: RubichonL/glpi_monitoring
function pluginMonitoringInstall($version)
{
    global $DB, $LANG, $CFG_GLPI;
    // ** Insert in DB
    $DB_file = GLPI_ROOT . "/plugins/monitoring/install/mysql/plugin_monitoring-" . $version . "-empty.sql";
    $DBf_handle = fopen($DB_file, "rt");
    $sql_query = fread($DBf_handle, filesize($DB_file));
    fclose($DBf_handle);
    foreach (explode(";\n", "{$sql_query}") as $sql_line) {
        if (get_magic_quotes_runtime()) {
            $sql_line = stripslashes_deep($sql_line);
        }
        if (!empty($sql_line)) {
            $DB->query($sql_line);
        }
    }
    include GLPI_ROOT . "/plugins/monitoring/inc/profile.class.php";
    $pmProfile = new PluginMonitoringProfile();
    $pmProfile->initProfile();
    include GLPI_ROOT . "/plugins/monitoring/inc/command.class.php";
    $pmCommand = new PluginMonitoringCommand();
    $pmCommand->initCommands();
    include GLPI_ROOT . "/plugins/monitoring/inc/notificationcommand.class.php";
    $pmNotificationcommand = new PluginMonitoringNotificationcommand();
    $pmNotificationcommand->initCommands();
    include GLPI_ROOT . "/plugins/monitoring/inc/check.class.php";
    $pmCheck = new PluginMonitoringCheck();
    $pmCheck->initChecks();
    include GLPI_ROOT . "/plugins/monitoring/inc/hostconfig.class.php";
    $pmHostconfig = new PluginMonitoringHostconfig();
    $pmHostconfig->initConfig();
    include GLPI_ROOT . "/plugins/monitoring/inc/config.class.php";
    $pmConfig = new PluginMonitoringConfig();
    $pmConfig->initConfig();
    $query = "UPDATE `glpi_plugin_monitoring_configs`\n      SET `version`='" . PLUGIN_MONITORING_VERSION . "'\n         WHERE `id`='1'";
    $DB->query($query);
    if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/monitoring')) {
        mkdir(GLPI_PLUGIN_DOC_DIR . "/monitoring");
    }
    if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/monitoring/templates')) {
        mkdir(GLPI_PLUGIN_DOC_DIR . "/monitoring/templates");
    }
    if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/monitoring/weathermapbg')) {
        mkdir(GLPI_PLUGIN_DOC_DIR . "/monitoring/weathermapbg");
    }
    CronTask::Register('PluginMonitoringServiceevent', 'updaterrd', '300', array('mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30));
    CronTask::Register('PluginMonitoringLog', 'cleanlogs', '96400', array('mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30));
    CronTask::Register('PluginMonitoringUnavaibility', 'unavaibility', '300', array('mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30));
}
コード例 #3
0
   function showCustomArguments($services_id) {

      $pmComponent = new PluginMonitoringComponent();
      $pmCommand = new PluginMonitoringCommand();
      $pmComponentscatalog_Host = new PluginMonitoringComponentscatalog_Host();

      $this->getFromDB($services_id);

      $options = array();
      $options['target'] = str_replace("service.form.php", "servicearg.form.php", $this->getFormURL());

      $this->showFormHeader($options);

      $pmComponentscatalog_Host->getFromDB($this->fields['plugin_monitoring_componentscatalogs_hosts_id']);
      $itemtype = $pmComponentscatalog_Host->fields['itemtype'];
      $item = new $itemtype();
      $item->getFromDB($pmComponentscatalog_Host->fields['items_id']);
      echo "<tr>";
      echo "<td>";
      echo $item->getTypeName()." :";
      echo "</td>";
      echo "<td>";
      echo $item->getLink();
      echo "</td>";
      echo "<td colspan='2'></td>";
      echo "</tr>";

      $pmComponent->getFromDB($this->fields['plugin_monitoring_components_id']);
      $pmCommand->getFromDB($pmComponent->fields['plugin_monitoring_commands_id']);

      $array = array();
      $a_displayarg = array();
      if (isset($pmCommand->fields['command_line'])) {
         preg_match_all("/\\$(ARG\d+)\\$/", $pmCommand->fields['command_line'], $array);
         $a_arguments = importArrayFromDB($pmComponent->fields['arguments']);
         foreach ($array[0] as $arg) {
            if (strstr($arg, "ARG")) {
               $arg = str_replace('$', '', $arg);
               if (!isset($a_arguments[$arg])) {
                  $a_arguments[$arg] = '';
               }
               $a_displayarg[$arg] = $a_arguments[$arg];
            }
         }
      }
      if (count($a_displayarg) > 0) {
         $a_tags = $pmComponent->tagsAvailable();
         array_shift($a_tags);
         $a_argtext = importArrayFromDB($pmCommand->fields['arguments']);
         echo "<tr>";
         echo "<th colspan='2'>".__('Component arguments', 'monitoring')."</th>";
         echo "<th colspan='2'>".__('List of tags available', 'monitoring')."&nbsp;</th>";
         echo "</tr>";

         foreach ($a_displayarg as $key=>$value) {
         echo "<tr>";
         echo "<td>";
            if (isset($a_argtext[$key])
                    AND $a_argtext[$key] != '') {
               echo nl2br($a_argtext[$key])."&nbsp;:";
            } else {
               echo __('Argument', 'monitoring')." (".$key.")&nbsp;:";
            }
            echo "</td>";
            echo "<td>";
            echo $value."<br/>";
            echo "</td>";
            if (count($a_tags) > 0) {
               foreach ($a_tags as $key=>$value) {
                  echo "<td class='tab_bg_3'>";
                  echo "<strong>".$key."</strong>&nbsp;:";
                  echo "</td>";
                  echo "<td class='tab_bg_3'>";
                  echo $value;
                  echo "</td>";
                  unset($a_tags[$key]);
                  break;
               }
            } else {
               echo "<td colspan='2'></td>";
            }
            echo "</tr>";
         }
         foreach ($a_tags as $key=>$value) {
            echo "<tr>";
            echo "<td colspan='2'></td>";
            echo "<td class='tab_bg_3'>";
            echo "<strong>".$key."</strong>&nbsp;:";
            echo "</td>";
            echo "<td class='tab_bg_3'>";
            echo $value;
            echo "</td>";
            echo "</tr>";
         }
      }

      // customized arguments
      echo "<tr>";
      echo "<th colspan='4'>".__('Custom arguments for this resource (empty : inherit)', 'monitoring')."</th>";
      echo "</tr>";
      $array = array();
      $a_displayarg = array();
      if (isset($pmCommand->fields['command_line'])) {
         preg_match_all("/\\$(ARG\d+)\\$/", $pmCommand->fields['command_line'], $array);
         $a_arguments = importArrayFromDB($this->fields['arguments']);
         foreach ($array[0] as $arg) {
            if (strstr($arg, "ARG")) {
               $arg = str_replace('$', '', $arg);
               if (!isset($a_arguments[$arg])) {
                  $a_arguments[$arg] = '';
               }
               $a_displayarg[$arg] = $a_arguments[$arg];
            }
         }
      }
      $a_argtext = importArrayFromDB($pmCommand->fields['arguments']);
      foreach ($a_displayarg as $key=>$value) {
         echo "<tr>";
         echo "<td>";
         if (isset($a_argtext[$key])
                 AND $a_argtext[$key] != '') {
            echo nl2br($a_argtext[$key])."&nbsp;:";
         } else {
            echo __('Argument', 'monitoring')." (".$key.")&nbsp;:";
         }
         echo "</td>";
         echo "<td>";
         echo "<input type='text' name='arg[".$key."]' value='".$value."'/><br/>";
         echo "</td>";
         echo "<td colspan='2'></td>";
         echo "</tr>";
      }

      $this->showFormButtons($options);

   }
コード例 #4
0
ファイル: command.form.php プロジェクト: geldarr/hack-space
  @package   Plugin Monitoring for GLPI
  @author    David Durieux
  @co-author 
  @comment   
  @copyright Copyright (c) 2011-2013 Plugin Monitoring for GLPI team
  @license   AGPL License 3.0 or (at your option) any later version
             http://www.gnu.org/licenses/agpl-3.0-standalone.html
  @link      https://forge.indepnet.net/projects/monitoring/
  @since     2011

  ------------------------------------------------------------------------
*/
include "../../../inc/includes.php";
PluginMonitoringProfile::checkRight("command", "w");
Html::header(__('Monitoring', 'monitoring'), $_SERVER["PHP_SELF"], "plugins", "monitoring", "command");
$pMonitoringCommand = new PluginMonitoringCommand();
if (isset($_POST["copy"])) {
    $pMonitoringCommand->showForm("", array(), $_POST);
    Html::footer();
    exit;
} else {
    if (isset($_POST["add"])) {
        $_POST = $pMonitoringCommand->convertPostdata($_POST);
        $pMonitoringCommand->add($_POST);
        Html::back();
    } else {
        if (isset($_POST["update"])) {
            $_POST = $pMonitoringCommand->convertPostdata($_POST);
            $pMonitoringCommand->update($_POST);
            Html::back();
        } else {
コード例 #5
0
 /**
  *
  * @param $items_id integer ID 
  * @param $options array
  *
  *@return bool true if form is ok
  *
  **/
 function showForm($items_id, $itemtype, $options = array())
 {
     global $DB, $CFG_GLPI;
     $pmCommand = new PluginMonitoringCommand();
     $pmCheck = new PluginMonitoringCheck();
     $calendar = new Calendar();
     $pmRealm = new PluginMonitoringRealm();
     $entities_id = 0;
     if ($itemtype == "Entity") {
         $entities_id = $items_id;
     } else {
         $item = new $itemtype();
         $item->getFromDB($items_id);
         $entities_id = $item->fields['entities_id'];
     }
     $query = "SELECT * FROM `" . $this->getTable() . "`\n         WHERE `items_id`='" . $items_id . "'\n            AND `itemtype`='" . $itemtype . "'\n         LIMIT 1";
     $result = $DB->query($query);
     if ($DB->numrows($result) == '0') {
         $this->getEmpty();
         if ($entities_id != '0' or $itemtype != 'Entity') {
             $this->fields['plugin_monitoring_commands_id'] = -1;
             $this->fields['plugin_monitoring_checks_id'] = -1;
             $this->fields['calendars_id'] = -1;
             $this->fields['plugin_monitoring_realms_id'] = -1;
         }
     } else {
         $data = $DB->fetch_assoc($result);
         $this->getFromDB($data['id']);
     }
     echo "<form name='form' method='post' \n         action='" . $CFG_GLPI['root_doc'] . "/plugins/monitoring/front/hostconfig.form.php'>";
     echo "<table class='tab_cadre_fixe'";
     echo "<tr class='tab_bg_1'>";
     echo "<th colspan='4'>";
     echo __('Hosts configuration', 'monitoring');
     echo "</th>";
     echo "</tr>";
     echo "<tr class='tab_bg_1'>";
     echo "<td>";
     echo __('Command', 'monitoring') . "&nbsp;:";
     echo "</td>";
     echo "<td>";
     $input = array();
     if ($entities_id != '0' or $itemtype != 'Entity') {
         $input["-1"] = __('Inheritance of the parent entity');
     }
     $query = "SELECT * FROM `" . getTableForItemType("PluginMonitoringCommand") . "`\n         ORDER BY `name`";
     $result = $DB->query($query);
     while ($data = $DB->fetch_array($result)) {
         $input[$data['id']] = $data['name'];
     }
     Dropdown::showFromArray('plugin_monitoring_commands_id', $input, array('value' => $this->fields['plugin_monitoring_commands_id']));
     echo "</td>";
     echo "<td>" . __('Check definition', 'monitoring') . "&nbsp;:</td>";
     echo "<td>";
     $input = array();
     if ($entities_id != '0' or $itemtype != 'Entity') {
         $input["-1"] = __('Inheritance of the parent entity');
     }
     $query = "SELECT * FROM `" . getTableForItemType("PluginMonitoringCheck") . "`\n         ORDER BY `name`";
     $result = $DB->query($query);
     while ($data = $DB->fetch_array($result)) {
         $input[$data['id']] = $data['name'];
     }
     Dropdown::showFromArray('plugin_monitoring_checks_id', $input, array('value' => $this->fields['plugin_monitoring_checks_id']));
     echo "</td>";
     echo "</tr>";
     // Inheritance
     if ($this->fields['plugin_monitoring_commands_id'] == '-1' or $this->fields['plugin_monitoring_checks_id'] == '-1') {
         echo "<tr class='tab_bg_1'>";
         if ($this->fields['plugin_monitoring_commands_id'] == '-1') {
             echo "<td colspan='2' class='green center'>";
             echo __('Inheritance of the parent entity') . "&nbsp;:&nbsp;";
             $pmCommand->getFromDB($this->getValueAncestor("plugin_monitoring_commands_id", $entities_id));
             echo $pmCommand->fields['name'];
             echo "</td>";
         } else {
             echo "<td colspan='2'>";
             echo "</td>";
         }
         if ($this->fields['plugin_monitoring_checks_id'] == '-1') {
             echo "<td colspan='2' class='green center'>";
             echo __('Inheritance of the parent entity') . "&nbsp;:&nbsp;";
             $pmCheck->getFromDB($this->getValueAncestor("plugin_monitoring_checks_id", $entities_id));
             echo $pmCheck->fields['name'];
             echo "</td>";
         } else {
             echo "<td colspan='2'>";
             echo "</td>";
         }
         echo "</tr>";
     }
     echo "<tr class='tab_bg_1'>";
     echo "<td>" . __('Reaml', 'monitoring') . "&nbsp;:</td>";
     echo "<td>";
     $input = array();
     if ($entities_id != '0' or $itemtype != 'Entity') {
         $input["-1"] = __('Inheritance of the parent entity');
     }
     $query = "SELECT * FROM `" . getTableForItemType("PluginMonitoringRealm") . "`\n         ORDER BY `name`";
     $result = $DB->query($query);
     while ($data = $DB->fetch_array($result)) {
         $input[$data['id']] = $data['name'];
     }
     Dropdown::showFromArray('plugin_monitoring_realms_id', $input, array('value' => $this->fields['plugin_monitoring_realms_id']));
     echo "</td>";
     echo "<td>" . __('Check period', 'monitoring') . "&nbsp;:</td>";
     echo "<td>";
     if (Session::isMultiEntitiesMode()) {
         $input = array();
         if ($entities_id != '0' or $itemtype != 'Entity') {
             $input["-1"] = __('Inheritance of the parent entity');
         }
         $entities_ancestors = getAncestorsOf("glpi_entities", $entities_id);
         if (!isset($entities_ancestors[$entities_id])) {
             $entities_ancestors[$entities_id] = $entities_id;
         }
         $query = "SELECT * FROM `" . getTableForItemType("Calendar") . "`\n            WHERE `entities_id` IN ('" . implode(",", $entities_ancestors) . "') AND `is_recursive`='1'\n            ORDER BY `name`";
         $result = $DB->query($query);
         while ($data = $DB->fetch_array($result)) {
             $input[$data['id']] = $data['name'];
         }
         Dropdown::showFromArray('calendars_id', $input, array('value' => $this->fields['calendars_id']));
     } else {
         Dropdown::show("Calendar", array('value' => $this->fields['calendars_id']));
     }
     echo "</td>";
     echo "</tr>";
     // Inheritance
     if ($this->fields['calendars_id'] == '-1' or $this->fields['plugin_monitoring_realms_id'] == '-1') {
         echo "<tr class='tab_bg_1'>";
         if ($this->fields['plugin_monitoring_realms_id'] == '-1') {
             echo "<td colspan='2' class='green center'>";
             echo __('Inheritance of the parent entity') . "&nbsp;:&nbsp;";
             $pmRealm->getFromDB($this->getValueAncestor("plugin_monitoring_realms_id", $entities_id));
             echo $pmRealm->fields['name'];
             echo "</td>";
         } else {
             echo "<td colspan='2'>";
             echo "</td>";
         }
         if ($this->fields['calendars_id'] == '-1') {
             echo "<td colspan='2' class='green center'>";
             echo __('Inheritance of the parent entity') . "&nbsp;:&nbsp;";
             $calendar->getFromDB($this->getValueAncestor("calendars_id", $entities_id));
             echo $calendar->fields['name'];
             echo "</td>";
         } else {
             echo "<td colspan='2'>";
             echo "</td>";
         }
         echo "</tr>";
     }
     if ($itemtype == 'Entity' and $items_id == '0') {
         echo "<tr class='tab_bg_1'>";
         echo "<td>";
         echo __('Shinken Server', 'monitoring') . "&nbsp;:";
         echo "</td>";
         echo "<td>";
         Dropdown::show("Computer", array('name' => 'computers_id', 'value' => $this->fields['computers_id']));
         echo "</td>";
         echo "<td colspan='2'></td>";
         echo "</tr>";
     }
     echo "<tr class='tab_bg_1'>";
     echo "<td colspan='4' align='center'>";
     if (isset($this->fields['id']) and $this->fields['id'] != '') {
         echo "<input type='hidden' name='id' value='" . $this->fields['id'] . "'/>";
     }
     echo "<input type='hidden' name='itemtype' value='" . $itemtype . "'/>";
     echo "<input type='hidden' name='items_id' value='" . $items_id . "'/>";
     echo "<input type='submit' name='update' value=\"" . __('Save') . "\" class='submit'>";
     echo "</td>";
     echo "</tr>";
     echo "</table>";
     Html::closeForm();
     return true;
 }
コード例 #6
0
 /**
  * Display form for service configuration
  *
  * @param $items_id integer ID
  * @param $options array
  *
  *@return bool true if form is ok
  *
  **/
 function showForm($items_id, $options = array())
 {
     $pMonitoringCommand = new PluginMonitoringCommand();
     if ($items_id == '0') {
         $this->getEmpty();
     } else {
         $this->getFromDB($items_id);
     }
     $this->showFormHeader($options);
     echo "<tr>";
     echo "<td>";
     echo __('Template name') . "&nbsp;:";
     echo "</td>";
     echo "<td>";
     echo "<input type='hidden' name='is_template' value='1' />";
     $objectName = autoName($this->fields["name"], "name", 1, $this->getType());
     Html::autocompletionTextField($this, 'name', array('value' => $objectName));
     echo "</td>";
     // * commande
     echo "<td>";
     echo __('Command', 'monitoring') . "&nbsp;:";
     echo "</td>";
     echo "<td align='center'>";
     if ($this->fields['is_template'] == '1') {
         $pMonitoringCommand->getFromDB($this->fields['plugin_monitoring_commands_id']);
         echo $pMonitoringCommand->getLink(1);
     } else {
         $pMonitoringCommand->getFromDB($this->fields['plugin_monitoring_commands_id']);
         Dropdown::show("PluginMonitoringCommand", array('name' => 'plugin_monitoring_commands_id', 'value' => $this->fields['plugin_monitoring_commands_id']));
     }
     echo "</td>";
     echo "</tr>";
     echo "<tr>";
     // * checks
     echo "<td>" . __('Check definition', 'monitoring') . "&nbsp;:</td>";
     echo "<td align='center'>";
     if ($this->fields['is_template'] == '1') {
         $pMonitoringCheck = new PluginMonitoringCheck();
         $pMonitoringCheck->getFromDB($this->fields['plugin_monitoring_checks_id']);
         echo $pMonitoringCheck->getLink(1);
     } else {
         Dropdown::show("PluginMonitoringCheck", array('name' => 'plugin_monitoring_checks_id', 'value' => $this->fields['plugin_monitoring_checks_id']));
     }
     echo "</td>";
     // * active check
     echo "<td>";
     echo __('Active checks enable', 'monitoring') . "&nbsp;:";
     echo "</td>";
     echo "<td align='center'>";
     if ($this->fields['is_template'] == '1') {
         echo Dropdown::getYesNo($this->fields['active_checks_enabled']);
     } else {
         Dropdown::showYesNo("active_checks_enabled", $this->fields['active_checks_enabled']);
     }
     echo "</td>";
     echo "</tr>";
     echo "<tr>";
     // * passive check
     echo "<td>";
     echo __('Passive checks enable', 'monitoring') . "&nbsp;:";
     echo "</td>";
     echo "<td align='center'>";
     if ($this->fields['is_template'] == '1') {
         echo Dropdown::getYesNo($this->fields['passive_checks_enabled']);
     } else {
         Dropdown::showYesNo("passive_checks_enabled", $this->fields['passive_checks_enabled']);
     }
     echo "</td>";
     // * calendar
     echo "<td>" . __('Check period', 'monitoring') . "&nbsp;:</td>";
     echo "<td align='center'>";
     if ($this->fields['is_template'] == '1') {
         $calendar = new Calendar();
         $calendar->getFromDB($this->fields['calendars_id']);
         echo $calendar->getLink(1);
     } else {
         dropdown::show("Calendar", array('name' => 'calendars_id', 'value' => $this->fields['calendars_id']));
     }
     echo "</td>";
     echo "</tr>";
     echo "<tr>";
     echo "<th colspan='4'>" . __('Remote check', 'monitoring') . "</th>";
     echo "</tr>";
     echo "<tr>";
     // * remotesystem
     echo "<td>";
     echo __('Utility used for remote check', 'monitoring') . "&nbsp;:";
     echo "</td>";
     echo "<td>";
     $input = array();
     $input[''] = '------';
     $input['byssh'] = __('By ssh', 'monitoring');
     $input['nrpe'] = 'nrpe';
     $input['nsca'] = 'nsca';
     if ($this->fields['is_template'] == '1') {
         echo $input[$this->fields['remotesystem']];
     } else {
         Dropdown::showFromArray("remotesystem", $input, array('value' => $this->fields['remotesystem']));
     }
     echo "</td>";
     // * is_argument
     echo "<td>";
     echo __('Use arguments (Only for NRPE)', 'monitoring') . "&nbsp;:";
     echo "</td>";
     echo "<td>";
     if ($this->fields['is_template'] == '1') {
         echo Dropdown::getYesNo($this->fields['is_arguments']);
     } else {
         Dropdown::showYesNo("is_arguments", $this->fields['is_arguments']);
     }
     echo "</td>";
     echo "</tr>";
     echo "<tr>";
     // alias command
     echo "<td>";
     echo __('Alias command if required (Only for NRPE)', 'monitoring') . "&nbsp;:";
     echo "</td>";
     echo "<td>";
     if ($this->fields['is_template'] == '1') {
         echo "<input type='text' name='alias_commandservice' value='" . $this->fields['alias_command'] . "' />";
     } else {
         echo "<input type='text' name='alias_command' value='" . $this->fields['alias_command'] . "' />";
     }
     echo "</td>";
     echo "<td>";
     echo __('Command link (used for graphs generation)', 'monitoring') . "&nbsp;:";
     echo "</td>";
     echo "<td>";
     if ($this->fields['is_template'] == '1') {
         $pMonitoringCommand->getFromDB($this->fields['aliasperfdata_commands_id']);
         echo $pMonitoringCommand->getLink(1);
     } else {
         $pMonitoringCommand->getFromDB($this->fields['aliasperfdata_commands_id']);
         Dropdown::show("PluginMonitoringCommand", array('name' => 'aliasperfdata_commands_id', 'value' => $this->fields['aliasperfdata_commands_id']));
     }
     echo "</td>";
     echo "</tr>";
     // * Manage arguments
     $array = array();
     $a_displayarg = array();
     if (isset($pMonitoringCommand->fields['command_line'])) {
         preg_match_all("/\\\$(ARG\\d+)\\\$/", $pMonitoringCommand->fields['command_line'], $array);
         $a_arguments = importArrayFromDB($this->fields['arguments']);
         foreach ($array[0] as $arg) {
             if (strstr($arg, "ARG")) {
                 $arg = str_replace('$', '', $arg);
                 if (!isset($a_arguments[$arg])) {
                     $a_arguments[$arg] = '';
                 }
                 $a_displayarg[$arg] = $a_arguments[$arg];
             }
         }
     }
     if (count($a_displayarg) > 0) {
         $a_argtext = importArrayFromDB($pMonitoringCommand->fields['arguments']);
         echo "<tr>";
         echo "<th colspan='4'>" . __('Arguments', 'monitoring') . "&nbsp;</th>";
         echo "</tr>";
         foreach ($a_displayarg as $key => $value) {
             echo "<tr>";
             echo "<th>" . $key . "</th>";
             echo "<td colspan='2'>";
             if (isset($a_argtext[$key])) {
                 echo nl2br($a_argtext[$key]) . "&nbsp;:";
             } else {
                 echo __('Argument', 'monitoring') . "&nbsp;:";
             }
             echo "</td>";
             echo "<td>";
             echo "<input type='text' name='arg[" . $key . "]' value='" . $value . "'/><br/>";
             echo "</td>";
             echo "</tr>";
         }
     }
     $this->showFormButtons($options);
     return true;
 }
コード例 #7
0
 static function getAdditionalMenuOptions()
 {
     global $CFG_GLPI;
     $main_menu = '<img src="' . $CFG_GLPI["root_doc"] . '/plugins/monitoring/pics/main_menu.png" alt="' . __('Main menu', 'monitoring') . '" title="' . __('Main menu', 'monitoring') . '"\\>';
     return array('componentscatalog' => array('title' => PluginMonitoringComponentscatalog::getTypeName(), 'page' => PluginMonitoringComponentscatalog::getSearchURL(false), 'links' => array($main_menu => '/plugins/monitoring/front/menu.php', 'search' => '/plugins/monitoring/front/componentscatalog.php', 'add' => '/plugins/monitoring/front/componentscatalog.form.php')), 'command' => array('title' => PluginMonitoringCommand::getTypeName(), 'page' => PluginMonitoringCommand::getSearchURL(false), 'links' => array($main_menu => '/plugins/monitoring/front/menu.php', 'search' => '/plugins/monitoring/front/command.php', 'add' => '/plugins/monitoring/front/command.form.php')), 'check' => array('title' => PluginMonitoringCheck::getTypeName(), 'page' => PluginMonitoringCheck::getSearchURL(false), 'links' => array($main_menu => '/plugins/monitoring/front/menu.php', 'search' => '/plugins/monitoring/front/check.php', 'add' => '/plugins/monitoring/front/check.form.php')), 'eventhandler' => array('title' => PluginMonitoringEventhandler::getTypeName(), 'page' => PluginMonitoringEventhandler::getSearchURL(false), 'links' => array($main_menu => '/plugins/monitoring/front/menu.php', 'search' => '/plugins/monitoring/front/eventhandler.php', 'add' => '/plugins/monitoring/front/eventhandler.form.php')), 'perfdata' => array('title' => PluginMonitoringPerfdata::getTypeName(), 'page' => PluginMonitoringPerfdata::getSearchURL(false), 'links' => array($main_menu => '/plugins/monitoring/front/menu.php', 'search' => '/plugins/monitoring/front/perfdata.php', 'add' => '/plugins/monitoring/front/perfdata.form.php')), 'component' => array('title' => PluginMonitoringComponent::getTypeName(), 'page' => PluginMonitoringComponent::getSearchURL(false), 'links' => array($main_menu => '/plugins/monitoring/front/menu.php', 'search' => '/plugins/monitoring/front/component.php', 'add' => '/plugins/monitoring/front/component.form.php')), 'contacttemplate' => array('title' => PluginMonitoringContacttemplate::getTypeName(), 'page' => PluginMonitoringContacttemplate::getSearchURL(false), 'links' => array($main_menu => '/plugins/monitoring/front/menu.php', 'search' => '/plugins/monitoring/front/contacttemplate.php', 'add' => '/plugins/monitoring/front/contacttemplate.form.php')), 'notificationcommand' => array('title' => PluginMonitoringNotificationcommand::getTypeName(), 'page' => PluginMonitoringNotificationcommand::getSearchURL(false), 'links' => array($main_menu => '/plugins/monitoring/front/menu.php', 'search' => '/plugins/monitoring/front/notificationcommand.php', 'add' => '/plugins/monitoring/front/notificationcommand.form.php')), 'realm' => array('title' => PluginMonitoringRealm::getTypeName(), 'page' => PluginMonitoringRealm::getSearchURL(false), 'links' => array($main_menu => '/plugins/monitoring/front/menu.php', 'search' => '/plugins/monitoring/front/realm.php', 'add' => '/plugins/monitoring/front/realm.form.php')), 'tag' => array('title' => PluginMonitoringTag::getTypeName(), 'page' => PluginMonitoringTag::getSearchURL(false), 'links' => array($main_menu => '/plugins/monitoring/front/menu.php', 'search' => '/plugins/monitoring/front/tag.php')), 'servicescatalog' => array('title' => PluginMonitoringServicescatalog::getTypeName(), 'page' => PluginMonitoringServicescatalog::getSearchURL(false), 'links' => array($main_menu => '/plugins/monitoring/front/menu.php', 'search' => '/plugins/monitoring/front/servicescatalog.php', 'add' => '/plugins/monitoring/front/servicescatalog.form.php')), 'weathermap' => array('title' => PluginMonitoringWeathermap::getTypeName(), 'page' => PluginMonitoringWeathermap::getSearchURL(false), 'links' => array($main_menu => '/plugins/monitoring/front/menu.php', 'search' => '/plugins/monitoring/front/weathermap.php', 'add' => '/plugins/monitoring/front/weathermap.form.php')), 'displayview' => array('title' => PluginMonitoringDisplayview::getTypeName(), 'page' => PluginMonitoringDisplayview::getSearchURL(false), 'links' => array('search' => '/plugins/monitoring/front/displayview.php', 'add' => '/plugins/monitoring/front/displayview.form.php')), 'slider' => array('title' => PluginMonitoringSlider::getTypeName(), 'page' => PluginMonitoringSlider::getSearchURL(false), 'links' => array($main_menu => '/plugins/monitoring/front/menu.php', 'search' => '/plugins/monitoring/front/slider.php', 'add' => '/plugins/monitoring/front/slider.form.php')), 'downtime' => array('title' => PluginMonitoringDowntime::getTypeName(), 'page' => PluginMonitoringDowntime::getSearchURL(false), 'links' => array('search' => '/plugins/monitoring/front/downtime.php')), 'acknowledge' => array('title' => PluginMonitoringAcknowledge::getTypeName(), 'page' => PluginMonitoringAcknowledge::getSearchURL(false), 'links' => array('search' => '/plugins/monitoring/front/acknowledge.php')), 'menu' => array('title' => PluginMonitoringMenu::getTypeName(), 'links' => array($main_menu => '/plugins/monitoring/front/menu.php', 'config' => '/plugins/monitoring/front/config.form.php')), 'dashboard' => array('title' => PluginMonitoringDisplay::getTypeName(), 'links' => array($main_menu => '/plugins/monitoring/front/menu.php', 'config' => '/plugins/monitoring/front/config.form.php')), 'config' => array('title' => PluginMonitoringConfig::getTypeName(), 'links' => array($main_menu => '/plugins/monitoring/front/menu.php')));
 }
コード例 #8
0
 function showComponents($componentscatalogs_id)
 {
     global $DB, $LANG, $CFG_GLPI;
     $this->addComponent($componentscatalogs_id);
     $rand = mt_rand();
     $pmComponent = new PluginMonitoringComponent();
     $pmCommand = new PluginMonitoringCommand();
     $pmCheck = new PluginMonitoringCheck();
     $calendar = new Calendar();
     echo "<form method='post' name='componentscatalog_component_form{$rand}' id='componentscatalog_component_form{$rand}' action=\"" . $CFG_GLPI["root_doc"] . "/plugins/monitoring/front/componentscatalog_component.form.php\">";
     echo "<table class='tab_cadre_fixe'>";
     echo "<tr>";
     echo "<th>";
     echo $LANG['plugin_monitoring']['component'][2];
     echo "</th>";
     echo "</tr>";
     echo "</table>";
     echo "<table class='tab_cadre_fixe'>";
     echo "<tr>";
     echo "<th width='10'>&nbsp;</th>";
     echo "<th>" . $LANG['common'][16] . "</th>";
     echo "<th>" . $LANG['plugin_monitoring']['command'][2] . "</th>";
     echo "<th>" . $LANG['plugin_monitoring']['check'][0] . "</th>";
     echo "<th>" . $LANG['plugin_monitoring']['host'][9] . "</th>";
     echo "<th>" . $LANG['plugin_monitoring']['service'][8] . "</th>";
     echo "</tr>";
     $used = array();
     $query = "SELECT * FROM `" . $this->getTable() . "`\n         WHERE `plugin_monitoring_componentscalalog_id`='" . $componentscatalogs_id . "'";
     $result = $DB->query($query);
     while ($data = $DB->fetch_array($result)) {
         $used[] = $data['plugin_monitoring_components_id'];
         $pmComponent->getFromDB($data['plugin_monitoring_components_id']);
         echo "<tr>";
         echo "<td>";
         echo "<input type='checkbox' name='item[" . $data["id"] . "]' value='1'>";
         echo "</td>";
         echo "<td class='center'>";
         echo $pmComponent->getLink(1);
         echo "</td>";
         echo "<td class='center'>";
         $pmCommand->getFromDB($pmComponent->fields['plugin_monitoring_commands_id']);
         echo $pmCommand->getLink();
         echo "</td>";
         echo "<td class='center'>";
         $pmCheck->getFromDB($pmComponent->fields['plugin_monitoring_checks_id']);
         echo $pmCheck->getLink();
         echo "</td>";
         echo "<td class='center'>";
         $calendar->getFromDB($pmComponent->fields['calendars_id']);
         echo $calendar->getLink();
         echo "</td>";
         echo "<td class='center'>";
         if ($pmComponent->fields['remotesystem'] == '') {
             echo "-";
         } else {
             echo $pmComponent->fields['remotesystem'];
         }
         echo "</td>";
         echo "</tr>";
     }
     openArrowMassive("componentscatalog_host_form{$rand}", true);
     closeArrowMassive('deleteitem', $LANG['buttons'][6]);
     echo "</table>";
 }
コード例 #9
0
 function parseToRrdtool($plugin_monitoring_services_id)
 {
     global $DB;
     $pmRrdtool = new PluginMonitoringRrdtool();
     $pmCommand = new PluginMonitoringCommand();
     $pmService = new PluginMonitoringService();
     $pmComponent = new PluginMonitoringComponent();
     if ($pmService->getFromDB($plugin_monitoring_services_id)) {
         $pmComponent->getFromDB($pmService->fields['plugin_monitoring_components_id']);
         if (!isset($pmComponent->fields['plugin_monitoring_commands_id'])) {
             return;
         }
         if (is_null($pmComponent->fields['graph_template'])) {
             return;
         }
         $pmCommand->getFromDB($pmComponent->fields['plugin_monitoring_commands_id']);
         $pmUnavaibility = new PluginMonitoringUnavaibility();
         $pmUnavaibility->runUnavaibility($plugin_monitoring_services_id);
         $query = "SELECT * FROM `" . $this->getTable() . "`\n            WHERE `plugin_monitoring_services_id`='" . $plugin_monitoring_services_id . "'\n            ORDER BY `date`";
         $result = $DB->query($query);
         $i = 0;
         $nb_rows = $DB->numrows($result);
         $rrdtool_value = '';
         $last_date = '';
         while ($edata = $DB->fetch_array($result)) {
             $i++;
             if ($edata['unavailability'] == '0') {
                 if ($last_date != '') {
                     $pmRrdtool->addData($pmComponent->fields['graph_template'], $plugin_monitoring_services_id, 0, '', $rrdtool_value, 1);
                 }
                 break;
             }
             $perf_data = $edata['perf_data'];
             if ($edata['perf_data'] == '') {
                 $perf_data = $edata['output'];
             }
             if ($edata['unavailability'] != '2' and $i < $nb_rows) {
                 $rrdtool_value = $pmRrdtool->addData($pmComponent->fields['graph_template'], $plugin_monitoring_services_id, $this->convert_datetime_timestamp($edata['date']), $perf_data, $rrdtool_value, 0);
             }
             $last_date = $edata['date'];
             if ($i == $nb_rows) {
                 if ($edata['unavailability'] != '2') {
                     $input = array();
                     $input['id'] = $edata['id'];
                     $input['unavailability'] = 2;
                     $this->update($input);
                     $pmRrdtool->addData($pmComponent->fields['graph_template'], $plugin_monitoring_services_id, $this->convert_datetime_timestamp($edata['date']), $perf_data, $rrdtool_value, 1);
                     $queryd = "DELETE FROM `" . $this->getTable() . "`\n                     WHERE `plugin_monitoring_services_id`='" . $plugin_monitoring_services_id . "'\n                        AND `date`<'" . $edata['date'] . "'";
                     $DB->query($queryd);
                 }
             }
         }
         $a_list = array();
         $a_list[] = "2h";
         $a_list[] = "12h";
         $a_list[] = "1d";
         $a_list[] = "1w";
         $a_list[] = "1m";
         $a_list[] = "0y6m";
         $a_list[] = "1y";
         $pmConfig = new PluginMonitoringConfig();
         $pmConfig->getFromDB(1);
         $a_timezones = importArrayFromDB($pmConfig->fields['timezones']);
         foreach ($a_list as $time) {
             foreach ($a_timezones as $timezone) {
                 $pmRrdtool->displayGLPIGraph($pmComponent->fields['graph_template'], "PluginMonitoringService", $plugin_monitoring_services_id, $timezone, $time);
             }
         }
     } else {
         $query = "DELETE FROM `" . $this->getTable() . "`\n            WHERE `plugin_monitoring_services_id`='" . $plugin_monitoring_services_id . "'";
         $DB->query($query);
     }
 }
コード例 #10
0
if (isset($_GET['components_id']) && !isset($_SESSION['glpi_plugin_monitoring']['perfname'][$_GET['components_id']])) {
    PluginMonitoringToolbox::loadPreferences($_GET['components_id']);
}
if (!isset($_SESSION['glpi_plugin_monitoring']['perfname'][$_GET['components_id']])) {
    echo json_encode(array());
    //   echo __('No data ...', 'monitoring');
    exit;
}
if (isset($_SESSION['glpi_plugin_monitoring']['perfname'][$_GET['components_id']][''])) {
    unset($_SESSION['glpi_plugin_monitoring']['perfname'][$_GET['components_id']]['']);
}
$a_ret = $pmServicegraph->generateData($_GET['rrdtool_template'], $_GET['itemtype'], $_GET['items_id'], $_GET['timezone'], $_GET['time'], $enddate, $_SESSION['glpi_plugin_monitoring']['perfname'][$_GET['components_id']]);
$mydatat = $a_ret[0];
$a_labels = $a_ret[1];
$pmComponent = new PluginMonitoringComponent();
$pmCommand = new PluginMonitoringCommand();
$pmComponent->getFromDB($_GET['components_id']);
$pmCommand->getFromDB($pmComponent->fields['plugin_monitoring_commands_id']);
$a_data = array();
$a_values = array();
$lab = '';
$num = 1;
$a_names = array();
$formaty = ".0f";
$max = 0;
foreach ($mydatat as $name => $data) {
    if (!isset($a_names[$name])) {
        $a_names[$name] = $num;
        $num++;
    }
    $display = "checked";
コード例 #11
0
ファイル: install.php プロジェクト: geldarr/hack-space
function pluginMonitoringInstall($version)
{
    global $DB, $CFG_GLPI;
    // ** Insert in DB
    $DB_file = GLPI_ROOT . "/plugins/monitoring/install/mysql/plugin_monitoring-" . $version . "-empty.sql";
    $DBf_handle = fopen($DB_file, "rt");
    $sql_query = fread($DBf_handle, filesize($DB_file));
    fclose($DBf_handle);
    foreach (explode(";\n", "{$sql_query}") as $sql_line) {
        if (get_magic_quotes_runtime()) {
            $sql_line = Toolbox::stripslashes_deep($sql_line);
        }
        if (!empty($sql_line)) {
            $DB->query($sql_line);
        }
    }
    include GLPI_ROOT . "/plugins/monitoring/inc/profile.class.php";
    $pmProfile = new PluginMonitoringProfile();
    $pmProfile->initProfile();
    include GLPI_ROOT . "/plugins/monitoring/inc/command.class.php";
    $pmCommand = new PluginMonitoringCommand();
    $pmCommand->initCommands();
    include GLPI_ROOT . "/plugins/monitoring/inc/notificationcommand.class.php";
    $pmNotificationcommand = new PluginMonitoringNotificationcommand();
    $pmNotificationcommand->initCommands();
    include GLPI_ROOT . "/plugins/monitoring/inc/check.class.php";
    $pmCheck = new PluginMonitoringCheck();
    $pmCheck->initChecks();
    include GLPI_ROOT . "/plugins/monitoring/inc/hostconfig.class.php";
    $pmHostconfig = new PluginMonitoringHostconfig();
    $pmHostconfig->initConfig();
    include GLPI_ROOT . "/plugins/monitoring/inc/config.class.php";
    $pmConfig = new PluginMonitoringConfig();
    $pmConfig->initConfig();
    $query = "UPDATE `glpi_plugin_monitoring_configs`\n      SET `version`='" . PLUGIN_MONITORING_VERSION . "'\n         WHERE `id`='1'";
    $DB->query($query);
    $query = "SELECT * FROM `glpi_calendars`\n      WHERE `name`='24x7'\n      LIMIT 1";
    $result = $DB->query($query);
    if ($DB->numrows($result) == 0) {
        $calendar = new Calendar();
        $input = array();
        $input['name'] = '24x7';
        $input['is_recursive'] = 1;
        $calendars_id = $calendar->add($input);
        $calendarSegment = new CalendarSegment();
        $input = array();
        $input['calendars_id'] = $calendars_id;
        $input['is_recursive'] = 1;
        $input['begin'] = '00:00:00';
        $input['end'] = '24:00:00';
        $input['day'] = '0';
        $calendarSegment->add($input);
        $input['day'] = '1';
        $calendarSegment->add($input);
        $input['day'] = '2';
        $calendarSegment->add($input);
        $input['day'] = '3';
        $calendarSegment->add($input);
        $input['day'] = '4';
        $calendarSegment->add($input);
        $input['day'] = '5';
        $calendarSegment->add($input);
        $input['day'] = '6';
        $calendarSegment->add($input);
    }
    if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/monitoring')) {
        mkdir(GLPI_PLUGIN_DOC_DIR . "/monitoring");
    }
    if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/monitoring/templates')) {
        mkdir(GLPI_PLUGIN_DOC_DIR . "/monitoring/templates");
    }
    if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/monitoring/weathermapbg')) {
        mkdir(GLPI_PLUGIN_DOC_DIR . "/monitoring/weathermapbg");
    }
    CronTask::Register('PluginMonitoringServiceevent', 'updaterrd', '300', array('mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30));
    CronTask::Register('PluginMonitoringLog', 'cleanlogs', '96400', array('mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30));
    CronTask::Register('PluginMonitoringUnavaibility', 'unavaibility', '300', array('mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30));
    CronTask::Register('PluginMonitoringDisplayview_rule', 'replayallviewrules', '1200', array('mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30));
}
コード例 #12
0
 /**
  * Display form for service configuration
  *
  * @param $items_id integer ID
  * @param $options array
  *
  *@return bool true if form is ok
  *
  **/
 function showForm($items_id, $options = array(), $copy = array())
 {
     global $DB, $CFG_GLPI;
     $pMonitoringCommand = new PluginMonitoringCommand();
     if (count($copy) > 0) {
         foreach ($copy as $key => $value) {
             $this->fields[$key] = stripslashes($value);
         }
     }
     $this->initForm($items_id, $options);
     if ($this->fields['id'] == 0) {
         $this->fields['active_checks_enabled'] = 1;
         $this->fields['passive_checks_enabled'] = 1;
     }
     $this->showFormHeader($options);
     if (isset($_SESSION['plugin_monitoring_components'])) {
         $this->fields = $_SESSION['plugin_monitoring_components'];
         if (!isset($this->fields["id"])) {
             $this->fields["id"] = '';
         }
         if (!isset($this->fields["arguments"])) {
             $this->fields["arguments"] = '';
         }
         unset($_SESSION['plugin_monitoring_components']);
     }
     echo "<tr>";
     echo "<td>";
     echo __('Name') . "<font class='red'>*</font>&nbsp;:";
     echo "</td>";
     echo "<td>";
     echo "<input type='hidden' name='is_template' value='1' />";
     $objectName = autoName($this->fields["name"], "name", 1, $this->getType());
     Html::autocompletionTextField($this, 'name', array('value' => $objectName));
     echo "</td>";
     // * checks
     echo "<td>" . __('Check definition', 'monitoring') . "<font class='red'>*</font>&nbsp;:</td>";
     echo "<td>";
     Dropdown::show("PluginMonitoringCheck", array('name' => 'plugin_monitoring_checks_id', 'value' => $this->fields['plugin_monitoring_checks_id']));
     echo "</td>";
     echo "</tr>";
     // * Link
     echo "<tr>";
     echo "<td>";
     echo __('Alias (Shinken service_description)', 'monitoring') . "&nbsp;:";
     echo "</td>";
     echo "<td>";
     $objectDescription = autoName($this->fields["description"], "name", 1, $this->getType());
     Html::autocompletionTextField($this, 'description', array('value' => $objectDescription));
     echo "</td>";
     /*
           echo "<td>";
     //      echo "Type of template&nbsp;:";
           echo "</td>";
           echo "<td>";
     //      $a_types = array();
     //      $a_types[''] = Dropdown::EMPTY_VALUE;
     //      $a_types['partition'] = "Partition";
     //      $a_types['processor'] = "Processor";
     //      Dropdown::showFromArray("link", $a_types, array('value'=>$this->fields['link']));
           echo "</td>";
     */
     // * active check
     echo "<td>";
     echo __('Active check', 'monitoring') . "<font class='red'>*</font>&nbsp;:";
     echo "</td>";
     echo "<td>";
     Dropdown::showYesNo("active_checks_enabled", $this->fields['active_checks_enabled']);
     echo "</td>";
     echo "</tr>";
     // * command
     echo "<tr>";
     echo "<td>";
     echo __('Command', 'monitoring') . "<font class='red'>*</font>&nbsp;:";
     echo "</td>";
     echo "<td>";
     $pMonitoringCommand->getFromDB($this->fields['plugin_monitoring_commands_id']);
     Dropdown::show("PluginMonitoringCommand", array('name' => 'plugin_monitoring_commands_id', 'value' => $this->fields['plugin_monitoring_commands_id']));
     echo "</td>";
     // * passive check
     echo "<td>";
     echo __('Passive check', 'monitoring') . "<font class='red'>*</font>&nbsp;:";
     echo "</td>";
     echo "<td>";
     Dropdown::showYesNo("passive_checks_enabled", $this->fields['passive_checks_enabled']);
     echo "</td>";
     echo "</tr>";
     echo "<tr>";
     echo "<td>";
     echo __('Template (for graphs generation)', 'monitoring') . "&nbsp;:";
     echo "</td>";
     echo "<td>";
     Dropdown::show('PluginMonitoringPerfdata', array('name' => 'graph_template', 'value' => $this->fields['graph_template']));
     echo "</td>";
     // * freshness
     echo "<td>" . __('Freshness (for passive mode)', 'monitoring') . "&nbsp;:</td>";
     echo "<td>";
     if ($this->fields['freshness_count'] == '') {
         $this->fields['freshness_count'] = 0;
     }
     Dropdown::showNumber("freshness_count", array('value' => $this->fields['freshness_count'], 'min' => 0, 'max' => 300));
     $a_time = array();
     $a_time['seconds'] = __('Second(s)', 'monitoring');
     $a_time['minutes'] = __('Minute(s)', 'monitoring');
     $a_time['hours'] = __('Hour(s)', 'monitoring');
     $a_time['days'] = __('Day(s)', 'monitoring');
     Dropdown::showFromArray("freshness_type", $a_time, array('value' => $this->fields['freshness_type']));
     echo "</td>";
     echo "</tr>";
     echo "<tr>";
     echo "<td>";
     echo __('Event handler', 'monitoring') . "&nbsp;:";
     echo "</td>";
     echo "<td>";
     dropdown::show("PluginMonitoringEventhandler", array('name' => 'plugin_monitoring_eventhandlers_id', 'value' => $this->fields['plugin_monitoring_eventhandlers_id']));
     echo "</td>";
     // * calendar
     echo "<td>" . __('Check period', 'monitoring') . "<font class='red'>*</font>&nbsp;:</td>";
     echo "<td>";
     dropdown::show("Calendar", array('name' => 'calendars_id', 'value' => $this->fields['calendars_id']));
     echo "</td>";
     echo "</tr>";
     echo "<tr>";
     echo "<th colspan='4'>" . __('Remote check', 'monitoring') . "</th>";
     echo "</tr>";
     echo "<tr>";
     // * remotesystem
     echo "<td>";
     echo __('Utility used for remote check', 'monitoring') . "&nbsp;:";
     echo "</td>";
     echo "<td>";
     $input = array();
     $input[''] = '------';
     $input['byssh'] = 'byssh';
     $input['nrpe'] = 'nrpe';
     $input['nsca'] = 'nsca';
     Dropdown::showFromArray("remotesystem", $input, array('value' => $this->fields['remotesystem']));
     echo "</td>";
     // * is_argument
     echo "<td>";
     echo __('Use arguments (NRPE only)', 'monitoring') . "&nbsp;:";
     echo "</td>";
     echo "<td>";
     Dropdown::showYesNo("is_arguments", $this->fields['is_arguments']);
     echo "</td>";
     echo "</tr>";
     echo "<tr>";
     // alias command
     echo "<td>";
     echo __('Alias command if required (NRPE only)', 'monitoring') . "&nbsp;:";
     echo "</td>";
     echo "<td>";
     echo "<input type='text' name='alias_command' value='" . $this->fields['alias_command'] . "' size='35' />";
     echo "</td>";
     echo "<td colspan='2'></td>";
     echo "</tr>";
     // * Manage arguments
     $array = array();
     $a_displayarg = array();
     if (isset($pMonitoringCommand->fields['command_line'])) {
         preg_match_all("/\\\$(ARG\\d+)\\\$/", $pMonitoringCommand->fields['command_line'], $array);
         $a_arguments = importArrayFromDB($this->fields['arguments']);
         foreach ($array[0] as $arg) {
             if (strstr($arg, "ARG")) {
                 $arg = str_replace('$', '', $arg);
                 if (!isset($a_arguments[$arg])) {
                     $a_arguments[$arg] = '';
                 }
                 $a_displayarg[$arg] = $a_arguments[$arg];
             }
         }
     }
     if (count($a_displayarg) > 0) {
         $a_tags = $this->tagsAvailable();
         $a_argtext = importArrayFromDB($pMonitoringCommand->fields['arguments']);
         echo "<tr>";
         echo "<th colspan='4'>" . __('Arguments', 'monitoring') . "&nbsp;</th>";
         echo "</tr>";
         foreach ($a_displayarg as $key => $value) {
             echo "<tr>";
             echo "<td>";
             if (isset($a_argtext[$key]) and $a_argtext[$key] != '') {
                 echo nl2br($a_argtext[$key]) . "&nbsp;:";
             } else {
                 echo __('Argument', 'monitoring') . " (" . $key . ")&nbsp;:";
             }
             echo "</td>";
             echo "<td>";
             echo "<input type='text' name='arg[" . $key . "]' value='" . $value . "' size='35' /><br/>";
             echo "</td>";
             if (count($a_tags) > 0) {
                 foreach ($a_tags as $key => $value) {
                     echo "<td class='tab_bg_3'>";
                     echo "<strong>" . $key . "</strong>&nbsp;:";
                     echo "</td>";
                     echo "<td class='tab_bg_3'>";
                     echo $value;
                     echo "</td>";
                     unset($a_tags[$key]);
                     break;
                 }
             } else {
                 echo "<td colspan='2'></td>";
             }
             echo "</tr>";
         }
         foreach ($a_tags as $key => $value) {
             echo "<tr>";
             echo "<td colspan='2'></td>";
             echo "<td class='tab_bg_3'>";
             echo "<strong>" . $key . "</strong>&nbsp;:";
             echo "</td>";
             echo "<td class='tab_bg_3'>";
             echo $value;
             echo "</td>";
             echo "</tr>";
         }
     }
     if (Session::haveRight("plugin_monitoring_weathermap", READ)) {
         echo "<tr>";
         echo "<th colspan='4'>" . __('Weathermap', 'monitoring') . "&nbsp;</th>";
         echo "</tr>";
         echo "<tr>";
         echo "<td>";
         echo __('Use this component for Weathermap', 'monitoring') . "&nbsp;:";
         echo "</td>";
         echo "<td>";
         Dropdown::showYesNo("is_weathermap", $this->fields['is_weathermap']);
         echo "</td>";
         echo "<td>";
         $tooltip = __('Example', 'monitoring') . " :<br/><br/>";
         $tooltip .= "perfdata : <i>inUsage=0.00%;85;98 outUsage=0.00%;85;98 inBandwidth=<strong>789944</strong>.00bps outBandwidth=486006.00bps inAbsolut=0 outAbsolut=12665653</i><br/><br/>";
         $tooltip .= __('Regex bandwidth input', 'monitoring') . " : <i><strong>(?:.*)inBandwidth=(\\d+)(?:.*)</strong></i><br/><br/>";
         $tooltip .= __('Assign the value from regular expression') . " : <strong>789944</strong>";
         echo __('Regex bandwidth input', 'monitoring') . "&nbsp;";
         Html::showToolTip($tooltip, array('autoclose' => false));
         echo "&nbsp;:";
         echo "</td>";
         echo "<td>";
         echo "<input type='text' name='weathermap_regex_in' value='" . $this->fields['weathermap_regex_in'] . "' size='40' />";
         echo "</td>";
         echo "</tr>";
         echo "<tr>";
         echo "<td colspan='2'>";
         echo "</td>";
         echo "<td>";
         $tooltip = __('Example', 'monitoring') . " :<br/><br/>";
         $tooltip .= "perfdata : <i>inUsage=0.00%;85;98 outUsage=0.00%;85;98 inBandwidth=789944.00bps outBandwidth=<strong>486006</strong>.00bps inAbsolut=0 outAbsolut=12665653</i><br/><br/>";
         $tooltip .= __('Regex bandwidth output', 'monitoring') . " : <i><strong>(?:.*)outBandwidth=(\\d+)(?:.*)</strong></i><br/><br/>";
         $tooltip .= __('Assign the value from regular expression') . " : <strong>789944</strong>";
         echo __('Regex bandwidth output', 'monitoring') . "&nbsp;";
         Html::showToolTip($tooltip, array('autoclose' => false));
         echo "&nbsp;:";
         echo "</td>";
         echo "<td>";
         echo "<input type='text' name='weathermap_regex_out' value='" . $this->fields['weathermap_regex_out'] . "' size='40' />";
         echo "</td>";
         echo "</tr>";
     }
     $this->showFormButtons($options);
     return true;
 }
コード例 #13
0
 function generateServicesCfg($file = 0, $tag = '')
 {
     global $DB;
     $pMonitoringCommand = new PluginMonitoringCommand();
     $pMonitoringCheck = new PluginMonitoringCheck();
     $pmComponent = new PluginMonitoringComponent();
     $pmEntity = new PluginMonitoringEntity();
     $pmContact_Item = new PluginMonitoringContact_Item();
     $pmService = new PluginMonitoringService();
     $pmComponentscatalog = new PluginMonitoringComponentscatalog();
     $calendar = new Calendar();
     $user = new User();
     $pmLog = new PluginMonitoringLog();
     $profile_User = new Profile_User();
     if (isset($_SERVER['HTTP_USER_AGENT']) and strstr($_SERVER['HTTP_USER_AGENT'], 'xmlrpclib.py')) {
         if (!isset($_SESSION['glpi_currenttime'])) {
             $_SESSION['glpi_currenttime'] = date("Y-m-d H:i:s");
         }
         $input = array();
         $input['user_name'] = "Shinken";
         $input['action'] = "restart";
         $input['date_mod'] = date("Y-m-d H:i:s");
         $pmLog->add($input);
     }
     $hostnamebp = '';
     $a_services = array();
     $i = 0;
     // * Prepare contacts
     $a_contacts_entities = array();
     $a_list_contact = $pmContact_Item->find("`itemtype`='PluginMonitoringComponentscatalog'\n         AND `users_id`>0");
     foreach ($a_list_contact as $data) {
         $contactentities = getSonsOf('glpi_entities', $data['entities_id']);
         if (isset($a_contacts_entities[$data['items_id']][$data['users_id']])) {
             $contactentities = array_merge($contactentities, $a_contacts_entities[$data['items_id']][$data['users_id']]);
         }
         $a_contacts_entities[$data['items_id']][$data['users_id']] = $contactentities;
     }
     $a_entities_allowed = $pmEntity->getEntitiesByTag($tag);
     $query = "SELECT * FROM `glpi_plugin_monitoring_services`";
     $result = $DB->query($query);
     while ($data = $DB->fetch_array($result)) {
         $notadd = 0;
         $notadddescription = '';
         $a_component = current($pmComponent->find("`id`='" . $data['plugin_monitoring_components_id'] . "'", "", 1));
         $a_hostname = array();
         $queryh = "SELECT * FROM `glpi_plugin_monitoring_componentscatalogs_hosts` \n            WHERE `id` = '" . $data['plugin_monitoring_componentscatalogs_hosts_id'] . "'\n            LIMIT 1";
         $resulth = $DB->query($queryh);
         $hostname = '';
         $plugin_monitoring_componentscatalogs_id = 0;
         while ($datah = $DB->fetch_array($resulth)) {
             $itemtype = $datah['itemtype'];
             $item = new $itemtype();
             if ($item->getFromDB($datah['items_id'])) {
                 if (isset($a_entities_allowed['-1']) or isset($a_entities_allowed[$item->fields['entities_id']])) {
                     $a_hostname[] = $itemtype . "-" . $datah['items_id'] . "-" . preg_replace("/[^A-Za-z0-9]/", "", $item->fields['name']);
                     $hostname = $item->fields['name'];
                     $plugin_monitoring_componentscatalogs_id = $datah['plugin_monitoring_componentscalalog_id'];
                 }
             }
         }
         if (count($a_hostname) > 0) {
             if (isset($_SESSION['plugin_monitoring']['servicetemplates'][$a_component['id']])) {
                 $a_services[$i]['use'] = $_SESSION['plugin_monitoring']['servicetemplates'][$a_component['id']];
             }
             $a_services[$i]['host_name'] = implode(",", array_unique($a_hostname));
             $hostnamebp = $a_services[$i]['host_name'];
             // For business rules
             $a_services[$i]['service_description'] = preg_replace("/[^A-Za-z0-9]/", "", $a_component['name']) . "-" . $data['id'];
             $pMonitoringCommand->getFromDB($a_component['plugin_monitoring_commands_id']);
             // Manage arguments
             $array = array();
             preg_match_all("/\\\$(ARG\\d+)\\\$/", $pMonitoringCommand->fields['command_line'], $array);
             sort($array[0]);
             $a_arguments = importArrayFromDB($a_component['arguments']);
             $a_argumentscustom = importArrayFromDB($data['arguments']);
             foreach ($a_argumentscustom as $key => $value) {
                 $a_arguments[$key] = $value;
             }
             $args = '';
             foreach ($array[0] as $arg) {
                 if ($arg != '$PLUGINSDIR$' and $arg != '$HOSTADDRESS$' and $arg != '$MYSQLUSER$' and $arg != '$MYSQLPASSWORD$') {
                     $arg = str_replace('$', '', $arg);
                     if (!isset($a_arguments[$arg])) {
                         $args .= '!';
                     } else {
                         if (strstr($a_arguments[$arg], "[[HOSTNAME]]")) {
                             $a_arguments[$arg] = str_replace("[[HOSTNAME]]", $hostname, $a_arguments[$arg]);
                         } elseif (strstr($a_arguments[$arg], "[[NETWORKPORTDESCR]]")) {
                             if (class_exists("PluginFusinvsnmpNetworkPort")) {
                                 $pfNetworkPort = new PluginFusinvsnmpNetworkPort();
                                 $pfNetworkPort->loadNetworkport($data['networkports_id']);
                                 $descr = '';
                                 $descr = $pfNetworkPort->getValue("ifdescr");
                                 $a_arguments[$arg] = str_replace("[[NETWORKPORTDESCR]]", $descr, $a_arguments[$arg]);
                             }
                         } elseif (strstr($a_arguments[$arg], "[[NETWORKPORTNUM]]")) {
                             $networkPort = new NetworkPort();
                             $networkPort->getFromDB($data['networkports_id']);
                             $logicalnum = $pfNetworkPort->fields['logical_number'];
                             $a_arguments[$arg] = str_replace("[[NETWORKPORTNUM]]", $logicalnum, $a_arguments[$arg]);
                         } elseif (strstr($a_arguments[$arg], "[[NETWORKPORTNAME]]")) {
                             $networkPort = new NetworkPort();
                             $networkPort->getFromDB($data['networkports_id']);
                             $portname = $pfNetworkPort->fields['name'];
                             $a_arguments[$arg] = str_replace("[[NETWORKPORTNAME]]", $portname, $a_arguments[$arg]);
                         } else {
                             if (strstr($a_arguments[$arg], "[")) {
                                 $a_arguments[$arg] = PluginMonitoringService::convertArgument($data['id'], $a_arguments[$arg]);
                             }
                         }
                         if ($a_arguments == '') {
                             $notadd = 1;
                             if ($notadddescription != '') {
                                 $notadddescription .= ", ";
                             }
                             $notadddescription .= "Argument " . $a_arguments[$arg] . " Not have value";
                         }
                         $args .= '!' . $a_arguments[$arg];
                         if ($a_arguments[$arg] == '' and $a_component['alias_command'] != '') {
                             $args .= $a_component['alias_command'];
                         }
                     }
                 }
             }
             // End manage arguments
             if ($a_component['remotesystem'] == 'nrpe') {
                 if ($a_component['alias_command'] != '') {
                     $a_services[$i]['check_command'] = "check_nrpe!" . $a_component['alias_command'];
                 } else {
                     $a_services[$i]['check_command'] = "check_nrpe!" . $pMonitoringCommand->fields['command_name'];
                 }
             } else {
                 $a_services[$i]['check_command'] = $pMonitoringCommand->fields['command_name'] . $args;
             }
             // * Contacts
             $a_contacts = array();
             $a_list_contact = $pmContact_Item->find("`itemtype`='PluginMonitoringComponentscatalog'\n                  AND `items_id`='" . $plugin_monitoring_componentscatalogs_id . "'");
             foreach ($a_list_contact as $data_contact) {
                 if (isset($a_contacts_entities[$plugin_monitoring_componentscatalogs_id][$data_contact['users_id']])) {
                     if (in_array($data['entities_id'], $a_contacts_entities[$plugin_monitoring_componentscatalogs_id][$data_contact['users_id']])) {
                         //                  $pmContact->getFromDB($data_contact['plugin_monitoring_contacts_id']);
                         $user->getFromDB($data_contact['users_id']);
                         $a_contacts[] = $user->fields['name'];
                     }
                 }
             }
             $a_contacts_unique = array_unique($a_contacts);
             $a_services[$i]['contacts'] = implode(',', $a_contacts_unique);
             // ** If shinken not use templates or template not defined :
             if (!isset($_SESSION['plugin_monitoring']['servicetemplates'][$a_component['id']])) {
                 $pMonitoringCheck->getFromDB($a_component['plugin_monitoring_checks_id']);
                 $a_services[$i]['check_interval'] = $pMonitoringCheck->fields['check_interval'];
                 $a_services[$i]['retry_interval'] = $pMonitoringCheck->fields['retry_interval'];
                 $a_services[$i]['max_check_attempts'] = $pMonitoringCheck->fields['max_check_attempts'];
                 if ($calendar->getFromDB($a_component['calendars_id'])) {
                     $a_services[$i]['check_period'] = $calendar->fields['name'];
                 }
                 $a_services[$i]['notification_interval'] = '30';
                 if ($calendar->getFromDB($a_component['calendars_id'])) {
                     $a_services[$i]['notification_period'] = $calendar->fields['name'];
                 } else {
                     $a_services[$i]['notification_period'] = "24x7";
                 }
                 $a_services[$i]['notification_options'] = 'w,c,r';
                 $a_services[$i]['active_checks_enabled'] = '1';
                 $a_services[$i]['process_perf_data'] = '1';
                 $a_services[$i]['active_checks_enabled'] = '1';
                 $a_services[$i]['passive_checks_enabled'] = '1';
                 $a_services[$i]['parallelize_check'] = '1';
                 $a_services[$i]['obsess_over_service'] = '1';
                 $a_services[$i]['check_freshness'] = '1';
                 $a_services[$i]['freshness_threshold'] = '1';
                 $a_services[$i]['notifications_enabled'] = '1';
                 $a_services[$i]['event_handler_enabled'] = '0';
                 //$a_services[$i]['event_handler'] = 'super_event_kill_everyone!DIE';
                 $a_services[$i]['flap_detection_enabled'] = '1';
                 $a_services[$i]['failure_prediction_enabled'] = '1';
                 $a_services[$i]['retain_status_information'] = '1';
                 $a_services[$i]['retain_nonstatus_information'] = '1';
                 $a_services[$i]['is_volatile'] = '0';
                 $a_services[$i]['_httpstink'] = 'NO';
             }
             $pmComponentscatalog->getFromDB($plugin_monitoring_componentscatalogs_id);
             if ($pmComponentscatalog->fields['notification_interval'] != '30') {
                 $a_services[$i]['notification_interval'] = $pmComponentscatalog->fields['notification_interval'];
             }
             if ($notadd == '1') {
                 unset($a_services[$i]);
                 $input = array();
                 $input['id'] = $data['id'];
                 $input['event'] = $notadddescription;
                 $input['state'] = "CRITICAL";
                 $input['state_type'] = "HARD";
                 $pmService->update($input);
             } else {
                 $i++;
             }
         }
     }
     //      // Business rules....
     $pmService = new PluginMonitoringService();
     $pmServicescatalog = new PluginMonitoringServicescatalog();
     $pMonitoringBusinessrulegroup = new PluginMonitoringBusinessrulegroup();
     $pmBusinessrule = new PluginMonitoringBusinessrule();
     $pmComponentscatalog_Host = new PluginMonitoringComponentscatalog_Host();
     $a_listBA = $pmServicescatalog->find();
     foreach ($a_listBA as $dataBA) {
         if (isset($a_entities_allowed['-1']) or isset($a_entities_allowed[$dataBA['entities_id']])) {
             $a_grouplist = $pMonitoringBusinessrulegroup->find("`plugin_monitoring_servicescatalogs_id`='" . $dataBA['id'] . "'");
             $a_group = array();
             foreach ($a_grouplist as $gdata) {
                 $a_listBR = $pmBusinessrule->find("`plugin_monitoring_businessrulegroups_id`='" . $gdata['id'] . "'");
                 foreach ($a_listBR as $dataBR) {
                     if ($pmService->getFromDB($dataBR['plugin_monitoring_services_id'])) {
                         $pmComponentscatalog_Host->getFromDB($pmService->fields['plugin_monitoring_componentscatalogs_hosts_id']);
                         $itemtype = $pmComponentscatalog_Host->fields['itemtype'];
                         $item = new $itemtype();
                         if ($item->getFromDB($pmComponentscatalog_Host->fields['items_id'])) {
                             $hostname = $itemtype . "-" . $pmComponentscatalog_Host->fields['items_id'] . "-" . preg_replace("/[^A-Za-z0-9]/", "", $item->fields['name']);
                             if ($gdata['operator'] == 'and' or $gdata['operator'] == 'or' or strstr($gdata['operator'], ' of:')) {
                                 $operator = '|';
                                 if ($gdata['operator'] == 'and') {
                                     $operator = '&';
                                 }
                                 if (!isset($a_group[$gdata['id']])) {
                                     $a_group[$gdata['id']] = '';
                                     if (strstr($gdata['operator'], ' of:')) {
                                         $a_group[$gdata['id']] = $gdata['operator'];
                                     }
                                     $a_group[$gdata['id']] .= $hostname . "," . preg_replace("/[^A-Za-z0-9]/", "", $pmService->fields['name']) . "-" . $pmService->fields['id'];
                                 } else {
                                     $a_group[$gdata['id']] .= $operator . $hostname . "," . preg_replace("/[^A-Za-z0-9]/", "", $pmService->fields['name']) . "-" . $pmService->fields['id'];
                                 }
                             } else {
                                 $a_group[$gdata['id']] = $gdata['operator'] . " " . $hostname . "," . preg_replace("/[^A-Za-z0-9]/", "", $item->getName()) . "-" . $item->fields['id'];
                             }
                         }
                     }
                 }
             }
             if (count($a_group) > 0) {
                 $pMonitoringCheck->getFromDB($dataBA['plugin_monitoring_checks_id']);
                 $a_services[$i]['check_interval'] = $pMonitoringCheck->fields['check_interval'];
                 $a_services[$i]['retry_interval'] = $pMonitoringCheck->fields['retry_interval'];
                 $a_services[$i]['max_check_attempts'] = $pMonitoringCheck->fields['max_check_attempts'];
                 if ($calendar->getFromDB($dataBA['calendars_id'])) {
                     $a_services[$i]['check_period'] = $calendar->fields['name'];
                 }
                 $a_services[$i]['host_name'] = $hostnamebp;
                 $a_services[$i]['service_description'] = preg_replace("/[^A-Za-z0-9]/", "", $dataBA['name']) . "-" . $dataBA['id'] . "-businessrules";
                 $command = "bp_rule!";
                 foreach ($a_group as $key => $value) {
                     if (!strstr($value, "&") and !strstr($value, "|")) {
                         $a_group[$key] = trim($value);
                     } else {
                         $a_group[$key] = "(" . trim($value) . ")";
                     }
                 }
                 $a_services[$i]['check_command'] = $command . implode("&", $a_group);
                 $a_services[$i]['notification_interval'] = '30';
                 if ($calendar->getFromDB($dataBA['calendars_id'])) {
                     $a_services[$i]['notification_period'] = $calendar->fields['name'];
                 } else {
                     $a_services[$i]['notification_period'] = "24x7";
                 }
                 $a_services[$i]['notification_options'] = 'w,c,r';
                 $a_services[$i]['active_checks_enabled'] = '1';
                 $a_services[$i]['process_perf_data'] = '1';
                 $a_services[$i]['active_checks_enabled'] = '1';
                 $a_services[$i]['passive_checks_enabled'] = '1';
                 $a_services[$i]['parallelize_check'] = '1';
                 $a_services[$i]['obsess_over_service'] = '1';
                 $a_services[$i]['check_freshness'] = '1';
                 $a_services[$i]['freshness_threshold'] = '1';
                 $a_services[$i]['notifications_enabled'] = '1';
                 $a_services[$i]['event_handler_enabled'] = '0';
                 //$a_services[$i]['event_handler'] = 'super_event_kill_everyone!DIE';
                 $a_services[$i]['flap_detection_enabled'] = '1';
                 $a_services[$i]['failure_prediction_enabled'] = '1';
                 $a_services[$i]['retain_status_information'] = '1';
                 $a_services[$i]['retain_nonstatus_information'] = '1';
                 $a_services[$i]['is_volatile'] = '0';
                 $a_services[$i]['_httpstink'] = 'NO';
                 $a_services[$i]['contacts'] = '';
                 $i++;
             }
         }
     }
     if ($file == "1") {
         $config = "# Generated by plugin monitoring for GLPI\n# on " . date("Y-m-d H:i:s") . "\n\n";
         foreach ($a_services as $data) {
             $config .= $this->constructFile("service", $data);
         }
         return array('services.cfg', $config);
     } else {
         return $a_services;
     }
 }
コード例 #14
0
function pluginMonitoringUpdate($current_version, $migrationname = 'Migration')
{
    global $DB;
    $migration = new $migrationname($current_version);
    if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/monitoring')) {
        mkdir(GLPI_PLUGIN_DOC_DIR . "/monitoring");
    }
    if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/monitoring/templates')) {
        mkdir(GLPI_PLUGIN_DOC_DIR . "/monitoring/templates");
    }
    if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/monitoring/weathermapbg')) {
        mkdir(GLPI_PLUGIN_DOC_DIR . "/monitoring/weathermapbg");
    }
    $unavailability_recalculate = 0;
    if (!TableExists("glpi_plugin_monitoring_unavailabilities") || !FieldExists("glpi_plugin_monitoring_unavailabilities", "duration")) {
        $unavailability_recalculate = 1;
    }
    $unavailability_reset = 0;
    if (!TableExists("glpi_plugin_monitoring_unavailabilities")) {
        $unavailability_reset = 1;
    }
    /*
     * Table glpi_plugin_monitoring_servicescatalogs
     */
    $newTable = "glpi_plugin_monitoring_servicescatalogs";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'name', 'name', "varchar(255) DEFAULT NULL");
    $migration->changeField($newTable, 'entities_id', 'entities_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'is_recursive', 'is_recursive', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'comment', 'comment', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->changeField($newTable, 'last_check', 'last_check', "datetime DEFAULT NULL");
    $migration->changeField($newTable, 'state', 'state', "varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'state_type', 'state_type', "varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'plugin_monitoring_checks_id', 'plugin_monitoring_checks_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'calendars_id', 'calendars_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'name', "varchar(255) DEFAULT NULL");
    $migration->addField($newTable, 'entities_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'is_recursive', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'last_check', "datetime DEFAULT NULL");
    $migration->addField($newTable, 'event', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'state', "varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'state_type', "varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'plugin_monitoring_checks_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'calendars_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'is_acknowledged', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'is_acknowledgeconfirmed', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'acknowledge_comment', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->addField($newTable, 'acknowledge_users_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'notification_interval', "int(4) NOT NULL DEFAULT '30'");
    $migration->addField($newTable, 'business_priority', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->addField($newTable, 'is_generic', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'plugin_monitoring_servicescatalogs_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addKey($newTable, "name");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_componentscatalogs
     */
    $newTable = "glpi_plugin_monitoring_componentscatalogs";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'name', 'name', "varchar(255) DEFAULT NULL");
    $migration->changeField($newTable, 'entities_id', 'entities_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'is_recursive', 'is_recursive', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'comment', 'comment', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->changeField($newTable, 'notification_interval', 'notification_interval', "int(4) NOT NULL DEFAULT '30'");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'name', "varchar(255) DEFAULT NULL");
    $migration->addField($newTable, 'entities_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'is_recursive', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'comment', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->addField($newTable, 'notification_interval', "int(4) NOT NULL DEFAULT '30'");
    $migration->addKey($newTable, "name");
    $migration->migrationOneTable($newTable);
    /*
     * glpi_plugin_monitoring_perfdatas
     */
    $a_table = array();
    $a_table['name'] = 'glpi_plugin_monitoring_perfdatas';
    $a_table['oldname'] = array();
    $a_table['fields'] = array('id' => array('type' => 'autoincrement', 'value' => ''), 'name' => array('type' => 'string', 'value' => NULL), 'perfdata' => array('type' => 'text', 'value' => NULL));
    $a_table['oldfields'] = array();
    $a_table['renamefields'] = array();
    $a_table['keys'] = array();
    $a_table['oldkeys'] = array();
    migrateTablesMonitoring($migration, $a_table);
    /*
     * glpi_plugin_monitoring_customitems_counters
     */
    $a_table = array();
    $a_table['name'] = 'glpi_plugin_monitoring_customitems_counters';
    $a_table['oldname'] = array();
    $a_table['fields'] = array('id' => array('type' => 'autoincrement', 'value' => ''), 'name' => array('type' => 'string', 'value' => NULL), 'entities_id' => array('type' => 'integer', 'value' => NULL), 'is_recursive' => array('type' => 'bool', 'value' => NULL), 'type' => array('type' => 'string', 'value' => NULL), 'aggregate_items' => array('type' => 'text', 'value' => NULL), 'time' => array('type' => 'string', 'value' => NULL), 'time_specific' => array('type' => 'string', 'value' => NULL));
    $a_table['oldfields'] = array();
    $a_table['renamefields'] = array();
    $a_table['keys'] = array();
    $a_table['oldkeys'] = array();
    migrateTablesMonitoring($migration, $a_table);
    /*
     * glpi_plugin_monitoring_customitems_gauges
     */
    $a_table = array();
    $a_table['name'] = 'glpi_plugin_monitoring_customitems_gauges';
    $a_table['oldname'] = array();
    $a_table['fields'] = array('id' => array('type' => 'autoincrement', 'value' => ''), 'name' => array('type' => 'string', 'value' => NULL), 'entities_id' => array('type' => 'integer', 'value' => NULL), 'is_recursive' => array('type' => 'bool', 'value' => NULL), 'type' => array('type' => 'string', 'value' => NULL), 'aggregate_items' => array('type' => 'text', 'value' => NULL), 'aggregate_warn' => array('type' => 'text', 'value' => NULL), 'aggregate_crit' => array('type' => 'text', 'value' => NULL), 'aggregate_limit' => array('type' => 'text', 'value' => NULL), 'time' => array('type' => 'string', 'value' => NULL), 'time_specific' => array('type' => 'string', 'value' => NULL));
    $a_table['oldfields'] = array();
    $a_table['renamefields'] = array();
    $a_table['keys'] = array();
    $a_table['oldkeys'] = array();
    migrateTablesMonitoring($migration, $a_table);
    /*
     * glpi_plugin_monitoring_perfdatadetails
     */
    $a_table = array();
    $a_table['name'] = 'glpi_plugin_monitoring_perfdatadetails';
    $a_table['oldname'] = array();
    $a_table['fields'] = array('id' => array('type' => 'autoincrement', 'value' => ''), 'name' => array('type' => 'string', 'value' => NULL), 'dynamic_name' => array('type' => 'bool', 'value' => NULL), 'plugin_monitoring_perfdatas_id' => array('type' => 'integer', 'value' => NULL), 'position' => array('type' => "int(2) NOT NULL DEFAULT '0'", 'value' => NULL), 'dsname_num' => array('type' => 'tinyint(1) NOT NULL DEFAULT "1"', 'value' => NULL), 'dsname1' => array('type' => 'string', 'value' => NULL), 'dsname2' => array('type' => 'string', 'value' => NULL), 'dsname3' => array('type' => 'string', 'value' => NULL), 'dsname4' => array('type' => 'string', 'value' => NULL), 'dsname5' => array('type' => 'string', 'value' => NULL), 'dsname6' => array('type' => 'string', 'value' => NULL), 'dsname7' => array('type' => 'string', 'value' => NULL), 'dsname8' => array('type' => 'string', 'value' => NULL), 'dsname9' => array('type' => 'string', 'value' => NULL), 'dsname10' => array('type' => 'string', 'value' => NULL), 'dsname11' => array('type' => 'string', 'value' => NULL), 'dsname12' => array('type' => 'string', 'value' => NULL), 'dsname13' => array('type' => 'string', 'value' => NULL), 'dsname14' => array('type' => 'string', 'value' => NULL), 'dsname15' => array('type' => 'string', 'value' => NULL), 'dsnameincr1' => array('type' => 'bool', 'value' => 0), 'dsnameincr2' => array('type' => 'bool', 'value' => 0), 'dsnameincr3' => array('type' => 'bool', 'value' => 0), 'dsnameincr4' => array('type' => 'bool', 'value' => 0), 'dsnameincr5' => array('type' => 'bool', 'value' => 0), 'dsnameincr6' => array('type' => 'bool', 'value' => 0), 'dsnameincr7' => array('type' => 'bool', 'value' => 0), 'dsnameincr8' => array('type' => 'bool', 'value' => 0), 'dsnameincr9' => array('type' => 'bool', 'value' => 0), 'dsnameincr10' => array('type' => 'bool', 'value' => 0), 'dsnameincr11' => array('type' => 'bool', 'value' => 0), 'dsnameincr12' => array('type' => 'bool', 'value' => 0), 'dsnameincr13' => array('type' => 'bool', 'value' => 0), 'dsnameincr14' => array('type' => 'bool', 'value' => 0), 'dsnameincr15' => array('type' => 'bool', 'value' => 0));
    $a_table['oldfields'] = array();
    $a_table['renamefields'] = array();
    $a_table['keys'] = array(array('field' => 'plugin_monitoring_perfdatas_id', 'name' => '', 'type' => 'INDEX'));
    $a_table['oldkeys'] = array();
    migrateTablesMonitoring($migration, $a_table);
    if (countElementsInTable('glpi_plugin_monitoring_perfdatas') == 0) {
        include GLPI_ROOT . "/plugins/monitoring/inc/perfdata.class.php";
        include GLPI_ROOT . "/plugins/monitoring/inc/perfdatadetail.class.php";
        PluginMonitoringPerfdata::initDB();
    }
    /*
     * Table glpi_plugin_monitoring_components
     */
    if (TableExists('glpi_plugin_monitoring_components')) {
        $a_data = getAllDatasFromTable('glpi_plugin_monitoring_components');
        foreach ($a_data as $data) {
            if (!is_numeric($data['graph_template'])) {
                $a_perfs = getAllDatasFromTable('glpi_plugin_monitoring_perfdatas', '`name`="' . $data['graph_template'] . '"');
                if (count($a_perfs) == 0) {
                    $DB->query("UPDATE `glpi_plugin_monitoring_components`\n                     SET `graph_template`='0'\n                     WHERE `id`='" . $data['id'] . "'");
                } else {
                    $a_perf = current($a_perfs);
                    $DB->query("UPDATE `glpi_plugin_monitoring_components`\n                     SET `graph_template`='" . $a_perf['id'] . "'\n                     WHERE `id`='" . $data['id'] . "'");
                }
            }
        }
    }
    $newTable = "glpi_plugin_monitoring_components";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'name', 'name', "varchar(255) DEFAULT NULL");
    // 0.84+1.3
    $migration->changeField($newTable, 'description', 'description', "varchar(255) DEFAULT NULL");
    $migration->changeField($newTable, 'plugin_monitoring_commands_id', 'plugin_monitoring_commands_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'arguments', 'arguments', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->changeField($newTable, 'plugin_monitoring_checks_id', 'plugin_monitoring_checks_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'active_checks_enabled', 'active_checks_enabled', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->changeField($newTable, 'passive_checks_enabled', 'passive_checks_enabled', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->changeField($newTable, 'calendars_id', 'calendars_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'remotesystem', 'remotesystem', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'is_arguments', 'is_arguments', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'alias_command', 'alias_command', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->changeField($newTable, 'graph_template', 'graph_template', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'link', 'link', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'is_weathermap', 'is_weathermap', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'weathermap_regex', 'weathermap_regex_in', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->changeField($newTable, 'perfname', 'perfname', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->changeField($newTable, 'perfnameinvert', 'perfnameinvert', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->changeField($newTable, 'perfnamecolor', 'perfnamecolor', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->addField($newTable, 'name', "varchar(255) DEFAULT NULL");
    // 0.84+1.3
    $migration->addField($newTable, 'description', "varchar(255) DEFAULT NULL");
    $migration->addField($newTable, 'plugin_monitoring_commands_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'arguments', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->addField($newTable, 'plugin_monitoring_checks_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'active_checks_enabled', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->addField($newTable, 'passive_checks_enabled', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->addField($newTable, 'calendars_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'remotesystem', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'is_arguments', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'alias_command', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->addField($newTable, 'graph_template', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'link', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'is_weathermap', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'weathermap_regex_in', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->addField($newTable, 'weathermap_regex_out', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->addField($newTable, 'perfname', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->addField($newTable, 'perfnameinvert', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->addField($newTable, 'perfnamecolor', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->addField($newTable, 'plugin_monitoring_eventhandlers_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'freshness_count', "int(6) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'freshness_type', "varchar(255) DEFAULT 'seconds'");
    $migration->addKey($newTable, "plugin_monitoring_commands_id");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_componentscatalogs_components
     */
    $newTable = "glpi_plugin_monitoring_componentscatalogs_components";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'plugin_monitoring_componentscalalog_id', 'plugin_monitoring_componentscalalog_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'plugin_monitoring_components_id', 'plugin_monitoring_components_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'plugin_monitoring_componentscalalog_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'plugin_monitoring_components_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addKey($newTable, array('plugin_monitoring_componentscalalog_id', 'plugin_monitoring_components_id'), "unicity", "UNIQUE");
    $migration->addKey($newTable, "plugin_monitoring_componentscalalog_id");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_componentscatalogs_hosts
     */
    $newTable = "glpi_plugin_monitoring_componentscatalogs_hosts";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'plugin_monitoring_componentscalalog_id', 'plugin_monitoring_componentscalalog_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'is_static', 'is_static', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->changeField($newTable, 'items_id', 'items_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'itemtype', 'itemtype', "varchar(100) DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'plugin_monitoring_componentscalalog_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'is_static', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->addField($newTable, 'items_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'itemtype', "varchar(100) DEFAULT NULL");
    $migration->addKey($newTable, array('itemtype', 'items_id'), 'itemtype');
    $migration->addKey($newTable, 'plugin_monitoring_componentscalalog_id');
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_componentscatalogs_rules
     */
    $newTable = "glpi_plugin_monitoring_componentscatalogs_rules";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'plugin_monitoring_componentscalalog_id', 'plugin_monitoring_componentscalalog_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'name', 'name', "varchar(255) DEFAULT NULL");
    $migration->changeField($newTable, 'itemtype', 'itemtype', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'condition', 'condition', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->dropField($newTable, 'entities_id');
    $migration->dropField($newTable, 'is_recursive');
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'plugin_monitoring_componentscalalog_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'name', "varchar(255) DEFAULT NULL");
    $migration->addField($newTable, 'itemtype', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'condition', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->addKey($newTable, 'plugin_monitoring_componentscalalog_id');
    $migration->migrationOneTable($newTable);
    $DB->query("UPDATE `glpi_plugin_monitoring_componentscatalogs_rules`\n              SET `itemtype`='Computer' WHERE `itemtype`='PluginMonitoringComputer'");
    /*
     * Table glpi_plugin_monitoring_services
     */
    $newTable = "glpi_plugin_monitoring_services";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'entities_id', 'entities_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'name', 'name', "varchar(255) DEFAULT NULL");
    $migration->changeField($newTable, 'plugin_monitoring_components_id', 'plugin_monitoring_components_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'plugin_monitoring_componentscatalogs_hosts_id', 'plugin_monitoring_componentscatalogs_hosts_id', "int(11) NOT NULL DEFAULT '0'");
    // Event should contain up to 4096 bytes (Nagios plugin specification)
    $migration->changeField($newTable, 'event', 'event', "varchar(4096) COLLATE utf8_unicode_ci DEFAULT NULL");
    // $migration->changeField($newTable,
    // 'event',
    // 'event',
    // "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'state', 'state', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'state_type', 'state_type', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'last_check', 'last_check', "datetime DEFAULT NULL");
    $migration->changeField($newTable, 'arguments', 'arguments', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->changeField($newTable, 'networkports_id', 'networkports_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->dropField($newTable, 'alias_command');
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'entities_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'name', "varchar(255) DEFAULT NULL");
    $migration->addField($newTable, 'plugin_monitoring_components_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'plugin_monitoring_componentscatalogs_hosts_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'event', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'state', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'state_type', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'last_check', "datetime DEFAULT NULL");
    $migration->addField($newTable, 'arguments', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->addField($newTable, 'networkports_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'is_acknowledged', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'is_acknowledgeconfirmed', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'acknowledge_comment', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->addField($newTable, 'acknowledge_users_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addKey($newTable, array('state', 'state_type'), 'state');
    $migration->addKey($newTable, 'plugin_monitoring_componentscatalogs_hosts_id');
    $migration->addKey($newTable, 'last_check');
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_contacttemplates
     */
    $newTable = "glpi_plugin_monitoring_contacttemplates";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'name', 'name', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'is_default', 'is_default', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'shinken_administrator', 'shinken_administrator', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'shinken_can_submit_commands', 'shinken_can_submit_commands', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'host_notifications_enabled', 'host_notifications_enabled', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->changeField($newTable, 'service_notifications_enabled', 'service_notifications_enabled', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->changeField($newTable, 'service_notification_period', 'service_notification_period', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'host_notification_period', 'host_notification_period', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'service_notification_options_w', 'service_notification_options_w', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->changeField($newTable, 'service_notification_options_u', 'service_notification_options_u', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->changeField($newTable, 'service_notification_options_c', 'service_notification_options_c', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->changeField($newTable, 'service_notification_options_r', 'service_notification_options_r', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->changeField($newTable, 'service_notification_options_f', 'service_notification_options_f', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'service_notification_options_n', 'service_notification_options_n', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'host_notification_options_d', 'host_notification_options_d', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->changeField($newTable, 'host_notification_options_u', 'host_notification_options_u', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->changeField($newTable, 'host_notification_options_r', 'host_notification_options_r', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->changeField($newTable, 'host_notification_options_f', 'host_notification_options_f', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'host_notification_options_s', 'host_notification_options_s', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'host_notification_options_n', 'host_notification_options_n', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'service_notification_commands', 'service_notification_commands', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'host_notification_commands', 'host_notification_commands', "int(11) NOT NULL DEFAULT '0'");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'name', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'is_default', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'shinken_administrator', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'shinken_can_submit_commands', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'host_notifications_enabled', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->addField($newTable, 'service_notifications_enabled', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->addField($newTable, 'service_notification_period', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'host_notification_period', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'service_notification_options_w', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->addField($newTable, 'service_notification_options_u', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->addField($newTable, 'service_notification_options_c', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->addField($newTable, 'service_notification_options_r', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->addField($newTable, 'service_notification_options_f', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'service_notification_options_n', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'host_notification_options_d', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->addField($newTable, 'host_notification_options_u', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->addField($newTable, 'host_notification_options_r', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->addField($newTable, 'host_notification_options_f', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'host_notification_options_s', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'host_notification_options_n', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'service_notification_commands', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'host_notification_commands', "int(11) NOT NULL DEFAULT '0'");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_contacts
     */
    $newTable = "glpi_plugin_monitoring_contacts";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'users_id', 'users_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'plugin_monitoring_contacttemplates_id', 'plugin_monitoring_contacttemplates_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'users_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'plugin_monitoring_contacttemplates_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_contacts_items
     */
    $newTable = "glpi_plugin_monitoring_contacts_items";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'users_id', 'users_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'groups_id', 'groups_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'items_id', 'items_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'itemtype', 'itemtype', "varchar(100) DEFAULT NULL");
    $migration->changeField($newTable, 'entities_id', 'entities_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'users_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'groups_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'items_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'itemtype', "varchar(100) DEFAULT NULL");
    $migration->addField($newTable, 'entities_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_commandtemplates
     */
    $newTable = "glpi_plugin_monitoring_commandtemplates";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'plugin_monitoring_commands_id', 'plugin_monitoring_commands_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'name', 'name', "varchar(255) DEFAULT NULL");
    $migration->changeField($newTable, 'key', 'key', "varchar(255) DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'plugin_monitoring_commands_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'name', "varchar(255) DEFAULT NULL");
    $migration->addField($newTable, 'key', "varchar(255) DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_rrdtooltemplates
     */
    $newTable = "glpi_plugin_monitoring_rrdtooltemplates";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'plugin_monitoring_commands_id', 'plugin_monitoring_commands_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'name', 'name', "varchar(255) DEFAULT NULL");
    $migration->changeField($newTable, 'key', 'key', "varchar(255) DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'plugin_monitoring_commands_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'name', "varchar(255) DEFAULT NULL");
    $migration->addField($newTable, 'key', "varchar(255) DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_configs
     */
    $newTable = "glpi_plugin_monitoring_configs";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'timezones', 'timezones', "varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '[\"0\"]'");
    $migration->changeField($newTable, 'version', 'version', "varchar(255) DEFAULT NULL");
    $migration->changeField($newTable, 'logretention', 'logretention', "int(5) NOT NULL DEFAULT '30'");
    $migration->changeField($newTable, 'nrpe_prefix_contener', 'nrpe_prefix_contener', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'append_id_hostname', 'append_id_hostname', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->dropField($newTable, 'phppath');
    $migration->dropField($newTable, 'rrdtoolpath');
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'timezones', "varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '[\"0\"]'");
    $migration->addField($newTable, 'version', "varchar(255) DEFAULT NULL");
    $migration->addField($newTable, 'logretention', "int(5) NOT NULL DEFAULT '30'");
    $migration->addField($newTable, 'extradebug', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'nrpe_prefix_contener', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'append_id_hostname', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_displayviews
     */
    $newTable = "glpi_plugin_monitoring_displayviews";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'name', 'name', "varchar(255) DEFAULT NULL");
    $migration->changeField($newTable, 'entities_id', 'entities_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'is_recursive', 'is_recursive', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'is_active', 'is_active', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'users_id', 'users_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'counter', 'counter', "varchar(255) DEFAULT NULL");
    $migration->changeField($newTable, 'in_central', 'in_central', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'width', 'width', "int(5) NOT NULL DEFAULT '950'");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'name', "varchar(255) DEFAULT NULL");
    $migration->addField($newTable, 'entities_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'is_recursive', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'is_active', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'users_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'counter', "varchar(255) DEFAULT NULL");
    $migration->addField($newTable, 'in_central', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'width', "int(5) NOT NULL DEFAULT '950'");
    $migration->addField($newTable, 'is_frontview', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'comment', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_displayviews_groups
     */
    $newTable = "glpi_plugin_monitoring_displayviews_groups";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->addField($newTable, 'pluginmonitoringdisplayviews_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'groups_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'entities_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'is_recursive', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addKey($newTable, "pluginmonitoringdisplayviews_id");
    $migration->addKey($newTable, "groups_id");
    $migration->addKey($newTable, "entities_id");
    $migration->addKey($newTable, "is_recursive");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_displayviews_users
     */
    $newTable = "glpi_plugin_monitoring_displayviews_users";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->addField($newTable, 'pluginmonitoringdisplayviews_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'users_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addKey($newTable, "pluginmonitoringdisplayviews_id");
    $migration->addKey($newTable, "users_id");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_displayviews_items
     */
    $newTable = "glpi_plugin_monitoring_displayviews_items";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'plugin_monitoring_displayviews_id', 'plugin_monitoring_displayviews_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'x', 'x', "int(5) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'y', 'y', "int(5) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'items_id', 'items_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'itemtype', 'itemtype', "varchar(100) DEFAULT NULL");
    $migration->changeField($newTable, 'extra_infos', 'extra_infos', "varchar(255) DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'plugin_monitoring_displayviews_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'x', "int(5) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'y', "int(5) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'items_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'itemtype', "varchar(100) DEFAULT NULL");
    $migration->addField($newTable, 'extra_infos', "varchar(255) DEFAULT NULL");
    $migration->addField($newTable, 'is_minemap', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addKey($newTable, "plugin_monitoring_displayviews_id");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_displayviews_rules
     */
    $newTable = "glpi_plugin_monitoring_displayviews_rules";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'plugin_monitoring_displayviews_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'name', "varchar(255) DEFAULT NULL");
    $migration->addField($newTable, 'itemtype', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'type', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'condition', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->addKey($newTable, 'plugin_monitoring_displayviews_id');
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_entities
     */
    $newTable = "glpi_plugin_monitoring_entities";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'entities_id', 'entities_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'tag', 'tag', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'entities_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'tag', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addKey($newTable, "entities_id");
    $migration->addKey($newTable, "tag");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_hostaddresses
     */
    $newTable = "glpi_plugin_monitoring_hostaddresses";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'items_id', 'items_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'itemtype', 'itemtype', "varchar(100) DEFAULT NULL");
    $migration->changeField($newTable, 'networkports_id', 'networkports_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'ipaddresses_id', 'ipaddresses_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'items_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'itemtype', "varchar(100) DEFAULT NULL");
    $migration->addField($newTable, 'networkports_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'ipaddresses_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_hostconfigs
     */
    $a_hostsconfig = array();
    if (TableExists('glpi_plugin_monitoring_hostconfigs') && FieldExists('glpi_plugin_monitoring_hostconfigs', 'plugin_monitoring_commands_id')) {
        $a_hostsconfig = getAllDatasFromTable('glpi_plugin_monitoring_hostconfigs');
    }
    $a_table = array();
    $a_table['name'] = 'glpi_plugin_monitoring_hostconfigs';
    $a_table['oldname'] = array();
    $a_table['fields'] = array('id' => array('type' => 'autoincrement', 'value' => ''), 'items_id' => array('type' => 'integer', 'value' => NULL), 'itemtype' => array('type' => 'varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL', 'value' => NULL), 'plugin_monitoring_components_id' => array('type' => 'integer', 'value' => NULL), 'plugin_monitoring_realms_id' => array('type' => 'integer', 'value' => NULL), 'computers_id' => array('type' => 'integer', 'value' => NULL), 'jetlag' => array('type' => 'varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL', 'value' => '0'));
    $a_table['oldfields'] = array('plugin_monitoring_commands_id', 'plugin_monitoring_checks_id', 'calendars_id');
    $a_table['renamefields'] = array();
    $a_table['keys'] = array();
    $a_table['oldkeys'] = array();
    migrateTablesMonitoring($migration, $a_table);
    if (count($a_hostsconfig) > 0) {
        // Convert commands by components
        foreach ($a_hostsconfig as $data) {
            $a_components = getAllDatasFromTable('glpi_plugin_monitoring_components', "`plugin_monitoring_commands_id`='" . $data['plugin_monitoring_commands_id'] . "'");
            if (count($a_components) > 0) {
                $a_component = current($a_components);
                $DB->query("UPDATE `" . $a_table['name'] . "`\n                  SET `plugin_monitoring_components_id`='" . $a_component['id'] . "'\n                  WHERE `id`='" . $data['id'] . "'");
            }
        }
    }
    /*
     * Table glpi_plugin_monitoring_hosts
     */
    $newTable = "glpi_plugin_monitoring_hosts";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    if (TableExists($newTable)) {
        $a_hosts = getAllDatasFromTable($newTable, "`itemtype`='Computer'");
    }
    // Duplicate field with event
    $migration->dropField($newTable, 'ouput');
    $migration->migrationOneTable($newTable);
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'entities_id', 'entities_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'items_id', 'items_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'itemtype', 'itemtype', "varchar(100) DEFAULT NULL");
    // Event should contain up to 4096 bytes (Nagios plugin specification)
    $migration->changeField($newTable, 'event', 'event', "varchar(4096) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'state', 'state', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'state_type', 'state_type', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'last_check', 'last_check', "datetime DEFAULT NULL");
    $migration->changeField($newTable, 'dependencies', 'dependencies', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'perf_data', 'perf_data', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    // Duplicate field with event
    // $migration->changeField($newTable,
    // 'output',
    // 'output',
    // "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'latency', 'latency', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'execution_time', 'execution_time', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'entities_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'is_acknowledged', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'is_acknowledgeconfirmed', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'acknowledge_comment', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->addField($newTable, 'acknowledge_users_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'items_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'itemtype', "varchar(100) DEFAULT NULL");
    $migration->addField($newTable, 'event', "varchar(512) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'state', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'state_type', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'last_check', "datetime DEFAULT NULL");
    $migration->addField($newTable, 'dependencies', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'perf_data', "text COLLATE utf8_unicode_ci DEFAULT NULL");
    // Duplicate field with event
    // $migration->addField($newTable,
    // 'output',
    // "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'latency', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'execution_time', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addKey($newTable, array('itemtype', 'items_id'), 'itemtype');
    $migration->migrationOneTable($newTable);
    if (count($a_hosts) > 0) {
        // Convert commands by components
        foreach ($a_hosts as $data) {
            $a_computers = getAllDatasFromTable('glpi_computers', "`id`='" . $data['items_id'] . "'");
            if (count($a_computers) > 0) {
                $a_computer = current($a_computers);
                $DB->query("UPDATE `" . $newTable . "`\n                  SET `entities_id`='" . $a_computer['entities_id'] . "'\n                  WHERE `id`='" . $data['id'] . "'");
            }
        }
    }
    /*
     * Table glpi_plugin_monitoring_logs
     */
    $newTable = "glpi_plugin_monitoring_logs";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` bigint(30) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "bigint(30) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'date_mod', 'date_mod', "datetime DEFAULT NULL");
    $migration->changeField($newTable, 'user_name', 'user_name', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'itemtype', 'itemtype', "varchar(100) DEFAULT NULL");
    $migration->changeField($newTable, 'items_id', 'items_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'action', 'action', "varchar(100) DEFAULT NULL");
    $migration->changeField($newTable, 'value', 'value', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'date_mod', "datetime DEFAULT NULL");
    $migration->addField($newTable, 'user_name', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'itemtype', "varchar(100) DEFAULT NULL");
    $migration->addField($newTable, 'items_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'action', "varchar(100) DEFAULT NULL");
    $migration->addField($newTable, 'value', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_networkports
     */
    $newTable = "glpi_plugin_monitoring_networkports";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'items_id', 'items_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'itemtype', 'itemtype', "varchar(100) DEFAULT NULL");
    $migration->changeField($newTable, 'networkports_id', 'networkports_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'items_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'itemtype', "varchar(100) DEFAULT NULL");
    $migration->addField($newTable, 'networkports_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_realms
     */
    $newTable = "glpi_plugin_monitoring_realms";
    $insertrealm = 0;
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
        $insertrealm = 1;
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'name', 'name', "varchar(255) DEFAULT NULL");
    $migration->changeField($newTable, 'comment', 'comment', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->changeField($newTable, 'date_mod', 'date_mod', "datetime DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'name', "varchar(255) DEFAULT NULL");
    $migration->addField($newTable, 'comment', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->addField($newTable, 'date_mod', "datetime DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    if ($insertrealm == '1') {
        $query = "INSERT INTO `glpi_plugin_monitoring_realms`\n            (`id` ,`name` ,`comment` ,`date_mod`) VALUES (NULL , 'All', NULL , NULL)";
        $DB->query($query);
    }
    /*
     * Table glpi_plugin_monitoring_serviceevents
     */
    $newTable = "glpi_plugin_monitoring_serviceevents";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` bigint(30) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    // Duplicate field with event
    $migration->dropField($newTable, 'ouput');
    $migration->migrationOneTable($newTable);
    $migration->changeField($newTable, 'id', 'id', "bigint(30) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'plugin_monitoring_services_id', 'plugin_monitoring_services_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'date', 'date', "datetime DEFAULT NULL");
    // Event should contain up to 4096 bytes (Nagios plugin specification)
    $migration->changeField($newTable, 'event', 'event', "varchar(4096) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'perf_data', 'perf_data', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    // Duplicate field with event
    // $migration->changeField($newTable,
    // 'output',
    // 'output',
    // "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'state', 'state', "varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'state_type', 'state_type', "varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'latency', 'latency', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'execution_time', 'execution_time', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'unavailability', 'unavailability', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'plugin_monitoring_services_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'date', "datetime DEFAULT NULL");
    $migration->addField($newTable, 'event', "varchar(512) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'perf_data', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    // Duplicate field with event
    // $migration->addField($newTable,
    // 'output',
    // "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'state', "varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'state_type', "varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'latency', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'execution_time', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'unavailability', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addKey($newTable, "plugin_monitoring_services_id");
    $migration->addKey($newTable, array('plugin_monitoring_services_id', 'date'), "plugin_monitoring_services_id_2");
    $migration->addKey($newTable, array('unavailability', 'state_type', 'plugin_monitoring_services_id'), "unavailability");
    $migration->addKey($newTable, array('plugin_monitoring_services_id', 'id'), "plugin_monitoring_services_id_3");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_commands
     */
    $newTable = "glpi_plugin_monitoring_commands";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'is_active', 'is_active', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->changeField($newTable, 'name', 'name', "varchar(255) DEFAULT NULL");
    $migration->changeField($newTable, 'command_name', 'command_name', "varchar(255) DEFAULT NULL");
    $migration->changeField($newTable, 'command_line', 'command_line', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->changeField($newTable, 'poller_tag', 'poller_tag', "varchar(255) DEFAULT NULL");
    $migration->changeField($newTable, 'module_type', 'module_type', "varchar(255) DEFAULT NULL");
    $migration->changeField($newTable, 'arguments', 'arguments', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->dropField($newTable, 'regex');
    $migration->dropField($newTable, 'legend');
    $migration->dropField($newTable, 'unit');
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'is_active', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->addField($newTable, 'name', "varchar(255) DEFAULT NULL");
    $migration->addField($newTable, 'command_name', "varchar(255) DEFAULT NULL");
    $migration->addField($newTable, 'command_line', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->addField($newTable, 'poller_tag', "varchar(255) DEFAULT NULL");
    $migration->addField($newTable, 'module_type', "varchar(255) DEFAULT NULL");
    $migration->addField($newTable, 'arguments', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->addKey($newTable, "name");
    $migration->addKey($newTable, "command_name");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_checks
     */
    $newTable = "glpi_plugin_monitoring_checks";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'name', 'name', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'max_check_attempts', 'max_check_attempts', "int(2) NOT NULL DEFAULT '1'");
    $migration->changeField($newTable, 'check_interval', 'check_interval', "int(5) NOT NULL DEFAULT '1'");
    $migration->changeField($newTable, 'retry_interval', 'retry_interval', "int(5) NOT NULL DEFAULT '1'");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'name', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'max_check_attempts', "int(2) NOT NULL DEFAULT '1'");
    $migration->addField($newTable, 'check_interval', "int(5) NOT NULL DEFAULT '1'");
    $migration->addField($newTable, 'retry_interval', "int(5) NOT NULL DEFAULT '1'");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_businessrules
     */
    $a_table = array();
    $a_table['name'] = 'glpi_plugin_monitoring_businessrules';
    $a_table['oldname'] = array();
    $a_table['fields'] = array('id' => array('type' => 'autoincrement', 'value' => ''), 'plugin_monitoring_businessrulegroups_id' => array('type' => 'integer', 'value' => 0), 'plugin_monitoring_services_id' => array('type' => 'integer', 'value' => 0), 'is_dynamic' => array('type' => 'bool', 'value' => 0), 'is_generic' => array('type' => 'bool', 'value' => 0));
    $a_table['oldfields'] = array();
    $a_table['renamefields'] = array();
    $a_table['keys'] = array();
    $a_table['oldkeys'] = array();
    migrateTablesMonitoring($migration, $a_table);
    /*
     * glpi_plugin_monitoring_businessrules_components
     */
    $a_table = array();
    $a_table['name'] = 'glpi_plugin_monitoring_businessrules_components';
    $a_table['oldname'] = array();
    $a_table['fields'] = array('id' => array('type' => 'autoincrement', 'value' => ''), 'plugin_monitoring_businessrulegroups_id' => array('type' => 'integer', 'value' => 0), 'plugin_monitoring_componentscatalogs_components_id' => array('type' => 'integer', 'value' => 0));
    $a_table['oldfields'] = array();
    $a_table['renamefields'] = array();
    $a_table['keys'] = array();
    $a_table['oldkeys'] = array();
    migrateTablesMonitoring($migration, $a_table);
    /*
     * Table glpi_plugin_monitoring_businessrulegroups
     */
    $newTable = "glpi_plugin_monitoring_businessrulegroups";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'name', 'name', "varchar(255) DEFAULT NULL");
    $migration->changeField($newTable, 'plugin_monitoring_servicescatalogs_id', 'plugin_monitoring_servicescatalogs_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'operator', 'operator', "varchar(255) DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'name', "varchar(255) DEFAULT NULL");
    $migration->addField($newTable, 'plugin_monitoring_servicescatalogs_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'operator', "varchar(255) DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_eventhandlers
     */
    $newTable = "glpi_plugin_monitoring_eventhandlers";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'is_active', 'is_active', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->changeField($newTable, 'name', 'name', "varchar(255) DEFAULT NULL");
    $migration->changeField($newTable, 'command_name', 'command_name', "varchar(255) DEFAULT NULL");
    $migration->changeField($newTable, 'command_line', 'command_line', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'is_active', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->addField($newTable, 'name', "varchar(255) DEFAULT NULL");
    $migration->addField($newTable, 'command_name', "varchar(255) DEFAULT NULL");
    $migration->addField($newTable, 'command_line', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->addKey($newTable, "name");
    $migration->addKey($newTable, "command_name");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_notificationcommands
     */
    $newTable = "glpi_plugin_monitoring_notificationcommands";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'is_active', 'is_active', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->changeField($newTable, 'name', 'name', "varchar(255) DEFAULT NULL");
    $migration->changeField($newTable, 'command_name', 'command_name', "varchar(255) DEFAULT NULL");
    $migration->changeField($newTable, 'command_line', 'command_line', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->changeField($newTable, 'reactionner_tag', 'reactionner_tag', "varchar(255) DEFAULT NULL");
    $migration->changeField($newTable, 'module_type', 'module_type', "varchar(255) DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'is_active', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->addField($newTable, 'name', "varchar(255) DEFAULT NULL");
    $migration->addField($newTable, 'command_name', "varchar(255) DEFAULT NULL");
    $migration->addField($newTable, 'command_line', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->addField($newTable, 'reactionner_tag', "varchar(255) DEFAULT NULL");
    $migration->addField($newTable, 'module_type', "varchar(255) DEFAULT NULL");
    $migration->addKey($newTable, "name");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_contactgroups
     */
    $newTable = "glpi_plugin_monitoring_contactgroups";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'name', 'name', "varchar(255) DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'name', "varchar(255) DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_contacts_contactgroups
     */
    $newTable = "glpi_plugin_monitoring_contacts_contactgroups";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'plugin_monitoring_contacts_id', 'plugin_monitoring_contacts_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'plugin_monitoring_contactgroups_id', 'plugin_monitoring_contactgroups_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'plugin_monitoring_contacts_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'plugin_monitoring_contactgroups_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addKey($newTable, array('plugin_monitoring_contacts_id', 'plugin_monitoring_contactgroups_id'), "unicity", "UNIQUE");
    $migration->addKey($newTable, "plugin_monitoring_contactgroups_id");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_contactgroups_contactgroups
     */
    $newTable = "glpi_plugin_monitoring_contactgroups_contactgroups";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'plugin_monitoring_contactgroups_id_1', 'plugin_monitoring_contactgroups_id_1', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'plugin_monitoring_contactgroups_id_2', 'plugin_monitoring_contactgroups_id_2', "int(11) NOT NULL DEFAULT '0'");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'plugin_monitoring_contactgroups_id_1', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'plugin_monitoring_contactgroups_id_2', "int(11) NOT NULL DEFAULT '0'");
    $migration->addKey($newTable, array('plugin_monitoring_contactgroups_id_1', 'plugin_monitoring_contactgroups_id_2'), "unicity", "UNIQUE");
    $migration->addKey($newTable, "plugin_monitoring_contactgroups_id_2");
    $migration->migrationOneTable($newTable);
    /*
     * glpi_plugin_monitoring_profiles
     */
    $a_table = array();
    $a_table['name'] = 'glpi_plugin_monitoring_profiles';
    $a_table['oldname'] = array();
    $a_table['fields'] = array('profiles_id' => array('type' => 'integer', 'value' => NULL), 'config' => array('type' => 'char', 'value' => NULL), 'config_views' => array('type' => 'char', 'value' => NULL), 'config_sliders' => array('type' => 'char', 'value' => NULL), 'config_services_catalogs' => array('type' => 'char', 'value' => NULL), 'config_components_catalogs' => array('type' => 'char', 'value' => NULL), 'config_weathermap' => array('type' => 'char', 'value' => NULL), 'dashboard' => array('type' => 'char', 'value' => NULL), 'dashboard_system_status' => array('type' => 'char', 'value' => NULL), 'dashboard_hosts_status' => array('type' => 'char', 'value' => NULL), 'dashboard_all_ressources' => array('type' => 'char', 'value' => NULL), 'dashboard_views' => array('type' => 'char', 'value' => NULL), 'dashboard_sliders' => array('type' => 'char', 'value' => NULL), 'dashboard_services_catalogs' => array('type' => 'char', 'value' => NULL), 'dashboard_components_catalogs' => array('type' => 'char', 'value' => NULL), 'dashboard_perfdatas' => array('type' => 'char', 'value' => NULL), 'homepage' => array('type' => 'char', 'value' => NULL), 'homepage_views' => array('type' => 'char', 'value' => NULL), 'homepage_services_catalogs' => array('type' => 'char', 'value' => NULL), 'homepage_components_catalogs' => array('type' => 'char', 'value' => NULL), 'homepage_system_status' => array('type' => 'char', 'value' => NULL), 'homepage_hosts_status' => array('type' => 'char', 'value' => NULL), 'homepage_perfdatas' => array('type' => 'char', 'value' => NULL), 'homepage_all_ressources' => array('type' => 'char', 'value' => NULL), 'acknowledge' => array('type' => 'char', 'value' => NULL), 'downtime' => array('type' => 'char', 'value' => NULL), 'counters' => array('type' => 'char', 'value' => NULL), 'restartshinken' => array('type' => 'char', 'value' => NULL), 'host_command' => array('type' => 'char', 'value' => NULL));
    $a_table['oldfields'] = array('servicescatalog', 'view', 'componentscatalog', 'viewshomepage', 'weathermap', 'component', 'command', 'check', 'allressources');
    $a_table['renamefields'] = array();
    $a_table['keys'] = array();
    $a_table['oldkeys'] = array();
    migrateTablesMonitoring($migration, $a_table);
    /*
     * Table glpi_plugin_monitoring_servicedefs
     */
    $newTable = "glpi_plugin_monitoring_servicedefs";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'name', 'name', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'plugin_monitoring_commands_id', 'plugin_monitoring_commands_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'arguments', 'arguments', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->changeField($newTable, 'plugin_monitoring_checks_id', 'plugin_monitoring_checks_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'active_checks_enabled', 'active_checks_enabled', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->changeField($newTable, 'passive_checks_enabled', 'passive_checks_enabled', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->changeField($newTable, 'calendars_id', 'calendars_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'remotesystem', 'remotesystem', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'is_arguments', 'is_arguments', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'alias_command', 'alias_command', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->changeField($newTable, 'aliasperfdata_commands_id', 'aliasperfdata_commands_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'link', 'link', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'name', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'plugin_monitoring_commands_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'arguments', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->addField($newTable, 'plugin_monitoring_checks_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'active_checks_enabled', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->addField($newTable, 'passive_checks_enabled', "tinyint(1) NOT NULL DEFAULT '1'");
    $migration->addField($newTable, 'calendars_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'remotesystem', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'is_arguments', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'alias_command', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->addField($newTable, 'aliasperfdata_commands_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'link', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_sliders
     */
    $a_table = array();
    $a_table['name'] = 'glpi_plugin_monitoring_sliders';
    $a_table['oldname'] = array();
    $a_table['fields'] = array('id' => array('type' => 'autoincrement', 'value' => ''), 'name' => array('type' => 'string', 'value' => NULL), 'entities_id' => array('type' => 'integer', 'value' => NULL), 'is_recursive' => array('type' => 'bool', 'value' => NULL), 'is_active' => array('type' => 'bool', 'value' => NULL), 'users_id' => array('type' => 'integer', 'value' => NULL), 'in_central' => array('type' => 'bool', 'value' => NULL), 'is_frontview' => array('type' => 'bool', 'value' => NULL), 'comment' => array('type' => 'text', 'value' => NULL), 'duration' => array('type' => 'integer', 'value' => '2'));
    $a_table['oldfields'] = array();
    $a_table['renamefields'] = array();
    $a_table['keys'] = array();
    $a_table['oldkeys'] = array();
    migrateTablesMonitoring($migration, $a_table);
    /*
     * Table glpi_plugin_monitoring_sliders_groups
     */
    $a_table = array();
    $a_table['name'] = 'glpi_plugin_monitoring_sliders_groups';
    $a_table['oldname'] = array();
    $a_table['fields'] = array('id' => array('type' => 'autoincrement', 'value' => ''), 'pluginmonitoringsliders_id' => array('type' => 'integer', 'value' => NULL), 'groups_id' => array('type' => 'integer', 'value' => NULL), 'entities_id' => array('type' => 'integer', 'value' => '-1'), 'is_recursive' => array('type' => 'bool', 'value' => NULL));
    $a_table['oldfields'] = array();
    $a_table['renamefields'] = array();
    $a_table['keys'] = array(array('field' => 'pluginmonitoringsliders_id', 'name' => '', 'type' => 'INDEX'), array('field' => 'groups_id', 'name' => '', 'type' => 'INDEX'), array('field' => 'entities_id', 'name' => '', 'type' => 'INDEX'), array('field' => 'is_recursive', 'name' => '', 'type' => 'INDEX'));
    $a_table['oldkeys'] = array();
    migrateTablesMonitoring($migration, $a_table);
    /*
     * Table glpi_plugin_monitoring_sliders_users
     */
    $a_table = array();
    $a_table['name'] = 'glpi_plugin_monitoring_sliders_users';
    $a_table['oldname'] = array();
    $a_table['fields'] = array('id' => array('type' => 'autoincrement', 'value' => ''), 'pluginmonitoringsliders_id' => array('type' => 'integer', 'value' => NULL), 'users_id' => array('type' => 'integer', 'value' => NULL));
    $a_table['oldfields'] = array();
    $a_table['renamefields'] = array();
    $a_table['keys'] = array(array('field' => 'pluginmonitoringsliders_id', 'name' => '', 'type' => 'INDEX'), array('field' => 'users_id', 'name' => '', 'type' => 'INDEX'));
    $a_table['oldkeys'] = array();
    migrateTablesMonitoring($migration, $a_table);
    /*
     * Table glpi_plugin_monitoring_sliders_items
     */
    $a_table = array();
    $a_table['name'] = 'glpi_plugin_monitoring_sliders_items';
    $a_table['oldname'] = array();
    $a_table['fields'] = array('id' => array('type' => 'autoincrement', 'value' => ''), 'plugin_monitoring_sliders_id' => array('type' => 'integer', 'value' => NULL), 'items_id' => array('type' => 'integer', 'value' => NULL), 'itemtype' => array('type' => 'varchar(100) DEFAULT NULL', 'value' => NULL), 'extra_infos' => array('type' => 'string', 'value' => NULL), 'is_minemap' => array('type' => 'bool', 'value' => NULL));
    $a_table['oldfields'] = array();
    $a_table['renamefields'] = array();
    $a_table['keys'] = array(array('field' => 'plugin_monitoring_sliders_id', 'name' => '', 'type' => 'INDEX'));
    $a_table['oldkeys'] = array();
    migrateTablesMonitoring($migration, $a_table);
    /*
     * Table glpi_plugin_monitoring_unavaibilities
     */
    $newTable = "glpi_plugin_monitoring_unavailabilities";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
        $migration->addField($newTable, 'plugin_monitoring_services_id', "int(11) NOT NULL DEFAULT '0'");
        $migration->addField($newTable, 'begin_date', "datetime DEFAULT NULL");
        $migration->addField($newTable, 'end_date', "datetime DEFAULT NULL");
        $migration->addField($newTable, 'duration', "int(15) NOT NULL DEFAULT '0'");
        // Scheduled unavailability
        $migration->addField($newTable, 'scheduled', "tinyint(1) NOT NULL DEFAULT '0'");
        // Unavailability details
        $migration->addField($newTable, 'details', "text DEFAULT NULL COLLATE utf8_unicode_ci");
        $migration->addKey($newTable, "plugin_monitoring_services_id");
        $migration->migrationOneTable($newTable);
    }
    /*
             $migration->changeField($newTable,
                                     'id',
                                     'id',
                                     "int(11) NOT NULL AUTO_INCREMENT");
             if (!FieldExists($newTable, "plugin_monitoring_services_id")) {
                $migration->changeField($newTable,
                                        'items_id',
                                        'plugin_monitoring_services_id',
                                        "int(11) NOT NULL DEFAULT '0'");
             }
          $migration->migrationOneTable($newTable);
             $migration->changeField($newTable,
                                     'plugin_monitoring_services_id',
                                     'plugin_monitoring_services_id',
                                     "int(11) NOT NULL DEFAULT '0'");
             $migration->changeField($newTable,
                                     'begin_date',
                                     'begin_date',
                                     "datetime DEFAULT NULL");
             $migration->changeField($newTable,
                                     'end_date',
                                     'end_date',
                                     "datetime DEFAULT NULL");
             $migration->dropField($newTable,
                                     'itemtype');
          $migration->migrationOneTable($newTable);
    */
    /*
     * glpi_plugin_monitoring_unavailabilitystates
     */
    $a_table = array();
    $a_table['name'] = 'glpi_plugin_monitoring_unavailabilitystates';
    $a_table['oldname'] = array();
    $a_table['fields'] = array('id' => array('type' => 'autoincrement', 'value' => ''), 'plugin_monitoring_services_id' => array('type' => 'integer', 'value' => 0), 'plugin_monitoring_serviceevents_id' => array('type' => 'integer', 'value' => 0));
    $a_table['oldfields'] = array();
    $a_table['renamefields'] = array();
    $a_table['keys'] = array();
    $a_table['oldkeys'] = array();
    migrateTablesMonitoring($migration, $a_table);
    /*
     * Table glpi_plugin_monitoring_weathermaps
     */
    $newTable = "glpi_plugin_monitoring_weathermaps";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'name', 'name', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'width', 'width', "smallint(6) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'height', 'height', "smallint(6) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'background', 'background', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'name', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'width', "smallint(6) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'height', "smallint(6) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'background', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_weathermapnodes
     */
    $newTable = "glpi_plugin_monitoring_weathermapnodes";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'name', 'name', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'plugin_monitoring_weathermaps_id', 'plugin_monitoring_weathermaps_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'items_id', 'items_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'itemtype', 'itemtype', "varchar(100) DEFAULT NULL");
    $migration->changeField($newTable, 'x', 'x', "smallint(6) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'y', 'y', "smallint(6) NOT NULL DEFAULT '0'");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'name', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'plugin_monitoring_weathermaps_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'items_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'itemtype', "varchar(100) DEFAULT NULL");
    $migration->addField($newTable, 'x', "smallint(6) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'y', "smallint(6) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'position', "varchar(255) COLLATE utf8_unicode_ci DEFAULT 'middle'");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_weathermaplinks
     */
    $newTable = "glpi_plugin_monitoring_weathermaplinks";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'id', 'id', "int(11) NOT NULL AUTO_INCREMENT");
    $migration->changeField($newTable, 'plugin_monitoring_weathermapnodes_id_1', 'plugin_monitoring_weathermapnodes_id_1', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'plugin_monitoring_weathermapnodes_id_2', 'plugin_monitoring_weathermapnodes_id_2', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'plugin_monitoring_services_id', 'plugin_monitoring_services_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'bandwidth_in', 'bandwidth_in', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'bandwidth_out', 'bandwidth_out', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'plugin_monitoring_weathermapnodes_id_1', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'plugin_monitoring_weathermapnodes_id_2', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'plugin_monitoring_services_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'bandwidth_in', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'bandwidth_out', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_shinkenwebservices
     */
    $newTable = "glpi_plugin_monitoring_shinkenwebservices";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->addField($newTable, 'url', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'action', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'cnt', "tinyint(2) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'fields_string', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_tags
     */
    $newTable = "glpi_plugin_monitoring_tags";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `id` int(11) NOT NULL AUTO_INCREMENT,\n                        PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->addField($newTable, 'tag', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'ip', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'iplock', "bool");
    $migration->addField($newTable, 'username', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'password', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'port', "varchar(255) COLLATE utf8_unicode_ci DEFAULT '7760'");
    $migration->addField($newTable, 'comment', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_downtimes
     */
    $newTable = "glpi_plugin_monitoring_downtimes";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `{$newTable}` (\n                    `id` int(11) NOT NULL AUTO_INCREMENT,\n                    `plugin_monitoring_hosts_id` int(11) NOT NULL DEFAULT '0',\n                    PRIMARY KEY (`id`),\n                    KEY `plugin_monitoring_hosts_id` (`plugin_monitoring_hosts_id`)\n                  ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
        $DB->query($query);
    }
    $migration->addField($newTable, 'start_time', "datetime NOT NULL DEFAULT '2014-01-01 00:00:00'");
    $migration->addField($newTable, 'end_time', "datetime NOT NULL DEFAULT '2014-01-01 00:00:00'");
    $migration->addField($newTable, 'flexible', "tinyint(1) DEFAULT '1'");
    $migration->addField($newTable, 'duration', "int(1) DEFAULT '24'");
    $migration->addField($newTable, 'duration_type', "varchar(64) DEFAULT 'days'");
    $migration->addField($newTable, 'comment', "varchar(1024) DEFAULT NULL");
    $migration->addField($newTable, 'users_id', "int(11) DEFAULT '-1'");
    $migration->addField($newTable, 'tickets_id', "int(11) DEFAULT '0'");
    $migration->addField($newTable, 'services', "tinyint(1) DEFAULT '0'");
    $migration->addField($newTable, 'notified', "tinyint(1) DEFAULT '0'");
    $migration->addField($newTable, 'expired', "tinyint(1) DEFAULT '0'");
    $migration->migrationOneTable($newTable);
    $migration->changeField($newTable, 'flexible', 'flexible', "tinyint(1) DEFAULT '0'");
    $migration->changeField($newTable, 'notified', 'notified', "tinyint(1) DEFAULT '0'");
    $migration->changeField($newTable, 'expired', 'expired', "tinyint(1) DEFAULT '0'");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_acknowledges
     */
    $newTable = "glpi_plugin_monitoring_acknowledges";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `{$newTable}` (\n                    `id` int(11) NOT NULL AUTO_INCREMENT,\n                    `itemtype` varchar(100) DEFAULT 'Host',\n                    `items_id` int(11) NOT NULL DEFAULT '0',\n                    PRIMARY KEY (`id`),\n                    KEY `itemtype` (`itemtype`,`items_id`)\n                  ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
        $DB->query($query);
    }
    $migration->addField($newTable, 'start_time', "datetime NOT NULL DEFAULT '2014-01-01 00:00:00'");
    $migration->addField($newTable, 'end_time', "datetime NOT NULL DEFAULT '2014-01-01 00:00:00'");
    $migration->addField($newTable, 'sticky', "tinyint(1) DEFAULT '1'");
    $migration->addField($newTable, 'persistent', "tinyint(1) DEFAULT '1'");
    $migration->addField($newTable, 'notify', "tinyint(1) DEFAULT '1'");
    $migration->addField($newTable, 'comment', "varchar(1024) DEFAULT NULL");
    $migration->addField($newTable, 'users_id', "int(11) DEFAULT '-1'");
    $migration->addField($newTable, 'notified', "tinyint(1) DEFAULT '0'");
    $migration->addField($newTable, 'expired', "tinyint(1) DEFAULT '0'");
    $migration->migrationOneTable($newTable);
    $migration->changeField($newTable, 'expired', 'expired', "tinyint(1) DEFAULT '0'");
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_hostcounters
     */
    $newTable = "glpi_plugin_monitoring_hostcounters";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `{$newTable}` (\n                     `id` INT(11) NOT NULL AUTO_INCREMENT,\n                     `hostname` VARCHAR(255) DEFAULT NULL,\n                     PRIMARY KEY (`id`),\n                     KEY `hostname` (`hostname`)\n                  ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
        $DB->query($query);
    }
    $migration->addField($newTable, 'date', "datetime DEFAULT NULL");
    $migration->addField($newTable, 'counter', "varchar(255) DEFAULT NULL");
    $migration->addField($newTable, 'value', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'updated', "tinyint(1) NOT NULL DEFAULT '0'");
    $migration->addKey($newTable, array('hostname', 'date', 'updated'), 'updated');
    $migration->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_hostdailycounters
     */
    $newTable = "glpi_plugin_monitoring_hostdailycounters";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `{$newTable}` (\n                    `id` INT(11) NOT NULL AUTO_INCREMENT,\n                    `hostname` VARCHAR(255) NOT NULL DEFAULT '',\n                    `day` DATE NOT NULL DEFAULT '2013-01-01',\n                    `dayname` varchar(16) NOT NULL DEFAULT '',\n                     PRIMARY KEY (`id`),\n                     KEY (`hostname`,`day`),\n                     KEY (`hostname`,`dayname`)\n                  ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
        $DB->query($query);
    }
    /*
             $migration->addField($newTable,
                                  'plugin_monitoring_services_id',
                                  "int(11) NOT NULL DEFAULT '0'");
             $migration->addField($newTable,
                                  'plugin_monitoring_services_id2',
                                  "int(11) NOT NULL DEFAULT '0'");
    */
    $migration->addField($newTable, 'counters', "varchar(4096) NOT NULL DEFAULT ''");
    $migration->dropField($newTable, 'plugin_monitoring_services_id');
    $migration->dropField($newTable, 'plugin_monitoring_services_id2');
    $migration->addField($newTable, 'dayname', "varchar(16) NOT NULL DEFAULT ''");
    $migration->addField($newTable, 'cPaperChanged', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'cPrinterChanged', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'cBinEmptied', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'cPagesInitial', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'cPagesTotal', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'cPagesToday', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'cPagesRemaining', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'cRetractedInitial', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'cRetractedTotal', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'cRetractedToday', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'cRetractedRemaining', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'cPaperLoad', "int(11) NOT NULL DEFAULT '0'");
    $migration->dropField($newTable, 'cCardsInsertedOk');
    $migration->dropField($newTable, 'cCardsInsertedKo');
    $migration->dropField($newTable, 'cCardsRemoved');
    $migration->addField($newTable, 'cCardsInsertedOkToday', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'cCardsInsertedOkTotal', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'cCardsInsertedKoToday', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'cCardsInsertedKoTotal', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'cCardsRemovedToday', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'cCardsRemovedTotal', "int(11) NOT NULL DEFAULT '0'");
    $migration->migrationOneTable($newTable);
    /*
     * Table Delete old table not used
     */
    if (TableExists("glpi_plugin_monitoring_servicesuggests")) {
        $DB->query("DROP TABLE `glpi_plugin_monitoring_servicesuggests`");
    }
    if (TableExists("glpi_plugin_monitoring_servicegraphs")) {
        $DB->query("DROP TABLE `glpi_plugin_monitoring_servicegraphs`");
    }
    if (TableExists("glpi_plugin_monitoring_securities")) {
        $DB->query("DROP TABLE `glpi_plugin_monitoring_securities`");
    }
    if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/monitoring')) {
        mkdir(GLPI_PLUGIN_DOC_DIR . "/monitoring");
    }
    if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/monitoring/templates')) {
        mkdir(GLPI_PLUGIN_DOC_DIR . "/monitoring/templates");
    }
    // Update calendars
    $query = "SELECT * FROM `glpi_calendars`\n      WHERE `name`='24x7'\n      LIMIT 1";
    $result = $DB->query($query);
    if ($DB->numrows($result) == 0) {
        $calendar = new Calendar();
        $input = array();
        $input['name'] = '24x7';
        $input['is_recursive'] = 1;
        $calendars_id = $calendar->add($input);
        $calendarSegment = new CalendarSegment();
        $input = array();
        $input['calendars_id'] = $calendars_id;
        $input['is_recursive'] = 1;
        $input['begin'] = '00:00:00';
        $input['end'] = '24:00:00';
        $input['day'] = '0';
        $calendarSegment->add($input);
        $input['day'] = '1';
        $calendarSegment->add($input);
        $input['day'] = '2';
        $calendarSegment->add($input);
        $input['day'] = '3';
        $calendarSegment->add($input);
        $input['day'] = '4';
        $calendarSegment->add($input);
        $input['day'] = '5';
        $calendarSegment->add($input);
        $input['day'] = '6';
        $calendarSegment->add($input);
    }
    // Update crontasks
    $crontask = new CronTask();
    if (!$crontask->getFromDBbyName('PluginMonitoringDowntime', 'DowntimesExpired')) {
        CronTask::Register('PluginMonitoringDowntime', 'DowntimesExpired', '3600', array('mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30));
    }
    if (!$crontask->getFromDBbyName('PluginMonitoringLog', 'cleanlogs')) {
        CronTask::Register('PluginMonitoringLog', 'cleanlogs', '96400', array('mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30));
    }
    if (!$crontask->getFromDBbyName('PluginMonitoringUnavailability', 'unavailability')) {
        CronTask::Register('PluginMonitoringUnavailability', 'Unavailability', '300', array('mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30));
    }
    if (!$crontask->getFromDBbyName('PluginMonitoringDisplayview_rule', 'replayallviewrules')) {
        CronTask::Register('PluginMonitoringDisplayview_rule', 'replayallviewrules', '1200', array('mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30));
    }
    if ($crontask->getFromDBbyName('PluginMonitoringUnavaibility', 'unavaibility')) {
        $crontask->getFromDBbyName('PluginMonitoringUnavaibility', 'unavaibility');
        $crontask->delete($crontask->fields);
    }
    if ($crontask->getFromDBbyName('PluginMonitoringServiceevent', 'updaterrd')) {
        $crontask->getFromDBbyName('PluginMonitoringServiceevent', 'updaterrd');
        $crontask->delete($crontask->fields);
    }
    if ($crontask->getFromDBbyName('PluginMonitoringHostdailycounter', 'DailyCounters')) {
        $crontask->getFromDBbyName('PluginMonitoringHostdailycounter', 'DailyCounters');
        $crontask->delete($crontask->fields);
    }
    include GLPI_ROOT . "/plugins/monitoring/inc/command.class.php";
    $pmCommand = new PluginMonitoringCommand();
    $a_list = $pmCommand->find();
    $check_dummy_found = false;
    $restart_shinken_found = false;
    $host_action_found = false;
    foreach ($a_list as $data) {
        if ($data['command_name'] == "check_dummy") {
            $check_dummy_found = true;
        }
        if ($data['command_name'] == "restart_shinken") {
            $restart_shinken_found = true;
        }
        if ($data['command_name'] == "host_action") {
            $host_action_found = true;
        }
    }
    if (!$host_action_found) {
        // Host action command
        $pmCommand = new PluginMonitoringCommand();
        $input = array();
        $input['name'] = "Host action";
        $input['command_name'] = "host_action";
        $input['command_line'] = $DB->escape("host_action");
        $pmCommand->add($input);
    }
    if (!$restart_shinken_found) {
        // Restart shinken command
        $pmCommand = new PluginMonitoringCommand();
        $input = array();
        $input['name'] = "Restart Shinken";
        $input['command_name'] = "restart_shinken";
        $input['command_line'] = $DB->escape("nohup sh -c '/usr/local/shinken/bin/stop_arbiter.sh && sleep 3 && /usr/local/shinken/bin/launch_arbiter.sh' > /dev/null 2>&1 &");
        $pmCommand->add($input);
    }
    if (!$check_dummy_found) {
        // Check dummy command
        $pmCommand = new PluginMonitoringCommand();
        $input = array();
        $input['name'] = "Dummy check";
        $input['command_name'] = "check_dummy";
        $input['command_line'] = $DB->escape("\$PLUGINSDIR\$/check_dummy \$ARG1\$ \"\$ARG2\$\"");
        $arg = array();
        $arg['ARG1'] = 'INTEGER: dummy status code';
        $arg['ARG2'] = 'TEXT: dummy status output text';
        $input['arguments'] = exportArrayToDB($arg);
        $pmCommand->add($input);
    }
    /*
     * Clean services not having hosts
     */
    $query = "SELECT `glpi_plugin_monitoring_services`.* FROM `glpi_plugin_monitoring_services`\n      LEFT JOIN `glpi_plugin_monitoring_componentscatalogs_hosts`\n         ON `glpi_plugin_monitoring_componentscatalogs_hosts`.`id` = `plugin_monitoring_componentscatalogs_hosts_id`\n   WHERE `is_static` IS NULL";
    $result = $DB->query($query);
    while ($data = $DB->fetch_array($result)) {
        $queryd = "DELETE FROM `glpi_plugin_monitoring_services`\n         WHERE `id`='" . $data['id'] . "'";
        $DB->query($queryd);
    }
    /*
     * Clean components catalog not having hosts
     */
    $query = "SELECT `glpi_plugin_monitoring_componentscatalogs_hosts`.`id`\n      FROM `glpi_plugin_monitoring_componentscatalogs_hosts`\n      LEFT JOIN `glpi_computers`\n         ON (`glpi_plugin_monitoring_componentscatalogs_hosts`.`items_id` = `glpi_computers`.`id`)\n      WHERE (`glpi_computers`.`name` IS NULL);";
    $result = $DB->query($query);
    while ($data = $DB->fetch_array($result)) {
        $queryd = "DELETE FROM `glpi_plugin_monitoring_componentscatalogs_hosts`\n         WHERE `id`='" . $data['id'] . "'";
        $DB->query($queryd);
    }
    /*
     * Clean services not having valide component
     */
    $query = "SELECT `glpi_plugin_monitoring_services`.`id`\n      FROM `glpi_plugin_monitoring_services`\n      LEFT JOIN `glpi_plugin_monitoring_components`\n         ON (`plugin_monitoring_components_id` = `glpi_plugin_monitoring_components`.`id`)\n      WHERE (`glpi_plugin_monitoring_components`.`id` IS NULL);";
    $result = $DB->query($query);
    include GLPI_ROOT . "/plugins/monitoring/inc/service.class.php";
    $pmService = new PluginMonitoringService();
    while ($data = $DB->fetch_array($result)) {
        $pmService->delete($data);
    }
    // Update hosts config
    include GLPI_ROOT . "/plugins/monitoring/inc/hostconfig.class.php";
    $pmHostconfig = new PluginMonitoringHostconfig();
    $pmHostconfig->initConfig();
    // Verify hosts
    include GLPI_ROOT . "/plugins/monitoring/inc/host.class.php";
    $pmHost = new PluginMonitoringHost();
    $pmHost->verifyHosts();
    if ($insertrealm == '1') {
        // Insert into hostconfigs
        $query = "UPDATE `glpi_plugin_monitoring_hostconfigs`\n         SET `plugin_monitoring_realms_id` = '1'\n         WHERE `items_id` = '0'\n            AND `itemtype` = 'Entity'";
        $DB->query($query);
    }
    include GLPI_ROOT . "/plugins/monitoring/inc/config.class.php";
    $pmConfig = new PluginMonitoringConfig();
    $pmConfig->initConfig();
    // Add user monitoring if not defined
    if (!countElementsInTable('glpi_users', "`name`='monitoring'")) {
        // Create
        $input = array('name' => 'monitoring');
        $user = new User();
        $user->add($input);
    }
    // Update items of views to be compatible with step of 10px instead 1 px
    $query = "SELECT *\n      FROM `glpi_plugin_monitoring_displayviews_items`";
    $result = $DB->query($query);
    while ($data = $DB->fetch_array($result)) {
        $x = 10 * round($data['x'] / 10);
        $y = 10 * round($data['y'] / 10);
        $DB->query("UPDATE `glpi_plugin_monitoring_displayviews_items` " . "SET `x`='" . $x . "', `y`='" . $y . "' " . "WHERE `id`='" . $data['id'] . "'");
    }
    // Udpate componentcatalog_rules with new search engine (0.85)
    $query = "SELECT *\n      FROM `glpi_plugin_monitoring_componentscatalogs_rules`";
    $result = $DB->query($query);
    while ($data = $DB->fetch_array($result)) {
        $data_array = importArrayFromDB($data['condition']);
        if (!isset($data_array['searchtype'])) {
            continue;
        }
        $criteria = array();
        foreach ($data_array['field'] as $num => $value) {
            $criteria[$num]['field'] = $value;
        }
        unset($data_array['field']);
        foreach ($data_array['searchtype'] as $num => $value) {
            $criteria[$num]['searchtype'] = $value;
        }
        unset($data_array['searchtype']);
        foreach ($data_array['contains'] as $num => $value) {
            $criteria[$num]['value'] = $value;
        }
        unset($data_array['contains']);
        if (isset($data_array['link'])) {
            foreach ($data_array['link'] as $num => $value) {
                $criteria[$num]['link'] = $value;
            }
            unset($data_array['link']);
        }
        $data_array['criteria'] = $criteria;
        unset($data_array['_glpi_csrf_token']);
        $DB->query("UPDATE `glpi_plugin_monitoring_componentscatalogs_rules` " . "SET `condition`='" . exportArrayToDB($data_array) . "' " . "WHERE `id`='" . $data['id'] . "'");
    }
    // * Update unavailability (with table glpi_plugin_monitoring_unavailabilitystates)
    //      include (GLPI_ROOT . "/plugins/monitoring/inc/unavailabilitystate.class.php");
    //      $pmUnavailabilityState = new PluginMonitoringUnavailabilityState();
    //      $query = "SELECT * FROM `glpi_plugin_monitoring_services`";
    //      $result = $DB->query($query);
    //      while ($data=$DB->fetch_array($result)) {
    //         if ($pmUnavailabilityState->getLastID($data['id']) == 0) {
    //            $query2 = "SELECT id FROM `glpi_plugin_monitoring_serviceevents`
    //               WHERE `plugin_monitoring_services_id`='".$data['id']."'
    //                  AND `unavailability`='1'
    //               ORDER BY id DESC
    //               LIMIT 1";
    //            $result2 = $DB->query($query2);
    //            while ($data2=$DB->fetch_array($result2)) {
    //               $pmUnavailabilityState->setLastID($data['id'], $data2['id']);
    //            }
    //         }
    //      }
    $query = "UPDATE `glpi_plugin_monitoring_configs`\n      SET `version`='" . PLUGIN_MONITORING_VERSION . "'\n         WHERE `id`='1'";
    $DB->query($query);
}
 function showComponents($componentscatalogs_id)
 {
     global $DB, $CFG_GLPI;
     $this->addComponent($componentscatalogs_id);
     $rand = mt_rand();
     $pmComponent = new PluginMonitoringComponent();
     $pmCommand = new PluginMonitoringCommand();
     $pmCheck = new PluginMonitoringCheck();
     $calendar = new Calendar();
     echo "<form method='post' name='componentscatalog_component_form{$rand}' id='componentscatalog_component_form{$rand}' action=\"" . $CFG_GLPI["root_doc"] . "/plugins/monitoring/front/componentscatalog_component.form.php\">";
     echo "<table class='tab_cadre_fixe'>";
     echo "<tr>";
     echo "<th>";
     echo __('Associated components', 'monitoring');
     echo "</th>";
     echo "</tr>";
     echo "</table>";
     echo "<table class='tab_cadre_fixe'>";
     echo "<tr>";
     echo "<th width='10'>&nbsp;</th>";
     echo "<th>" . __('Name') . "</th>";
     echo "<th>" . __('Command name', 'monitoring') . "</th>";
     echo "<th>" . __('Check definition', 'monitoring') . "</th>";
     echo "<th>" . __('Check period', 'monitoring') . "</th>";
     echo "<th>" . __('Remote check', 'monitoring') . "</th>";
     echo "</tr>";
     $used = array();
     $query = "SELECT * FROM `" . $this->getTable() . "`\n         WHERE `plugin_monitoring_componentscalalog_id`='" . $componentscatalogs_id . "'";
     $result = $DB->query($query);
     while ($data = $DB->fetch_array($result)) {
         $used[] = $data['plugin_monitoring_components_id'];
         $pmComponent->getFromDB($data['plugin_monitoring_components_id']);
         echo "<tr>";
         echo "<td>";
         echo "<input type='checkbox' name='item[" . $data["id"] . "]' value='1'>";
         echo "</td>";
         echo "<td class='center'>";
         echo $pmComponent->getLink(1);
         echo "</td>";
         echo "<td class='center'>";
         $pmCommand->getFromDB($pmComponent->fields['plugin_monitoring_commands_id']);
         echo $pmCommand->getLink();
         echo "</td>";
         echo "<td class='center'>";
         $pmCheck->getFromDB($pmComponent->fields['plugin_monitoring_checks_id']);
         echo $pmCheck->getLink();
         echo "</td>";
         echo "<td class='center'>";
         $calendar->getFromDB($pmComponent->fields['calendars_id']);
         echo $calendar->getLink();
         echo "</td>";
         echo "<td class='center'>";
         if ($pmComponent->fields['remotesystem'] == '') {
             echo "-";
         } else {
             echo $pmComponent->fields['remotesystem'];
         }
         echo "</td>";
         echo "</tr>";
     }
     Html::openArrowMassives("componentscatalog_host_form{$rand}", true);
     Html::closeArrowMassives(array('deleteitem' => _sx('button', 'Delete permanently')));
     Html::closeForm();
     echo "</table>";
 }
コード例 #16
0
   function generateServicesCfg($file=0, $tag='') {
      global $DB;

      PluginMonitoringToolbox::logIfExtradebug(
         'pm-shinken',
         "Starting generateServicesCfg services ($tag) ...\n"
      );
      $pMonitoringCommand      = new PluginMonitoringCommand();
      $pmEventhandler          = new PluginMonitoringEventhandler();
      $pMonitoringCheck        = new PluginMonitoringCheck();
      $pmComponent             = new PluginMonitoringComponent();
      $pmEntity                = new PluginMonitoringEntity();
      $pmContact_Item          = new PluginMonitoringContact_Item();
      $networkPort             = new NetworkPort();
      $pmService               = new PluginMonitoringService();
      $pmComponentscatalog     = new PluginMonitoringComponentscatalog();
      $pmHostconfig            = new PluginMonitoringHostconfig();
      $calendar                = new Calendar();
      $user                    = new User();
      $profile_User = new Profile_User();

      $a_services = array();
      $i=0;

      // TODO: only contacts in allowed entities ...
      // Prepare individual contacts
      $a_contacts_entities = array();
      $a_list_contact = $pmContact_Item->find("`itemtype`='PluginMonitoringComponentscatalog'
         AND `users_id`>0");
      foreach ($a_list_contact as $data) {
         $contactentities = getSonsOf('glpi_entities', $data['entities_id']);
         if (isset($a_contacts_entities[$data['items_id']][$data['users_id']])) {
            $contactentities = array_merge($contactentities, $a_contacts_entities[$data['items_id']][$data['users_id']]);
         }
         $a_contacts_entities[$data['items_id']][$data['users_id']] = $contactentities;
      }
      // Prepare groups contacts
      $group = new Group();
      $a_list_contact = $pmContact_Item->find("`itemtype`='PluginMonitoringComponentscatalog'
         AND `groups_id`>0");
      foreach ($a_list_contact as $data) {
         $group->getFromDB($data['groups_id']);
         if ($group->fields['is_recursive'] == 1) {
            $contactentities = getSonsOf('glpi_entities', $group->fields['entities_id']);
         } else {
            $contactentities = array($group->fields['entities_id'] => $group->fields['entities_id']);
         }
         $queryg = "SELECT * FROM `glpi_groups_users`
            WHERE `groups_id`='".$data['groups_id']."'";
         $resultg = $DB->query($queryg);
         while ($datag=$DB->fetch_array($resultg)) {
            if (isset($a_contacts_entities[$data['items_id']][$datag['users_id']])) {
               $contactentities = array_merge($contactentities, $a_contacts_entities[$data['items_id']][$datag['users_id']]);
            }
            $a_contacts_entities[$data['items_id']][$datag['users_id']] = $contactentities;
         }
      }



      $a_entities_allowed = $pmEntity->getEntitiesByTag($tag);
      // Toolbox::logInFile("pm-shinken", " Allowed entities:\n");
      $a_entities_list = array();
      foreach ($a_entities_allowed as $entity) {
         $a_entities_list = getSonsOf("glpi_entities", $entity);
      }
      $where = '';
      if (! isset($a_entities_allowed['-1'])) {
         $where = getEntitiesRestrictRequest("WHERE", "glpi_plugin_monitoring_services", '', $a_entities_list);
      }

      // --------------------------------------------------
      // "Normal" services ....
      $query = "SELECT * FROM `glpi_plugin_monitoring_services` $where";
      PluginMonitoringToolbox::logIfExtradebug(
         'pm-shinken',
         "Services: $query\n"
      );
      $result = $DB->query($query);
      while ($data=$DB->fetch_array($result)) {
         // Toolbox::logInFile("pm-shinken", " - fetch service ".$data['id']."\n");

         // if (isset($a_entities_allowed['-1'])
                 // OR isset($a_entities_allowed[$item->fields['entities_id']])) {
            $notadd = 0;
            $notadddescription = '';
            $a_component = current($pmComponent->find("`id`='".$data['plugin_monitoring_components_id']."'", "", 1));
            if (empty($a_component)) {
               continue;
            }
            $a_hostname = array();
            $a_hostname_type = array();
            $a_hostname_id = array();
            $queryh = "SELECT * FROM `glpi_plugin_monitoring_componentscatalogs_hosts`
               WHERE `id` = '".$data['plugin_monitoring_componentscatalogs_hosts_id']."'
               LIMIT 1";
            $resulth = $DB->query($queryh);
            $hostname = '';
            $plugin_monitoring_componentscatalogs_id = 0;
            while ($datah=$DB->fetch_array($resulth)) {
               $itemtype = $datah['itemtype'];
               $item = new $itemtype();
               if ($item->getFromDB($datah['items_id'])) {
                  // if (isset($a_entities_allowed['-1'])
                          // OR isset($a_entities_allowed[$item->fields['entities_id']])) {

                     // Fix if hostname is not defined ...
                     if (! empty($item->fields['name'])) {
                        $a_hostname[] = preg_replace("/[^A-Za-z0-9\-_]/","",$item->fields['name']);
                        $a_hostname_type[] = $datah['itemtype'];
                        $a_hostname_id[] = $datah['items_id'];
                        $hostname = $item->fields['name'];
                        $plugin_monitoring_componentscatalogs_id = $datah['plugin_monitoring_componentscalalog_id'];
                     }
                  // }
               }
            }
            if (count($a_hostname) > 0) {
               if (isset($_SESSION['plugin_monitoring']['servicetemplates'][$a_component['id']])) {
                  $a_services[$i]['use'] = $_SESSION['plugin_monitoring']['servicetemplates'][$a_component['id']];
               }
               $a_services[$i]['host_name'] = implode(",", array_unique($a_hostname));
               $a_services[$i]['_HOSTITEMSID'] = implode(",", array_unique($a_hostname_id));
               $a_services[$i]['_HOSTITEMTYPE'] = implode(",", array_unique($a_hostname_type));

               // Define display_name / service_description
               $a_services[$i]['service_description'] = (! empty($a_component['description'])) ? $a_component['description'] : preg_replace("/[^A-Za-z0-9\-_]/","",$a_component['name']);
               // In case have multiple networkt port, may have description different, else be dropped by shinken
               if ($data['networkports_id'] > 0) {
                  $networkPort->getFromDB($data['networkports_id']);
                  $a_services[$i]['service_description'] .= '-'.preg_replace("/[^A-Za-z0-9\-_]/", "", $networkPort->fields['name']);
               }
               $a_services[$i]['display_name'] = $a_component['name'];
               // $a_services[$i]['_ENTITIESID'] = $item->fields['entities_id'];
               // $a_services[$i]['_ITEMSID'] = $data['id'];
               // $a_services[$i]['_ITEMTYPE'] = 'Service';
               PluginMonitoringToolbox::logIfExtradebug(
                  'pm-shinken',
                  " - add service ".$a_services[$i]['service_description']." on ".$a_services[$i]['host_name']."\n"
               );

               if (isset(self::$shinkenParameters['glpi']['entityId'])) {
                  $a_services[$i][self::$shinkenParameters['glpi']['entityId']] =
                     $item->fields['entities_id'];
               }
               if (isset(self::$shinkenParameters['glpi']['itemType'])) {
                  $a_services[$i][self::$shinkenParameters['glpi']['itemType']] =
                     'Service';
               }
               if (isset(self::$shinkenParameters['glpi']['itemId'])) {
                  $a_services[$i][self::$shinkenParameters['glpi']['itemId']] =
                     $data['id'];
               }

               // Manage freshness
               if ($a_component['freshness_count'] == 0) {
                  $a_services[$i]['check_freshness'] = '0';
                  $a_services[$i]['freshness_threshold'] = '3600';
               } else {
                  $multiple = 1;
                  if ($a_component['freshness_type'] == 'seconds') {
                     $multiple = 1;
                  } else if ($a_component['freshness_type'] == 'minutes') {
                     $multiple = 60;
                  } else if ($a_component['freshness_type'] == 'hours') {
                     $multiple = 3600;
                  } else if ($a_component['freshness_type'] == 'days') {
                     $multiple = 86400;
                  }
                  $a_services[$i]['check_freshness'] = '1';
                  $a_services[$i]['freshness_threshold'] = (string)($a_component['freshness_count'] * $multiple);
               }

               $pMonitoringCommand->getFromDB($a_component['plugin_monitoring_commands_id']);
               // Manage arguments
               $array = array();
               preg_match_all("/\\$(ARG\d+)\\$/", $pMonitoringCommand->fields['command_line'], $array);
               sort($array[0]);
               $a_arguments = importArrayFromDB($a_component['arguments']);
               $a_argumentscustom = importArrayFromDB($data['arguments']);
               foreach ($a_argumentscustom as $key=>$value) {
                  $a_arguments[$key] = $value;
               }
               foreach ($a_arguments as $key=>$value) {
                  $a_arguments[$key] = str_replace('!', '\!', html_entity_decode($value));
               }
               $args = '';
               foreach ($array[0] as $arg) {
                  if ($arg != '$PLUGINSDIR$'
                          AND $arg != '$NAGIOSPLUGINSDIR$'
                          AND $arg != '$HOSTADDRESS$'
                          AND $arg != '$MYSQLUSER$'
                          AND $arg != '$MYSQLPASSWORD$') {
                     $arg = str_replace('$', '', $arg);
                     if (!isset($a_arguments[$arg])) {
                        $args .= '!';
                     } else {
                        if (strstr($a_arguments[$arg], "[[HOSTNAME]]")) {
                           $a_arguments[$arg] = str_replace("[[HOSTNAME]]", $hostname, $a_arguments[$arg]);
                        } elseif (strstr($a_arguments[$arg], "[[NETWORKPORTDESCR]]")){
                           if (class_exists("PluginFusioninventoryNetworkPort")) {
                              $pfNetworkPort = new PluginFusioninventoryNetworkPort();
                              $pfNetworkPort->loadNetworkport($data['networkports_id']);
                              $descr = $pfNetworkPort->getValue("ifdescr");
                              $a_arguments[$arg] = str_replace("[[NETWORKPORTDESCR]]", $descr, $a_arguments[$arg]);
                           }
                        } elseif (strstr($a_arguments[$arg], "[[NETWORKPORTNUM]]")){
                           $networkPort = new NetworkPort();
                           $networkPort->getFromDB($data['networkports_id']);
                           $logicalnum = $pfNetworkPort->fields['logical_number'];
                           $a_arguments[$arg] = str_replace("[[NETWORKPORTNUM]]", $logicalnum, $a_arguments[$arg]);
                        } elseif (strstr($a_arguments[$arg], "[[NETWORKPORTNAME]]")){
                           if (isset($data['networkports_id'])
                                   && $data['networkports_id'] > 0) {
                              $networkPort = new NetworkPort();
                              $networkPort->getFromDB($data['networkports_id']);
                              $portname = $pfNetworkPort->fields['name'];
                              $a_arguments[$arg] = str_replace("[[NETWORKPORTNAME]]", $portname, $a_arguments[$arg]);
                           } else if ($a_services[$i]['_HOSTITEMTYPE'] == 'Computer') {
                              // Get networkportname of networkcard defined
                              $pmHostaddress = new PluginMonitoringHostaddress();
                              $a_hostaddresses = $pmHostaddress->find("`itemtype`='Computer'"
                                      . " AND  `items_id`='".$a_services[$i]['_HOSTITEMSID']."'", '', 1);
                              if (count($a_hostaddresses) == 1) {
                                 $a_hostaddress = current($a_hostaddresses);
                                 if ($a_hostaddress['networkports_id'] > 0) {
                                    $networkPort = new NetworkPort();
                                    $networkPort->getFromDB($a_hostaddress['networkports_id']);
                                    $a_arguments[$arg] = str_replace("[[NETWORKPORTNAME]]", $networkPort->fields['name'], $a_arguments[$arg]);
                                 }
                              }
                           }
                        } else if (strstr($a_arguments[$arg], "[")) {
                           $a_arguments[$arg] = PluginMonitoringService::convertArgument($data['id'], $a_arguments[$arg]);
                        }
                        if ($a_arguments == '') {
                           $notadd = 1;
                           if ($notadddescription != '') {
                              $notadddescription .= ", ";
                           }
                           $notadddescription .= "Argument ".$a_arguments[$arg]." do not have value";
                        }
                        $args .= '!'.$a_arguments[$arg];
                        if ($a_arguments[$arg] == ''
                                AND $a_component['alias_command'] != '') {
                           $args .= $a_component['alias_command'];
                        }
                     }
                  }
               }
               // End manage arguments
               if ($a_component['remotesystem'] == 'nrpe') {
                  if ($a_component['alias_command'] != '') {
                     $alias_command = $a_component['alias_command'];
                     if (strstr($alias_command, '[[IP]]')) {
                        $split = explode('-', current($a_hostname));
                        $ip = PluginMonitoringHostaddress::getIp($split[1], $split[0], '');
                        $alias_command = str_replace("[[IP]]", $ip, $alias_command);
                     }
                     $a_services[$i]['check_command'] = PluginMonitoringCommand::$command_prefix . "check_nrpe!".$alias_command;
                  } else {
                     $a_services[$i]['check_command'] = PluginMonitoringCommand::$command_prefix . "check_nrpe!".$pMonitoringCommand->fields['command_name'];
                  }
               } else {
                  $a_services[$i]['check_command'] = PluginMonitoringCommand::$command_prefix . $pMonitoringCommand->fields['command_name'].$args;
               }

               // * Manage event handler
               if ($a_component['plugin_monitoring_eventhandlers_id'] > 0) {
                  if ($pmEventhandler->getFromDB($a_component['plugin_monitoring_eventhandlers_id'])) {
                     $a_services[$i]['event_handler'] = $pmEventhandler->fields['command_name'];
                  }
               }

               if (! empty(self::$shinkenParameters['shinken']['services']['process_perf_data'])) $a_services[$i]['process_perf_data'] = self::$shinkenParameters['shinken']['services']['process_perf_data'];

               if (! empty(self::$shinkenParameters['shinken']['services']['notes'])) $a_services[$i]['notes'] = self::$shinkenParameters['shinken']['services']['notes'];
               if (! empty(self::$shinkenParameters['shinken']['services']['notes_url'])) $a_services[$i]['notes_url'] = self::$shinkenParameters['shinken']['services']['notes_url'];
               if (! empty(self::$shinkenParameters['shinken']['services']['action_url'])) $a_services[$i]['action_url'] = self::$shinkenParameters['shinken']['services']['action_url'];
               if (! empty(self::$shinkenParameters['shinken']['services']['icon_image'])) $a_services[$i]['icon_image'] = self::$shinkenParameters['shinken']['services']['icon_image'];
               if (! empty(self::$shinkenParameters['shinken']['services']['icon_image_alt'])) $a_services[$i]['icon_image_alt'] = self::$shinkenParameters['shinken']['services']['icon_image_alt'];

               // * Contacts
               $a_contacts = array();
               $a_list_contact = $pmContact_Item->find("`itemtype`='PluginMonitoringComponentscatalog'
                  AND `items_id`='".$plugin_monitoring_componentscatalogs_id."'");
               foreach ($a_list_contact as $data_contact) {
                  if ($data_contact['users_id'] > 0) {
                     if (isset($a_contacts_entities[$plugin_monitoring_componentscatalogs_id][$data_contact['users_id']])) {
                        if (in_array($data['entities_id'], $a_contacts_entities[$plugin_monitoring_componentscatalogs_id][$data_contact['users_id']])) {
                           $user->getFromDB($data_contact['users_id']);
                           $a_contacts[] = $user->fields['name'];
                        }
                     }
                  } else if ($data_contact['groups_id'] > 0) {
                     $queryg = "SELECT * FROM `glpi_groups_users`
                        WHERE `groups_id`='".$data_contact['groups_id']."'";
                     $resultg = $DB->query($queryg);
                     while ($datag=$DB->fetch_array($resultg)) {
                        if (in_array($data['entities_id'], $a_contacts_entities[$plugin_monitoring_componentscatalogs_id][$datag['users_id']])) {
                           $user->getFromDB($datag['users_id']);
                           $a_contacts[] = $user->fields['name'];
                        }
                     }
                  }
               }

               $a_contacts_unique = array_unique($a_contacts);
               $a_services[$i]['contacts'] = implode(',', $a_contacts_unique);

               // ** If shinken not use templates or template not defined :
               if (!isset($_SESSION['plugin_monitoring']['servicetemplates'][$a_component['id']])) {
                  $pMonitoringCheck->getFromDB($a_component['plugin_monitoring_checks_id']);
                  $a_services[$i]['check_interval'] = $pMonitoringCheck->fields['check_interval'];
                  $a_services[$i]['retry_interval'] = $pMonitoringCheck->fields['retry_interval'];
                  $a_services[$i]['max_check_attempts'] = $pMonitoringCheck->fields['max_check_attempts'];
                  if ($calendar->getFromDB($a_component['calendars_id'])) {
                     $a_services[$i]['check_period'] = $calendar->fields['name'];
                  }
                  $a_services[$i]['notification_interval'] = '30';
                  $a_services[$i]['notification_period'] = "24x7";
                  $a_services[$i]['notification_options'] = 'w,u,c,r,f,s';
                  $a_services[$i]['process_perf_data'] = '1';
                  $a_services[$i]['active_checks_enabled'] = '1';
                  $a_services[$i]['passive_checks_enabled'] = '1';
                  $a_services[$i]['parallelize_check'] = '1';
                  $a_services[$i]['obsess_over_service'] = '1';
                  $a_services[$i]['check_freshness'] = '1';
                  $a_services[$i]['freshness_threshold'] = '3600';
                  $a_services[$i]['notifications_enabled'] = '1';

                  if (isset($a_services[$i]['event_handler'])) {
                     $a_services[$i]['event_handler_enabled'] = '1';
                  } else {
                     $a_services[$i]['event_handler_enabled'] = '0';
                     // $a_services[$i]['event_handler_enabled'] = '';
                  }
                  $a_services[$i]['flap_detection_enabled'] = '1';
                  $a_services[$i]['failure_prediction_enabled'] = '1';
                  $a_services[$i]['retain_status_information'] = '1';
                  $a_services[$i]['retain_nonstatus_information'] = '1';
                  $a_services[$i]['is_volatile'] = '0';
                  // $a_services[$i]['_httpstink'] = 'NO';
               } else {
                  // Notification options
                  $a_services[$i]['notification_interval'] = '30';
                  $pmComponentscatalog->getFromDB($plugin_monitoring_componentscatalogs_id);
                  if ($pmComponentscatalog->fields['notification_interval'] != '30') {
                     $a_services[$i]['notification_interval'] = $pmComponentscatalog->fields['notification_interval'];
                  }
                  $a_services[$i]['notification_period'] = '24x7';
                  $a_services[$i]['check_period'] = '24x7';
                  if ($calendar->getFromDB($a_component['calendars_id'])) {
                     $a_services[$i]['check_period'] = $calendar->fields['name'];
                  }
               }

               // WebUI user interface ...
               if (isset(self::$shinkenParameters['webui']['serviceIcons']['name'])) {
                  $a_services[$i][self::$shinkenParameters['webui']['serviceIcons']['name']] =
                     self::$shinkenParameters['webui']['serviceIcons']['value'];
               }

               if ($notadd == '1') {
                  unset($a_services[$i]);
                  $input = array();
                  $input['id'] = $data['id'];
                  $input['event'] = $notadddescription;
                  $input['state'] = "CRITICAL";
                  $input['state_type'] = "HARD";
                  $pmService->update($input);
               } else {
                  $i++;
               }
            }
         // }
      }

      PluginMonitoringToolbox::logIfExtradebug(
         'pm-shinken',
         "End generateServicesCfg services\n"
      );

      PluginMonitoringToolbox::logIfExtradebug(
         'pm-shinken',
         "Starting generateServicesCfg business rules ...\n"
      );

      // --------------------------------------------------
      // Business rules services ...
      $pmService = new PluginMonitoringService();
      $pmServicescatalog = new PluginMonitoringServicescatalog();
      $pmBusinessrulegroup = new PluginMonitoringBusinessrulegroup();
      $pmBusinessrule = new PluginMonitoringBusinessrule();
      $pmComponentscatalog_Host = new PluginMonitoringComponentscatalog_Host();
      $pmBusinessrule_component = new PluginMonitoringBusinessrule_component();
      // Prepare individual contacts
      $a_contacts_entities = array();
      $a_list_contact = $pmContact_Item->find("`itemtype`='PluginMonitoringServicescatalog'
         AND `users_id`>0");
      foreach ($a_list_contact as $data) {
         $contactentities = getSonsOf('glpi_entities', $data['entities_id']);
         if (isset($a_contacts_entities[$data['items_id']][$data['users_id']])) {
            $contactentities = array_merge($contactentities, $a_contacts_entities[$data['items_id']][$data['users_id']]);
         }
         $a_contacts_entities[$data['items_id']][$data['users_id']] = $contactentities;
      }
      // Prepare groups contacts
      $group = new Group();
      $a_list_contact = $pmContact_Item->find("`itemtype`='PluginMonitoringServicescatalog'
         AND `groups_id`>0");
      foreach ($a_list_contact as $data) {
         $group->getFromDB($data['groups_id']);
         if ($group->fields['is_recursive'] == 1) {
            $contactentities = getSonsOf('glpi_entities', $group->fields['entities_id']);
         } else {
            $contactentities = array($group->fields['entities_id'] => $group->fields['entities_id']);
         }
         $queryg = "SELECT * FROM `glpi_groups_users`
            WHERE `groups_id`='".$data['groups_id']."'";
         $resultg = $DB->query($queryg);
         while ($datag=$DB->fetch_array($resultg)) {
            if (isset($a_contacts_entities[$data['items_id']][$datag['users_id']])) {
               $contactentities = array_merge($contactentities, $a_contacts_entities[$data['items_id']][$datag['users_id']]);
            }
            $a_contacts_entities[$data['items_id']][$datag['users_id']] = $contactentities;
         }
      }

      // Services catalogs
      $a_listBA = $pmServicescatalog->find("`is_generic`='0'");
      foreach ($a_listBA as $dataBA) {

         if (isset($a_entities_allowed['-1'])
                 OR isset($a_entities_allowed[$dataBA['entities_id']])) {

            $a_grouplist = $pmBusinessrulegroup->find("`plugin_monitoring_servicescatalogs_id`='".$dataBA['id']."'");
            $a_group = array();
            foreach ($a_grouplist as $gdata) {

               $pmBusinessrule_component->replayDynamicServices($gdata['id']);
               $a_listBR = $pmBusinessrule->find(
                       "`plugin_monitoring_businessrulegroups_id`='".$gdata['id']."'");
               foreach ($a_listBR as $dataBR) {
                  if ($pmService->getFromDB($dataBR['plugin_monitoring_services_id'])) {
                     if ($pmService->getHostName() != '') {
                        $hostname = preg_replace("/[^A-Za-z0-9\-_]/","",$pmService->getHostName());

                        if ($gdata['operator'] == 'and'
                                OR $gdata['operator'] == 'or'
                                OR strstr($gdata['operator'], ' of:')) {

                           $operator = '|';
                           if ($gdata['operator'] == 'and') {
                              $operator = '&';
                           }
                           if (!isset($a_group[$gdata['id']])) {
                              $a_group[$gdata['id']] = '';
                              if (strstr($gdata['operator'], ' of:')) {
                                 $a_group[$gdata['id']] = $gdata['operator'];
                              }
                              $a_group[$gdata['id']] .= $hostname.",".preg_replace("/[^A-Za-z0-9\-_]/","",$pmService->getName(array('shinken'=>true)));
                           } else {
                              $a_group[$gdata['id']] .= $operator.$hostname.",".preg_replace("/[^A-Za-z0-9\-_]/","",$pmService->getName(array('shinken'=>true)));
                           }
                        } else {
                           $a_group[$gdata['id']] = $gdata['operator']." ".$hostname.",".preg_replace("/[^A-Za-z0-9\-_]/","",$item->getName());
                        }
                     }
                  }
                  PluginMonitoringToolbox::logIfExtradebug(
                     'pm-shinken',
                     "   - SC group : ".$a_group[$gdata['id']]."\n"
                  );
               }
            }
            if (count($a_group) > 0) {
               $pMonitoringCheck->getFromDB($dataBA['plugin_monitoring_checks_id']);
               $a_services[$i]['check_interval'] = $pMonitoringCheck->fields['check_interval'];
               $a_services[$i]['retry_interval'] = $pMonitoringCheck->fields['retry_interval'];
               $a_services[$i]['max_check_attempts'] = $pMonitoringCheck->fields['max_check_attempts'];
               if ($calendar->getFromDB($dataBA['calendars_id'])) {
                  $a_services[$i]['check_period'] = $calendar->fields['name'];
               }
               $a_services[$i]['host_name'] = self::$shinkenParameters['shinken']['fake_hosts']['name_prefix'] . self::$shinkenParameters['shinken']['fake_hosts']['bp_host'];
               $a_services[$i]['business_impact'] = $dataBA['business_priority'];
               $a_services[$i]['service_description'] = preg_replace("/[^A-Za-z0-9\-_]/","",$dataBA['name']);
               $a_services[$i]['_ENTITIESID'] = $dataBA['id'];
               $a_services[$i]['_ITEMSID'] = $dataBA['id'];
               $a_services[$i]['_ITEMTYPE'] = 'ServiceCatalog';
               $command = "bp_rule!";

               foreach ($a_group as $key=>$value) {
                  if (!strstr($value, "&")
                          AND !strstr($value, "|")) {
                     $a_group[$key] = trim($value);
                  } else {
                     $a_group[$key] = "(".trim($value).")";
                  }
               }
               $a_services[$i]['check_command'] = $command.implode("&", $a_group);
               if ($dataBA['notification_interval'] != '30') {
                  $a_services[$i]['notification_interval'] = $dataBA['notification_interval'];
               } else {
                  $a_services[$i]['notification_interval'] = '30';
               }
               $a_services[$i]['notification_period'] = "24x7";
               $a_services[$i]['notification_options'] = 'w,u,c,r,f,s';
               $a_services[$i]['active_checks_enabled'] = '1';
               $a_services[$i]['process_perf_data'] = '1';
               $a_services[$i]['active_checks_enabled'] = '1';
               $a_services[$i]['passive_checks_enabled'] = '1';
               $a_services[$i]['parallelize_check'] = '1';
               $a_services[$i]['obsess_over_service'] = '1';
               $a_services[$i]['check_freshness'] = '1';
               $a_services[$i]['freshness_threshold'] = '3600';
               $a_services[$i]['notifications_enabled'] = '1';
               $a_services[$i]['event_handler_enabled'] = '0';
               //$a_services[$i]['event_handler'] = 'super_event_kill_everyone!DIE';
               $a_services[$i]['flap_detection_enabled'] = '1';
               $a_services[$i]['failure_prediction_enabled'] = '1';
               $a_services[$i]['retain_status_information'] = '1';
               $a_services[$i]['retain_nonstatus_information'] = '1';
               $a_services[$i]['is_volatile'] = '0';
               // $a_services[$i]['_httpstink'] = 'NO';

               // * Contacts
               $a_contacts = array();
               $a_list_contact = $pmContact_Item->find("`itemtype`='PluginMonitoringServicescatalog'
                  AND `items_id`='".$dataBA['id']."'");
               foreach ($a_list_contact as $data_contact) {
                  if ($data_contact['users_id'] > 0) {
                     if (isset($a_contacts_entities[$dataBA['id']][$data_contact['users_id']])) {
                        if (in_array($data['entities_id'], $a_contacts_entities[$dataBA['id']][$data_contact['users_id']])) {
                           $user->getFromDB($data_contact['users_id']);
                           $a_contacts[] = $user->fields['name'];
                        }
                     }
                  } else if ($data_contact['groups_id'] > 0) {
                     $queryg = "SELECT * FROM `glpi_groups_users`
                        WHERE `groups_id`='".$data_contact['groups_id']."'";
                     $resultg = $DB->query($queryg);
                     while ($datag=$DB->fetch_array($resultg)) {
                        if (in_array($data['entities_id'], $a_contacts_entities[$dataBA['id']][$datag['users_id']])) {
                           $user->getFromDB($datag['users_id']);
                           $a_contacts[] = $user->fields['name'];
                        }
                     }
                  }
               }

               $a_contacts_unique = array_unique($a_contacts);
               $a_services[$i]['contacts'] = implode(',', $a_contacts_unique);
               $i++;
            }
         }
      }

      PluginMonitoringToolbox::logIfExtradebug(
         'pm-shinken',
         "End generateServicesCfg business rules\n"
      );

      PluginMonitoringToolbox::logIfExtradebug(
         'pm-shinken',
         "Starting generateServicesCfg business rules templates ...\n"
      );

      // Services catalogs templates
      // TODO : correctly test and improve it !
      $a_listBA = $pmServicescatalog->find("`is_generic`='1'");
      foreach ($a_listBA as $dataBA) {
         PluginMonitoringToolbox::logIfExtradebug(
            'pm-shinken',
            "   - SC : ".$dataBA['id']."\n"
         );

         if (isset($a_entities_allowed['-1'])
                 OR isset($a_entities_allowed[$dataBA['entities_id']])) {

            $pmServicescatalog->getFromDB($dataBA['id']);

            $a_entitiesServices = $pmServicescatalog->getGenericServicesEntities();
            foreach ($a_entitiesServices as $idEntity=>$a_entityServices) {
               // New entity ... so new business rule !
               PluginMonitoringToolbox::logIfExtradebug(
                  'pm-shinken',
                  "   - SC templated services for an entity : ".$idEntity."\n"
               );

               $pmDerivatedSC = new PluginMonitoringServicescatalog();
               $a_derivatedSC = $pmDerivatedSC->find("`entities_id`='$idEntity' AND `name` LIKE '".$dataBA['name']."%'");
               foreach ($a_derivatedSC as $a_derivated) {
                  PluginMonitoringToolbox::logIfExtradebug(
                     'pm-shinken',
                     "   - a_derivated : ".$a_derivated['name']."\n"
                  );
                  $a_derivatedSC = $a_derivated;
               }

               $a_group = array();
               foreach ($a_entityServices as $services) {
                  if ($pmService->getFromDB($services['serviceId'])) {
                     // Toolbox::logInFile("pm-shinken", "   - SC templated service entity : ".$services['entityId'].", service :  ".$pmService->getName(true)." on ".$pmService->getHostName()."\n");
                     if ($pmService->getHostName() != '') {
                        $hostname = preg_replace("/[^A-Za-z0-9\-_]/","",$pmService->getHostName());

                        $serviceFakeId = $services['entityId'];

                        $pmBusinessrulegroup->getFromDB($services['BRgroupId']);
                        $BRoperator = $pmBusinessrulegroup->getField('operator');
                        if ($BRoperator == 'and'
                                OR $BRoperator == 'or'
                                OR strstr($BRoperator, ' of:')) {

                           $operator = '|';
                           if ($BRoperator == 'and') {
                              $operator = '&';
                           }
                           if (!isset($a_group[$serviceFakeId])) {
                              $a_group[$serviceFakeId] = '';
                              if (strstr($BRoperator, ' of:')) {
                                 $a_group[$serviceFakeId] = $BRoperator;
                              }
                              $a_group[$serviceFakeId] .= $hostname.",".preg_replace("/[^A-Za-z0-9\-_]/","",$pmService->getName(array('shinken'=>true)));
                           } else {
                              $a_group[$serviceFakeId] .= $operator.$hostname.",".preg_replace("/[^A-Za-z0-9\-_]/","",$pmService->getName(array('shinken'=>true)));
                           }
                        } else {
                           $a_group[$serviceFakeId] = $BRoperator." ".$hostname.",".preg_replace("/[^A-Za-z0-9\-_]/","",$pmService->getHostName());
                        }
                        // Toolbox::logInFile("pm-shinken", "   - SCT group : ".$a_group[$serviceFakeId]."\n");
                     }
                  }
               }
               if (count($a_group) > 0) {
                  $pMonitoringCheck->getFromDB($a_derivatedSC['plugin_monitoring_checks_id']);
                  $a_services[$i]['check_interval'] = $pMonitoringCheck->fields['check_interval'];
                  $a_services[$i]['retry_interval'] = $pMonitoringCheck->fields['retry_interval'];
                  $a_services[$i]['max_check_attempts'] = $pMonitoringCheck->fields['max_check_attempts'];
                  if ($calendar->getFromDB($a_derivatedSC['calendars_id'])) {
                     $a_services[$i]['check_period'] = $calendar->fields['name'];
                  }
                  $a_services[$i]['host_name'] = preg_replace("/[^A-Za-z0-9\-_]/","",$a_derivatedSC['name']);
                  $a_services[$i]['host_name'] = self::$shinkenParameters['shinken']['fake_hosts']['name_prefix'] . self::$shinkenParameters['shinken']['fake_hosts']['bp_host'];
                  $a_services[$i]['business_impact'] = $a_derivatedSC['business_priority'];
                  $a_services[$i]['service_description'] = preg_replace("/[^A-Za-z0-9\-_]/","",$a_derivatedSC['name']);
                  $a_services[$i]['_ENTITIESID'] = $a_derivatedSC['entities_id'];
                  $a_services[$i]['_ITEMSID'] = $a_derivatedSC['id'];
                  $a_services[$i]['_ITEMTYPE'] = 'ServiceCatalog';
                  $command = "bp_rule!";

                  foreach ($a_group as $key=>$value) {
                     if (!strstr($value, "&")
                             AND !strstr($value, "|")) {
                        $a_group[$key] = trim($value);
                     } else {
                        $a_group[$key] = "(".trim($value).")";
                     }
                  }
                  $a_services[$i]['check_command'] = $command.implode("&", $a_group);
                  if ($a_derivatedSC['notification_interval'] != '30') {
                     $a_services[$i]['notification_interval'] = $a_derivatedSC['notification_interval'];
                  } else {
                     $a_services[$i]['notification_interval'] = '30';
                  }
                  $a_services[$i]['notification_period'] = "24x7";
                  $a_services[$i]['notification_options'] = 'w,u,c,r,f,s';
                  $a_services[$i]['active_checks_enabled'] = '1';
                  $a_services[$i]['process_perf_data'] = '1';
                  $a_services[$i]['active_checks_enabled'] = '1';
                  $a_services[$i]['passive_checks_enabled'] = '1';
                  $a_services[$i]['parallelize_check'] = '1';
                  $a_services[$i]['obsess_over_service'] = '1';
                  $a_services[$i]['check_freshness'] = '1';
                  $a_services[$i]['freshness_threshold'] = '3600';
                  $a_services[$i]['notifications_enabled'] = '1';
                  $a_services[$i]['event_handler_enabled'] = '0';
                  //$a_services[$i]['event_handler'] = 'super_event_kill_everyone!DIE';
                  $a_services[$i]['flap_detection_enabled'] = '1';
                  $a_services[$i]['failure_prediction_enabled'] = '1';
                  $a_services[$i]['retain_status_information'] = '1';
                  $a_services[$i]['retain_nonstatus_information'] = '1';
                  $a_services[$i]['is_volatile'] = '0';
                  // $a_services[$i]['_httpstink'] = 'NO';

                  // * Contacts
                  $a_contacts = array();
                  $a_list_contact = $pmContact_Item->find("`itemtype`='PluginMonitoringServicescatalog'
                     AND `items_id`='".$dataBA['id']."'");
                  foreach ($a_list_contact as $data_contact) {
                     if ($data_contact['users_id'] > 0) {
                        if (isset($a_contacts_entities[$dataBA['id']][$data_contact['users_id']])) {
                           if (in_array($data['entities_id'], $a_contacts_entities[$dataBA['id']][$data_contact['users_id']])) {
                              $user->getFromDB($data_contact['users_id']);
                              $a_contacts[] = $user->fields['name'];
                           }
                        }
                     } else if ($data_contact['groups_id'] > 0) {
                        $queryg = "SELECT * FROM `glpi_groups_users`
                           WHERE `groups_id`='".$data_contact['groups_id']."'";
                        $resultg = $DB->query($queryg);
                        while ($datag=$DB->fetch_array($resultg)) {
                           if (in_array($data['entities_id'], $a_contacts_entities[$dataBA['id']][$datag['users_id']])) {
                              $user->getFromDB($datag['users_id']);
                              $a_contacts[] = $user->fields['name'];
                           }
                        }
                     }
                  }

                  $a_contacts_unique = array_unique($a_contacts);
                  $a_services[$i]['contacts'] = implode(',', $a_contacts_unique);
                  $i++;
               }
            }
         }
      }

      PluginMonitoringToolbox::logIfExtradebug(
         'pm-shinken',
         "End generateServicesCfg business rules templates\n"
      );

      if ($file == "1") {
         $config = "# Generated by plugin monitoring for GLPI\n# on ".date("Y-m-d H:i:s")."\n\n";

         foreach ($a_services as $data) {
            $config .= $this->writeFile("service", $data);
         }
         return array('services.cfg', $config);

      } else {
         return $a_services;
      }
   }
コード例 #17
0
 /**
  * Display form for service configuration
  *
  * @param $items_id integer ID 
  * @param $options array
  *
  *@return bool true if form is ok
  *
  **/
 function showForm($items_id, $options = array(), $copy = array())
 {
     global $DB, $CFG_GLPI, $LANG;
     $pMonitoringCommand = new PluginMonitoringCommand();
     if ($items_id == '0') {
         $this->getEmpty();
         $this->fields['active_checks_enabled'] = 1;
         $this->fields['passive_checks_enabled'] = 1;
     } else {
         $this->getFromDB($items_id);
     }
     if (count($copy) > 0) {
         foreach ($copy as $key => $value) {
             $this->fields[$key] = stripslashes($value);
         }
     }
     $this->showTabs($options);
     $this->showFormHeader($options);
     if (isset($_SESSION['plugin_monitoring_components'])) {
         $this->fields = $_SESSION['plugin_monitoring_components'];
         if (!isset($this->fields["id"])) {
             $this->fields["id"] = '';
         }
         if (!isset($this->fields["arguments"])) {
             $this->fields["arguments"] = '';
         }
         unset($_SESSION['plugin_monitoring_components']);
     }
     echo "<tr>";
     echo "<td>";
     echo $LANG['common'][16] . "<font class='red'>*</font>&nbsp;:";
     echo "</td>";
     echo "<td>";
     echo "<input type='hidden' name='is_template' value='1' />";
     $objectName = autoName($this->fields["name"], "name", 1, $this->getType());
     autocompletionTextField($this, 'name', array('value' => $objectName));
     echo "</td>";
     // * checks
     echo "<td>" . $LANG['plugin_monitoring']['check'][0] . "<font class='red'>*</font>&nbsp;:</td>";
     echo "<td>";
     Dropdown::show("PluginMonitoringCheck", array('name' => 'plugin_monitoring_checks_id', 'value' => $this->fields['plugin_monitoring_checks_id']));
     echo "</td>";
     echo "</tr>";
     // * Link
     echo "<tr>";
     echo "<td>";
     //      echo "Type of template&nbsp;:";
     echo "</td>";
     echo "<td>";
     //      $a_types = array();
     //      $a_types[''] = DROPDOWN_EMPTY_VALUE;
     //      $a_types['partition'] = "Partition";
     //      $a_types['processor'] = "Processor";
     //      Dropdown::showFromArray("link", $a_types, array('value'=>$this->fields['link']));
     echo "</td>";
     // * active check
     echo "<td>";
     echo $LANG['plugin_monitoring']['host'][5] . "<font class='red'>*</font>&nbsp;:";
     echo "</td>";
     echo "<td>";
     Dropdown::showYesNo("active_checks_enabled", $this->fields['active_checks_enabled']);
     echo "</td>";
     echo "</tr>";
     // * command
     echo "<tr>";
     echo "<td>";
     echo $LANG['plugin_monitoring']['service'][5] . "<font class='red'>*</font>&nbsp;:";
     echo "</td>";
     echo "<td>";
     $pMonitoringCommand->getFromDB($this->fields['plugin_monitoring_commands_id']);
     Dropdown::show("PluginMonitoringCommand", array('name' => 'plugin_monitoring_commands_id', 'value' => $this->fields['plugin_monitoring_commands_id']));
     echo "</td>";
     // * passive check
     echo "<td>";
     echo $LANG['plugin_monitoring']['service'][7] . "<font class='red'>*</font>&nbsp;:";
     echo "</td>";
     echo "<td>";
     Dropdown::showYesNo("passive_checks_enabled", $this->fields['passive_checks_enabled']);
     echo "</td>";
     echo "</tr>";
     echo "<tr>";
     echo "<td>";
     echo $LANG['plugin_monitoring']['service'][12] . "&nbsp;:";
     echo "</td>";
     echo "<td>";
     $a_templates = array();
     $a_templates[''] = DROPDOWN_EMPTY_VALUE;
     if ($handle = opendir(GLPI_PLUGIN_DOC_DIR . "/monitoring/templates/")) {
         while (false !== ($entry = readdir($handle))) {
             if ($entry != "." && $entry != "..") {
                 if (strstr($entry, "_graph.json")) {
                     $entry = str_replace("_graph.json", "", $entry);
                     $a_templates[$entry] = $entry;
                 }
             }
         }
         closedir($handle);
     }
     Dropdown::showFromArray("graph_template", $a_templates, array('value' => $this->fields['graph_template']));
     echo "</td>";
     // * calendar
     echo "<td>" . $LANG['plugin_monitoring']['host'][9] . "<font class='red'>*</font>&nbsp;:</td>";
     echo "<td>";
     dropdown::show("Calendar", array('name' => 'calendars_id', 'value' => $this->fields['calendars_id']));
     echo "</td>";
     echo "</tr>";
     echo "<tr>";
     echo "<th colspan='4'>" . $LANG['plugin_monitoring']['service'][8] . "</th>";
     echo "</tr>";
     echo "<tr>";
     // * remotesystem
     echo "<td>";
     echo $LANG['plugin_monitoring']['service'][9] . "&nbsp;:";
     echo "</td>";
     echo "<td>";
     $input = array();
     $input[''] = '------';
     $input['byssh'] = 'byssh';
     $input['nrpe'] = 'nrpe';
     $input['nsca'] = 'nsca';
     Dropdown::showFromArray("remotesystem", $input, array('value' => $this->fields['remotesystem']));
     echo "</td>";
     // * is_argument
     echo "<td>";
     echo $LANG['plugin_monitoring']['service'][10] . "&nbsp;:";
     echo "</td>";
     echo "<td>";
     Dropdown::showYesNo("is_arguments", $this->fields['is_arguments']);
     echo "</td>";
     echo "</tr>";
     echo "<tr>";
     // alias command
     echo "<td>";
     echo $LANG['plugin_monitoring']['service'][11] . "&nbsp;:";
     echo "</td>";
     echo "<td>";
     echo "<input type='text' name='alias_command' value='" . $this->fields['alias_command'] . "' />";
     echo "</td>";
     echo "<td colspan='2'></td>";
     echo "</tr>";
     // * Manage arguments
     $array = array();
     $a_displayarg = array();
     if (isset($pMonitoringCommand->fields['command_line'])) {
         preg_match_all("/\\\$(ARG\\d+)\\\$/", $pMonitoringCommand->fields['command_line'], $array);
         $a_arguments = importArrayFromDB($this->fields['arguments']);
         foreach ($array[0] as $arg) {
             if (strstr($arg, "ARG")) {
                 $arg = str_replace('$', '', $arg);
                 if (!isset($a_arguments[$arg])) {
                     $a_arguments[$arg] = '';
                 }
                 $a_displayarg[$arg] = $a_arguments[$arg];
             }
         }
     }
     if (count($a_displayarg) > 0) {
         $a_tags = $this->tagsAvailable();
         $a_argtext = importArrayFromDB($pMonitoringCommand->fields['arguments']);
         echo "<tr>";
         echo "<th colspan='4'>" . $LANG['plugin_monitoring']['service'][4] . "&nbsp;</th>";
         echo "</tr>";
         foreach ($a_displayarg as $key => $value) {
             echo "<tr>";
             echo "<td>";
             if (isset($a_argtext[$key]) and $a_argtext[$key] != '') {
                 echo nl2br($a_argtext[$key]) . "&nbsp;:";
             } else {
                 echo $LANG['plugin_monitoring']['service'][14] . " (" . $key . ")&nbsp;:";
             }
             echo "</td>";
             echo "<td>";
             echo "<input type='text' name='arg[" . $key . "]' value='" . $value . "'/><br/>";
             echo "</td>";
             if (count($a_tags) > 0) {
                 foreach ($a_tags as $key => $value) {
                     echo "<td class='tab_bg_3'>";
                     echo "<strong>" . $key . "</strong>&nbsp;:";
                     echo "</td>";
                     echo "<td class='tab_bg_3'>";
                     echo $value;
                     echo "</td>";
                     unset($a_tags[$key]);
                     break;
                 }
             } else {
                 echo "<td colspan='2'></td>";
             }
             echo "</tr>";
         }
         foreach ($a_tags as $key => $value) {
             echo "<tr>";
             echo "<td colspan='2'></td>";
             echo "<td class='tab_bg_3'>";
             echo "<strong>" . $key . "</strong>&nbsp;:";
             echo "</td>";
             echo "<td class='tab_bg_3'>";
             echo $value;
             echo "</td>";
             echo "</tr>";
         }
     }
     echo "<tr>";
     echo "<th colspan='4'>" . $LANG['plugin_monitoring']['weathermap'][0] . "&nbsp;</th>";
     echo "</tr>";
     echo "<tr>";
     echo "<td>";
     echo $LANG['plugin_monitoring']['weathermap'][1] . "&nbsp;:";
     echo "</td>";
     echo "<td>";
     Dropdown::showYesNo("is_weathermap", $this->fields['is_weathermap']);
     echo "</td>";
     echo "<td>";
     $tooltip = $LANG['plugin_monitoring']['component'][15] . " :<br/><br/>";
     $tooltip .= "perfdata : <i>inUsage=0.00%;85;98 outUsage=0.00%;85;98 inBandwidth=<strong>789944</strong>.00bps outBandwidth=486006.00bps inAbsolut=0 outAbsolut=12665653</i><br/><br/>";
     $tooltip .= $LANG['plugin_monitoring']['weathermap'][18] . " : <i><strong>(?:.*)inBandwidth=(\\d+)(?:.*)</strong></i><br/><br/>";
     $tooltip .= $LANG['rulesengine'][85] . " : <strong>789944</strong>";
     echo $LANG['plugin_monitoring']['weathermap'][18] . "&nbsp;";
     showToolTip($tooltip, array('autoclose' => false));
     echo "&nbsp;:";
     echo "</td>";
     echo "<td>";
     echo "<input type='text' name='weathermap_regex_in' value='" . $this->fields['weathermap_regex_in'] . "' size='40' />";
     echo "</td>";
     echo "</tr>";
     echo "<tr>";
     echo "<td colspan='2'>";
     echo "</td>";
     echo "<td>";
     $tooltip = $LANG['plugin_monitoring']['component'][15] . " :<br/><br/>";
     $tooltip .= "perfdata : <i>inUsage=0.00%;85;98 outUsage=0.00%;85;98 inBandwidth=789944.00bps outBandwidth=<strong>486006</strong>.00bps inAbsolut=0 outAbsolut=12665653</i><br/><br/>";
     $tooltip .= $LANG['plugin_monitoring']['weathermap'][19] . " : <i><strong>(?:.*)outBandwidth=(\\d+)(?:.*)</strong></i><br/><br/>";
     $tooltip .= $LANG['rulesengine'][85] . " : <strong>789944</strong>";
     echo $LANG['plugin_monitoring']['weathermap'][19] . "&nbsp;";
     showToolTip($tooltip, array('autoclose' => false));
     echo "&nbsp;:";
     echo "</td>";
     echo "<td>";
     echo "<input type='text' name='weathermap_regex_out' value='" . $this->fields['weathermap_regex_out'] . "' size='40' />";
     echo "</td>";
     echo "</tr>";
     $this->showFormButtons($options);
     // Add form for copy item
     if ($items_id != '') {
         $this->fields['id'] = 0;
         $this->showFormHeader($options);
         echo "<tr class='tab_bg_1'>";
         echo "<td colspan='4' class='center'>";
         foreach ($this->fields as $key => $value) {
             if ($key != 'id') {
                 echo "<input type='hidden' name='" . $key . "' value='" . $value . "'/>";
             }
         }
         echo "<input type='submit' name='copy' value=\"" . $LANG['setup'][283] . "\" class='submit'>";
         echo "</td>";
         echo "</tr>";
         echo "</table>";
         echo "</form>";
     }
     return true;
 }