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
26$form = (new CForm())
27	->cleanItems()
28	->setId('mediatype_message_form')
29	->setName('mediatype_message_form')
30	->addVar('action', 'popup.mediatype.message')
31	->addVar('type', $data['params']['type'])
32	->addVar('content_type', $data['params']['content_type'])
33	->addVar('old_message_type', $data['params']['old_message_type'])
34	->addVar('message_types', $data['params']['message_types']);
35
36if ($data['params']['old_message_type'] != -1) {
37	foreach ($data['params']['message_types'] as $idx => $message_type) {
38		if ($message_type == $data['params']['old_message_type']) {
39			unset($data['params']['message_types'][$idx]);
40		}
41	}
42}
43
44$form_list = (new CFormList())->addRow(new CLabel(_('Message type'), 'label-message-type'),
45	(new CSelect('message_type'))
46		->setId('message_type')
47		->setFocusableElementId( 'label-message-type')
48		->setValue($data['params']['old_message_type'])
49		->addOption((new CSelectOption(CMediatypeHelper::MSG_TYPE_PROBLEM, _('Problem')))
50			->setDisabled(in_array(CMediatypeHelper::MSG_TYPE_PROBLEM, $data['params']['message_types']))
51		)
52		->addOption((new CSelectOption(CMediatypeHelper::MSG_TYPE_RECOVERY, _('Problem recovery')))
53			->setDisabled(in_array(CMediatypeHelper::MSG_TYPE_RECOVERY, $data['params']['message_types']))
54		)
55		->addOption((new CSelectOption(CMediatypeHelper::MSG_TYPE_UPDATE, _('Problem update')))
56			->setDisabled(in_array(CMediatypeHelper::MSG_TYPE_UPDATE, $data['params']['message_types']))
57		)
58		->addOption((new CSelectOption(CMediatypeHelper::MSG_TYPE_DISCOVERY, _('Discovery')))
59			->setDisabled(in_array(CMediatypeHelper::MSG_TYPE_DISCOVERY, $data['params']['message_types']))
60		)
61		->addOption((new CSelectOption(CMediatypeHelper::MSG_TYPE_AUTOREG, _('Autoregistration')))
62			->setDisabled(in_array(CMediatypeHelper::MSG_TYPE_AUTOREG, $data['params']['message_types']))
63		)
64		->addOption((new CSelectOption(CMediatypeHelper::MSG_TYPE_INTERNAL, _('Internal problem')))
65			->setDisabled(in_array(CMediatypeHelper::MSG_TYPE_INTERNAL, $data['params']['message_types']))
66		)
67		->addOption((new CSelectOption(CMediatypeHelper::MSG_TYPE_INTERNAL_RECOVERY, _('Internal problem recovery')))
68			->setDisabled(in_array(CMediatypeHelper::MSG_TYPE_INTERNAL_RECOVERY, $data['params']['message_types']))
69		)
70);
71
72if ($data['params']['type'] != MEDIA_TYPE_SMS) {
73	$form_list->addRow(_('Subject'),
74		(new CTextBox('subject', $data['params']['subject']))
75			->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
76			->setAttribute('maxlength', DB::getFieldLength('media_type_message', 'subject'))
77	);
78}
79
80$form_list->addRow(_('Message'),
81	(new CTextArea('message', $data['params']['message']))
82		->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
83		->setAttribute('maxlength', DB::getFieldLength('media_type_message', 'message'))
84);
85
86$form
87	->addItem($form_list)
88	->addItem((new CInput('submit', 'submit'))->addStyle('display: none;'));
89
90$output = [
91	'header' => $data['title'],
92	'body' => $form->toString(),
93	'buttons' => [
94		[
95			'title' => ($data['params']['old_message_type'] == -1) ? _('Add') : _('Update'),
96			'class' => 'dialogue-widget-save',
97			'keepOpen' => true,
98			'isSubmit' => true,
99			'action' => 'submitMessageTemplate(overlay);'
100		]
101	],
102	'params' => $data['params'],
103	'script_inline' => $this->readJsFile('popup.mediatype.message.js.php')
104];
105
106if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
107	CProfiler::getInstance()->stop();
108	$output['debug'] = CProfiler::getInstance()->make()->toString();
109}
110
111echo json_encode($output);
112