setTitle(_('Host inventory')) ->setDocUrl(CDocHelper::getUrl(CDocHelper::INVENTORY_HOST_LIST)); // Make an inventory field dropdown. $inventory_field_select = (new CSelect('filter_field')) ->setValue($data['filter']['field']) ->setFocusableElementId('label-field'); foreach ($data['host_inventories'] as $inventoryField) { $inventory_field_select->addOption(new CSelectOption($inventoryField['db_field'], $inventoryField['title'])); } // filter $html_page->addItem( (new CFilter()) ->setResetUrl(new CUrl('hostinventories.php')) ->setProfile($data['profileIdx']) ->setActiveTab($data['active_tab']) ->addFilterTab(_('Filter'), [ (new CFormList()) ->addRow( (new CLabel(_('Host groups'), 'filter_groups__ms')), (new CMultiSelect([ 'name' => 'filter_groups[]', 'object_name' => 'hostGroup', 'data' => $data['filter']['groups'], 'popup' => [ 'parameters' => [ 'srctbl' => 'host_groups', 'srcfld1' => 'groupid', 'dstfrm' => 'zbx_filter', 'dstfld1' => 'filter_groups_', 'with_hosts' => true, 'enrich_parent_groups' => true ] ] ]))->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH) ) ->addRow(new CLabel(_('Field'), 'label-field'), [ $inventory_field_select, (new CDiv())->addClass(ZBX_STYLE_FORM_INPUT_MARGIN), (new CSelect('filter_exact')) ->setValue($data['filter']['exact']) ->addOptions(CSelect::createOptionsFromArray([ 0 => _('contains'), 1 => _('equals') ])), (new CDiv())->addClass(ZBX_STYLE_FORM_INPUT_MARGIN), (new CTextBox('filter_field_value', $data['filter']['fieldValue'])) ->setWidth(ZBX_TEXTAREA_SMALL_WIDTH) ]) ]) ); // create table $url = (new CUrl('hostinventories.php'))->getUrl(); $table = (new CTableInfo()) ->setHeader([ make_sorting_header(_('Host'), 'name', $this->data['sort'], $this->data['sortorder'], $url), _('Group'), make_sorting_header(_('Name'), 'pr_name', $this->data['sort'], $this->data['sortorder'], $url), make_sorting_header(_('Type'), 'pr_type', $this->data['sort'], $this->data['sortorder'], $url), make_sorting_header(_('OS'), 'pr_os', $this->data['sort'], $this->data['sortorder'], $url), make_sorting_header(_('Serial number A'), 'pr_serialno_a', $this->data['sort'], $this->data['sortorder'], $url), make_sorting_header(_('Tag'), 'pr_tag', $this->data['sort'], $this->data['sortorder'], $url), make_sorting_header(_('MAC address A'), 'pr_macaddress_a', $this->data['sort'], $this->data['sortorder'], $url) ]); foreach ($this->data['hosts'] as $host) { $hostgroups = array_column($host['hostgroups'], 'name'); natsort($hostgroups); $row = [ (new CLink($host['name'], (new CUrl('hostinventories.php'))->setArgument('hostid', $host['hostid']))) ->addClass($host['status'] == HOST_STATUS_NOT_MONITORED ? ZBX_STYLE_RED : null), implode(', ', $hostgroups), zbx_str2links($host['inventory']['name']), zbx_str2links($host['inventory']['type']), zbx_str2links($host['inventory']['os']), zbx_str2links($host['inventory']['serialno_a']), zbx_str2links($host['inventory']['tag']), zbx_str2links($host['inventory']['macaddress_a']) ]; $table->addRow($row); } $html_page ->addItem([$table, $this->data['paging']]) ->show();