array(T_ZBX_INT, O_OPT, P_SYS, DB_ID, null), ); check_fields($fields); validate_sort_and_sortorder(); $r_form = new CForm(); $r_form->SetMethod('get'); $druleid = get_request('druleid', 0); $cmbDRules = new CComboBox('druleid',$druleid,'submit()'); $cmbDRules->AddItem(0,S_ALL_SMALL); $db_drules = DBselect('select distinct * from drules where '.DBin_node('druleid').' order by name'); while($drule_data = DBfetch($db_drules)) $cmbDRules->AddItem( $drule_data['druleid'], get_node_name_by_elid($drule_data['druleid']).$drule_data['name'] ); $r_form->AddItem(array(S_DISCOVERY_RULE.SPACE,$cmbDRules)); show_table_header(S_STATUS_OF_DISCOVERY_BIG, $r_form); $db_dhosts = DBselect('SELECT d.* '. ' FROM dhosts d'. ($druleid > 0 ? ' WHERE d.druleid='.$druleid : ''). order_by('d.dhostid','d.status,d.ip') ); $services = array(); $discovery_info = array(); while($drule_data = DBfetch($db_dhosts)) { $class = 'enabled'; $time = 'lastup'; if(DHOST_STATUS_DISABLED == $drule_data['status']) { $class = 'disabled'; $time = 'lastdown'; } $discovery_info[$drule_data['ip']] = array('class' => $class, 'time' => $drule_data[$time], 'druleid' => $drule_data['druleid']); $db_dservices = DBselect('SELECT * FROM dservices '. ' WHERE dhostid='.$drule_data['dhostid']. ' order by status,type,port'); while($dservice_data = DBfetch($db_dservices)) { $class = 'active'; $time = 'lastup'; if(DSVC_STATUS_DISABLED == $dservice_data['status']) { $class = 'inactive'; $time = 'lastdown'; } $service_name = discovery_check_type2str($dservice_data['type']).':'.$dservice_data['port']; $services[$service_name] = 1; $discovery_info [$drule_data['ip']] ['services'] [$service_name] = array('class' => $class, 'time' => $dservice_data[$time]); } } ksort($services); $header = array( is_show_subnodes() ? new CCol(S_NODE, 'center') : null, new CCol(make_sorting_link(S_HOST,'d.dhostid'), 'center'), new CCol(array(S_UPTIME.'/',BR(),S_DOWNTIME),'center') ); foreach($services as $name => $foo) { $header[] = new CImg('vtext.php?text='.$name); } $table = new CTableInfo(); $table->SetHeader($header,'vertical_header'); foreach($discovery_info as $ip => $h_data) { $table_row = array( get_node_name_by_elid($h_data['druleid']), new CSpan($ip, $h_data['class']), new CSpan(convert_units(time() - $h_data['time'], 'uptime'), $h_data['class']) ); foreach($services as $name => $foo) { $class = null; $time = SPACE; if(isset($h_data['services'][$name])) { $class = $h_data['services'][$name]['class']; $time = $h_data['services'][$name]['time']; } $table_row[] = new CCol(SPACE, $class); } $table->AddRow($table_row); } $table->Show(); ?>