コード例 #1
0
 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;
 }
コード例 #2
0
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 {
コード例 #3
0
 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;
 }