1<?php 2 3/** 4 * Observium Network Management and Monitoring System 5 * Copyright (C) 2006-2015, Adam Armstrong - http://www.observium.org 6 * 7 * @package observium 8 * @subpackage webui 9 * @author Adam Armstrong <adama@observium.org> 10 * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2019 Observium Limited 11 * 12 */ 13 14$sensor_types = array_keys($config['sensor_types']); 15 16foreach ($sensor_types as $sensor_type) 17{ 18 $sql = "SELECT * FROM `sensors`"; 19 //$sql .= " LEFT JOIN `sensors-state` USING(`sensor_id`)"; 20 $sql .= " WHERE `sensor_class` = ? AND `device_id` = ? AND `sensor_deleted` = 0 ORDER BY `sensor_type`, `entPhysicalIndex` * 1, `sensor_descr`"; // order numerically by entPhysicalIndex for ports 21 22 // Cache all sensors 23 foreach (dbFetchRows($sql, array($sensor_type, $device['device_id'])) as $entry) 24 { 25 if (strlen($entry['measured_class']) && is_numeric($entry['measured_entity']) && !in_array($entry['sensor_class'], array('counter', 'state'))) 26 { 27 // Sensors bounded with measured class, mostly ports 28 // array index -> ['measured']['port']['345'][] = sensor array 29 $sensors_db['measured'][$entry['measured_class']][$entry['measured_entity']][] = $entry; 30 } else { 31 $sensors_db[$sensor_type][$entry['sensor_id']] = $entry; 32 } 33 } 34} 35//r($sensors_db['measured']); 36 37// Now print founded bundle (measured_class+sensor) 38if (isset($sensors_db['measured'])) 39{ 40 $vars['measured_icon'] = FALSE; // Hide measured icons 41 foreach ($sensors_db['measured'] as $measured_class => $measured_entity) 42 { 43 $box_args = array('title' => nicecase($measured_class).' sensors', 44 'url' => generate_url(array('page' => 'device', 'device' => $device['device_id'], 'tab' => $measured_class.'s', 'view' => 'sensors')), 45 'icon' => $config['icon']['sensor'] 46 ); 47 echo generate_box_open($box_args); 48 49 echo' <table class="table table-condensed table-striped">'; 50 51 foreach ($measured_entity as $entity_id => $entry) 52 { 53 $entity = get_entity_by_id_cache($measured_class, $entity_id); 54 //r($entity); 55 $entity_link = generate_entity_link($measured_class, $entity); 56 $entity_type = entity_type_translate_array($measured_class); 57 58 // Remove port name from sensor description 59 $rename_from = []; 60 if ($measured_class == 'port') 61 { 62 $rename_from[] = $entity['port_label']; 63 $rename_from[] = $entity['ifDescr']; 64 $rename_from[] = $entity['port_label_short']; 65 if (strlen($entity['port_label_base']) > 4) { $rename_from[] = $entity['port_label_base']; } 66 $rename_from = array_unique($rename_from); 67 } else { 68 $rename_from[] = entity_rewrite($measured_class, $entity); 69 } 70 //r($rename_from); 71 //echo(' <tr class="'.$port['row_class'].'"> 72 // <td class="state-marker"></td> 73 echo(' <tr> 74 <td colspan="6" class="entity">' . get_icon($entity_type['icon']) . ' ' . $entity_link . '</td></tr>'); 75 foreach ($entry as $sensor) 76 { 77 $sensor['sensor_descr'] = trim(str_ireplace($rename_from, '', $sensor['sensor_descr']), ":- \t\n\r\0\x0B"); 78 if (empty($sensor['sensor_descr'])) 79 { 80 // Some time sensor descriptions equals to entity name 81 $sensor['sensor_descr'] = nicecase($sensor['sensor_class']); 82 } 83 84 print_sensor_row($sensor, $vars); 85 } 86 } 87 88?> 89 </table> 90<?php 91 echo generate_box_close(); 92 } 93 // End for print bounds, unset this array 94 unset($sensors_db['measured']); 95} 96 97foreach ($sensors_db as $sensor_type => $sensors) 98{ 99 if ($sensor_type == 'measured') { continue; } // Just be on the safe side 100 101 if (count($sensors)) 102 { 103 $box_args = array('title' => nicecase($sensor_type), 104 'url' => generate_url(array('page' => 'device', 'device' => $device['device_id'], 'tab' => 'health', 'metric' => $sensor_type)), 105 'icon' => $config['sensor_types'][$sensor_type]['icon'], 106 ); 107 echo generate_box_open($box_args); 108 109 echo('<table class="table table-condensed table-striped">'); 110 foreach ($sensors as $sensor) 111 { 112 print_sensor_row($sensor, $vars); 113 } 114 115 echo("</table>"); 116 echo generate_box_close(); 117 } 118} 119 120// EOF 121