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