function print_mempool_table($vars) { global $cache; $sql = build_mempool_query($vars); $mempools = array(); foreach (dbFetchRows($sql) as $mempool) { if (isset($cache['devices']['id'][$mempool['device_id']])) { $mempool['hostname'] = $cache['devices']['id'][$mempool['device_id']]['hostname']; $mempool['html_row_class'] = $cache['devices']['id'][$mempool['device_id']]['html_row_class']; $mempools[] = $mempool; } } // 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 'usage': $mempools = array_sort_by($mempools, 'mempool_perc', $sort_neg, SORT_NUMERIC); break; case 'used': $mempools = array_sort_by($mempools, 'mempool_' . $vars['sort'], $sort_neg, SORT_NUMERIC); break; default: $mempools = array_sort_by($mempools, 'hostname', $sort_order, SORT_STRING, 'mempool_descr', $sort_order, SORT_STRING); break; } $mempools_count = count($mempools); // Pagination $pagination_html = pagination($vars, $mempools_count); echo $pagination_html; if ($vars['pageno']) { $mempools = array_chunk($mempools, $vars['pagesize']); $mempools = $mempools[$vars['pageno'] - 1]; } // End Pagination echo generate_box_open(); print_mempool_table_header($vars); foreach ($mempools as $mempool) { print_mempool_row($mempool, $vars); } echo "</tbody></table>"; echo generate_box_close(); echo $pagination_html; }
function print_printersupplies_table($vars) { $supplies = array(); foreach (dbFetchRows(build_printersupplies_query($vars)) as $supply) { global $cache; if (isset($cache['devices']['id'][$supply['device_id']])) { $supply['hostname'] = $cache['devices']['id'][$supply['device_id']]['hostname']; $supply['html_row_class'] = $cache['devices']['id'][$supply['device_id']]['html_row_class']; $supplies[] = $supply; } } $supplies = array_sort_by($supplies, 'hostname', SORT_ASC, SORT_STRING, 'supply_descr', SORT_ASC, SORT_STRING); $supplies_count = count($supplies); echo generate_box_open(); // Pagination $pagination_html = pagination($vars, $supplies_count); echo $pagination_html; if ($vars['pageno']) { $supplies = array_chunk($supplies, $vars['pagesize']); $supplies = $supplies[$vars['pageno'] - 1]; } // End Pagination if ($vars['view'] == "graphs") { $stripe_class = "table-striped-two"; } else { $stripe_class = "table-striped"; } // Allow the table to be printed headerless for use in some places. if ($vars['headerless'] != TRUE) { echo '<table class="table ' . $stripe_class . ' table-condensed">'; echo ' <thead>'; echo '<tr class="strong">'; echo '<th class="state-marker"></th>'; echo '<th></th>'; if ($vars['page'] != "device" && $vars['popup'] != TRUE) { echo ' <th style="width: 250px;">Device</th>'; } echo '<th>Toner</th>'; if (!isset($vars['supply'])) { echo '<th>Type</th>'; } echo '<th></th>'; echo '<th>Level</th>'; echo '<th>Remaining</th>'; echo '</tr>'; echo '</thead>'; } foreach ($supplies as $supply) { print_printersupplies_row($supply, $vars); } echo "</table>"; echo generate_box_close(); echo $pagination_html; }
* @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2016 Observium Limited * */ $graph_array['to'] = $config['time']['now']; $graph_array['from'] = $config['time']['day']; //$graph_array_zoom = $graph_array; //$graph_array_zoom['height'] = "150"; //$graph_array_zoom['width'] = "400"; //$graph_array['legend'] = "no"; $app_devices = array(); foreach (dbFetchRows("SELECT * FROM `applications` WHERE `app_type` = ? " . $GLOBALS['cache']['where']['devices_permitted'], array($vars['app'])) as $app) { if (isset($cache['devices']['id'][$app['device_id']])) { $app_devices[] = array_merge($app, $cache['devices']['id'][$app['device_id']]); } } $app_devices = array_sort_by($app_devices, 'hostname', SORT_ASC, SORT_STRING); //echo generate_box_open(); //echo '<table class="table table-hover table-condensed table-striped ">'; foreach ($app_devices as $app_device) { echo generate_box_open(); echo '<table class="table table-hover table-condensed table-striped ">'; print_device_row($app_device, NULL, array('tab' => 'apps', 'app' => $app['app_type'])); echo '<tr><td colspan="6">'; $graph_array['id'] = $app_device['app_id']; $graph_array['types'] = array(); $graph_array['legend'] = "no"; foreach ($config['app'][$vars['app']]['top'] as $graph_type) { $graph_array['types'][] = "application_" . $vars['app'] . "_" . $graph_type; } print_graph_summary_row($graph_array); /*
$sql .= " LEFT JOIN `sensors-state` ON `sensors`.`sensor_id` = `sensors-state`.`sensor_id`"; $sql .= " WHERE `sensors`.`sensor_class` = ?" . generate_query_permitted(array('device')); // Groups if (isset($vars['group'])) { $values = get_group_entities($vars['group']); $sql .= generate_query_values($values, 'sensors.sensor_id'); } $sensors = array(); foreach (dbFetchRows($sql, array($sensor_type)) as $sensor) { if (isset($cache['devices']['id'][$sensor['device_id']])) { $sensor['hostname'] = $cache['devices']['id'][$sensor['device_id']]['hostname']; $sensor['html_row_class'] = $cache['devices']['id'][$sensor['device_id']]['html_row_class']; $sensors[] = $sensor; } } $sensors = array_sort_by($sensors, 'hostname', SORT_ASC, SORT_STRING, 'sensor_descr', SORT_ASC, SORT_STRING); $sensors_count = count($sensors); // Pagination $pagination_html = pagination($vars, $sensors_count); echo $pagination_html; if ($vars['pageno']) { $sensors = array_chunk($sensors, $vars['pagesize']); $sensors = $sensors[$vars['pageno'] - 1]; } // End Pagination if ($vars['view'] == "graphs") { $stripe_class = "table-striped-two"; } else { $stripe_class = "table-striped"; } echo '<table class="table ' . $stripe_class . ' table-condensed table-bordered">';
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; }
* 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 * */ $graph_type = "storage_usage"; $sql = "SELECT * FROM `storage`"; $sql .= " LEFT JOIN `storage-state` USING(`storage_id`)"; $sql .= " WHERE `device_id` = ?"; $drives = dbFetchRows($sql, array($device['device_id'])); if (count($drives)) { $drives = array_sort_by($drives, 'storage_descr', SORT_ASC, SORT_STRING); $box_args = array('title' => 'Storage', 'url' => generate_url(array('page' => 'device', 'device' => $device['device_id'], 'tab' => 'health', 'metric' => 'storage')), 'icon' => 'oicon-drive'); echo generate_box_open($box_args); echo '<table class="table table-condensed table-striped">'; foreach ($drives as $drive) { $skipdrive = FALSE; if ($device["os"] == "junos") { foreach ($config['ignore_junos_os_drives'] as $jdrive) { if (preg_match($jdrive, $drive["storage_descr"])) { $skipdrive = TRUE; } } $drive["storage_descr"] = preg_replace("/.*mounted on: (.*)/", "\\1", $drive["storage_descr"]); } if ($device['os'] == "freebsd") { foreach ($config['ignore_bsd_os_drives'] as $jdrive) {
$sql .= ' LEFT JOIN `mempools-state` ON `mempools`.`mempool_id` = `mempools-state`.`mempool_id`'; $sql .= ' WHERE 1' . generate_query_permitted(array('device')); // Groups if (isset($vars['group'])) { $values = get_group_entities($vars['group']); $sql .= generate_query_values($values, 'mempools.mempool_id'); } $mempools = array(); foreach (dbFetchRows($sql) as $mempool) { if (isset($cache['devices']['id'][$mempool['device_id']])) { $mempool['hostname'] = $cache['devices']['id'][$mempool['device_id']]['hostname']; $mempool['html_row_class'] = $cache['devices']['id'][$mempool['device_id']]['html_row_class']; $mempools[] = $mempool; } } $mempools = array_sort_by($mempools, 'hostname', SORT_ASC, SORT_STRING, 'mempool_descr', SORT_ASC, SORT_STRING); $mempools_count = count($mempools); // Pagination $pagination_html = pagination($vars, $mempools_count); echo $pagination_html; if ($vars['pageno']) { $mempools = array_chunk($mempools, $vars['pagesize']); $mempools = $mempools[$vars['pageno'] - 1]; } // End Pagination if ($vars['view'] == "graphs") { $stripe_class = "table-striped-two"; } else { $stripe_class = "table-striped"; } echo '<table class="table ' . $stripe_class . ' table-bordered table-condensed">';
$sql .= " LEFT JOIN `processors-state` ON `processors`.`processor_id` = `processors-state`.`processor_id`"; $sql .= ' WHERE 1' . generate_query_permitted(array('device')); // Groups if (isset($vars['group'])) { $values = get_group_entities($vars['group']); $sql .= generate_query_values($values, 'processors.processor_id'); } $processors = array(); foreach (dbFetchRows($sql) as $proc) { if (isset($cache['devices']['id'][$proc['device_id']])) { $proc['hostname'] = $cache['devices']['id'][$proc['device_id']]['hostname']; $proc['html_row_class'] = $cache['devices']['id'][$proc['device_id']]['html_row_class']; $processors[] = $proc; } } $processors = array_sort_by($processors, 'hostname', SORT_ASC, SORT_STRING, 'processor_descr', SORT_ASC, SORT_STRING); $processors_count = count($processors); // Pagination $pagination_html = pagination($vars, $processors_count); echo $pagination_html; if ($vars['pageno']) { $processors = array_chunk($processors, $vars['pagesize']); $processors = $processors[$vars['pageno'] - 1]; } // End Pagination if ($vars['view'] == "graphs") { $stripe_class = "table-striped-two"; } else { $stripe_class = "table-striped"; } echo '<table class="table ' . $stripe_class . ' table-condensed table-bordered">';
continue; } // Find max poller/discovery times if ($device['last_polled_timetaken'] > $proc['max']['poller']) { $proc['max']['poller'] = $device['last_polled_timetaken']; } if ($device['last_discovered_timetaken'] > $proc['max']['discovery']) { $proc['max']['discovery'] = $device['last_discovered_timetaken']; } $proc['avg2']['poller'] += pow($device['last_polled_timetaken'], 2); $proc['avg2']['discovery'] += pow($device['last_discovered_timetaken'], 2); $poller_table[] = array('html_row_class' => $device['html_row_class'], 'html_tab_colour' => $device['html_tab_colour'], 'device_hostname' => $device['hostname'], 'device_link' => generate_device_link($device), 'last_polled_timetaken' => $device['last_polled_timetaken'], 'last_polled' => $device['last_polled'], 'last_discovered_timetaken' => $device['last_discovered_timetaken'], 'last_discovered' => $device['last_discovered']); } // Sort poller table // sort order: $polled > $discovered > $hostname $poller_table = array_sort_by($poller_table, 'last_polled_timetaken', SORT_DESC, SORT_NUMERIC, 'last_discovered_timetaken', SORT_DESC, SORT_NUMERIC, 'device_hostname', SORT_ASC, SORT_STRING); // Print poller table foreach ($poller_table as $row) { $proc['time']['poller'] = round($row['last_polled_timetaken'] * 100 / $proc['max']['poller']); $proc['color']['poller'] = "success"; if ($row['last_polled_timetaken'] > $proc['max']['poller'] * 0.75) { $proc['color']['poller'] = "danger"; } elseif ($row['last_polled_timetaken'] > $proc['max']['poller'] * 0.5) { $proc['color']['poller'] = "warning"; } elseif ($row['last_polled_timetaken'] >= $proc['max']['poller'] * 0.25) { $proc['color']['poller'] = "info"; } $proc['time']['discovery'] = round($row['last_discovered_timetaken'] * 100 / $proc['max']['discovery']); $proc['color']['discovery'] = "success"; if ($row['last_discovered_timetaken'] > $proc['max']['discovery'] * 0.75) { $proc['color']['discovery'] = "danger";
} $i--; } if (!is_numeric($label_nums[3])) { $label_nums[3] = 0; } $ports_links[$data['human_type']][$data['ifIndex']] = array('label' => $data['port_label'], 'label_base' => $data['port_label_base'], 'label_num0' => $label_nums[0], 'label_num1' => $label_nums[1], 'label_num2' => $label_nums[2], 'label_num3' => $label_nums[3], 'link' => generate_port_link($data, $data['port_label_short'])); } // First sort iteration (by port type) $all_links = array(); foreach ($port_types as $port_type) { if (!isset($ports_links[$port_type])) { continue; } // Second sort iteration (by port label base name and port numbers) $ports_links[$port_type] = array_sort_by($ports_links[$port_type], 'label_base', SORT_DESC, SORT_STRING, 'label_num0', SORT_ASC, SORT_NUMERIC, 'label_num1', SORT_ASC, SORT_NUMERIC, 'label_num2', SORT_ASC, SORT_NUMERIC, 'label_num3', SORT_ASC, SORT_NUMERIC); /* FIXME. This part not completed, wait ;) if ($port_type == 'Ethernet') { // Try to use ports template div $hw = strtolower(safename($device['hardware'])); if (is_file('ports/'.$device['os'].'_'.$hw.'.inc.php')) { print_debug('Include ports template for device: ports/'.$device['os'].'_'.$hw.'.inc.php'); include('ports/'.$device['os'].'_'.$hw.'.inc.php'); } else if (is_file('ports/'.$device['os'].'_generic.inc.php')) { print_debug('Include ports template for device: ports/'.$device['os'].'_generic.inc.php');
$sql = "SELECT *, `status`.`status_id` AS `status_id` FROM `status`"; $sql .= " LEFT JOIN `status-state` ON `status`.`status_id` = `status-state`.`status_id`"; $sql .= " WHERE 1" . generate_query_permitted(array('device')); // Groups if (isset($vars['group'])) { $values = get_group_entities($vars['group']); $sql .= generate_query_values($values, 'status.status_id'); } $status_list = array(); foreach (dbFetchRows($sql) as $status) { if (isset($cache['devices']['id'][$status['device_id']])) { $status['hostname'] = $cache['devices']['id'][$status['device_id']]['hostname']; $status_list[] = $status; } } $status_list = array_sort_by($status_list, 'hostname', SORT_ASC, SORT_STRING, 'status_descr', SORT_ASC, 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 if ($vars['view'] == "graphs") { $stripe_class = "table-striped-two"; } else { $stripe_class = "table-striped"; } echo '<table class="table ' . $stripe_class . ' table-condensed table-bordered">' . PHP_EOL;
/** * Sorts the listeners by priority. * * @param array $listeners * * @return array */ private function sortListeners($listeners) { return array_sort_by($listeners, function ($a, $b) { return $a['priority'] <=> $b['priority']; }); }
} include $config['html_dir'] . "/pages/usermenu.inc.php"; // Load JS entity picker register_html_resource('js', 'tw-sack.js'); register_html_resource('js', 'observium-entities.js'); ?> <form method="post" action="" class="form form-inline"> <div class="navbar navbar-narrow"> <div class="navbar-inner"> <div class="container"> <a class="brand">Edit User</a> <ul class="nav"> <?php $user_list_sort = array_sort_by(auth_user_list(), 'level', SORT_DESC, SORT_NUMERIC, 'username', SORT_ASC, SORT_STRING); $user_list = array(); foreach ($user_list_sort as $entry) { humanize_user($entry); $user_list[$entry['user_id']] = $entry; $user_list[$entry['user_id']]['name'] = escape_html($entry['username']); if ($entry['row_class']) { $user_list[$entry['user_id']]['class'] = 'bg-' . $entry['row_class']; } $user_list[$entry['user_id']]['group'] = $entry['level_label']; $user_list[$entry['user_id']]['subtext'] = $entry['realname']; } //r($user_list); unset($user_list_sort); echo '<li>'; $item = array('id' => 'page', 'value' => 'edituser');
* @subpackage webui * @copyright (C) 2006-2014 Adam Armstrong * */ $graph_type = "toner_usage"; $sql = 'SELECT * FROM `toner`'; $sql .= ' WHERE 1' . generate_query_permitted(array('device')); $toners = array(); foreach (dbFetchRows($sql) as $toner) { if (isset($cache['devices']['id'][$toner['device_id']])) { $toner['hostname'] = $cache['devices']['id'][$toner['device_id']]['hostname']; $toner['html_row_class'] = $cache['devices']['id'][$toner['device_id']]['html_row_class']; $toners[] = $toner; } } $toners = array_sort_by($toners, 'hostname', SORT_ASC, SORT_STRING, 'toner_descr', SORT_ASC, SORT_STRING); $toners_count = count($toners); // Pagination $pagination_html = pagination($vars, $toners_count); echo $pagination_html; if ($vars['pageno']) { $toners = array_chunk($toners, $vars['pagesize']); $toners = $toners[$vars['pageno'] - 1]; } // End Pagination if ($vars['view'] == "graphs") { $stripe_class = "table-striped-two"; } else { $stripe_class = "table-striped"; } echo '<table class="table ' . $stripe_class . ' table-bordered table-condensed">';
} } switch ($vars['sort']) { case 'usage': $storages = array_sort_by($storages, 'storage_perc', SORT_DESC, SORT_NUMERIC, 'hostname', SORT_ASC, SORT_STRING); break; case 'mountpoint': $storages = array_sort_by($storages, 'storage_descr', SORT_DESC, SORT_STRING, 'hostname', SORT_ASC, SORT_STRING); break; case 'size': case 'free': case 'used': $storages = array_sort_by($storages, 'storage_' . $vars['sort'], SORT_DESC, SORT_NUMERIC, 'hostname', SORT_ASC, SORT_STRING); break; default: $storages = array_sort_by($storages, 'hostname', SORT_ASC, SORT_STRING, 'storage_descr', SORT_ASC, SORT_STRING); break; } $storages_count = count($storages); // Pagination $pagination_html = pagination($vars, $storages_count); echo $pagination_html; if ($vars['pageno']) { $storages = array_chunk($storages, $vars['pagesize']); $storages = $storages[$vars['pageno'] - 1]; } // End Pagination if ($vars['view'] == "graphs") { $stripe_class = "table-striped-two"; } else { $stripe_class = "table-striped";
function print_sla_table($vars) { $sql = generate_sla_query($vars); $slas = array(); foreach (dbFetchRows($sql) as $sla) { if (isset($GLOBALS['cache']['devices']['id'][$sla['device_id']])) { $sla['hostname'] = $GLOBALS['cache']['devices']['id'][$sla['device_id']]['hostname']; $slas[] = $sla; } } // 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': $slas = array_sort_by($slas, 'hostname', $sort_order, SORT_STRING); break; case 'descr': $slas = array_sort_by($slas, 'sla_index', $sort_order, SORT_STRING, 'sla_tag', $sort_order, SORT_STRING); break; case 'owner': $slas = array_sort_by($slas, 'sla_owner', $sort_order, SORT_STRING); break; case 'type': $slas = array_sort_by($slas, 'rtt_type', $sort_order, SORT_STRING); break; case 'event': $slas = array_sort_by($slas, 'rtt_event', $sort_order, SORT_STRING); break; case 'sense': $slas = array_sort_by($slas, 'rtt_sense', $sort_order, SORT_STRING); break; case 'last_change': $slas = array_sort_by($slas, 'rtt_last_change', $sort_neg, SORT_NUMERIC); break; case 'rtt': $slas = array_sort_by($slas, 'rtt_value', $sort_order, SORT_NUMERIC); break; default: // Not sorted } $slas_count = count($slas); // Pagination $pagination_html = pagination($vars, $slas_count); echo $pagination_html; if ($vars['pageno']) { $slas = array_chunk($slas, $vars['pagesize']); $slas = $slas[$vars['pageno'] - 1]; } // End Pagination echo generate_box_open(); print_sla_table_header($vars); foreach ($slas as $sla) { print_sla_row($sla, $vars); } echo '</tbody></table>'; echo generate_box_close(); echo $pagination_html; }
case 'packets': $ports = array_sort_by($ports, 'ifUcastPkts_rate', $sort_neg, SORT_NUMERIC); break; case 'packets_in': $ports = array_sort_by($ports, 'ifInUcastPkts_rate', $sort_neg, SORT_NUMERIC); break; case 'packets_out': $ports = array_sort_by($ports, 'ifOutUcastPkts_rate', $sort_neg, SORT_NUMERIC); break; case 'errors': $ports = array_sort_by($ports, 'ifErrors_rate', $sort_neg, SORT_NUMERIC); break; case 'speed': $ports = array_sort_by($ports, 'ifSpeed', $sort_neg, SORT_NUMERIC); break; case 'port': $ports = array_sort_by($ports, 'ifDescr', $sort_order, SORT_STRING); break; case 'media': $ports = array_sort_by($ports, 'ifType', $sort_order, SORT_STRING); break; case 'descr': $ports = array_sort_by($ports, 'ifAlias', $sort_order, SORT_STRING); break; case 'mac': $ports = array_sort_by($ports, 'ifPhysAddress', $sort_neg, SORT_STRING); break; default: $ports = array_sort_by($ports, 'hostname', $sort_order, SORT_STRING, 'ifIndex', $sort_order, SORT_NUMERIC); } // EOF
function print_vm_table($vars) { $sql = generate_vm_query($vars); $vms = array(); foreach (dbFetchRows($sql) as $vm) { if (isset($GLOBALS['cache']['devices']['id'][$vm['device_id']])) { $vm['hostname'] = $GLOBALS['cache']['devices']['id'][$vm['device_id']]['hostname']; $vms[] = $vm; } } // 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 'name': $vms = array_sort_by($vms, 'vm_name', $sort_order, SORT_STRING); break; case 'os': $vms = array_sort_by($vms, 'vm_os', $sort_order, SORT_STRING); break; case 'state': $vms = array_sort_by($vms, 'vm_state', $sort_order, SORT_STRING); break; case 'memory': $vms = array_sort_by($vms, 'vm_memory', $sort_order, SORT_NUMERIC); break; case 'cpu': $vms = array_sort_by($vms, 'vm_cpucount', $sort_order, SORT_NUMERIC); break; default: // Not sorted } $vms_count = count($vms); // Pagination $pagination_html = pagination($vars, $vms_count); echo $pagination_html; if ($vars['pageno']) { $vms = array_chunk($vms, $vars['pagesize']); $vms = $vms[$vars['pageno'] - 1]; } // End Pagination echo generate_box_open(); print_vm_table_header($vars); foreach ($vms as $vm) { print_vm_row($vm, $vars); } echo '</tbody></table>'; echo generate_box_close(); echo $pagination_html; }
function get_pseudowire_table($vars) { $sql = generate_pseudowire_query($vars); $entries = array(); foreach (dbFetchRows($sql) as $entry) { if (!isset($GLOBALS['cache']['devices']['id'][$entry['device_id']])) { continue; } // Device hostname $entry['hostname'] = $GLOBALS['cache']['devices']['id'][$entry['device_id']]['hostname']; // Remote Peer $peer_addr = $entry['peer_addr']; $peer_addr_type = get_ip_version($peer_addr); if ($peer_addr_type && $entry['peer_device_id']) { if ($peer_addr_type == 6) { $peer_addr = Net_IPv6::uncompress($peer_addr, TRUE); } $peer_addr_type = 'ipv' . $peer_addr_type; //$entry['peer_addr'] = $peer_addr; //$entry['peer_addr_type'] = $peer_addr_type; if (!is_array($cache_pseudowires['ips'][$peer_addr])) { $cache_pseudowires['ips'][$peer_addr]['port_id'] = dbFetchCell('SELECT `port_id` FROM `' . $peer_addr_type . '_addresses` WHERE `' . $peer_addr_type . '_address` = ? ' . generate_query_values($GLOBALS['cache']['ports']['pseudowires'], 'port_id') . ' LIMIT 1;', array($peer_addr)); if (!is_numeric($cache_pseudowires['ips'][$peer_addr]['port_id'])) { // Separate entry for find correct port $cache_pseudowires['ips'][$peer_addr]['port_id_fix'] = dbFetchCell('SELECT `port_id` FROM `' . $peer_addr_type . '_addresses` WHERE `' . $peer_addr_type . '_address` = ? ' . $GLOBALS['cache']['where']['ports_permitted'] . ' LIMIT 1;', array($peer_addr)); } //$cache_pseudowires['ips'][$peer_addr]['host'] = $entry['reverse_dns']; } $entry['peer_port_id'] = $cache_pseudowires['ips'][$peer_addr]['port_id']; if (is_numeric($cache_pseudowires['ips'][$peer_addr]['port_id_fix'])) { // If we found port on remote device, than both devices in DB and will try to fix real port $peer_port_tmp = get_port_by_id_cache($cache_pseudowires['ips'][$peer_addr]['port_id_fix']); $peer_port_fix = dbFetchCell('SELECT `port_id` FROM `pseudowires` WHERE `device_id` = ? AND `pwID` = ? LIMIT 1;', array($peer_port_tmp['device_id'], $entry['pwID'])); if (is_numeric($peer_port_fix)) { $entry['peer_port_id'] = $peer_port_fix; } else { $entry['peer_port_id'] = $cache_pseudowires['ips'][$peer_addr]['port_id_fix']; } } //r($entry['peer_port_id']); if ($entry['peer_port_id']) { $entry['peer_port'] = get_port_by_id_cache($entry['peer_port_id']); //r($entry['peer_port']); $entry['peer_device_id'] = $entry['peer_port']['device_id']; //r($entry['peer_device_id']); $entry['peer_device'] = device_by_id_cache($entry['peer_device_id']); } } $entry['hostname'] = $GLOBALS['cache']['devices']['id'][$entry['device_id']]['hostname']; // Attach hostname for sorting $entries[] = $entry; } // Sorting 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': $entries = array_sort_by($entries, 'hostname', $sort_order, SORT_STRING); break; case 'pwid': $entries = array_sort_by($entries, 'pwID', $sort_order, SORT_NUMERIC); break; case 'pwtype': $entries = array_sort_by($entries, 'pwType', $sort_order, SORT_STRING, 'pwPsnType', $sort_order, SORT_STRING); //$pws = array_sort_by($pws, 'pwType', $sort_order, SORT_STRING); break; case 'peer_addr': $entries = array_sort_by($entries, 'peer_addr', $sort_order, SORT_NUMERIC); break; case 'event': $entries = array_sort_by($entries, 'event', $sort_order, SORT_STRING); break; case 'uptime': $entries = array_sort_by($entries, 'pwUptime', $sort_order, SORT_NUMERIC); break; case 'last_change': $entries = array_sort_by($entries, 'last_change', $sort_neg, SORT_NUMERIC); break; case 'status': $entries = array_sort_by($entries, 'pwOperStatus', $sort_order, SORT_STRING); break; default: // Not sorted } return $entries; }
/** * Params: * * pagination, pageno, pagesize * device, port */ function get_neighbours_array(&$vars) { $array = array(); // With pagination? (display page numbers in header) $array['pagination'] = isset($vars['pagination']) && $vars['pagination']; pagination($vars, 0, TRUE); // Get default pagesize/pageno $array['pageno'] = $vars['pageno']; $array['pagesize'] = $vars['pagesize']; $start = $array['pagesize'] * $array['pageno'] - $array['pagesize']; $pagesize = $array['pagesize']; // Begin query generate $param = array(); $where = ' WHERE `active` = 1 '; foreach ($vars as $var => $value) { if ($value != '') { switch ($var) { case 'device': case 'device_a': $where .= generate_query_values($value, 'device_id'); break; case 'port': case 'port_a': $where .= generate_query_values($value, 'port_id'); break; case 'device_b': $where .= generate_query_values($value, 'remote_hostname'); break; case 'port_b': $where .= generate_query_values($value, 'remote_port'); break; case 'protocol': $where .= generate_query_values($value, 'protocol'); break; case 'platform': $where .= generate_query_values($value, 'remote_platform'); break; case 'version': $where .= generate_query_values($value, 'remote_version'); break; case 'remote_port_id': if ($value != 0) { $where .= ' AND `remote_port_id` != 0'; } else { $where .= generate_query_values($value, 'remote_port_id'); } break; } } } // Show neighbours only for permitted devices and ports $query_permitted = $GLOBALS['cache']['where']['ports_permitted']; $query = 'FROM `neighbours` LEFT JOIN `ports` USING(`port_id`) '; $query .= $where . $query_permitted; //$query_count = 'SELECT COUNT(*) '.$query; $query = 'SELECT * ' . $query; //$query .= ' ORDER BY `event_id` DESC '; //$query .= " LIMIT $start,$pagesize"; // Query neighbours $array['entries'] = dbFetchRows($query, $param); foreach ($array['entries'] as &$entry) { $device =& $GLOBALS['cache']['devices']['id'][$entry['device_id']]; if (isset($device['status']) && !$device['status']) { $entry['row_class'] = 'error'; } else { if (isset($device['disabled']) && $device['disabled']) { $entry['row_class'] = 'ignore'; } } $entry['hostname'] = $device['hostname']; //$entry['row_class'] = $device['row_class']; } // 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_a': $array['entries'] = array_sort_by($array['entries'], 'hostname', $sort_order, SORT_STRING); break; case 'port_a': $array['entries'] = array_sort_by($array['entries'], 'port_label', $sort_order, SORT_STRING); break; case 'device_b': $array['entries'] = array_sort_by($array['entries'], 'remote_hostname', $sort_order, SORT_STRING); break; case 'port_b': $array['entries'] = array_sort_by($array['entries'], 'remote_port', $sort_order, SORT_STRING); break; case 'protocol': $array['entries'] = array_sort_by($array['entries'], 'protocol', $sort_order, SORT_STRING); break; default: // Not sorted } // Query neighbours count $array['count'] = count($array['entries']); if ($array['pagination']) { $array['pagination_html'] = pagination($vars, $array['count']); $array['entries'] = array_chunk($array['entries'], $vars['pagesize']); $array['entries'] = $array['entries'][$vars['pageno'] - 1]; } // Query for last timestamp //$array['updated'] = dbFetchCell($query_updated, $param); return $array; }
/** * Observium * * This file is part of Observium. * * @package observium * @subpackage web * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2016 Observium Limited * */ function print_storage_table($vars) { global $cache, $config; $graph_type = "storage_usage"; $sql = "SELECT *, `storage`.`storage_id` AS `storage_id` FROM `storage`"; $sql .= " LEFT JOIN `storage-state` USING(`storage_id`)"; $sql .= ' WHERE 1' . generate_query_permitted(array('device')); // Build query if (!isset($vars['ignored'])) { $vars['ignored'] = 0; } foreach ($vars as $var => $value) { switch ($var) { case "group": case "group_id": $values = get_group_entities($value); $sql .= generate_query_values($values, 'storage.storage_id'); break; case "device": case "device_id": $sql .= generate_query_values($value, 'storage.device_id'); break; case 'ignored': $sql .= generate_query_values($value, 'storage.storage_ignore'); break; } } $storages = array(); foreach (dbFetchRows($sql) as $storage) { if (isset($cache['devices']['id'][$storage['device_id']])) { $storage['hostname'] = $cache['devices']['id'][$storage['device_id']]['hostname']; $storage['html_row_class'] = $cache['devices']['id'][$storage['device_id']]['html_row_class']; $storages[] = $storage; } } // 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 'usage': $storages = array_sort_by($storages, 'storage_perc', $sort_neg, SORT_NUMERIC); break; case 'mountpoint': $storages = array_sort_by($storages, 'storage_descr', $sort_order, SORT_STRING); break; case 'size': case 'free': case 'used': $storages = array_sort_by($storages, 'storage_' . $vars['sort'], $sort_neg, SORT_NUMERIC); break; default: $storages = array_sort_by($storages, 'hostname', $sort_order, SORT_STRING, 'storage_descr', $sort_order, SORT_STRING); break; } $storages_count = count($storages); // Pagination $pagination_html = pagination($vars, $storages_count); echo $pagination_html; if ($vars['pageno']) { $storages = array_chunk($storages, $vars['pagesize']); $storages = $storages[$vars['pageno'] - 1]; } // End Pagination echo generate_box_open(); print_storage_table_header($vars); foreach ($storages as $storage) { print_storage_row($storage, $vars); } echo "</tbody></table>"; echo generate_box_close(); echo $pagination_html; }