* 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 3 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, see . */ /** * Generic Graph Widget * @author Daniel Preussker * @copyright 2015-2016 Daniel Preussker, QuxLabs UG * @license GPL * @package LibreNMS * @subpackage Widgets */ if( defined('show_settings') || empty($widget_settings) ) { $common_output[] = '
'; } else { $type = explode('_',$widget_settings['graph_type'],2); $type = array_shift($type); $widget_settings['graph_'.$type] = json_decode($widget_settings['graph_'.$type],true)?:$widget_settings['graph_'.$type]; if ($type == 'device') { if (empty($widget_settings['title'])) { $widget_settings['title'] = $widget_settings['graph_device']['name']." / ".$widget_settings['graph_type']; } $param = 'device='.$widget_settings['graph_device']['device_id']; } elseif ($type == 'application') { $param = 'id='.$widget_settings['graph_'.$type]['app_id']; } elseif ($type == 'munin') { $param = 'device='.$widget_settings['graph_'.$type]['device_id'].'&plugin='.$widget_settings['graph_'.$type]['name']; } elseif ($type == 'transit' || $type == 'peering' || $type == 'core') { $type_where = ' ('; if (is_array($config[$type.'_descr']) === false) { $config[$type.'_descr'] = array($config[$type.'_descr']); } foreach ($config[$type.'_descr'] as $additional_type) { if (!empty($additional_type)) { $type_where .= " $or `port_descr_type` = ?"; $or = 'OR'; $type_param[] = $additional_type; } } $type_where .= " $or `port_descr_type` = ?"; $or = 'OR'; $type_param[] = $type; $type_where .= ') '; foreach (dbFetchRows("SELECT port_id FROM `ports` WHERE $type_where ORDER BY ifAlias", $type_param) as $port) { $tmp[] = $port['port_id']; } $param = 'id='.implode(',',$tmp); $widget_settings['graph_type'] = 'multiport_bits_separate'; if (empty($widget_settings['title'])) { $widget_settings['title'] = 'Overall '.ucfirst($type).' Bits ('.$widget_settings['graph_range'].')'; } } elseif ($type == 'custom') { foreach (dbFetchRows("SELECT port_id FROM `ports` WHERE `port_descr_type` = ? ORDER BY ifAlias", array($widget_settings['graph_custom'])) as $port) { $tmp[] = $port['port_id']; } $param = 'id='.implode(',',$tmp); $widget_settings['graph_type'] = 'multiport_bits_separate'; if (empty($widget_settings['title'])) { $widget_settings['title'] = 'Overall '.ucfirst(htmlspecialchars($widget_settings['graph_custom'])).' Bits ('.$widget_settings['graph_range'].')'; } } else { $param = 'id='.$widget_settings['graph_'.$type][$type.'_id']; } if (empty($widget_settings['title'])) { $widget_settings['title'] = $widget_settings['graph_'.$type]['hostname']." / ".$widget_settings['graph_'.$type]['name']." / ".$widget_settings['graph_type']; } $common_output[] = ''; }