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