diff options
author | Alexander Vladishev <aleksander.vladishev@zabbix.com> | 2020-05-03 17:30:06 +0300 |
---|---|---|
committer | Alexander Vladishev <aleksander.vladishev@zabbix.com> | 2020-05-03 17:30:06 +0300 |
commit | 8d9be8910e07b28b4510482c0720425f8ed8233e (patch) | |
tree | 8e5ca25c795ad586db165fecff35c3f3cd61c19b /ui/app/controllers/CControllerWidget.php | |
parent | e635eaceb24410622a928043971b8e9d89b1049b (diff) |
A.F.I..... [ZBX-17667] moved "frontends/php" to "ui" directory
Diffstat (limited to 'ui/app/controllers/CControllerWidget.php')
-rw-r--r-- | ui/app/controllers/CControllerWidget.php | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/ui/app/controllers/CControllerWidget.php b/ui/app/controllers/CControllerWidget.php new file mode 100644 index 00000000000..1e16b8b32bb --- /dev/null +++ b/ui/app/controllers/CControllerWidget.php @@ -0,0 +1,138 @@ +<?php +/* +** Zabbix +** Copyright (C) 2001-2020 Zabbix SIA +** +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation; either version 2 of the License, or +** (at your option) any later version. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program; if not, write to the Free Software +** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +**/ + + +/** + * Class containing methods for operations with widgets. + */ +abstract class CControllerWidget extends CController { + + /** + * @var int $type Widget type WIDGET_*. + */ + private $type; + + /** + * @var array $validation_rules Validation rules for input parameters. + */ + private $validation_rules = []; + + /** + * @var object $form CWidgetForm object. + */ + private $form; + + /** + * Initialization function. + */ + protected function init() { + $this->disableSIDValidation(); + } + + /** + * Check user permissions. + * + * @return bool + */ + protected function checkPermissions() { + return ($this->getUserType() >= USER_TYPE_ZABBIX_USER); + } + + /** + * Set widget type. + * + * @param int $type Widget type WIDGET_*. + * + * @return object + */ + protected function setType($type) { + $this->type = $type; + + return $this; + } + + /** + * Set validation rules for input parameters. + * + * @param array $validation_rules Validation rules for input parameters. + * + * @return object + */ + protected function setValidationRules(array $validation_rules) { + $this->validation_rules = $validation_rules; + + return $this; + } + + /** + * Returns default widget header. + * + * @return string + */ + protected function getDefaultHeader() { + return CWidgetConfig::getKnownWidgetTypes()[$this->type]; + } + + /** + * Validate input parameters. + * + * @return bool + */ + protected function checkInput() { + $ret = $this->validateInput($this->validation_rules); + + if ($ret) { + $this->form = CWidgetConfig::getForm($this->type, $this->getInput('fields', '{}')); + + if ($errors = $this->form->validate()) { + foreach ($errors as $error) { + info($error); + } + + $ret = false; + } + } + + if (!$ret) { + $output = [ + 'header' => $this->getDefaultHeader() + ]; + + if (($messages = getMessages()) !== null) { + $output['messages'] = $messages->toString(); + } + + $this->setResponse( + (new CControllerResponseData(['main_block' => json_encode($output)]))->disableView() + ); + } + + return $ret; + } + + /** + * Returns form object. + * + * @return object + */ + protected function getForm() { + return $this->form; + } +} |