function print_status_table($vars) { $sql = generate_status_query($vars); $status_list = array(); foreach (dbFetchRows($sql) as $status) { if (isset($GLOBALS['cache']['devices']['id'][$status['device_id']])) { $status['hostname'] = $GLOBALS['cache']['devices']['id'][$status['device_id']]['hostname']; $status_list[] = $status; } } // Sorting // FIXME. Sorting can be as function, but in must before print_table_header and after get table from db switch ($vars['sort_order']) { case 'desc': $sort_order = SORT_DESC; $sort_neg = SORT_ASC; break; case 'reset': unset($vars['sort'], $vars['sort_order']); // no break here // no break here default: $sort_order = SORT_ASC; $sort_neg = SORT_DESC; } switch ($vars['sort']) { case 'device': $status_list = array_sort_by($status_list, 'hostname', $sort_order, SORT_STRING); break; case 'descr': $status_list = array_sort_by($status_list, 'status_descr', $sort_order, SORT_STRING); break; case 'class': $status_list = array_sort_by($status_list, 'entPhysicalClass', $sort_order, SORT_STRING); break; case 'event': $status_list = array_sort_by($status_list, 'status_event', $sort_order, SORT_STRING); break; case 'status': $status_list = array_sort_by($status_list, 'status_name', $sort_order, SORT_STRING); break; case 'last_change': $status_list = array_sort_by($status_list, 'status_last_change', $sort_neg, SORT_NUMERIC); break; default: $status_list = array_sort_by($status_list, 'hostname', $sort_order, SORT_STRING, 'status_descr', $sort_order, SORT_STRING); } $status_count = count($status_list); // Pagination $pagination_html = pagination($vars, $status_count); echo $pagination_html; if ($vars['pageno']) { $status_list = array_chunk($status_list, $vars['pagesize']); $status_list = $status_list[$vars['pageno'] - 1]; } // End Pagination echo generate_box_open(); print_status_table_header($vars); foreach ($status_list as $status) { print_status_row($status, $vars); } echo "</tbody></table>"; echo generate_box_close(); echo $pagination_html; }
<?php /** * Observium Network Management and Monitoring System * Copyright (C) 2006-2015, Adam Armstrong - http://www.observium.org * * @package observium * @subpackage webui * @author Adam Armstrong <*****@*****.**> * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2016 Observium Limited * */ $sql = "SELECT * FROM `status`"; $sql .= " LEFT JOIN `status-state` USING(`status_id`)"; $sql .= " WHERE `device_id` = ? ORDER BY `entPhysicalClass` DESC, `status_descr`;"; $status = dbFetchRows($sql, array($device['device_id'])); if (count($status)) { $box_args = array('title' => 'Status Indicators', 'url' => generate_url(array('page' => 'device', 'device' => $device['device_id'], 'tab' => 'health', 'metric' => 'status')), 'icon' => $config['entities']['status']['icon']); echo generate_box_open($box_args); echo '<table class="table table-condensed table-striped">'; foreach ($status as $status) { $status['status_descr'] = truncate($status['status_descr'], 48, ''); print_status_row($status, $vars); } echo "</table>"; echo generate_box_close(); } // EOF