Ejemplo n.º 1
0
 static function cronCleanlogs()
 {
     global $DB;
     $pmLog = new PluginMonitoringLog();
     $pmConfig = new PluginMonitoringConfig();
     $id_restart = 0;
     $a_restarts = $pmLog->find("`action`='restart'", "`id` DESC", 1);
     if (count($a_restarts) > 0) {
         $a_restart = current($a_restarts);
         $id_restart = $a_restart['id'];
     }
     $pmConfig->getFromDB(1);
     $secs = $pmConfig->fields['logretention'] * DAY_TIMESTAMP;
     $query = "DELETE FROM `" . $pmLog->getTable() . "`\n         WHERE UNIX_TIMESTAMP(date_mod) < UNIX_TIMESTAMP()-{$secs}";
     if ($id_restart > 0) {
         $query .= " AND `id` < '" . $id_restart . "'";
     }
     $DB->query($query);
     // Clean too events
     PluginMonitoringServiceevent::cronUpdaterrd();
     $pmUnavaibility = new PluginMonitoringUnavaibility();
     $pmUnavaibility->runUnavaibility();
     $query = "DELETE FROM `glpi_plugin_monitoring_serviceevents`\n         WHERE UNIX_TIMESTAMP(date) < UNIX_TIMESTAMP()-{$secs}";
     $DB->query($query);
     return true;
 }
 static function cronCleanlogs()
 {
     global $DB;
     $pmLog = new PluginMonitoringLog();
     $pmConfig = new PluginMonitoringConfig();
     $id_restart = 0;
     $a_restarts = $pmLog->find("`action`='restart'", "`id` DESC", 1);
     if (count($a_restarts) > 0) {
         $a_restart = current($a_restarts);
         $id_restart = $a_restart['id'];
     }
     $id_reload = 0;
     $a_reloads = $pmLog->find("`action`='reload'", "`id` DESC", 1);
     if (count($a_reloads) > 0) {
         $a_reload = current($a_reloads);
         $id_reload = $a_reload['id'];
     }
     $pmConfig->getFromDB(1);
     $secs = $pmConfig->fields['logretention'] * DAY_TIMESTAMP;
     $query = "DELETE FROM `" . $pmLog->getTable() . "`\n         WHERE UNIX_TIMESTAMP(date_mod) < UNIX_TIMESTAMP()-{$secs}";
     if ($id_restart > 0 || $id_reload > 0) {
         // Keep last reload or restart command
         $id_restart = max($id_restart, $id_reload);
         $query .= " AND `id` < '" . $id_restart . "'";
     }
     $DB->query($query);
     // TODO: Delete serviceevents table content ???
     $query = "DELETE FROM `glpi_plugin_monitoring_serviceevents`\n         WHERE UNIX_TIMESTAMP(date) < UNIX_TIMESTAMP()-{$secs}";
     $DB->query($query);
     return true;
 }
Ejemplo n.º 3
0
 function displayGraphs($itemtype, $items_id)
 {
     global $CFG_GLPI;
     $pmComponent = new PluginMonitoringComponent();
     $pmConfig = new PluginMonitoringConfig();
     $pmComponentscatalog_Host = new PluginMonitoringComponentscatalog_Host();
     $item = new $itemtype();
     $item->getFromDB($items_id);
     $pmComponent->getFromDB($item->fields['plugin_monitoring_components_id']);
     if (!isset($_SESSION['glpi_plugin_monitoring']['perfname'][$pmComponent->fields['id']])) {
         PluginMonitoringServicegraph::loadPreferences($pmComponent->fields['id']);
     }
     $css_width = '950';
     if (isset($_GET['mobile'])) {
         $css_width = '300';
     }
     echo "<table class='tab_cadre' width='" . $css_width . "'>";
     echo "<tr class='tab_bg_1'>";
     echo "<th>";
     $title = Dropdown::getDropdownName(getTableForItemType('PluginMonitoringComponent'), $item->fields['plugin_monitoring_components_id']);
     $title .= ' ' . __('on', 'monitoring') . ' ';
     $pmComponentscatalog_Host->getFromDB($item->fields["plugin_monitoring_componentscatalogs_hosts_id"]);
     if (isset($pmComponentscatalog_Host->fields['itemtype']) and $pmComponentscatalog_Host->fields['itemtype'] != '') {
         $itemtype2 = $pmComponentscatalog_Host->fields['itemtype'];
         $item2 = new $itemtype2();
         $item2->getFromDB($pmComponentscatalog_Host->fields['items_id']);
         $title .= str_replace("'", "\"", $item2->getLink() . " (" . $item2->getTypeName() . ")");
     }
     echo $title;
     echo "</th>";
     echo "<th width='200'>";
     if (!isset($_GET['mobile'])) {
         echo "<form method='post'>";
         $a_timezones = PluginMonitoringConfig::getTimezones();
         if (!isset($_SESSION['plugin_monitoring_timezone'])) {
             $_SESSION['plugin_monitoring_timezone'] = '0';
         }
         $a_timezones_allowed = array();
         $pmConfig->getFromDB(1);
         $a_temp = importArrayFromDB($pmConfig->fields['timezones']);
         foreach ($a_temp as $key) {
             $a_timezones_allowed[$key] = $a_timezones[$key];
         }
         if (count($a_timezones_allowed) == '0') {
             $a_timezones_allowed['0'] = $a_timezones['0'];
         }
         Dropdown::showFromArray('plugin_monitoring_timezone', $a_timezones_allowed, array('value' => $_SESSION['plugin_monitoring_timezone']));
         echo "&nbsp;<input type='submit' name='update' value=\"" . __('Save') . "\" class='submit'>";
         Html::closeForm();
     }
     echo "</th>";
     echo "</tr>";
     $timezone = '0';
     if (isset($_SESSION['plugin_monitoring_timezone'])) {
         $timezone = $_SESSION['plugin_monitoring_timezone'];
     }
     if (!isset($_GET['mobile'])) {
         echo "<tr class='tab_bg_1'>";
         echo "<th colspan='2'>";
         echo "<div id='legendlink'><a onClick='Ext.get(\"options\").toggle();'>[ Options ]</a></div>";
         echo "</th>";
         echo "</tr>";
         // * Display perfname
         echo "<tr class='tab_bg_1'>";
         echo "<td colspan='2'>";
         echo "<div id='options' style='display:none'>";
         PluginMonitoringServicegraph::preferences($pmComponent->fields['id'], 0);
         echo "</div>";
         echo "</td>";
         echo "</tr>";
         // * Display date slider
         echo "<tr class='tab_bg_1'>";
         echo "<th colspan='2'>";
         echo __('Select date (only last 2, 12 and 24 hours)', 'monitoring');
         echo "</th>";
         echo "</tr>";
         echo "<tr class='tab_bg_1'>";
         echo "<td colspan='2'>";
         $end = time();
         $oldvalue = current(getAllDatasFromTable('glpi_plugin_monitoring_serviceevents', "`plugin_monitoring_services_id`='" . $items_id . "'", false, 'date ASC LIMIT 1'));
         $date = new DateTime($oldvalue['date']);
         $start = $date->getTimestamp();
         $pmServicegraph = new PluginMonitoringServicegraph();
         echo "\n<script type=\"text/javascript\">\n\nExt.onReady(function(){\n\n    var tip = new Ext.slider.Tip({\n        getText: function(thumb){\n            return String.format('<b> ' + new Date(thumb.value * 1000).format('Y-m-d') + '</b>');\n        }\n    });\n\n    new Ext.Slider({\n        renderTo: 'custom-tip-slider',\n        width: 940,\n        increment: 86400,\n        minValue: " . $start . ",\n        maxValue: " . $end . ",\n        value: " . $end . ",\n        plugins: tip,\n        listeners: {\n            dragend: function(slider, thumb, value){\n               document.getElementById('custom_date').textContent = slider.getValue();\n               mgr" . $items_id . "2h.stopAutoRefresh();\n               mgr" . $items_id . "12h.stopAutoRefresh();\n               mgr" . $items_id . "1d.stopAutoRefresh();\n                  ";
         $a_graphlist = array('2h', '12h', '1d');
         foreach ($a_graphlist as $time) {
             $pmServicegraph->startAutoRefresh($pmComponent->fields['graph_template'], $itemtype, $items_id, $timezone, $time, $pmComponent->fields['id']);
         }
         echo "\n            }\n        }\n    });\n\n});\n</script>";
         echo '<center><div id="custom-tip-slider"></div></center>';
         echo '<div id="custom_date" style="display:none"></div>';
         echo "</td>";
         echo "</tr>";
         // * Display time slider
         echo "<tr class='tab_bg_1'>";
         echo "<th colspan='2'>";
         echo __('Select time (only last 2, 12 and 24 hours)', 'monitoring');
         echo "</th>";
         echo "</tr>";
         echo "<tr class='tab_bg_1'>";
         echo "<td colspan='2'>";
         $start = 0 + 86400 - 3600;
         $end = 86400 + 86400 - 3600 - 300;
         $current = mktime(date('H'), date('i'), 0, 1, 2, 1970);
         echo "\n<script type=\"text/javascript\">\n\nExt.onReady(function(){\n\n    var tiptime = new Ext.slider.Tip({\n        getText: function(thumb){\n            return String.format('<b> ' + new Date(thumb.value * 1000).format('H:i:s') + '</b>');\n        }\n    });\n\n    new Ext.Slider({\n        renderTo: 'custom-tip-slider-time',\n        width: 940,\n        increment: 300,\n        minValue: " . $start . ",\n        maxValue: " . $end . ",\n        value: " . $current . ",\n        plugins: tiptime,\n        listeners: {\n            dragend: function(slider, thumb, value){\n               document.getElementById('custom_time').textContent = slider.getValue();\n               mgr" . $items_id . "2h.stopAutoRefresh();\n               mgr" . $items_id . "12h.stopAutoRefresh();\n               mgr" . $items_id . "1d.stopAutoRefresh();\n                  ";
         $a_graphlist = array('2h', '12h', '1d');
         foreach ($a_graphlist as $time) {
             $pmServicegraph->startAutoRefresh($pmComponent->fields['graph_template'], $itemtype, $items_id, $timezone, $time, $pmComponent->fields['id']);
         }
         echo "\n            }\n        }\n    });\n});\n</script>";
         echo '<center><div id="custom-tip-slider-time"></div></center>';
         echo '<div id="custom_time" style="display:none"></div>';
         echo "</td>";
         echo "</tr>";
     }
     $a_list = array();
     $a_list["2h"] = __("Last 2 hours", "monitoring");
     $a_list["12h"] = __("Last 12 hours", "monitoring");
     $a_list["1d"] = __("Last 24 hours", "monitoring");
     if (!isset($_GET['mobile'])) {
         $a_list["1w"] = __("Last 7 days (average)", "monitoring");
         $a_list["1m"] = __("Last month (average)", "monitoring");
         $a_list["0y6m"] = __("Last 6 months (average)", "monitoring");
         $a_list["1y"] = __("Last year (average)", "monitoring");
     }
     foreach ($a_list as $time => $name) {
         echo "<tr class='tab_bg_1'>";
         echo "<th colspan='2'>";
         echo $name;
         echo "</th>";
         echo "</tr>";
         echo "<tr class='tab_bg_1'>";
         echo "<td align='center' colspan='2'>";
         $pmServicegraph = new PluginMonitoringServicegraph();
         $part = '';
         $width = '950';
         if (isset($_GET['mobile'])) {
             $width = '294';
         }
         $pmServicegraph->displayGraph($pmComponent->fields['graph_template'], $itemtype, $items_id, $timezone, $time, $part, $width);
         echo "</td>";
         echo "</tr>";
     }
     echo "</table>";
 }
 function displayGraphs($itemtype, $items_id)
 {
     global $CFG_GLPI;
     $pmComponent = new PluginMonitoringComponent();
     $pmConfig = new PluginMonitoringConfig();
     $pmComponentscatalog_Host = new PluginMonitoringComponentscatalog_Host();
     $networkPort = new NetworkPort();
     $item = new $itemtype();
     $item->getFromDB($items_id);
     $pmComponent->getFromDB($item->fields['plugin_monitoring_components_id']);
     if (!isset($_SESSION['glpi_plugin_monitoring']['perfname'][$pmComponent->fields['id']])) {
         PluginMonitoringToolbox::loadPreferences($pmComponent->fields['id']);
     }
     $css_width = '950';
     if (isset($_GET['mobile'])) {
         $css_width = '300';
     }
     echo "<table class='tab_cadre' width='" . $css_width . "'>";
     echo "<tr class='tab_bg_1'>";
     echo "<th>";
     $title = Dropdown::getDropdownName(getTableForItemType('PluginMonitoringComponent'), $item->fields['plugin_monitoring_components_id']);
     if (!is_null($item->fields['networkports_id']) && $item->fields['networkports_id'] > 0) {
         $networkPort->getFromDB($item->fields['networkports_id']);
         $title .= " [" . $networkPort->getLink() . "]";
     }
     $title .= ' ' . __('on', 'monitoring') . ' ';
     $pmComponentscatalog_Host->getFromDB($item->fields["plugin_monitoring_componentscatalogs_hosts_id"]);
     if (isset($pmComponentscatalog_Host->fields['itemtype']) and $pmComponentscatalog_Host->fields['itemtype'] != '') {
         $itemtype2 = $pmComponentscatalog_Host->fields['itemtype'];
         $item2 = new $itemtype2();
         $item2->getFromDB($pmComponentscatalog_Host->fields['items_id']);
         $title .= str_replace("'", "\"", $item2->getLink() . " (" . $item2->getTypeName() . ")");
     }
     echo $title;
     echo "</th>";
     echo "<th width='200'>";
     if (!isset($_GET['mobile'])) {
         echo "<form method='post'>";
         $a_timezones = PluginMonitoringConfig::getTimezones();
         if (!isset($_SESSION['plugin_monitoring_timezone'])) {
             $_SESSION['plugin_monitoring_timezone'] = '0';
         }
         $a_timezones_allowed = array();
         $pmConfig->getFromDB(1);
         $a_temp = importArrayFromDB($pmConfig->fields['timezones']);
         foreach ($a_temp as $key) {
             $a_timezones_allowed[$key] = $a_timezones[$key];
         }
         if (count($a_timezones_allowed) == '0') {
             $a_timezones_allowed['0'] = $a_timezones['0'];
         }
         Dropdown::showFromArray('plugin_monitoring_timezone', $a_timezones_allowed, array('value' => $_SESSION['plugin_monitoring_timezone']));
         echo "&nbsp;<input type='submit' name='update' value=\"" . __('Save') . "\" class='submit'>";
         Html::closeForm();
     }
     echo "</th>";
     echo "</tr>";
     $timezone = '0';
     if (isset($_SESSION['plugin_monitoring_timezone'])) {
         $timezone = $_SESSION['plugin_monitoring_timezone'];
     }
     if (!isset($_GET['mobile'])) {
         echo "<tr class='tab_bg_1'>";
         echo "<th colspan='2'>";
         echo "<div id='legendlink'><a onClick='\$(\"#options\").toggle();'>[ Options ]</a></div>";
         echo "</th>";
         echo "</tr>";
         // * Display perfname
         echo "<tr class='tab_bg_1'>";
         echo "<td colspan='2'>";
         echo "<div id='options' style='display:none'>";
         PluginMonitoringToolbox::preferences($pmComponent->fields['id'], 0);
         echo "</div>";
         echo "</td>";
         echo "</tr>";
         // * Display date slider
         echo "<tr class='tab_bg_1'>";
         echo "<th colspan='2'>";
         echo __('Select date', 'monitoring') . " - " . __('Select time', 'monitoring');
         echo "</th>";
         echo "</tr>";
         echo "<tr class='tab_bg_1'>";
         echo "<th colspan='2'>";
         $start = time();
         $oldvalue = current(getAllDatasFromTable('glpi_plugin_monitoring_serviceevents', "`plugin_monitoring_services_id`='" . $items_id . "'", false, 'date ASC LIMIT 1'));
         $date = new DateTime($oldvalue['date']);
         if ($date->getTimestamp() < $start) {
             $start = $date->getTimestamp();
         }
         $nbdays = round((date('U') - $start) / 86400);
         echo "<script type=\"text/javascript\">\n            \$(function() {\n                \$( \"#custom_date\" ).datepicker({ minDate: -" . $nbdays . ", maxDate: \"+0D\", dateFormat:'mm/dd/yy' });\n                \$( \"#custom_time\" ).timepicker();\n\n            });\n         </script>";
         echo '<center><input type="text" id="custom_date" value="' . date('m/d/Y') . '"> ' . ' <input type="text" id="custom_time" value="' . date('H:i') . '"></center>';
         echo "</th>";
         echo "</tr>";
     }
     $a_list = array();
     $a_list["2h"] = __("Last 2 hours", "monitoring");
     $a_list["12h"] = __("Last 12 hours", "monitoring");
     $a_list["1d"] = __("Last 24 hours", "monitoring");
     $a_list["1w"] = __("Last 7 days (average)", "monitoring");
     //      $a_list["1m"]     = __("Last month (average)", "monitoring");
     //      $a_list["0y6m"]   = __("Last 6 months (average)", "monitoring");
     //      $a_list["1y"]     = __("Last year (average)", "monitoring");
     foreach ($a_list as $time => $name) {
         echo "<tr class='tab_bg_1'>";
         echo "<th colspan='2'>";
         echo $name;
         echo "</th>";
         echo "</tr>";
         echo "<tr class='tab_bg_1'>";
         echo "<td align='center' colspan='2' style='position: relative'>";
         $pmServicegraph = new PluginMonitoringServicegraph();
         $part = '';
         $width = '950';
         if (isset($_GET['mobile'])) {
             $width = '294';
         }
         $pmServicegraph->displayGraph($pmComponent->fields['graph_template'], $itemtype, $items_id, $timezone, $time, $part, $width);
         echo "</td>";
         echo "</tr>";
     }
     echo "</table>";
 }
  @package   Plugin Monitoring for GLPI
  @author    David Durieux
  @co-author
  @comment
  @copyright Copyright (c) 2011-2014 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";
Session::checkRight("config", UPDATE);
Html::header(__('Monitoring', 'monitoring'), $_SERVER["PHP_SELF"], "plugins", "PluginMonitoringDashboard", "config");
$pmConfig = new PluginMonitoringConfig();
if (isset($_POST["update"])) {
    $pmConfig->update($_POST);
    Html::back();
} else {
    if (isset($_POST['timezones_add'])) {
        $input = array();
        $pmConfig->getFromDB($_POST['id']);
        $input['id'] = $_POST['id'];
        $a_timezones = importArrayFromDB($pmConfig->fields['timezones']);
        foreach ($_POST['timezones_to_add'] as $timezone) {
            $a_timezones[] = $timezone;
        }
        $input['timezones'] = exportArrayToDB($a_timezones);
        $pmConfig->update($input);
        Html::back();
 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')));
 }
 /**
  * Function used to generate gif of rrdtool graph
  *
  * @param type $itemtype
  * @param type $items_id
  * @param type $time
  */
 function displayGLPIGraph($rrdtool_template, $itemtype, $items_id, $timezone, $time = '1d', $width = '470')
 {
     $filename = GLPI_PLUGIN_DOC_DIR . "/monitoring/templates/" . $rrdtool_template . "_graph.json";
     if (!file_exists($filename)) {
         return;
     }
     $a_json = json_decode(file_get_contents($filename));
     $timezonefile = str_replace("+", ".", $timezone);
     // Manage timezones
     $converttimezone = '0';
     if (strstr($timezone, '-')) {
         $timezone_temp = str_replace("-", "", $timezone);
         $converttimezone = $timezone_temp * 3600;
         $timezone = str_replace("-", "+", $timezone);
     } else {
         if (strstr($timezone, '+')) {
             $timezone_temp = str_replace("+", "", $timezone);
             $converttimezone = $timezone_temp * 3600;
             $timezone = str_replace("+", "-", $timezone);
         }
     }
     $opts = "";
     $opts .= ' --start -' . $time;
     $opts .= " --title '" . $a_json->data[0]->labels[0]->title . "'";
     //      $opts .= " --vertical-label '".$a_json->data->labels->vertical-label."'";
     $opts .= " --width " . $width;
     $opts .= " --height 200";
     foreach ($a_json->data[0]->miscellaneous[0]->color as $color) {
         $opts .= " --color " . $color;
     }
     if ($a_json->data[0]->limits[0]->{"upper-limit"} != "") {
         $opts .= " --upper-limit " . $a_json->data[0]->limits[0]->{"upper-limit"};
     }
     if ($a_json->data[0]->limits[0]->{"lower-limit"} != "") {
         $opts .= " --lower-limit " . $a_json->data[0]->limits[0]->{"lower-limit"};
     }
     foreach ($a_json->data[0]->data as $data) {
         $data = str_replace("[[RRDFILE]]", GLPI_PLUGIN_DOC_DIR . "/monitoring/" . $itemtype . "-" . $items_id . ".rrd", $data);
         if (strstr($time, "d") or strstr($time, "h")) {
             $data = str_replace("AVERAGE", "LAST", $data);
         }
         if (strstr($data, "DEF") and !strstr($data, "CDEF") and $converttimezone != '0') {
             $data = $data . ':start=-' . $time . $timezone . 'h:end=' . $timezone . 'h';
         }
         $opts .= " " . $data;
         if (strstr($data, "DEF") and !strstr($data, "CDEF") and $converttimezone != '0') {
             $a_explode = explode(":", $data);
             $a_name = explode("=", $a_explode[1]);
             $opts .= " SHIFT:" . $a_name[0] . ":" . $converttimezone;
         }
     }
     //$ret = rrd_graph(GLPI_PLUGIN_DOC_DIR."/monitoring/".$itemtype."-".$items_id."-".$time.".gif", $opts, count($opts));
     if (file_exists(GLPI_PLUGIN_DOC_DIR . "/monitoring/" . $itemtype . "-" . $items_id . ".rrd")) {
         ob_start();
         system(PluginMonitoringConfig::getRRDPath() . "/rrdtool graph " . GLPI_PLUGIN_DOC_DIR . "/monitoring/" . $itemtype . "-" . $items_id . "-" . $time . $timezonefile . ".gif " . $opts, $ret);
         ob_end_clean();
         if (isset($ret) and $ret != '0') {
             echo "Create error: {$ret} for " . PluginMonitoringConfig::getRRDPath() . "/rrdtool graph " . GLPI_PLUGIN_DOC_DIR . "/monitoring/" . $itemtype . "-" . $items_id . "-" . $time . $timezonefile . ".gif " . $opts . "\n";
         }
     }
     return true;
 }
Ejemplo n.º 8
0
 function displayGraphs($itemtype, $items_id)
 {
     global $CFG_GLPI, $LANG;
     $pmComponent = new PluginMonitoringComponent();
     $pmConfig = new PluginMonitoringConfig();
     $item = new $itemtype();
     $item->getFromDB($items_id);
     $pmComponent->getFromDB($item->fields['plugin_monitoring_components_id']);
     echo "<table class='tab_cadre_fixe'>";
     echo "<tr class='tab_bg_1'>";
     echo "<th>";
     echo $item->getLink(1);
     echo "</th>";
     echo "<th width='200'>";
     echo "<form method='post'>";
     $a_timezones = PluginMonitoringConfig::getTimezones();
     if (!isset($_SESSION['plugin_monitoring_timezone'])) {
         $_SESSION['plugin_monitoring_timezone'] = '0';
     }
     $a_timezones_allowed = array();
     $pmConfig->getFromDB(1);
     $a_temp = importArrayFromDB($pmConfig->fields['timezones']);
     foreach ($a_temp as $key) {
         $a_timezones_allowed[$key] = $a_timezones[$key];
     }
     if (count($a_timezones_allowed) == '0') {
         $a_timezones_allowed['0'] = $a_timezones['0'];
     }
     Dropdown::showFromArray('plugin_monitoring_timezone', $a_timezones_allowed, array('value' => $_SESSION['plugin_monitoring_timezone']));
     echo "&nbsp;<input type='submit' name='update' value=\"" . $LANG['buttons'][7] . "\" class='submit'>";
     echo "</form>";
     echo "</th>";
     echo "</tr>";
     $a_list = array();
     $a_list[] = "2h";
     $a_list[] = "12h";
     $a_list[] = "1d";
     $a_list[] = "1w";
     $a_list[] = "1m";
     $a_list[] = "0y6m";
     $a_list[] = "1y";
     foreach ($a_list as $time) {
         echo "<tr class='tab_bg_1'>";
         echo "<th colspan='2'>";
         echo $time;
         echo "</th>";
         echo "</tr>";
         echo "<tr class='tab_bg_1'>";
         echo "<td align='center' colspan='2'>";
         $img = '';
         $timezone = '0';
         if (isset($_SESSION['plugin_monitoring_timezone'])) {
             $timezone = $_SESSION['plugin_monitoring_timezone'];
         }
         $timezone_file = str_replace("+", ".", $timezone);
         $pmServicegraph = new PluginMonitoringServicegraph();
         $pmServicegraph->displayGraph($pmComponent->fields['graph_template'], $itemtype, $items_id, $timezone, $time);
         $img = "<img src='" . $CFG_GLPI['root_doc'] . "/plugins/monitoring/front/send.php?file=" . $itemtype . "-" . $items_id . "-" . $time . $timezone_file . ".png'/>";
         echo $img;
         echo "</td>";
         echo "</tr>";
     }
     echo "</table>";
 }
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);
}
 /**
  * Get host name for a service
  */
 function getHostName()
 {
     $pmComponentscatalog_Host = new PluginMonitoringComponentscatalog_Host();
     $pmConfig = new PluginMonitoringConfig();
     $pmConfig->getFromDB(1);
     $pmComponentscatalog_Host->getFromDB($this->fields['plugin_monitoring_componentscatalogs_hosts_id']);
     $itemtype = $pmComponentscatalog_Host->fields['itemtype'];
     $item = new $itemtype();
     if ($item->getFromDB($pmComponentscatalog_Host->fields['items_id'])) {
         if ($pmConfig->fields['append_id_hostname'] == 1) {
             return $item->fields['name'] . "-" . $item->fields['id'];
         }
         return $item->fields['name'];
     }
     return '';
 }
Ejemplo n.º 11
0
function pluginMonitoringUninstall()
{
    global $DB;
    if (file_exists(GLPI_PLUGIN_DOC_DIR . '/monitoring')) {
        require_once GLPI_ROOT . "/plugins/monitoring/inc/config.class.php";
        $pmConfig = new PluginMonitoringConfig();
        $pmConfig->rrmdir(GLPI_PLUGIN_DOC_DIR . '/monitoring');
    }
    $query = "SHOW TABLES;";
    $result = $DB->query($query);
    while ($data = $DB->fetch_array($result)) {
        if (strstr($data[0], "glpi_plugin_monitoring_")) {
            $query_delete = "DROP TABLE `" . $data[0] . "`;";
            $DB->query($query_delete) or die($DB->error());
        }
    }
    return true;
}
 /**
  * Log when extra-debug is activated
  */
 static function logIfExtradebug($file, $message)
 {
     $config = new PluginMonitoringConfig();
     $config->getFromDB(1);
     if ($config->fields['extradebug']) {
         if (is_array($message)) {
             $message = print_r($message, TRUE);
         }
         Toolbox::logInFile($file, $message);
     }
 }
Ejemplo n.º 13
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");
    }
    $unavaibility_recalculate = 0;
    if (!TableExists("glpi_plugin_monitoring_unavaibilities") || !FieldExists("glpi_plugin_monitoring_unavaibilities", "duration")) {
        $unavaibility_recalculate = 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, '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->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);
    /*
     * Table glpi_plugin_monitoring_components
     */
    $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");
    $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', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $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");
    $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', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $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->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);
    /*
     * 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'");
    $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->migrationOneTable($newTable);
    /*
     * Table glpi_plugin_monitoring_servicegraphs
     */
    $newTable = "glpi_plugin_monitoring_servicegraphs";
    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, 'plugin_monitoring_services_id', 'plugin_monitoring_services_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'date', 'date', "datetime DEFAULT NULL");
    $migration->changeField($newTable, 'data', 'data', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->changeField($newTable, 'type', 'type', "varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL");
    $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, 'data', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $migration->addField($newTable, 'type', "varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addKey($newTable, array('plugin_monitoring_services_id', 'type'), 'plugin_monitoring_services_id');
    $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, '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, '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->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->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->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
     */
    $newTable = "glpi_plugin_monitoring_hostconfigs";
    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, 'plugin_monitoring_commands_id', 'plugin_monitoring_commands_id', "int(11) 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->changeField($newTable, 'plugin_monitoring_realms_id', 'plugin_monitoring_realms_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'computers_id', 'computers_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, 'plugin_monitoring_commands_id', "int(11) 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, 'plugin_monitoring_realms_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'computers_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->migrationOneTable($newTable);
    /*
     * 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);
    }
    $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, '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, 'dependencies', 'dependencies', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $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, '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, 'dependencies', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    /*
     * 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);
    }
    $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");
    $migration->changeField($newTable, 'event', 'event', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'perf_data', 'perf_data', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $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(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'perf_data', "text DEFAULT NULL COLLATE utf8_unicode_ci");
    $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->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
     */
    $newTable = "glpi_plugin_monitoring_businessrules";
    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_businessrulegroups_id', 'plugin_monitoring_businessrulegroups_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'plugin_monitoring_services_id', 'plugin_monitoring_services_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'plugin_monitoring_businessrulegroups_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'plugin_monitoring_services_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->migrationOneTable($newTable);
    /*
     * 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->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->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);
    /*
     * Table glpi_plugin_monitoring_profiles
     */
    $newTable = "glpi_plugin_monitoring_profiles";
    if (!TableExists($newTable)) {
        $query = "CREATE TABLE `" . $newTable . "` (\n                        `profiles_id` int(11) NOT NULL DEFAULT '0'\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
        $DB->query($query);
    }
    $migration->changeField($newTable, 'profiles_id', 'profiles_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->changeField($newTable, 'dashboard', 'dashboard', "char(1) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'servicescatalog', 'servicescatalog', "char(1) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'view', 'view', "char(1) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'componentscatalog', 'componentscatalog', "char(1) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'viewshomepage', 'viewshomepage', "char(1) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'weathermap', 'weathermap', "char(1) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'component', 'component', "char(1) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'command', 'command', "char(1) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'config', 'config', "char(1) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->changeField($newTable, 'check', 'check', "char(1) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    $migration->addField($newTable, 'profiles_id', "int(11) NOT NULL DEFAULT '0'");
    $migration->addField($newTable, 'dashboard', "char(1) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'servicescatalog', "char(1) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'view', "char(1) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'componentscatalog', "char(1) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'viewshomepage', "char(1) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'weathermap', "char(1) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'component', "char(1) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'command', "char(1) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'config', "char(1) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'check', "char(1) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'allressources', "char(1) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'restartshinken', "char(1) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    /*
     * 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_unavaibilities
     */
    $newTable = "glpi_plugin_monitoring_unavaibilities";
    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");
    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);
    $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'");
    $migration->migrationOneTable($newTable);
    /*
     * 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->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, 'username', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->addField($newTable, 'password', "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL");
    $migration->migrationOneTable($newTable);
    /*
     * Table Delete old table not used
     */
    if (TableExists("glpi_plugin_monitoring_servicesuggests")) {
        $DB->query("DROP TABLE `glpi_plugin_monitoring_servicesuggests`");
    }
    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");
    }
    $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);
    }
    $crontask = new CronTask();
    if (!$crontask->getFromDBbyName('PluginMonitoringServiceevent', 'updaterrd')) {
        CronTask::Register('PluginMonitoringServiceevent', 'updaterrd', '300', 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('PluginMonitoringUnavaibility', 'unavaibility')) {
        CronTask::Register('PluginMonitoringUnavaibility', 'unavaibility', '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));
    }
    /*
     * Clean services not have host
     */
    $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);
    }
    include GLPI_ROOT . "/plugins/monitoring/inc/hostconfig.class.php";
    $pmHostconfig = new PluginMonitoringHostconfig();
    $pmHostconfig->initConfig();
    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();
    // * Recalculate unavaibility
    if ($unavaibility_recalculate == 1) {
        $query = "SELECT * FROM `glpi_plugin_monitoring_unavaibilities`\n            WHERE `end_date` IS NOT NULL";
        $result = $DB->query($query);
        while ($data = $DB->fetch_array($result)) {
            $time = strtotime($data['end_date']) - strtotime($data['begin_date']);
            $queryd = "UPDATE `glpi_plugin_monitoring_unavaibilities`\n               SET `duration`='" . $time . "'\n               WHERE `id`='" . $data['id'] . "'";
            $DB->query($queryd);
        }
    }
    $query = "UPDATE `glpi_plugin_monitoring_configs`\n      SET `version`='" . PLUGIN_MONITORING_VERSION . "'\n         WHERE `id`='1'";
    $DB->query($query);
}
 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();
     $pmConfig = new PluginMonitoringConfig();
     $computerType = new ComputerType();
     $a_services = array();
     $i = 0;
     // Get computer type contener / VM
     $conteners = $computerType->find("`name`='BSDJail'");
     $pmConfig->getFromDB(1);
     // TODO: only contacts in allowed entities ...
     // Prepare individual 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;
     }
     // Prepare groups contacts
     $group = new Group();
     $a_list_contact = $pmContact_Item->find("`itemtype`='PluginMonitoringComponentscatalog'\n         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`\n            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_single = array();
         $a_hostname_type = array();
         $a_hostname_id = 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;
         $computerTypes_id = 0;
         $entities_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'])) {
                     $h = self::shinkenFilter($item->fields['name']);
                     $a_hostname_single[] = $h;
                     if ($pmConfig->fields['append_id_hostname'] == 1) {
                         $h .= "-" . $datah['items_id'];
                     }
                     $a_hostname[] = $h;
                     $a_hostname_type[] = $datah['itemtype'];
                     $a_hostname_id[] = $datah['items_id'];
                     $hostname = $item->fields['name'];
                     $entities_id = $item->fields['entities_id'];
                     $plugin_monitoring_componentscatalogs_id = $datah['plugin_monitoring_componentscalalog_id'];
                     if ($itemtype == 'Computer') {
                         $computerTypes_id = $item->fields['computertypes_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'] : self::shinkenFilter($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'] .= '-' . self::shinkenFilter($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($a_hostname_id[0], $a_hostname_type[0], '');
                         $alias_command = str_replace("[[IP]]", $ip, $alias_command);
                     }
                     if (current($a_hostname_type) == 'Computer') {
                         if ($pmConfig->fields['nrpe_prefix_contener'] == 1) {
                             if (isset($conteners[$computerTypes_id])) {
                                 // get Host of contener/VM
                                 $where = "LOWER(`uuid`)" . ComputerVirtualMachine::getUUIDRestrictRequest($item->fields['uuid']);
                                 $hosts = getAllDatasFromTable('glpi_computervirtualmachines', $where);
                                 if (!empty($hosts)) {
                                     $host = current($hosts);
                                     //                                 $ip = PluginMonitoringHostaddress::getIp($host['computers_id'], 'Computer', '');
                                     $alias_command = current($a_hostname_single) . "_" . $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'\n                  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`\n                        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'];
                 $timeperiodsuffix = '-' . $pmHostconfig->getValueAncestor('jetlag', $entities_id);
                 if ($timeperiodsuffix == '-0') {
                     $timeperiodsuffix = '';
                 }
                 if ($calendar->getFromDB($a_component['calendars_id'])) {
                     $a_services[$i]['check_period'] = $calendar->fields['name'] . $timeperiodsuffix;
                 }
                 $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';
                 $timeperiodsuffix = '-' . $pmHostconfig->getValueAncestor('jetlag', $entities_id);
                 if ($timeperiodsuffix == '-0') {
                     $timeperiodsuffix = '';
                 }
                 if ($calendar->getFromDB($a_component['calendars_id'])) {
                     $a_services[$i]['check_period'] = $calendar->fields['name'] . $timeperiodsuffix;
                 }
             }
             // 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'\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;
     }
     // Prepare groups contacts
     $group = new Group();
     $a_list_contact = $pmContact_Item->find("`itemtype`='PluginMonitoringServicescatalog'\n         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`\n            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 = self::shinkenFilter($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 . "," . self::shinkenFilter($pmService->getName(array('shinken' => true)));
                                 } else {
                                     $a_group[$gdata['id']] .= $operator . $hostname . "," . self::shinkenFilter($pmService->getName(array('shinken' => true)));
                                 }
                             } else {
                                 $a_group[$gdata['id']] = $gdata['operator'] . " " . $hostname . "," . self::shinkenFilter($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'] = self::shinkenFilter($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'\n                  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`\n                        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 = self::shinkenFilter($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 . "," . self::shinkenFilter($pmService->getName(array('shinken' => true)));
                                 } else {
                                     $a_group[$serviceFakeId] .= $operator . $hostname . "," . self::shinkenFilter($pmService->getName(array('shinken' => true)));
                                 }
                             } else {
                                 $a_group[$serviceFakeId] = $BRoperator . " " . $hostname . "," . self::shinkenFilter($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'] = self::shinkenFilter($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'] = self::shinkenFilter($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'\n                     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`\n                           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;
     }
 }
Ejemplo n.º 15
0
 static function getPHPPath()
 {
     $pmConfig = new PluginMonitoringConfig();
     $pmConfig->getFromDB("1");
     return $pmConfig->getField("phppath");
 }
Ejemplo n.º 16
0
  @author    David Durieux
  @co-author 
  @comment   
  @copyright Copyright (c) 2011-2012 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

  ------------------------------------------------------------------------
*/
define('GLPI_ROOT', '../../..');
include GLPI_ROOT . "/inc/includes.php";
PluginMonitoringProfile::checkRight("config", "w");
commonHeader($LANG['plugin_monitoring']['title'][0], $_SERVER["PHP_SELF"], "plugins", "monitoring", "config");
$pmConfig = new PluginMonitoringConfig();
if (isset($_POST["update"])) {
    $pmConfig->update($_POST);
    glpi_header($_SERVER['HTTP_REFERER']);
} else {
    if (isset($_POST['timezones_add'])) {
        $input = array();
        $pmConfig->getFromDB($_POST['id']);
        $input['id'] = $_POST['id'];
        $a_timezones = importArrayFromDB($pmConfig->fields['timezones']);
        foreach ($_POST['timezones_to_add'] as $timezone) {
            $a_timezones[] = $timezone;
        }
        $input['timezones'] = exportArrayToDB($a_timezones);
        $pmConfig->update($input);
        glpi_header($_SERVER['HTTP_REFERER']);
 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);
     }
 }