function linkComponentsToItem($componentscatalogs_id, $componentscatalogs_hosts_id, $networkports_id = 0)
 {
     global $DB;
     $pmService = new PluginMonitoringService();
     $pmComponentscatalog_Host = new PluginMonitoringComponentscatalog_Host();
     $pmComponentscatalog_Host->getFromDB($componentscatalogs_hosts_id);
     $query = "SELECT * FROM `glpi_plugin_monitoring_componentscatalogs_components`\n         WHERE `plugin_monitoring_componentscalalog_id`='" . $componentscatalogs_id . "'";
     $result = $DB->query($query);
     while ($data = $DB->fetch_array($result)) {
         $input = array();
         $itemtype = $pmComponentscatalog_Host->fields['itemtype'];
         $item = new $itemtype();
         $item->getFromDB($pmComponentscatalog_Host->fields['items_id']);
         if ($networkports_id == 0) {
             $input['entities_id'] = $item->fields['entities_id'];
             $input['plugin_monitoring_componentscatalogs_hosts_id'] = $componentscatalogs_hosts_id;
             $input['plugin_monitoring_components_id'] = $data['plugin_monitoring_components_id'];
             $input['name'] = Dropdown::getDropdownName("glpi_plugin_monitoring_components", $data['plugin_monitoring_components_id']);
             $input['state'] = 'WARNING';
             $input['state_type'] = 'HARD';
             $pmService->add($input);
         } else {
             if ($networkports_id > 0) {
                 $a_services = $pmService->find("`plugin_monitoring_components_id`='" . $data['plugin_monitoring_components_id'] . "'\n               AND `plugin_monitoring_componentscatalogs_hosts_id`='" . $componentscatalogs_hosts_id . "'\n               AND `networkports_id`='" . $networkports_id . "'", "", 1);
                 $item = new NetworkPort();
                 $item->getFromDB($networkports_id);
                 if (count($a_services) == 0) {
                     $input = array();
                     $input['networkports_id'] = $networkports_id;
                     $input['entities_id'] = $item->fields['entities_id'];
                     $input['plugin_monitoring_componentscatalogs_hosts_id'] = $componentscatalogs_hosts_id;
                     $input['plugin_monitoring_components_id'] = $data['plugin_monitoring_components_id'];
                     $input['name'] = Dropdown::getDropdownName("glpi_plugin_monitoring_components", $data['plugin_monitoring_components_id']);
                     $input['state'] = 'WARNING';
                     $input['state_type'] = 'HARD';
                     $pmService->add($input);
                 } else {
                     $a_service = current($a_services);
                     $queryu = "UPDATE `glpi_plugin_monitoring_services`\n                  SET `entities_id`='" . $item->fields['entities_id'] . "'\n                     WHERE `id`='" . $a_service['id'] . "'";
                     $DB->query($queryu);
                 }
             }
         }
     }
 }
 function addComponentToItems($componentscatalogs_id, $components_id)
 {
     global $DB;
     $pmService = new PluginMonitoringService();
     $pmComponentscatalog_rule = new PluginMonitoringComponentscatalog_rule();
     $pmNetworkport = new PluginMonitoringNetworkport();
     $pluginMonitoringNetworkport = 0;
     $query = "SELECT * FROM `" . $pmComponentscatalog_rule->getTable() . "`\n         WHERE `itemtype`='PluginMonitoringNetworkport'\n            AND `plugin_monitoring_componentscalalog_id`='" . $componentscatalogs_id . "'\n         LIMIT 1";
     $result = $DB->query($query);
     if ($DB->numrows($result) > 0) {
         $pluginMonitoringNetworkport = 1;
     }
     $query = "SELECT * FROM `glpi_plugin_monitoring_componentscatalogs_hosts`\n         WHERE `plugin_monitoring_componentscalalog_id`='" . $componentscatalogs_id . "'";
     $result = $DB->query($query);
     while ($data = $DB->fetch_array($result)) {
         $itemtype = $data['itemtype'];
         $item = new $itemtype();
         $item->getFromDB($data['items_id']);
         if ($pluginMonitoringNetworkport == '0') {
             $input = array();
             $input['entities_id'] = $item->fields['entities_id'];
             $input['plugin_monitoring_componentscatalogs_hosts_id'] = $data['id'];
             $input['plugin_monitoring_components_id'] = $components_id;
             $input['name'] = Dropdown::getDropdownName("glpi_plugin_monitoring_components", $components_id);
             $input['state'] = 'WARNING';
             $input['state_type'] = 'HARD';
             $pmService->add($input);
         } else {
             if ($pluginMonitoringNetworkport == '1') {
                 $a_services_created = array();
                 $querys = "SELECT * FROM `glpi_plugin_monitoring_services`\n               WHERE `plugin_monitoring_components_id`='" . $components_id . "'\n                  AND `plugin_monitoring_componentscatalogs_hosts_id`='" . $data['id'] . "'";
                 $results = $DB->query($querys);
                 while ($datas = $DB->fetch_array($results)) {
                     $a_services_created[$datas['networkports_id']] = $datas['id'];
                 }
                 $a_ports = $pmNetworkport->find("`itemtype`='" . $data['itemtype'] . "'\n               AND `items_id`='" . $data['items_id'] . "'");
                 foreach ($a_ports as $datap) {
                     if (isset($a_services_created[$datap["id"]])) {
                         unset($a_services_created[$datap["id"]]);
                     } else {
                         $input = array();
                         $input['networkports_id'] = $datap['networkports_id'];
                         $input['entities_id'] = $item->fields['entities_id'];
                         $input['plugin_monitoring_componentscatalogs_hosts_id'] = $data['id'];
                         $input['plugin_monitoring_components_id'] = $components_id;
                         $input['name'] = Dropdown::getDropdownName("glpi_plugin_monitoring_components", $components_id);
                         $input['state'] = 'WARNING';
                         $input['state_type'] = 'HARD';
                         $pmService->add($input);
                     }
                 }
                 foreach ($a_services_created as $id) {
                     $_SESSION['plugin_monitoring_hosts'] = $data;
                     $pmService->delete(array('id' => $id));
                 }
             }
         }
     }
 }
Ejemplo n.º 3
0
commonHeader($LANG['plugin_monitoring']['title'][0], $_SERVER["PHP_SELF"], "plugins", "monitoring", "host_service");
$pMonitoringService = new PluginMonitoringService();
//echo "<pre>";print_r($_POST);exit;
if (isset($_POST['add'])) {
    $pMonitoringServicedef = new PluginMonitoringServicedef();
    $_POST['plugin_monitoring_servicedefs_id'] = $pMonitoringServicedef->add($_POST);
    if (isset($_POST['arg'])) {
        $_POST['arguments'] = exportArrayToDB($_POST['arg']);
    }
    if (isset($_POST['alias_commandservice'])) {
        $_POST['alias_command'] = $_POST['alias_commandservice'];
    }
    if ($_POST['plugin_monitoring_servicedefs_id'] == '0') {
        $_POST['plugin_monitoring_servicedefs_id'] = $_POST['plugin_monitoring_servicedefs_id_s'];
    }
    $pMonitoringService->add($_POST);
    glpi_header($_SERVER['HTTP_REFERER']);
} else {
    if (isset($_POST['update'])) {
        if (is_array($_POST['id'])) {
            foreach ($_POST['id'] as $key => $id) {
                $input = array();
                $input['id'] = $id;
                $input['plugin_monitoring_servicedefs_id'] = $_POST['plugin_monitoring_servicedefs_id'][$key];
                $a_arguments = array();
                foreach ($_POST as $key => $value) {
                    if (strstr($key, "arg" . $id . "||")) {
                        $a_ex = explode("||", $key);
                        $a_arguments[$a_ex[1]] = $value;
                    }
                }