Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/zabbix/zabbix.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Vladishev <aleksander.vladishev@zabbix.com>2020-05-03 17:30:06 +0300
committerAlexander Vladishev <aleksander.vladishev@zabbix.com>2020-05-03 17:30:06 +0300
commit8d9be8910e07b28b4510482c0720425f8ed8233e (patch)
tree8e5ca25c795ad586db165fecff35c3f3cd61c19b /ui/app/controllers/CControllerWidget.php
parente635eaceb24410622a928043971b8e9d89b1049b (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.php138
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;
+ }
+}