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