hasGlobalRead()) { $sql .= ', devices_perms as P'; } $sql .= " WHERE S.sensor_class=? AND S.device_id = D.device_id "; $param[] = mres($vars['class']); if (!LegacyAuth::user()->hasGlobalRead()) { $sql .= " AND D.device_id = P.device_id AND P.user_id = ?"; $param[] = LegacyAuth::id(); } if (isset($searchPhrase) && !empty($searchPhrase)) { $sql .= " AND (`D`.`hostname` LIKE '%$searchPhrase%' OR `sensor_descr` LIKE '%$searchPhrase%' OR `sensor_current` LIKE '%searchPhrase')"; } $count_sql = "SELECT COUNT(`sensor_id`) $sql"; $count = dbFetchCell($count_sql, $param); if (empty($count)) { $count = 0; } if (!isset($sort) || empty($sort)) { $sort = '`D`.`hostname`, `S`.`sensor_descr`'; } $sql .= " ORDER BY $sort"; if (isset($current)) { $limit_low = (($current * $rowCount) - ($rowCount)); $limit_high = $rowCount; } if ($rowCount != -1) { $sql .= " LIMIT $limit_low,$limit_high"; } $sql = "SELECT * $sql"; foreach (dbFetchRows($sql, $param) as $sensor) { $alert = ''; if (!isset($sensor['sensor_current'])) { $sensor['sensor_current'] = 'NaN'; } elseif ((!is_null($sensor['sensor_limit']) && $sensor['sensor_current'] >= $sensor['sensor_limit']) || (!is_null($sensor['sensor_limit_low']) && $sensor['sensor_current'] <= $sensor['sensor_limit_low']) ) { $alert = ''; } // FIXME - make this "four graphs in popup" a function/include and "small graph" a function. // FIXME - So now we need to clean this up and move it into a function. Isn't it just "print-graphrow"? // FIXME - DUPLICATED IN device/overview/sensors $graph_colour = str_replace('#', '', $row_colour); $graph_array = array(); $graph_array['height'] = '100'; $graph_array['width'] = '210'; $graph_array['to'] = $config['time']['now']; $graph_array['id'] = $sensor['sensor_id']; $graph_array['type'] = $graph_type; $graph_array['from'] = $config['time']['day']; $graph_array['legend'] = 'no'; $link_array = $graph_array; $link_array['page'] = 'graphs'; unset($link_array['height'], $link_array['width'], $link_array['legend']); $link_graph = generate_url($link_array); $link = generate_url(array('page' => 'device', 'device' => $sensor['device_id'], 'tab' => $tab, 'metric' => $sensor['sensor_class'])); $overlib_content = '
'.$sensor['hostname'].' - '.$sensor['sensor_descr'].''; foreach (array('day', 'week', 'month', 'year') as $period) { $graph_array['from'] = $config['time'][$period]; $overlib_content .= str_replace('"', "\\'", generate_graph_tag($graph_array)); } $overlib_content .= '
'; $graph_array['width'] = 80; $graph_array['height'] = 20; $graph_array['bg'] = 'ffffff00'; // the 00 at the end makes the area transparent. $graph_array['from'] = $config['time']['day']; $sensor_minigraph = generate_lazy_graph_tag($graph_array); $sensor['sensor_descr'] = substr($sensor['sensor_descr'], 0, 48); if ($graph_type == 'sensor_state') { // If we have a state, let's display a label with textual state translation $state_translation = array(); $state_translation = dbFetchRows('SELECT * FROM state_translations as ST, sensors_to_state_indexes as SSI WHERE ST.state_index_id=SSI.state_index_id AND SSI.sensor_id = ? AND ST.state_value = ? ', array($sensor['sensor_id'], $sensor['sensor_current'])); //$current_label = get_state_label_color($sensor); $sensor_current = get_state_label($state_translation['0']['state_generic_value'], (!empty($state_translation['0']['state_descr'])) ? $state_translation[0]['state_descr'] . " (".$sensor['sensor_current'].")" : $sensor['sensor_current']); } else { // we have another sensor $current_label = get_sensor_label_color($sensor); $sensor_current = "".format_si($sensor['sensor_current']).$unit.""; } $response[] = array( 'hostname' => generate_device_link($sensor), 'sensor_descr' => overlib_link($link, $sensor['sensor_descr'], $overlib_content, null), 'graph' => overlib_link($link_graph, $sensor_minigraph, $overlib_content, null), 'alert' => $alert, 'sensor_current' => $sensor_current, 'sensor_limit_low' => is_null($sensor['sensor_limit_low']) ? '-' : '' . trim(format_si($sensor['sensor_limit_low']) . $unit) . '', 'sensor_limit' => is_null($sensor['sensor_limit']) ? '-' : '' . trim(format_si($sensor['sensor_limit']) . $unit) . '', ); if ($vars['view'] == 'graphs') { $daily_graph = 'graph.php?id='.$sensor['sensor_id'].'&type='.$graph_type.'&from='.$config['time']['day'].'&to='.$config['time']['now'].'&width=211&height=100'; $daily_url = 'graph.php?id='.$sensor['sensor_id'].'&type='.$graph_type.'&from='.$config['time']['day'].'&to='.$config['time']['now'].'&width=400&height=150'; $weekly_graph = 'graph.php?id='.$sensor['sensor_id'].'&type='.$graph_type.'&from='.$config['time']['week'].'&to='.$config['time']['now'].'&width=211&height=100'; $weekly_url = 'graph.php?id='.$sensor['sensor_id'].'&type='.$graph_type.'&from='.$config['time']['week'].'&to='.$config['time']['now'].'&width=400&height=150'; $monthly_graph = 'graph.php?id='.$sensor['sensor_id'].'&type='.$graph_type.'&from='.$config['time']['month'].'&to='.$config['time']['now'].'&width=211&height=100'; $monthly_url = 'graph.php?id='.$sensor['sensor_id'].'&type='.$graph_type.'&from='.$config['time']['month'].'&to='.$config['time']['now'].'&width=400&height=150'; $yearly_graph = 'graph.php?id='.$sensor['sensor_id'].'&type='.$graph_type.'&from='.$config['time']['year'].'&to='.$config['time']['now'].'&width=211&height=100'; $yearly_url = 'graph.php?id='.$sensor['sensor_id'].'&type='.$graph_type.'&from='.$config['time']['year'].'&to='.$config['time']['now'].'&width=400&height=150'; $response[] = array( 'hostname' => "', LEFT);\" onmouseout=\"return nd();\"> ", 'sensor_descr' => "', LEFT);\" onmouseout=\"return nd();\"> ", 'graph' => "', LEFT);\" onmouseout=\"return nd();\"> ", 'alert' => '', 'sensor_current' => "', LEFT);\" onmouseout=\"return nd();\"> ", 'sensor_range' => '', ); } //end if }//end foreach $output = array( 'current' => $current, 'rowCount' => $rowCount, 'rows' => $response, 'total' => $count, ); echo _json_encode($output);