0) { $where_array[] = generate_query_values($cache['devices']['disabled'], 'ports.device_id', '!='); } $where .= implode('', $where_array); */ //r($where_array); $form_items = []; foreach (get_locations() as $entry) { if ($entry === '') { $entry = OBS_VAR_UNSET; } $form_items['location'][$entry] = $entry; } foreach (get_type_groups('port') as $entry) { $form_items['group'][$entry['group_id']] = $entry['group_name']; } foreach (['ifType', 'ifSpeed', 'port_descr_type'] as $entry) { $query = "SELECT `$entry` FROM `ports`"; $query .= " LEFT JOIN `devices` USING (`device_id`)"; $form_where = []; foreach ($where_array as $where_entry) { if (!str_contains($where_entry, "`$entry`")) { $form_where[] .= $where_entry; } } $form_where[] = "`$entry` != ''"; //r($form_where); $query .= generate_where_clause($form_where, $cache['where']['ports_permitted']); $query .= " GROUP BY `$entry`"; $sort_order = $entry === 'ifSpeed' ? 'DESC' : ''; $query .= generate_query_sort($entry, $sort_order); $form_items[$entry] = []; foreach (dbFetchRows($query) as $data) { if ($entry === "ifType") { $form_items[$entry][$data['ifType']] = rewrite_iftype($data['ifType']) . ' (' . $data['ifType'] . ')'; } elseif ($entry === "ifSpeed") { $form_items[$entry][$data[$entry]] = format_bps($data[$entry]); } else { $form_items[$entry][$data[$entry]] = nicecase($data[$entry]); } } } if (isset($form_items['ifType'])) { asort($form_items['ifType']); } $form_items['devices'] = generate_form_values('device'); // Always all devices $form_items['sort'] = [ 'device' => 'Device', 'port' => 'Port', 'speed' => 'Speed', 'traffic' => 'Traffic In+Out', 'traffic_in' => 'Traffic In', 'traffic_out' => 'Traffic Out', 'traffic_perc' => 'Traffic Percentage In+Out', 'traffic_perc_in' => 'Traffic Percentage In', 'traffic_perc_out' => 'Traffic Percentage Out', 'packets' => 'Packets In+Out', 'packets_in' => 'Packets In', 'packets_out' => 'Packets Out', 'errors' => 'Errors', 'mac' => 'MAC Address', 'media' => 'Media', 'descr' => 'Description' ]; $form = [ 'type' => 'rows', 'space' => '10px', //'brand' => NULL, //'class' => 'well', 'submit_by_key' => TRUE, 'url' => generate_url($vars) ]; // First row $form['row'][0]['device_id'] = [ 'type' => 'multiselect', 'name' => 'Device', 'value' => $vars['device_id'], 'width' => '100%', //'180px', 'values' => $form_items['devices'] ]; foreach (get_locations() as $entry) { if ($entry === '') { $entry = OBS_VAR_UNSET; } $form_items['location'][$entry] = $entry; } $form['row'][0]['location'] = [ 'type' => 'multiselect', 'name' => 'Device Location', 'width' => '100%', //'180px', //'encode' => TRUE, 'value' => $vars['location'], 'values' => $form_items['location'] ]; $form['row'][0]['mac'] = [ 'type' => 'text', 'name' => 'Port Mac Address', 'value' => $vars['mac'], 'width' => '100%', //'180px', 'placeholder' => TRUE ]; $form['row'][0]['state'] = [ 'type' => 'multiselect', 'name' => 'Port State', 'width' => '100%', //'180px', 'value' => $vars['state'], 'values' => [ 'up' => 'Up', 'down' => ' Down', 'admindown' => 'Shutdown'] ]; $form['row'][0]['ifType'] = [ 'type' => 'multiselect', 'name' => 'Port Media', 'width' => '100%', //'180px', 'value' => $vars['ifType'], 'values' => $form_items['ifType'] ]; $form['row'][0]['group'] = [ 'type' => 'multiselect', 'name' => 'Select Groups', 'width' => '100%', //'180px', 'value' => $vars['group'], 'values' => $form_items['group'] ]; $form['row'][1]['hostname'] = [ 'type' => 'text', 'name' => 'Device Hostname', 'value' => $vars['hostname'], 'width' => '100%', //'180px', 'placeholder' => TRUE ]; $form['row'][1]['label'] = [ 'type' => 'text', 'name' => 'Port Name', 'value' => $vars['label'], 'width' => '100%', //'180px', 'placeholder' => TRUE ]; $form['row'][1]['ifAlias'] = [ 'type' => 'text', 'name' => 'Port Description (ifAlias)', 'value' => $vars['ifAlias'], 'width' => '100%', //'180px', 'placeholder' => TRUE ]; $form['row'][1]['ifSpeed'] = [ 'type' => 'multiselect', 'name' => 'Port Speed', 'width' => '100%', //'180px', 'value' => $vars['ifSpeed'], 'values' => $form_items['ifSpeed'] ]; $form['row'][1]['port_descr_type'] = [ 'type' => 'multiselect', 'name' => 'Port Parsed Type', 'width' => '100%', //'180px', 'value' => $vars['port_descr_type'], 'values' => $form_items['port_descr_type'] ]; // Select sort pull-right $form['row'][1]['sort'] = [ 'type' => 'select', 'icon' => $config['icon']['sort'], 'grid' => 1, //'right' => TRUE, 'width' => '100%', //'150px', 'value' => $vars['sort'], 'values' => $form_items['sort'] ]; $form['row'][1]['search'] = [ 'type' => 'submit', 'grid' => 1, //'name' => 'Search', //'icon' => 'icon-search', 'right' => TRUE, ]; $panel_form = [ 'type' => 'rows', 'title' => 'Search Ports', 'space' => '10px', //'brand' => NULL, //'class' => '', 'submit_by_key' => TRUE, 'url' => generate_url($vars) ]; $panel_form['row'][0]['device_id'] = $form['row'][0]['device_id']; $panel_form['row'][0]['hostname'] = $form['row'][1]['hostname']; //$panel_form['row'][0]['location'] = $form['row'][0]['location']; $panel_form['row'][1]['label'] = $form['row'][1]['label']; $panel_form['row'][1]['ifAlias'] = $form['row'][1]['ifAlias']; $panel_form['row'][1]['mac'] = $form['row'][0]['mac']; $panel_form['row'][2]['state'] = $form['row'][0]['state']; $panel_form['row'][2]['ifSpeed'] = $form['row'][1]['ifSpeed']; $panel_form['row'][3]['ifType'] = $form['row'][0]['ifType']; $panel_form['row'][3]['port_descr_type'] = $form['row'][1]['port_descr_type']; $panel_form['row'][4]['group'] = $form['row'][0]['group']; $panel_form['row'][4]['group']['grid'] = 4; $panel_form['row'][4]['location'] = $form['row'][0]['location']; $panel_form['row'][4]['location']['grid'] = 4; $panel_form['row'][4]['sort'] = $form['row'][1]['sort']; $panel_form['row'][4]['sort']['grid'] = 2; $panel_form['row'][4]['search'] = $form['row'][1]['search']; $panel_form['row'][4]['search']['grid'] = 2; // Register custom panel register_html_panel(generate_form($panel_form)); if ($vars['searchbar'] !== "hide") { echo '