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 22/** 23 * @var CView $this 24 */ 25 26if ($data['uncheck']) { 27 uncheckTableRows('mediatype'); 28} 29 30$widget = (new CWidget()) 31 ->setTitle(_('Media types')) 32 ->setControls((new CTag('nav', true, 33 (new CList()) 34 ->addItem(new CRedirectButton(_('Create media type'), 'zabbix.php?action=mediatype.edit')) 35 ->addItem( 36 (new CButton('', _('Import'))) 37 ->onClick('return PopUp("popup.import", {rules_preset: "mediatype"}, null, this);') 38 ->removeId() 39 ) 40 )) 41 ->setAttribute('aria-label', _('Content controls')) 42 ) 43 ->addItem((new CFilter((new CUrl('zabbix.php'))->setArgument('action', 'mediatype.list'))) 44 ->setProfile($data['profileIdx']) 45 ->setActiveTab($data['active_tab']) 46 ->addFilterTab(_('Filter'), [ 47 (new CFormList())->addRow(_('Name'), 48 (new CTextBox('filter_name', $data['filter']['name'])) 49 ->setWidth(ZBX_TEXTAREA_FILTER_SMALL_WIDTH) 50 ->setAttribute('autofocus', 'autofocus') 51 ), 52 (new CFormList())->addRow(_('Status'), 53 (new CRadioButtonList('filter_status', (int) $data['filter']['status'])) 54 ->addValue(_('Any'), -1) 55 ->addValue(_('Enabled'), MEDIA_TYPE_STATUS_ACTIVE) 56 ->addValue(_('Disabled'), MEDIA_TYPE_STATUS_DISABLED) 57 ->setModern(true) 58 ) 59 ]) 60 ->addVar('action', 'mediatype.list') 61 ); 62 63// create form 64$mediaTypeForm = (new CForm())->setName('mediaTypesForm'); 65 66// create table 67$url = (new CUrl('zabbix.php')) 68 ->setArgument('action', 'mediatype.list') 69 ->getUrl(); 70 71$mediaTypeTable = (new CTableInfo()) 72 ->setHeader([ 73 (new CColHeader( 74 (new CCheckBox('all_media_types')) 75 ->onClick("checkAll('".$mediaTypeForm->getName()."', 'all_media_types', 'mediatypeids');") 76 ))->addClass(ZBX_STYLE_CELL_WIDTH), 77 make_sorting_header(_('Name'), 'name', $data['sort'], $data['sortorder'], $url), 78 make_sorting_header(_('Type'), 'type', $data['sort'], $data['sortorder'], $url), 79 _('Status'), 80 _('Used in actions'), 81 _('Details'), 82 _('Action') 83 ]); 84 85foreach ($data['mediatypes'] as $mediaType) { 86 switch ($mediaType['typeid']) { 87 case MEDIA_TYPE_EMAIL: 88 $details = 89 _('SMTP server').NAME_DELIMITER.'"'.$mediaType['smtp_server'].'", '. 90 _('SMTP helo').NAME_DELIMITER.'"'.$mediaType['smtp_helo'].'", '. 91 _('SMTP email').NAME_DELIMITER.'"'.$mediaType['smtp_email'].'"'; 92 break; 93 94 case MEDIA_TYPE_EXEC: 95 $details = _('Script name').NAME_DELIMITER.'"'.$mediaType['exec_path'].'"'; 96 break; 97 98 case MEDIA_TYPE_SMS: 99 $details = _('GSM modem').NAME_DELIMITER.'"'.$mediaType['gsm_modem'].'"'; 100 break; 101 102 default: 103 $details = ''; 104 break; 105 } 106 107 // action list 108 $actionLinks = []; 109 if (!empty($mediaType['listOfActions'])) { 110 foreach ($mediaType['listOfActions'] as $action) { 111 $actionLinks[] = new CLink($action['name'], 'actionconf.php?form=update&actionid='.$action['actionid']); 112 $actionLinks[] = ', '; 113 } 114 array_pop($actionLinks); 115 } 116 else { 117 $actionLinks = ''; 118 } 119 $actionColumn = new CCol($actionLinks); 120 $actionColumn->setAttribute('style', 'white-space: normal;'); 121 122 $statusLink = 'zabbix.php'. 123 '?action='.($mediaType['status'] == MEDIA_TYPE_STATUS_DISABLED 124 ? 'mediatype.enable' 125 : 'mediatype.disable' 126 ). 127 '&mediatypeids[]='.$mediaType['mediatypeid']; 128 129 $status = (MEDIA_TYPE_STATUS_ACTIVE == $mediaType['status']) 130 ? (new CLink(_('Enabled'), $statusLink)) 131 ->addClass(ZBX_STYLE_LINK_ACTION) 132 ->addClass(ZBX_STYLE_GREEN) 133 ->addSID() 134 : (new CLink(_('Disabled'), $statusLink)) 135 ->addClass(ZBX_STYLE_LINK_ACTION) 136 ->addClass(ZBX_STYLE_RED) 137 ->addSID(); 138 139 $test_link = (new CButton('mediatypetest_edit', _('Test'))) 140 ->addClass(ZBX_STYLE_BTN_LINK) 141 ->removeId() 142 ->setEnabled(MEDIA_TYPE_STATUS_ACTIVE == $mediaType['status']) 143 ->onClick('return PopUp("popup.mediatypetest.edit",'.json_encode([ 144 'mediatypeid' => $mediaType['mediatypeid'] 145 ]).', "mediatypetest_edit", this);'); 146 147 $name = new CLink($mediaType['name'], '?action=mediatype.edit&mediatypeid='.$mediaType['mediatypeid']); 148 149 // append row 150 $mediaTypeTable->addRow([ 151 new CCheckBox('mediatypeids['.$mediaType['mediatypeid'].']', $mediaType['mediatypeid']), 152 (new CCol($name))->addClass(ZBX_STYLE_NOWRAP), 153 media_type2str($mediaType['typeid']), 154 $status, 155 $actionColumn, 156 $details, 157 $test_link 158 ]); 159} 160 161// append table to form 162$mediaTypeForm->addItem([ 163 $mediaTypeTable, 164 $data['paging'], 165 new CActionButtonList('action', 'mediatypeids', [ 166 'mediatype.enable' => ['name' => _('Enable'), 'confirm' => _('Enable selected media types?')], 167 'mediatype.disable' => ['name' => _('Disable'), 'confirm' => _('Disable selected media types?')], 168 'mediatype.export' => [ 169 'content' => new CButtonExport('export.mediatypes', 170 (new CUrl('zabbix.php')) 171 ->setArgument('action', 'mediatype.list') 172 ->setArgument('page', ($data['page'] == 1) ? null : $data['page']) 173 ->getUrl() 174 ) 175 ], 176 'mediatype.delete' => ['name' => _('Delete'), 'confirm' => _('Delete selected media types?')] 177 ], 'mediatype') 178]); 179 180// append form to widget 181$widget->addItem($mediaTypeForm)->show(); 182