function Query($ID, $PluginArchiresView, $for) { global $DB; $this->getFromDB($ID); $types = array(); $devices = array(); $ports = array(); if ($PluginArchiresView->fields["computer"] != 0) { $types[] = 'Computer'; } if ($PluginArchiresView->fields["printer"] != 0) { $types[] = 'Printer'; } if ($PluginArchiresView->fields["peripheral"] != 0) { $types[] = 'Peripheral'; } if ($PluginArchiresView->fields["phone"] != 0) { $types[] = 'Phone'; } if ($PluginArchiresView->fields["networking"] != 0) { $types[] = 'NetworkEquipment'; } foreach ($types as $key => $val) { $itemtable = getTableForItemType($val); $fieldsnp = "`np`.`id`, `np`.`items_id`, `np`.`logical_number`, `np`.`instantiation_type`,\n `glpi_ipaddresses`.`name` AS ip, `glpi_ipnetworks`.`netmask`,\n `np`.`name` AS namep"; $query = "SELECT `{$itemtable}`.`id` AS idc, {$fieldsnp} , `{$itemtable}`.`name`,\n `{$itemtable}`.`" . getForeignKeyFieldForTable(getTableForItemType($val . "Type")) . "`\n AS `type`,\n `{$itemtable}`.`users_id`, `{$itemtable}`.`groups_id`, `{$itemtable}`.`contact`,\n `{$itemtable}`.`states_id`, `{$itemtable}`.`entities_id`,\n `{$itemtable}`.`locations_id`\n FROM `glpi_networkports` np\n LEFT JOIN `glpi_networkportethernets`\n ON `glpi_networkportethernets`.`networkports_id` = `np`.`id`\n LEFT JOIN `glpi_networknames`\n ON (`glpi_networknames`.`itemtype` = 'NetworkPort'\n AND `np`.`id` = `glpi_networknames`.`items_id`)\n LEFT JOIN `glpi_ipaddresses`\n ON (`glpi_ipaddresses`.`itemtype` = 'NetworkName'\n AND `glpi_networknames`.`id` = `glpi_ipaddresses`.`items_id`)\n LEFT JOIN `glpi_ipaddresses_ipnetworks`\n ON `glpi_ipaddresses_ipnetworks`.`ipaddresses_id` = `glpi_ipaddresses`.`id`\n LEFT JOIN `glpi_ipnetworks`\n ON `glpi_ipnetworks`.`id` = `glpi_ipaddresses_ipnetworks`.`ipnetworks_id`\n LEFT JOIN `{$itemtable}`\n ON (`np`.`items_id` = `{$itemtable}`.`id`\n AND `{$itemtable}`.`is_deleted` = '0'\n AND `{$itemtable}`.`is_template` = '0'" . getEntitiesRestrictRequest(" AND", $itemtable) . ")\n\n "; if ($this->fields["vlans_id"] > "0") { $query .= ", `glpi_networkports_vlans` nv"; } $query .= "LEFT JOIN `glpi_locations` lc\n ON `lc`.`id` = `{$itemtable}`.`locations_id`\n WHERE `np`.`instantiation_type` = 'NetworkPortEthernet'\n AND `np`.`itemtype` = '{$val}'"; if ($this->fields["vlans_id"] > "0") { $query .= " AND `nv`.`networkports_id` = `np`.`id`\n AND `vlans_id` = '" . $this->fields["vlans_id"] . "'"; } if ($this->fields["networks_id"] > "0" && $val != 'Phone' && $val != 'Peripheral') { $query .= " AND `{$itemtable}`.`networks_id` = '" . $this->fields["networks_id"] . "'"; } if ($this->fields["states_id"] > "0") { $query .= " AND `{$itemtable}`.`states_id` = '" . $this->fields["states_id"] . "'"; } if ($this->fields["groups_id"] > "0") { $query .= " AND `{$itemtable}`.`groups_id` = '" . $this->fields["groups_id"] . "'"; } if ($this->fields["locations_id"] != "-1") { $query .= " AND `lc`.`id` = `{$itemtable}`.`locations_id` "; if ($this->fields["child"] && !empty($this->fields["locations_id"])) { $query .= " AND " . getRealQueryForTreeItem('glpi_locations', $this->fields["locations_id"], "`lc`.`id`"); } else { $query .= " AND `lc`.`id` = '" . $this->fields["locations_id"] . "'"; } } else { // locations_id == -1 soit Lieux racines $query .= " AND `lc`.`id` = `{$itemtable}`.`locations_id`"; if ($this->fields["child"] == '0') { // Pas d'enfants' $query .= " AND `lc`.`level`=1 "; } // else, Si enfants => pas de restriction } //types $PluginArchiresQueryType = new PluginArchiresQueryType(); $query .= $PluginArchiresQueryType->queryTypeCheck($this->getType(), $ID, $val); $query .= "ORDER BY `glpi_ipaddresses`.`name` ASC "; if ($result = $DB->query($query)) { while ($data = $DB->fetch_array($result)) { if ($PluginArchiresView->fields["display_state"] != 0) { $devices[$val][$data["items_id"]]["states_id"] = $data["states_id"]; } $devices[$val][$data["items_id"]]["type"] = $data["type"]; $devices[$val][$data["items_id"]]["name"] = $data["name"]; $devices[$val][$data["items_id"]]["users_id"] = $data["users_id"]; $devices[$val][$data["items_id"]]["groups_id"] = $data["groups_id"]; $devices[$val][$data["items_id"]]["contact"] = $data["contact"]; $devices[$val][$data["items_id"]]["entity"] = $data["entities_id"]; $devices[$val][$data["items_id"]]["locations_id"] = $data["locations_id"]; if ($data["ip"]) { if (!empty($devices[$val][$data["items_id"]]["ip"])) { $devices[$val][$data["items_id"]]["ip"] .= " - "; $devices[$val][$data["items_id"]]["ip"] .= $data["ip"]; } else { $devices[$val][$data["items_id"]]["ip"] = $data["ip"]; } } $ports[$data["id"]]["items_id"] = $data["items_id"]; $ports[$data["id"]]["logical_number"] = $data["logical_number"]; $ports[$data["id"]]["instantiation_type"] = $data["instantiation_type"]; $ports[$data["id"]]["ip"] = $data["ip"]; $ports[$data["id"]]["netmask"] = $data["netmask"]; $ports[$data["id"]]["namep"] = $data["namep"]; $ports[$data["id"]]["idp"] = $data["id"]; $ports[$data["id"]]["itemtype"] = $val; } } } if ($for) { return $devices; } return $ports; }
You should have received a copy of the GNU General Public License along with Archires. If not, see <http://www.gnu.org/licenses/>. -------------------------------------------------------------------------- */ include "../../../inc/includes.php"; if (!isset($_GET["id"])) { $_GET["id"] = ""; } if (isset($_GET["start"])) { $start = $_GET["start"]; } else { $start = 0; } $PluginArchiresLocationQuery = new PluginArchiresLocationQuery(); $PluginArchiresQueryType = new PluginArchiresQueryType(); if (isset($_POST["add"])) { $PluginArchiresLocationQuery->check(-1, 'w', $_POST); $PluginArchiresLocationQuery->add($_POST); Html::back(); } else { if (isset($_POST["delete"])) { $PluginArchiresLocationQuery->check($_POST['id'], 'w'); $PluginArchiresLocationQuery->delete($_POST); Html::redirect(Toolbox::getItemTypeSearchURL('PluginArchiresLocationQuery')); } else { if (isset($_POST["restore"])) { $PluginArchiresLocationQuery->check($_POST['id'], 'w'); $PluginArchiresLocationQuery->restore($_POST); Html::redirect(Toolbox::getItemTypeSearchURL('PluginArchiresLocationQuery')); } else {
function Query($ID, $PluginArchiresView, $for) { global $DB; $this->getFromDB($ID); $types = array(); $devices = array(); $ports = array(); if ($PluginArchiresView->fields["computer"] != 0) { $types[] = 'Computer'; } if ($PluginArchiresView->fields["printer"] != 0) { $types[] = 'Printer'; } if ($PluginArchiresView->fields["peripheral"] != 0) { $types[] = 'Peripheral'; } if ($PluginArchiresView->fields["phone"] != 0) { $types[] = 'Phone'; } if ($PluginArchiresView->fields["networking"] != 0) { $types[] = 'NetworkEquipment'; } $query_switch = "SELECT `glpi_networkports`.`name` AS port,\n `glpi_networkports`.`id` AS idport\n FROM `glpi_networkequipments`\n LEFT JOIN `glpi_networkports`\n ON (`glpi_networkports`.`itemtype` = 'NetworkEquipment'\n AND `glpi_networkports`.`items_id` = `glpi_networkequipments`.`id`)\n WHERE `glpi_networkequipments`.`id` = '" . $this->fields["networkequipments_id"] . "'\n AND `glpi_networkequipments`.`is_deleted` = '0'\n AND `glpi_networkequipments`.`is_template` = '0'" . getEntitiesRestrictRequest(" AND", "glpi_networkequipments"); if ($result_switch = $DB->query($query_switch)) { while ($ligne = $DB->fetch_array($result_switch)) { $port = $ligne['port']; $nw = new NetworkPort_NetworkPort(); $end = $nw->getOppositeContact($ligne['idport']); if ($end) { foreach ($types as $key => $val) { $itemtable = getTableForItemType($val); $fieldsnp = "`np`.`id`, `np`.`items_id`, `np`.`logical_number`,\n `np`.`instantiation_type`, `glpi_ipaddresses`.`name` AS ip,\n `ipn`.`netmask`, `np`.`name` AS namep"; $query = "SELECT `{$itemtable}`.`id` AS idc, {$fieldsnp} , `{$itemtable}`.`name`,\n `{$itemtable}`.`" . getForeignKeyFieldForTable(getTableForItemType($val . "Type")) . "`\n AS `type`,\n `{$itemtable}`.`users_id`, `{$itemtable}`.`groups_id`,\n `{$itemtable}`.`contact`, `{$itemtable}`.`states_id`,\n `{$itemtable}`.`entities_id`,`{$itemtable}`.`locations_id`\n FROM `glpi_networkports` np,\n `{$itemtable}`,\n `glpi_ipnetworks` AS ipn\n LEFT JOIN `glpi_networknames`\n ON (`glpi_networknames`.`itemtype` = 'NetworkPort'\n AND `glpi_networkports`.`id` = `glpi_networknames`.`items_id`)\n LEFT JOIN `glpi_ipaddresses`\n ON (`glpi_ipaddresses`.`itemtype` = 'NetworkName'\n AND `glpi_networknames`.`id` = `glpi_ipaddresses`.`items_id`)\n WHERE `glpi_networkports`.`instantiation_type` = 'NetworkPortEthernet' "; if ($this->fields["vlans_id"] > "0") { $query .= ", `glpi_networkports_vlans` nv"; } $query .= " WHERE `np`.`itemtype` = '{$val}'\n AND `np`.`items_id` = `{$itemtable}`.`id`\n AND `np`.`id` ='{$end}'\n AND `{$itemtable}`.`is_deleted` = '0'\n AND `{$itemtable}`.`is_template` = '0'" . getEntitiesRestrictRequest(" AND", $itemtable); if ($this->fields["vlans_id"] > "0") { $query .= " AND `nv`.`networkports_id` = `np`.`id`\n AND vlans_id= '" . $this->fields["vlans_id"] . "'"; } if ($this->fields["networks_id"] > "0" && $val != 'Phone' && $val != 'Peripheral') { $query .= " AND `{$itemtable}`.`networks_id` = '" . $this->fields["networks_id"] . "'"; } if ($this->fields["states_id"] > "0") { $query .= " AND `{$itemtable}`.`states_id` = '" . $this->fields["states_id"] . "'"; } if ($this->fields["groups_id"] > "0") { $query .= " AND `{$itemtable}`.`groups_id` = '" . $this->fields["groups_id"] . "'"; } //types $PluginArchiresQueryType = new PluginArchiresQueryType(); $query .= $PluginArchiresQueryType->queryTypeCheck($this->getType(), $ID, $val); $query .= "ORDER BY `np`.`ip` ASC "; if ($result = $DB->query($query)) { while ($data = $DB->fetch_array($result)) { if ($PluginArchiresView->fields["display_state"] != 0) { $devices[$val][$data["items_id"]]["states_id"] = $data["states_id"]; } $devices[$val][$data["items_id"]]["type"] = $data["type"]; $devices[$val][$data["items_id"]]["name"] = $data["name"]; $devices[$val][$data["items_id"]]["users_id"] = $data["users_id"]; $devices[$val][$data["items_id"]]["groups_id"] = $data["groups_id"]; $devices[$val][$data["items_id"]]["contact"] = $data["contact"]; $devices[$val][$data["items_id"]]["entity"] = $data["entities_id"]; $devices[$val][$data["items_id"]]["locations_id"] = $data["locations_id"]; $ports[$data["id"]]["items_id"] = $data["items_id"]; $ports[$data["id"]]["logical_number"] = $data["logical_number"]; $ports[$data["id"]]["networkinterfaces_id"] = $data["networkinterfaces_id"]; $ports[$data["id"]]["ip"] = $data["ip"]; $ports[$data["id"]]["netmask"] = $data["netmask"]; $ports[$data["id"]]["namep"] = $data["namep"]; $ports[$data["id"]]["idp"] = $data["id"]; $ports[$data["id"]]["itemtype"] = $val; //ip if ($data["ip"]) { if (!empty($devices[$val][$data["items_id"]]["ip"])) { $devices[$val][$data["items_id"]]["ip"] .= " - "; $devices[$val][$data["items_id"]]["ip"] .= $data["ip"]; } else { $devices[$val][$data["items_id"]]["ip"] = $data["ip"]; } } //fin ip } } } } } } //The networking $query = "SELECT `n`.`id` AS `idn`, `np`.`id`, `np`.`items_id`, `np`.`logical_number`,\n `np`.`networkinterfaces_id` , `glpi_ipaddresses`.`name` AS ip,\n `np`.`name` AS `namep`,\n `n`.`ip` AS `nip`,`ipn`.`netmask`, `n`.`name`,\n `n`.`networkequipmenttypes_id` AS `type`, `n`.`users_id`, `n`.`groups_id`,\n `n`.`contact`, `n`.`states_id`, `n`.`entities_id`,`n`.`locations_id`\n FROM `glpi_networkports` `np`, `glpi_networkequipments` `n`,\n `glpi_ipnetworks` AS ipn\n LEFT JOIN `glpi_networknames`\n ON (`glpi_networknames`.`itemtype` = 'NetworkPort'\n AND `glpi_networkports`.`id` = `glpi_networknames`.`items_id`)\n LEFT JOIN `glpi_ipaddresses`\n ON (`glpi_ipaddresses`.`itemtype` = 'NetworkName'\n AND `glpi_networknames`.`id` = `glpi_ipaddresses`.`items_id`)"; if ($this->fields["vlans_id"] > "0") { $query .= ", `glpi_networkports_vlans` nv "; } $query .= "WHERE `np`.`itemtype` = 'NetworkEquipment'\n AND `np`.`items_id` = `n`.`id`\n AND `n`.`id` = '" . $this->fields["networkequipments_id"] . "'\n AND `n`.`is_deleted` = '0'\n AND `n`.`is_template` = '0'"; if ($this->fields["vlans_id"] > "0") { $query .= " AND `nv`.`networkports_id` = `np`.`id`\n AND vlans_id= '" . $this->fields["vlans_id"] . "' "; } $query .= "ORDER BY `np`.`ip` ASC "; if ($result = $DB->query($query)) { while ($data = $DB->fetch_array($result)) { if ($PluginArchiresView->fields["display_state"] != 0) { $devices['NetworkEquipment'][$data["items_id"]]["states_id"] = $data["states_id"]; } $devices['NetworkEquipment'][$data["items_id"]]["name"] = $data["name"]; $devices['NetworkEquipment'][$data["items_id"]]["type"] = $data["type"]; $devices['NetworkEquipment'][$data["items_id"]]["users_id"] = $data["users_id"]; $devices['NetworkEquipment'][$data["items_id"]]["groups_id"] = $data["groups_id"]; $devices['NetworkEquipment'][$data["items_id"]]["contact"] = $data["contact"]; $devices['NetworkEquipment'][$data["items_id"]]["ip"] = $data["nip"]; $devices['NetworkEquipment'][$data["items_id"]]["entity"] = $data["entities_id"]; $devices['NetworkEquipment'][$data["items_id"]]["locations_id"] = $data["locations_id"]; $ports[$data["id"]]["items_id"] = $data["items_id"]; $ports[$data["id"]]["logical_number"] = $data["logical_number"]; $ports[$data["id"]]["networkinterfaces_id"] = $data["networkinterfaces_id"]; $ports[$data["id"]]["ip"] = $data["ip"]; $ports[$data["id"]]["netmask"] = $data["netmask"]; $ports[$data["id"]]["namep"] = $data["namep"]; $ports[$data["id"]]["idp"] = $data["id"]; $ports[$data["id"]]["itemtype"] = 'NetworkEquipment'; } } if ($for) { return $devices; } return $ports; }