NetworkPort::showForItem PHP Method

showForItem() static public method

Show ports for an item
static public showForItem ( CommonDBTM $item, $withtemplate = '' )
$item CommonDBTM CommonDBTM object
$withtemplate integer withtemplate param (default '')
    static function showForItem(CommonDBTM $item, $withtemplate = '')
    {
        global $DB, $CFG_GLPI;
        $rand = mt_rand();
        $itemtype = $item->getType();
        $items_id = $item->getField('id');
        if (!NetworkEquipment::canView() || !$item->can($items_id, READ)) {
            return false;
        }
        $netport = new self();
        $netport->item = $item;
        if ($itemtype == 'NetworkPort') {
            $canedit = false;
        } else {
            $canedit = $item->canEdit($items_id);
        }
        $showmassiveactions = false;
        if ($withtemplate != 2) {
            $showmassiveactions = $canedit;
        }
        // Show Add Form
        if ($canedit && (empty($withtemplate) || $withtemplate != 2)) {
            echo "\n<form method='get' action='" . $netport->getFormURL() . "'>\n";
            echo "<input type='hidden' name='items_id' value='" . $item->getID() . "'>\n";
            echo "<input type='hidden' name='itemtype' value='" . $item->getType() . "'>\n";
            echo "<div class='firstbloc'><table class='tab_cadre_fixe'>\n";
            echo "<tr class='tab_bg_2'><td class='center'>\n";
            _e('Network port type to be added');
            echo "&nbsp;";
            $instantiations = array();
            foreach (self::getNetworkPortInstantiations() as $inst_type) {
                if (call_user_func(array($inst_type, 'canCreate'))) {
                    $instantiations[$inst_type] = call_user_func(array($inst_type, 'getTypeName'));
                }
            }
            Dropdown::showFromArray('instantiation_type', $instantiations, array('value' => 'NetworkPortEthernet'));
            echo "</td>\n";
            echo "<td class='tab_bg_2 center' width='50%'>";
            _e('Add several ports');
            echo "&nbsp;<input type='checkbox' name='several' value='1'></td>\n";
            echo "<td>\n";
            echo "<input type='submit' name='create' value=\"" . _sx('button', 'Add') . "\" class='submit'>\n";
            echo "</td></tr></table></div>\n";
            Html::closeForm();
        }
        if ($showmassiveactions) {
            $checkbox_column = true;
            Html::openMassiveActionsForm('mass' . __CLASS__ . $rand);
        } else {
            $checkbox_column = false;
        }
        $is_active_network_port = false;
        Session::initNavigateListItems('NetworkPort', sprintf(__('%1$s = %2$s'), $item->getTypeName(1), $item->getName()));
        if ($itemtype == 'NetworkPort') {
            $porttypes = array('NetworkPortAlias', 'NetworkPortAggregate');
        } else {
            $porttypes = self::getNetworkPortInstantiations();
            // Manage NetworkportMigration
            $porttypes[] = '';
        }
        $display_options = self::getDisplayOptions($itemtype);
        $table = new HTMLTableMain();
        $number_port = self::countForItem($item);
        $table_options = array('canedit' => $canedit, 'display_options' => &$display_options);
        // Make table name and add the correct show/hide parameters
        $table_name = sprintf(__('%1$s: %2$d'), self::getTypeName($number_port), $number_port);
        // Add the link to the modal to display the options ...
        $table_namelink = self::getDisplayOptionsLink($itemtype);
        $table_name = sprintf(__('%1$s - %2$s'), $table_name, $table_namelink);
        $table->setTitle($table_name);
        $c_main = $table->addHeader('main', self::getTypeName(Session::getPluralNumber()));
        if ($display_options['dynamic_import'] && $item->isDynamic()) {
            $table_options['display_isDynamic'] = true;
        } else {
            $table_options['display_isDynamic'] = false;
        }
        if ($display_options['characteristics']) {
            $c_instant = $table->addHeader('Instantiation', __('Characteristics'));
            $c_instant->setHTMLClass('center');
        }
        if ($display_options['internet']) {
            $options = array('names' => 'NetworkName', 'aliases' => 'NetworkAlias', 'ipaddresses' => 'IPAddress', 'ipnetworks' => 'IPNetwork');
            $table_options['dont_display'] = array();
            foreach ($options as $option => $itemtype_for_option) {
                if (!$display_options[$option]) {
                    $table_options['dont_display'][$itemtype_for_option] = true;
                }
            }
            $c_network = $table->addHeader('Internet', __('Internet information'));
            $c_network->setHTMLClass('center');
        } else {
            $c_network = NULL;
        }
        foreach ($porttypes as $portType) {
            if (empty($portType)) {
                $group_name = 'Migration';
                $group_title = __('Network ports waiting for manual migration');
            } else {
                $group_name = $portType;
                $group_title = $portType::getTypeName(Session::getPluralNumber());
            }
            $t_group = $table->createGroup($group_name, $group_title);
            if ($withtemplate != 2 && $canedit) {
                $c_checkbox = $t_group->addHeader('checkbox', Html::getCheckAllAsCheckbox('mass' . __CLASS__ . $rand, '__RAND__'), $c_main);
            } else {
                $c_checkbox = NULL;
            }
            $c_number = $t_group->addHeader('NetworkPort', "#", $c_main);
            $c_name = $t_group->addHeader("Name", __('Name'), $c_main);
            $c_name->setItemType('NetworkPort');
            $c_name->setHTMLClass('center');
            if ($table_options['display_isDynamic']) {
                $c_dynamic = $t_group->addHeader("Dynamic", __('Automatic inventory'), $c_main);
                $c_dynamic->setHTMLClass('center');
            }
            if ($display_options['characteristics']) {
                if (empty($portType)) {
                    NetworkPortMigration::getMigrationInstantiationHTMLTableHeaders($t_group, $c_instant, $c_network, NULL, $table_options);
                } else {
                    $instantiation = new $portType();
                    $instantiation->getInstantiationHTMLTableHeaders($t_group, $c_instant, $c_network, NULL, $table_options);
                    unset($instantiation);
                }
            }
            if ($display_options['internet'] && !$display_options['characteristics']) {
                NetworkName::getHTMLTableHeader(__CLASS__, $t_group, $c_network, NULL, $table_options);
            }
            if ($itemtype == 'NetworkPort') {
                switch ($portType) {
                    case 'NetworkPortAlias':
                        $search_table = 'glpi_networkportaliases';
                        $search_request = "`networkports_id_alias`='{$items_id}'";
                        break;
                    case 'NetworkPortAggregate':
                        $search_table = 'glpi_networkportaggregates';
                        $search_request = "`networkports_id_list` like '%\"{$items_id}\"%'";
                        break;
                }
                $query = "SELECT `networkports_id` AS id\n                      FROM  `{$search_table}`\n                      WHERE {$search_request}";
            } else {
                $query = "SELECT `id`\n                      FROM `glpi_networkports`\n                      WHERE `items_id` = '{$items_id}'\n                            AND `itemtype` = '{$itemtype}'\n                            AND `instantiation_type` = '{$portType}'\n                            AND `is_deleted` = '0'\n                      ORDER BY `name`,\n                               `logical_number`";
            }
            if ($result = $DB->query($query)) {
                echo "<div class='spaced'>";
                $number_port = $DB->numrows($result);
                if ($number_port != 0) {
                    $is_active_network_port = true;
                    $save_canedit = $canedit;
                    if (!empty($portType)) {
                        $name = sprintf(__('%1$s (%2$s)'), self::getTypeName($number_port), call_user_func(array($portType, 'getTypeName')));
                        $name = sprintf(__('%1$s: %2$s'), $name, $number_port);
                    } else {
                        $name = __('Network ports waiting for manual migration');
                        $canedit = false;
                    }
                    while ($devid = $DB->fetch_row($result)) {
                        $t_row = $t_group->createRow();
                        $netport->getFromDB(current($devid));
                        // No massive action for migration ports
                        if ($withtemplate != 2 && $canedit && !empty($portType)) {
                            $ce_checkbox = $t_row->addCell($c_checkbox, Html::getMassiveActionCheckBox(__CLASS__, $netport->fields["id"]));
                        } else {
                            $ce_checkbox = NULL;
                        }
                        $content = "<span class='b'>";
                        // Display link based on default rights
                        if ($save_canedit && $withtemplate != 2) {
                            if (!empty($portType)) {
                                $content .= "<a href=\"" . $CFG_GLPI["root_doc"] . "/front/networkport.form.php?id=" . $netport->fields["id"] . "\">";
                            } else {
                                $content .= "<a href=\"" . $CFG_GLPI["root_doc"] . "/front/networkportmigration.form.php?id=" . $netport->fields["id"] . "\">";
                            }
                        }
                        $content .= $netport->fields["logical_number"];
                        if ($canedit && $withtemplate != 2) {
                            $content .= "</a>";
                        }
                        $content .= "</span>";
                        $content .= Html::showToolTip($netport->fields['comment'], array('display' => false));
                        $t_row->addCell($c_number, $content);
                        $value = $netport->fields["name"];
                        $t_row->addCell($c_name, $value, NULL, $netport);
                        if ($table_options['display_isDynamic']) {
                            $t_row->addCell($c_dynamic, Dropdown::getYesNo($netport->fields['is_dynamic']));
                        }
                        $instant_cell = NULL;
                        if ($display_options['characteristics']) {
                            $instantiation = $netport->getInstantiation();
                            if ($instantiation !== false) {
                                $instantiation->getInstantiationHTMLTable($netport, $t_row, NULL, $table_options);
                                unset($instantiation);
                            }
                        } else {
                            if ($display_options['internet']) {
                                NetworkName::getHTMLTableCellsForItem($t_row, $netport, NULL, $table_options);
                            }
                        }
                    }
                    $canedit = $save_canedit;
                }
                echo "</div>";
            }
        }
        if ($is_active_network_port && $showmassiveactions) {
            $massiveactionparams = array('num_displayed' => $number_port, 'check_itemtype' => $itemtype, 'container' => 'mass' . __CLASS__ . $rand, 'check_items_id' => $items_id);
            Html::showMassiveActions($massiveactionparams);
        }
        $table->display(array('display_thead' => false, 'display_tfoot' => false, 'display_header_on_foot_for_each_group' => true));
        unset($table);
        if (!$is_active_network_port) {
            echo "<table class='tab_cadre_fixe'><tr><th>" . __('No network port found') . "</th></tr>";
            echo "</table>";
        }
        if ($is_active_network_port && $showmassiveactions) {
            $massiveactionparams['ontop'] = false;
            Html::showMassiveActions($massiveactionparams);
        }
        if ($showmassiveactions) {
            Html::closeForm();
        }
    }

Usage Example

            Plugin::displayAction($netdevice, $_REQUEST['glpi_tab']);
            break;
        case 4:
            Infocom::showForItem($netdevice);
            Contract::showAssociated($netdevice);
            break;
        case 5:
            Document::showAssociated($netdevice, $_POST["withtemplate"]);
            break;
        case 6:
            Ticket::showListForItem('NetworkEquipment', $_POST["id"]);
            break;
        case 7:
            Link::showForItem('NetworkEquipment', $_POST["id"]);
            break;
        case 10:
            showNotesForm($_POST['target'], 'NetworkEquipment', $_POST["id"]);
            break;
        case 11:
            Reservation::showForItem('NetworkEquipment', $_POST["id"]);
            break;
        case 12:
            Log::showForItem($netdevice);
            break;
        default:
            if (!Plugin::displayAction($netdevice, $_REQUEST['glpi_tab'])) {
                NetworkPort::showForItem('NetworkEquipment', $_POST["id"]);
            }
    }
}
ajaxFooter();
All Usage Examples Of NetworkPort::showForItem