✏️ 正在编辑: CControllerWidgetClockView.php
路径:
/usr/share/zabbix/app/controllers/CControllerWidgetClockView.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php /* ** Zabbix ** Copyright (C) 2001-2021 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 CControllerWidgetClockView extends CControllerWidget { public function __construct() { parent::__construct(); $this->setType(WIDGET_CLOCK); $this->setValidationRules([ 'name' => 'string', 'fields' => 'json', 'dynamic_hostid' => 'db hosts.hostid' ]); } protected function doAction() { $fields = $this->getForm()->getFieldsData(); $time = null; $name = $this->getDefaultHeader(); $time_zone_string = null; $time_zone_offset = null; $error = null; $critical_error = null; switch ($fields['time_type']) { case TIME_TYPE_HOST: if ($this->getContext() === CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD) { if ($this->hasInput('dynamic_hostid')) { $template_items = API::Item()->get([ 'output' => ['key_'], 'itemids' => $fields['itemid'], 'webitems' => true ]); if ($template_items) { $items = API::Item()->get([ 'output' => ['itemid', 'value_type'], 'selectHosts' => ['name'], 'hostids' => [$this->getInput('dynamic_hostid')], 'filter' => [ 'key_' => $template_items[0]['key_'] ], 'webitems' => true ]); } else { $items = []; } } // Editing template dashboard? else { $error = _('No data.'); } } else { $items = API::Item()->get([ 'output' => ['itemid', 'value_type'], 'selectHosts' => ['name'], 'itemids' => $fields['itemid'], 'webitems' => true ]); } if ($error === null) { if ($items) { $item = $items[0]; $name = $item['hosts'][0]['name']; $last_value = Manager::History()->getLastValues([$item]); if ($last_value) { $last_value = $last_value[$item['itemid']][0]; try { $now = new DateTime($last_value['value']); $time_zone_string = _s('GMT%1$s', $now->format('P')); $time_zone_offset = $now->format('Z'); $time = time() - ($last_value['clock'] - $now->getTimestamp()); } catch (Exception $e) { $error = _('Incorrect data.'); } } else { $error = _('No data.'); } } else { $critical_error = _('No permissions to referred object or it does not exist!'); } } break; case TIME_TYPE_SERVER: $name = _('Server'); $now = new DateTime(); $time = $now->getTimestamp(); $time_zone_string = _s('GMT%1$s', $now->format('P')); $time_zone_offset = $now->format('Z'); break; default: $name = _('Local'); break; } $this->setResponse(new CControllerResponseData([ 'name' => $this->getInput('name', $name), 'clock' => [ 'time' => $time, 'time_zone_string' => $time_zone_string, 'time_zone_offset' => $time_zone_offset, 'error' => $error, 'critical_error' => $critical_error ], 'user' => [ 'debug_mode' => $this->getDebugMode() ] ])); } }
💾 保存文件
← 返回文件管理器