1<?php 2/* 3** Zabbix 4** Copyright (C) 2001-2021 Zabbix SIA 5** 6** This program is free software; you can redistribute it and/or modify 7** it under the terms of the GNU General Public License as published by 8** the Free Software Foundation; either version 2 of the License, or 9** (at your option) any later version. 10** 11** This program is distributed in the hope that it will be useful, 12** but WITHOUT ANY WARRANTY; without even the implied warranty of 13** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14** GNU General Public License for more details. 15** 16** You should have received a copy of the GNU General Public License 17** along with this program; if not, write to the Free Software 18** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 19**/ 20 21 22require_once dirname(__FILE__).'/js/common.filter.trigger.js.php'; 23 24$filter = $this->data['filter']; 25$config = $this->data['config']; 26 27$filterForm = (new CFilter((new CUrl('overview.php'))->setArgument('type', 0))) 28 ->setProfile($data['profileIdx']) 29 ->setActiveTab($data['active_tab']) 30 ->addVar('groupid', $filter['groupId']) 31 ->addVar('hostid', $filter['hostId']); 32 33$severityNames = []; 34for ($severity = TRIGGER_SEVERITY_NOT_CLASSIFIED; $severity < TRIGGER_SEVERITY_COUNT; $severity++) { 35 $severityNames[] = getSeverityName($severity, $config); 36} 37 38$column1 = (new CFormList()) 39 ->addRow(_('Show'), 40 (new CRadioButtonList('show_triggers', (int) $filter['showTriggers'])) 41 ->addValue(_('Recent problems'), TRIGGERS_OPTION_RECENT_PROBLEM) 42 ->addValue(_('Problems'), TRIGGERS_OPTION_IN_PROBLEM) 43 ->addValue(_('Any'), TRIGGERS_OPTION_ALL) 44 ->setModern(true) 45 ) 46 ->addRow(_('Minimum severity'), 47 new CComboBox('show_severity', $filter['showSeverity'], null, $severityNames) 48 ); 49 50$statusChangeDays = (new CNumericBox('status_change_days', $filter['statusChangeDays'], 3, false, false, false)) 51 ->setWidth(ZBX_TEXTAREA_NUMERIC_STANDARD_WIDTH); 52if (!$filter['statusChange']) { 53 $statusChangeDays->setAttribute('disabled', 'disabled'); 54} 55 56$column1 57 ->addRow(_('Age less than'), [ 58 (new CCheckBox('status_change')) 59 ->setChecked($filter['statusChange'] == 1) 60 ->onClick('javascript: this.checked ? $("status_change_days").enable() : $("status_change_days").disable()'), 61 (new CDiv())->addClass(ZBX_STYLE_FORM_INPUT_MARGIN), 62 $statusChangeDays, 63 (new CDiv())->addClass(ZBX_STYLE_FORM_INPUT_MARGIN), 64 _('days') 65 ]) 66 ->addRow(_('Name'), 67 (new CTextBox('txt_select', $filter['txtSelect']))->setWidth(ZBX_TEXTAREA_FILTER_STANDARD_WIDTH) 68 ) 69 ->addRow(_('Application'), [ 70 (new CTextBox('application', $filter['application']))->setWidth(ZBX_TEXTAREA_FILTER_STANDARD_WIDTH), 71 (new CDiv())->addClass(ZBX_STYLE_FORM_INPUT_MARGIN), 72 (new CButton('application_name', _('Select'))) 73 ->addClass(ZBX_STYLE_BTN_GREY) 74 ->onClick('return PopUp("popup.generic",'. 75 CJs::encodeJson([ 76 'srctbl' => 'applications', 77 'srcfld1' => 'name', 78 'dstfrm' => 'zbx_filter', 79 'dstfld1' => 'application', 80 'real_hosts' => '1', 81 'with_applications' => '1' 82 ]).', null, this);' 83 ) 84 ]); 85 86// inventory filter 87$inventoryFilters = $filter['inventory']; 88if (!$inventoryFilters) { 89 $inventoryFilters = [ 90 ['field' => '', 'value' => ''] 91 ]; 92} 93$inventoryFields = []; 94foreach (getHostInventories() as $inventory) { 95 $inventoryFields[$inventory['db_field']] = $inventory['title']; 96} 97 98$inventoryFilterTable = new CTable(); 99$inventoryFilterTable->setId('inventory-filter'); 100$i = 0; 101foreach ($inventoryFilters as $field) { 102 $inventoryFilterTable->addRow([ 103 new CComboBox('inventory['.$i.'][field]', $field['field'], null, $inventoryFields), 104 (new CTextBox('inventory['.$i.'][value]', $field['value']))->setWidth(ZBX_TEXTAREA_FILTER_SMALL_WIDTH), 105 (new CCol( 106 (new CButton('inventory['.$i.'][remove]', _('Remove'))) 107 ->addClass(ZBX_STYLE_BTN_LINK) 108 ->addClass('element-table-remove') 109 ))->addClass(ZBX_STYLE_NOWRAP) 110 ], 'form_row'); 111 112 $i++; 113} 114$inventoryFilterTable->addRow( 115 (new CCol( 116 (new CButton('inventory_add', _('Add'))) 117 ->addClass(ZBX_STYLE_BTN_LINK) 118 ->addClass('element-table-add') 119 ))->setColSpan(2) 120); 121 122$column2 = (new CFormList()) 123 ->addRow(_('Host inventory'), $inventoryFilterTable) 124 ->addRow(_('Show unacknowledged only'), 125 (new CCheckBox('ack_status')) 126 ->setChecked($filter['ackStatus'] == 1) 127 ->setUncheckedValue(0) 128 ) 129 ->addRow(_('Show suppressed problems'), 130 (new CCheckBox('show_suppressed'))->setChecked($filter['show_suppressed'] == ZBX_PROBLEM_SUPPRESSED_TRUE) 131 ); 132 133$filterForm->addFilterTab(_('Filter'), [$column1, $column2]); 134 135return $filterForm; 136