function showForm($ID, $options = array())
 {
     global $CFG_GLPI, $DB;
     if (!self::canView()) {
         return false;
     }
     $this->check($ID, READ);
     $recursiveItems = $this->recursivelyGetItems();
     if (count($recursiveItems) > 0) {
         $lastItem = $recursiveItems[count($recursiveItems) - 1];
         $lastItem_entities_id = $lastItem->getField('entities_id');
     } else {
         $lastItem_entities_id = $_SESSION['glpiactive_entity'];
     }
     $options['entities_id'] = $lastItem_entities_id;
     $this->showFormHeader($options);
     $options['canedit'] = false;
     $options['candel'] = false;
     $number_errors = 0;
     foreach (self::getMotives() as $key => $name) {
         if ($this->fields[$key] == 1) {
             $number_errors++;
         }
     }
     $motives = self::getMotives();
     $interface_cell = "td";
     $address_cell = "td";
     $network_cell = "td";
     $gateway_cell = "td";
     $address = new IPAddress();
     $netmask = new IPNetmask();
     $number_real_errors = 0;
     if (!$address->setAddressFromString($this->fields['ip']) || !$netmask->setNetmaskFromString($this->fields['netmask'], $address->getVersion())) {
         unset($address);
         unset($netmask);
     } else {
         $network = new IPNetwork();
         $params = array("address" => $address, "netmask" => $netmask);
         if (isset($this->fields["address"])) {
             $params["exclude IDs"] = $this->fields["address"];
         }
         if (isset($this->fields["entities_id"])) {
             $entity = $this->fields["entities_id"];
         } else {
             $entity = -1;
         }
         $networkports_ids = IPNetwork::searchNetworks("equals", $params, $entity, false);
         if (count($networkports_ids) == 0) {
             unset($network);
         } else {
             $network->getFromDB($networkports_ids[0]);
         }
     }
     if ($this->fields['unknown_interface_type'] == 1) {
         $options['canedit'] = true;
         $number_real_errors++;
         $interface_cell = "th";
         echo "<tr class='tab_bg_1'><th>" . $motives['unknown_interface_type'] . "</th>\n" . "<td>" . __('Transform this network port to');
         echo "</td><td colspan=2>";
         Dropdown::showItemTypes('transform_to', NetworkPort::getNetworkPortInstantiations(), array('value' => "NetworkPortEthernet"));
         echo "</td></tr>\n";
     }
     if ($this->fields['invalid_network'] == 1) {
         $number_real_errors++;
         $network_cell = "th";
         $address_cell = "th";
         echo "<tr class='tab_bg_1'><th>" . $motives['invalid_network'] . "</th>\n<td colspan=3>";
         if (isset($network)) {
             printf(__('Network port information conflicting with %s'), $network->getLink());
         } else {
             if (!isset($address) || !isset($netmask)) {
                 _e('Invalid address or netmask');
             } else {
                 _e('No conflicting network');
             }
             echo "&nbsp;<a href='" . Toolbox::getItemTypeFormURL('IPNetwork') . "'>" . __('you may have to add a network') . "</a>";
         }
         echo "</td></tr>\n";
     }
     if ($this->fields['invalid_gateway'] == 1) {
         $number_real_errors++;
         $gateway_cell = "th";
         echo "<tr class='tab_bg_1'><th>" . $motives['invalid_gateway'] . "</th>\n<td colspan=3>";
         if (isset($network)) {
             printf(__('Append a correct gateway to the network %s'), $network->getLink());
         } else {
             printf(__('%1$s: %2$s'), __('Unknown network'), "<a href='" . Toolbox::getItemTypeFormURL('IPNetwork') . "'>" . __('Add a network') . "\n                    </a>");
         }
         echo "</td></tr>\n";
     }
     if ($this->fields['invalid_address'] == 1) {
         $number_real_errors++;
         $address_cell = "th";
         echo "<tr class='tab_bg_1'><th>" . $motives['invalid_address'] . "</th>\n<td colspan=3>";
         $networkPort = new NetworkPort();
         if ($networkPort->getFromDB($this->getID())) {
             $number_real_errors++;
             echo "<a href='" . $networkPort->getLinkURL() . "'>" . __('Add a correct IP to the network port') . "</a>";
         } else {
             _e('Unknown network port');
         }
         echo "</td></tr>\n";
     }
     if ($number_real_errors == 0) {
         echo "<tr class='tab_bg_1'><th colspan='3'>" . __('I don\'t understand why this migration error is not deleted.');
         echo "</th><th>";
         Html::showSimpleForm($this->getFormURL(), 'delete', __('You can delete this migration error'), array('id' => $this->getID()));
         echo "</th></tr>\n";
     } else {
         echo "<tr class='tab_bg_1'><th>" . __('At all events') . "</th>\n";
         echo "<td colspan='3'>";
         Html::showSimpleForm($this->getFormURL(), 'delete', __('You can delete this migration error'), array('id' => $this->getID()));
         echo "</td></tr>\n";
     }
     echo "<tr class='tab_bg_1'><td colspan='4'>&nbsp;</td></tr>\n";
     echo "<tr class='tab_bg_1'><th colspan='4'>" . __('Original network port information') . "</th>" . "</tr>\n";
     echo "<tr class='tab_bg_1'><td>";
     $this->displayRecursiveItems($recursiveItems, 'Type');
     echo "</td>\n<td>";
     $this->displayRecursiveItems($recursiveItems, "Link");
     echo "</td>\n";
     echo "<td>" . __('Comments') . "</td>";
     echo "<td class='middle'>" . $this->fields["comment"] . "</td></tr>\n";
     echo "<tr class='tab_bg_1'><td>" . __('Network address') . "</td>\n";
     echo "<{$network_cell}>" . $this->fields['subnet'] . "</{$network_cell}>\n";
     echo "<td>" . IPNetmask::getTypeName(1) . "</td>\n";
     echo "<{$network_cell}>" . $this->fields['netmask'] . "</{$network_cell}></tr>\n";
     echo "<tr class='tab_bg_1'><td>" . IPAddress::getTypeName(1) . "</td>\n";
     echo "<{$address_cell}>" . $this->fields['ip'] . "</{$address_cell}>\n";
     echo "<td>" . __('Gateway') . "</td>\n";
     echo "<{$gateway_cell}>" . $this->fields['gateway'] . "</{$gateway_cell}></tr>\n";
     echo "<tr class='tab_bg_1'><td>" . __('Network interface') . "</td><{$interface_cell}>\n";
     if (TableExists('glpi_networkinterfaces')) {
         $query = "SELECT `name`\n                   FROM `glpi_networkinterfaces`\n                   WHERE `id`='" . $this->fields['networkinterfaces_id'] . "'";
         $result = $DB->query($query);
         if ($DB->numrows($result) > 0) {
             $row = $DB->fetch_assoc($result);
             echo $row['name'];
         } else {
             _e('Unknown interface');
         }
     }
     echo "</{$interface_cell}>";
     echo "<{$interface_cell}></{$interface_cell}>";
     echo "<{$interface_cell}></{$interface_cell}></tr>\n";
     $this->showFormButtons($options);
 }