@@ -200,12 +177,12 @@ function print_device_header($device, $args = array()) {
}
$graph_array = [];
- $graph_array['height'] = "100";
- $graph_array['width'] = "310";
- $graph_array['to'] = $config['time']['now'];
+ //$graph_array['height'] = "100";
+ //$graph_array['width'] = "310";
+ $graph_array['to'] = get_time();
$graph_array['device'] = $device['device_id'];
$graph_array['type'] = "device_bits";
- $graph_array['from'] = $config['time']['day'];
+ $graph_array['from'] = get_time('day');
$graph_array['legend'] = "no";
$graph_array['height'] = "45";
@@ -398,7 +375,7 @@ function print_device_row($device, $vars = array('view' => 'basic'), $link_vars
// Preprocess device graphs array
$graphs_enabled = [];
- foreach ($GLOBALS['cache']['devices']['id'][$device['device_id']]['graphs'] as $graph)
+ foreach ($device['graphs'] as $graph)
{
$graphs_enabled[] = $graph['graph'];
}
@@ -515,50 +492,41 @@ function get_device_icon($device, $base_icon = FALSE, $dark = FALSE) {
}
// Icon by vendor name
- if ($icon === 'generic' && ($config['os'][$device['os']]['vendor'] || $device['vendor']))
- {
- if ($device['vendor'])
- {
+ if ($icon === 'generic' && ($config['os'][$device['os']]['vendor'] || $device['vendor'])) {
+ if ($device['vendor']) {
$vendor = $device['vendor'];
} else {
$vendor = rewrite_vendor($config['os'][$device['os']]['vendor']); // Compatibility, if device not polled for long time
}
$vendor_safe = safename(strtolower($vendor));
- if (isset($config['vendors'][$vendor_safe]['icon']))
- {
+ if (isset($config['vendors'][$vendor_safe]['icon'])) {
$icon = $config['vendors'][$vendor_safe]['icon'];
- }
- elseif (is_file($config['html_dir'] . '/images/os/' . $vendor_safe . '.png'))
- {
+ } elseif (is_file($config['html_dir'] . '/images/os/' . $vendor_safe . '.png')) {
$icon = $vendor_safe;
- }
- elseif (isset($config['os'][$device['os']]['icons']))
- {
+ } elseif (isset($config['os'][$device['os']]['icons'])) {
// Fallback to os alternative icon
$icon = array_values($config['os'][$device['os']]['icons'])[0];
}
}
// Set dark mode by session
- if (isset($_SESSION['theme']))
- {
+ if (isset($_SESSION['theme'])) {
$dark = str_contains($_SESSION['theme'], 'dark');
}
// Prefer dark variant of icon in dark mode
- if ($dark && is_file($config['html_dir'] . '/images/os/' . $icon . '-dark.png'))
- {
+ if ($dark && is_file($config['html_dir'] . '/images/os/' . $icon . '-dark.png')) {
$icon .= '-dark';
}
- if ($base_icon)
- {
+ if ($base_icon) {
// return base name for os icon
return $icon;
}
// return image html tag
+ $base_url = rtrim($config['base_url'], '/');
$srcset = '';
// Now we always have 2x icon variant!
//if (is_file($config['html_dir'] . '/images/os/' . $icon . '_2x.png')) // HiDPI image exist?
@@ -566,14 +534,13 @@ function get_device_icon($device, $base_icon = FALSE, $dark = FALSE) {
// Detect allowed screen ratio for current browser
$ua_info = detect_browser();
- if ($ua_info['screen_ratio'] > 1)
- {
- $srcset = ' srcset="' .$config['base_url'] . '/images/os/' . $icon . '_2x.png'.' 2x"';
+ if ($ua_info['screen_ratio'] > 1) {
+ $srcset = ' srcset="' . $base_url . '/images/os/' . $icon . '_2x.png'.' 2x"';
}
//}
// Image tag -- FIXME re-engineer this code to do this properly. This is messy.
- return '
';
+ return '
';
}
// TESTME needs unit testing
@@ -638,8 +605,11 @@ function generate_device_popup($device, $vars = []) {
}
}
+ $count = 0;
foreach ($graphs as $entry) {
+ if($count == 3) { break; }
+
if ($entry && in_array(str_replace('device_', '', $entry), $graphs_enabled, TRUE)) {
// No text provided for the minigraph, fetch from array
if (preg_match(OBS_PATTERN_GRAPH_TYPE, $entry, $graphtype)) {
@@ -664,17 +634,13 @@ function generate_device_popup($device, $vars = []) {
$content .= '
';
$content .= "
" . $text . " ";
- /*
- $content .= generate_box_open(array('title' => $text,
- 'body-style' => 'white-space: nowrap;'));
- */
$content .= generate_graph_tag($graph_array);
-
$graph_array['from'] = get_time('week');
$content .= generate_graph_tag($graph_array);
-
$content .= '
';
- //$content .= generate_box_close();
+
+ $count++;
+
}
}
@@ -722,41 +688,6 @@ function generate_device_link_short($device, $vars = [], $short = TRUE) {
return generate_device_link($device, NULL, $vars, TRUE, $short);
}
-function device_name($device, $max_len = FALSE) {
- global $config;
-
- switch (strtolower($config['web_device_name'])) {
- case 'sysname':
- $name_field = 'sysName';
- break;
- case 'purpose':
- case 'descr':
- case 'description':
- $name_field = 'purpose';
- break;
- default:
- $name_field = 'hostname';
- }
-
- if ($max_len && !is_intnum($max_len)) {
- $max_len = $config['short_hostname']['length'];
- }
-
- if ($name_field !== 'hostname' && !safe_empty($device[$name_field])) {
- if ($name_field === 'sysName' && $max_len && $max_len > 3) {
- // short sysname when is valid hostname (do not escape here)
- return short_hostname($device[$name_field], $max_len, FALSE);
- }
- return $device[$name_field];
- }
-
- if ($max_len && $max_len > 3) {
- // short hostname (do not escape here)
- return short_hostname($device['hostname'], $max_len, FALSE);
- }
- return $device['hostname'];
-}
-
function generate_device_form_values($form_filter = FALSE, $column = 'device_id', $options = array())
{
global $cache;
diff --git a/html/includes/entities/generic.inc.php b/html/includes/entities/generic.inc.php
index 78dd5d11..4a3aa353 100644
--- a/html/includes/entities/generic.inc.php
+++ b/html/includes/entities/generic.inc.php
@@ -54,6 +54,30 @@ function get_customoid_by_id($oid_id) {
} // end function get_customoid_by_id()
+// DOCME needs phpdoc block
+// TESTME needs unit testing
+function get_application_by_id($application_id)
+{
+ if (is_numeric($application_id))
+ {
+ $application = dbFetchRow("SELECT * FROM `applications` WHERE `app_id` = ?", array($application_id));
+ }
+ if (is_array($application))
+ {
+ return $application;
+ } else {
+ return FALSE;
+ }
+}
+
+// DOCME needs phpdoc block
+// TESTME needs unit testing
+function accesspoint_by_id($ap_id, $refresh = '0')
+{
+ $ap = dbFetchRow("SELECT * FROM `accesspoints` WHERE `accesspoint_id` = ?", array($ap_id));
+
+ return $ap;
+}
function generate_entity_popup_graphs($entity, $vars)
{
@@ -376,8 +400,8 @@ function build_entity_measured_where($entity_type, $vars)
{
case 'port':
case 'printersupply':
- $measure_sql = generate_query_values($measured_type, $column_measured_type, NULL, OBS_DB_NO_LEADING_AND);
- $measure_sql .= generate_query_values($entities, $column_measured_id);
+ $measure_sql = generate_query_values_ng($measured_type, $column_measured_type);
+ $measure_sql .= generate_query_values_and($entities, $column_measured_id);
break;
}
if ($measure_sql) { $measure_array[] = $measure_sql; }
@@ -388,7 +412,7 @@ function build_entity_measured_where($entity_type, $vars)
//$value = (array)$value;
// Select all without measured entities
if (in_array('none', $value)) {
- $measure_array[] = generate_query_values(1, $column_measured_id, 'NULL', OBS_DB_NO_LEADING_AND);
+ $measure_array[] = generate_query_values_ng(1, $column_measured_id);
$value = array_diff($value, [ 'none' ]);
}
if (count($value))
@@ -410,8 +434,8 @@ function build_entity_measured_where($entity_type, $vars)
$entities = dbFetchColumn($entity_sql);
//$entities = dbFetchColumn($entity_sql, NULL, TRUE);
//r($entities);
- $measure_sql = generate_query_values($measured_type, $column_measured_type, NULL, OBS_DB_NO_LEADING_AND);
- $measure_sql .= generate_query_values($entities, $column_measured_id);
+ $measure_sql = generate_query_values_ng($measured_type, $column_measured_type);
+ $measure_sql .= generate_query_values_and($entities, $column_measured_id);
break;
case 'printersupply':
break;
diff --git a/html/includes/entities/mempool.inc.php b/html/includes/entities/mempool.inc.php
index 993fee43..0dd274f6 100644
--- a/html/includes/entities/mempool.inc.php
+++ b/html/includes/entities/mempool.inc.php
@@ -6,7 +6,7 @@
*
* @package observium
* @subpackage web
- * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2021 Observium Limited
+ * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2022 Observium Limited
*
*/
@@ -32,20 +32,20 @@ function build_mempool_query($vars)
case "group":
case "group_id":
$values = get_group_entities($value);
- $sql .= generate_query_values($values, 'mempools.mempool_id');
+ $sql .= generate_query_values_and($values, 'mempools.mempool_id');
break;
case 'device_group_id':
case 'device_group':
$values = get_group_entities($value, 'device');
- $sql .= generate_query_values($values, 'mempools.device_id');
+ $sql .= generate_query_values_and($values, 'mempools.device_id');
break;
case "device":
case "device_id":
- $sql .= generate_query_values($value, 'mempools.device_id');
+ $sql .= generate_query_values_and($value, 'mempools.device_id');
break;
case "descr":
case "mempool_descr";
- $sql .= generate_query_values($value, 'mempool_descr', '%LIKE%');
+ $sql .= generate_query_values_and($value, 'mempool_descr', '%LIKE%');
break;
}
}
diff --git a/html/includes/entities/oid_entry.inc.php b/html/includes/entities/oid_entry.inc.php
index 41228af8..194170e8 100644
--- a/html/includes/entities/oid_entry.inc.php
+++ b/html/includes/entities/oid_entry.inc.php
@@ -6,15 +6,14 @@
*
* @package observium
* @subpackage web
- * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2021 Observium Limited
+ * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2022 Observium Limited
*
*/
function generate_oid_template_link($entry)
{
$url = generate_url(array('page' => 'customoid', 'oid_id' => $entry['oid_id']));
- $link = '
'.$entry['oid_descr'].' ';
- return $link;
+ return '
'.$entry['oid_descr'].' ';
}
function build_oid_query($vars)
@@ -33,21 +32,21 @@ function build_oid_query($vars)
case "oid_descr":
case "oid":
case "oid_name":
- $sql .= generate_query_values($value, $var);
+ $sql .= generate_query_values_and($value, $var);
break;
case "group":
case "group_id":
$values = get_group_entities($value);
- $sql .= generate_query_values($values, 'oid_entry_id');
+ $sql .= generate_query_values_and($values, 'oid_entry_id');
break;
case 'device_group_id':
case 'device_group':
$values = get_group_entities($value, 'device');
- $sql .= generate_query_values($values, 'oids_entries.device_id');
+ $sql .= generate_query_values_and($values, 'oids_entries.device_id');
break;
case "device":
case "device_id":
- $sql .= generate_query_values($value, 'oids_entries.device_id');
+ $sql .= generate_query_values_and($value, 'oids_entries.device_id');
break;
}
}
@@ -97,7 +96,7 @@ function print_oid_table_header($vars, $entries)
$cols['event'] = array('Event', 'style="width: 60px;"');
if ($entries[0]['oid_autodiscover'] == '0' && $vars['page'] === "customoid") {
- $cols['actions'] = array('', 'style="width: 40px;"'); echo "derp";
+ $cols['actions'] = array('', 'style="width: 40px;"');
}
echo get_table_header($cols, $vars);
@@ -112,7 +111,6 @@ function print_oid_table($vars)
$entries = dbFetchRows($sql);
$count = count($entries);
-
if (count($entries)) {
echo generate_box_open();
diff --git a/html/includes/entities/p2pradio.inc.php b/html/includes/entities/p2pradio.inc.php
index b6dcdb8c..dc1b9da5 100644
--- a/html/includes/entities/p2pradio.inc.php
+++ b/html/includes/entities/p2pradio.inc.php
@@ -6,7 +6,7 @@
*
* @package observium
* @subpackage web
- * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2021 Observium Limited
+ * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2022 Observium Limited
*
*/
@@ -23,16 +23,16 @@ function generate_p2pradio_query($vars)
case "group":
case "group_id":
$values = get_group_entities($value);
- $sql .= generate_query_values($values, 'radio_id');
+ $sql .= generate_query_values_and($values, 'radio_id');
break;
case 'device_group_id':
case 'device_group':
$values = get_group_entities($value, 'device');
- $sql .= generate_query_values($values, 'p2p_radios.device_id');
+ $sql .= generate_query_values_and($values, 'p2p_radios.device_id');
break;
case "device":
case "device_id":
- $sql .= generate_query_values($value, 'device_id');
+ $sql .= generate_query_values_and($value, 'device_id');
break;
}
}
diff --git a/html/includes/entities/port.inc.php b/html/includes/entities/port.inc.php
index bbbb2818..f91eb7d6 100644
--- a/html/includes/entities/port.inc.php
+++ b/html/includes/entities/port.inc.php
@@ -6,7 +6,7 @@
*
* @package observium
* @subpackage web
- * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2021 Observium Limited
+ * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2022 Observium Limited
*
*/
@@ -14,7 +14,7 @@
* Build ports WHERE array
*
* This function returns an array of "WHERE" statements from a $vars array.
- * The returned array can be implode()d and used on the ports table.
+ * The returned array can be imploded and used on the ports table.
* Originally extracted from the /ports/ page
*
* @param array $vars
@@ -27,20 +27,20 @@ function build_ports_where_array($vars) {
if (!safe_empty($value)) {
switch ($var) {
case 'location':
- $where[] = generate_query_values($value, $var);
+ $where[] = generate_query_values_and($value, $var);
break;
case 'device_id':
- $where[] = generate_query_values($value, 'ports.device_id');
+ $where[] = generate_query_values_and($value, 'ports.device_id');
break;
case 'group':
case 'group_id':
$values = get_group_entities($value);
- $where[] = generate_query_values($values, 'ports.port_id');
+ $where[] = generate_query_values_and($values, 'ports.port_id');
break;
case 'device_group_id':
case 'device_group':
$values = get_group_entities($value, 'device');
- $where[] = generate_query_values($values, 'ports.device_id');
+ $where[] = generate_query_values_and($values, 'ports.device_id');
break;
case 'disable':
$var = 'disabled';
@@ -49,25 +49,26 @@ function build_ports_where_array($vars) {
case 'ignore':
case 'ifSpeed':
case 'ifType':
+ case 'ifVlan':
case 'port_id':
- $where[] = generate_query_values($value, 'ports.'.$var);
+ $where[] = generate_query_values_and($value, 'ports.'.$var);
break;
case 'hostname':
case 'ifAlias':
case 'ifDescr': // FIXME, probably better always use port_label instead ifDescr for search
- $where[] = generate_query_values($value, $var, '%LIKE%');
+ $where[] = generate_query_values_and($value, $var, '%LIKE%');
break;
case 'label':
case 'port_label':
- $where[] = generate_query_values($value, 'port_label', '%LIKE%');
+ $where[] = generate_query_values_and($value, 'port_label', '%LIKE%');
break;
case 'mac':
case 'ifPhysAddress':
$value = str_replace([ '.', '-', ':' ], '', $value);
- $where[] = generate_query_values($value, 'ifPhysAddress', '%LIKE%');
+ $where[] = generate_query_values_and($value, 'ifPhysAddress', '%LIKE%');
break;
case 'port_descr_type':
- $where[] = generate_query_values($value, $var, 'LIKE');
+ $where[] = generate_query_values_and($value, $var, 'LIKE');
break;
case 'errors':
if (get_var_true($value)) {
@@ -88,13 +89,13 @@ function build_ports_where_array($vars) {
foreach ((array)$value as $state) {
if ($state === "down") {
$state_where[] = '`ifAdminStatus` = "up" AND `ifOperStatus` IN ("lowerLayerDown", "down")';
- //$state_where[] = generate_query_values('up', 'ifAdminStatus', NULL, FALSE) . generate_query_values(['down', 'lowerLayerDown'], 'ifOperStatus');
+ //$state_where[] = generate_query_values_ng('up', 'ifAdminStatus') . generate_query_values_and(['down', 'lowerLayerDown'], 'ifOperStatus');
} elseif ($state === "up") {
$state_where[] = '`ifAdminStatus` = "up" AND `ifOperStatus` IN ("up", "testing", "monitoring")';
- //$state_where[] = generate_query_values('up', 'ifAdminStatus', NULL, FALSE) . generate_query_values(['up', 'testing', 'monitoring'], 'ifOperStatus');
+ //$state_where[] = generate_query_values_ng('up', 'ifAdminStatus') . generate_query_values_and(['up', 'testing', 'monitoring'], 'ifOperStatus');
} elseif ($state === "admindown" || $state === "shutdown") {
$state_where[] = '`ifAdminStatus` = "down"';
- //$state_where[] = generate_query_values('down', 'ifAdminStatus', NULL, FALSE);
+ //$state_where[] = generate_query_values_ng('down', 'ifAdminStatus');
}
}
switch (count($state_where)) {
@@ -110,12 +111,12 @@ function build_ports_where_array($vars) {
break;
case 'cbqos':
if ($value && $value !== 'no') {
- $where[] = generate_query_values($GLOBALS['cache']['ports']['cbqos'], 'ports.port_id');
+ $where[] = generate_query_values_and($GLOBALS['cache']['ports']['cbqos'], 'ports.port_id');
}
break;
case 'mac_accounting':
if ($value && $value !== 'no') {
- $where[] = generate_query_values($GLOBALS['cache']['ports']['mac_accounting'], 'ports.port_id');
+ $where[] = generate_query_values_and($GLOBALS['cache']['ports']['mac_accounting'], 'ports.port_id');
}
break;
}
@@ -194,24 +195,26 @@ function generate_port_popup($port, $text = NULL, $type = NULL)
$content = generate_device_popup_header($port);
$content .= generate_port_popup_header($port);
- $content .= '
';
- //$content .= generate_box_open(array('body-style' => 'width: 700px;'));
- $graph_array['type'] = $port['graph_type'];
- $graph_array['legend'] = "yes";
- $graph_array['height'] = "100";
- $graph_array['width'] = "275";
- $graph_array['to'] = $time['now'];
- $graph_array['from'] = $time['day'];
- $graph_array['id'] = $port['port_id'];
- $content .= generate_graph_tag($graph_array);
- $graph_array['from'] = $time['week'];
- $content .= generate_graph_tag($graph_array);
- $graph_array['from'] = $time['month'];
- $content .= generate_graph_tag($graph_array);
- $graph_array['from'] = $time['year'];
- $content .= generate_graph_tag($graph_array);
- $content .= "
";
- //$content .= generate_box_close();
+ if($type != "none") {
+ $content .= '
';
+ //$content .= generate_box_open(array('body-style' => 'width: 700px;'));
+ $graph_array['type'] = $port['graph_type'];
+ $graph_array['legend'] = "yes";
+ $graph_array['height'] = "100";
+ $graph_array['width'] = "275";
+ $graph_array['to'] = $time['now'];
+ $graph_array['from'] = $time['day'];
+ $graph_array['id'] = $port['port_id'];
+ $content .= generate_graph_tag($graph_array);
+ $graph_array['from'] = $time['week'];
+ $content .= generate_graph_tag($graph_array);
+ $graph_array['from'] = $time['month'];
+ $content .= generate_graph_tag($graph_array);
+ $graph_array['from'] = $time['year'];
+ $content .= generate_graph_tag($graph_array);
+ $content .= "
";
+ //$content .= generate_box_close();
+ }
return $content;
}
@@ -454,7 +457,7 @@ function generate_port_row($port, $vars = array())
if (!isset($cache['ports_option']['ipv4_addresses']) || in_array($port['port_id'], $cache['ports_option']['ipv4_addresses'])) {
$sql = "SELECT * FROM `ipv4_addresses` WHERE `port_id` = ?";
// Do not exclude IPv4 link-local
- $sql .= generate_query_values(array_diff($ignore_type, [ 'link-local' ]), 'ipv4_type', '!='); // Do not show ignored ip types
+ $sql .= generate_query_values_and(array_diff($ignore_type, [ 'link-local' ]), 'ipv4_type', '!='); // Do not show ignored ip types
foreach (dbFetchRows($sql, array($port['port_id'])) as $ip)
{
$string .= $break . generate_popup_link('ip', $ip['ipv4_address'].'/'.$ip['ipv4_prefixlen'], NULL, 'small');
@@ -464,7 +467,7 @@ function generate_port_row($port, $vars = array())
if (!isset($cache['ports_option']['ipv6_addresses']) || in_array($port['port_id'], $cache['ports_option']['ipv6_addresses']))
{
$sql = "SELECT * FROM `ipv6_addresses` WHERE `port_id` = ?";
- $sql .= generate_query_values($ignore_type, 'ipv6_type', '!='); // Do not show ignored ip types
+ $sql .= generate_query_values_and($ignore_type, 'ipv6_type', '!='); // Do not show ignored ip types
foreach (dbFetchRows($sql, array($port['port_id'])) as $ip6)
{
$string .= $break . generate_popup_link('ip', $ip6['ipv6_address'].'/'.$ip6['ipv6_prefixlen'], NULL, 'small');
diff --git a/html/includes/entities/printersupply.inc.php b/html/includes/entities/printersupply.inc.php
index 34ed790e..da767f67 100644
--- a/html/includes/entities/printersupply.inc.php
+++ b/html/includes/entities/printersupply.inc.php
@@ -6,7 +6,7 @@
*
* @package observium
* @subpackage web
- * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2021 Observium Limited
+ * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2022 Observium Limited
*
*/
@@ -23,28 +23,28 @@ function build_printersupplies_query($vars)
case "group":
case "group_id":
$values = get_group_entities($value);
- $sql .= generate_query_values($values, 'printersupplies.supply_id');
+ $sql .= generate_query_values_and($values, 'printersupplies.supply_id');
break;
case 'device_group_id':
case 'device_group':
$values = get_group_entities($value, 'device');
- $sql .= generate_query_values($values, 'printersupplies.device_id');
+ $sql .= generate_query_values_and($values, 'printersupplies.device_id');
break;
case "device":
case "device_id":
- $sql .= generate_query_values($value, 'printersupplies.device_id');
+ $sql .= generate_query_values_and($value, 'printersupplies.device_id');
break;
case "supply":
case "supply_type";
- $sql .= generate_query_values($value, 'printersupplies.supply_type');
+ $sql .= generate_query_values_and($value, 'printersupplies.supply_type');
break;
case "colour":
case "supply_colour";
- $sql .= generate_query_values($value, 'supply_colour');
+ $sql .= generate_query_values_and($value, 'supply_colour');
break;
case "descr":
case "supply_descr";
- $sql .= generate_query_values($value, 'supply_descr', '%LIKE%');
+ $sql .= generate_query_values_and($value, 'supply_descr', '%LIKE%');
break;
}
}
diff --git a/html/includes/entities/processor.inc.php b/html/includes/entities/processor.inc.php
index 284ec001..843e920e 100644
--- a/html/includes/entities/processor.inc.php
+++ b/html/includes/entities/processor.inc.php
@@ -6,7 +6,7 @@
*
* @package observium
* @subpackage web
- * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2021 Observium Limited
+ * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2022 Observium Limited
*
*/
@@ -27,20 +27,20 @@ function generate_processor_query($vars)
case "group":
case "group_id":
$values = get_group_entities($value);
- $sql .= generate_query_values($values, 'processor_id');
+ $sql .= generate_query_values_and($values, 'processor_id');
break;
case 'device_group_id':
case 'device_group':
$values = get_group_entities($value, 'device');
- $sql .= generate_query_values($values, 'processors.device_id');
+ $sql .= generate_query_values_and($values, 'processors.device_id');
break;
case "device":
case "device_id":
- $sql .= generate_query_values($value, 'processors.device_id');
+ $sql .= generate_query_values_and($value, 'processors.device_id');
break;
case "descr":
case "processor_descr";
- $sql .= generate_query_values($value, 'processor_descr', '%LIKE%');
+ $sql .= generate_query_values_and($value, 'processor_descr', '%LIKE%');
break;
}
}
diff --git a/html/includes/entities/pseudowire.inc.php b/html/includes/entities/pseudowire.inc.php
index a62575ac..ea80ae50 100644
--- a/html/includes/entities/pseudowire.inc.php
+++ b/html/includes/entities/pseudowire.inc.php
@@ -1,13 +1,12 @@
$value]);
+ $sql .= build_entity_measured_where('sensor', [ 'measured_state' => $value ]);
break;
case "metric":
// old metric param not allow array
@@ -153,19 +153,19 @@ function build_sensor_query($vars, $query_count = FALSE) {
}
case 'class':
case "sensor_class":
- $sql .= generate_query_values($value, 'sensor_class');
+ $sql .= generate_query_values_and($value, 'sensor_class');
break;
case "descr":
case "sensor_descr":
- $sql .= generate_query_values($value, 'sensors.sensor_descr', '%LIKE%');
+ $sql .= generate_query_values_and($value, 'sensors.sensor_descr', '%LIKE%');
break;
case "type":
case "sensor_type":
- $sql .= generate_query_values($value, 'sensor_type', '%LIKE%');
+ $sql .= generate_query_values_and($value, 'sensor_type', '%LIKE%');
break;
case "event":
case "sensor_event":
- $sql .= generate_query_values($value, 'sensor_event');
+ $sql .= generate_query_values_and($value, 'sensor_event');
break;
}
}
@@ -304,6 +304,126 @@ function print_sensor_table_header($vars) {
echo('
' . PHP_EOL);
}
+function generate_sensor_line($sensor, $vars) {
+ global $config;
+
+ humanize_sensor($sensor);
+
+ $graph_array = [];
+ $graph_array['to'] = get_time();
+ $graph_array['id'] = $sensor['sensor_id'];
+ $graph_array['type'] = "sensor_graph";
+ $graph_array['width'] = 80;
+ $graph_array['height'] = 20;
+ $graph_array['bg'] = 'ffffff00';
+ $graph_array['from'] = get_time('day');
+ $graph_array['style'] = 'margin-top: 5px';
+
+ if ($sensor['sensor_event'] && is_numeric($sensor['sensor_value'])) {
+ $mini_graph = generate_graph_tag($graph_array);
+ } else {
+ // Do not show "Draw Error" minigraph
+ $mini_graph = '';
+ }
+
+ /*
+ $sensor_tooltip = $sensor['event_descr'];
+ // Append value in alternative units to tooltip
+ if (isset($config['sensor_types'][$sensor['sensor_class']]['alt_units'])) {
+ foreach (value_to_units($sensor['sensor_value'],
+ $config['sensor_types'][$sensor['sensor_class']]['symbol'],
+ $sensor['sensor_class'],
+ $config['sensor_types'][$sensor['sensor_class']]['alt_units']) as $unit => $unit_value) {
+ if (is_numeric($unit_value)) { $sensor_tooltip .= " {$unit_value}{$unit}"; }
+ }
+ }
+ */
+
+ //r($sensor);
+ $text = '' . $sensor['human_value'] . $sensor['sensor_symbol'] . ' ';
+
+ //$line = ' ';
+ $line = '';
+ //$btn_class = str_replace('label', 'btn', $sensor['event_class']); // FIXME Need button-outline-* class from bs4+
+ if (get_var_true($vars['compact'])) {
+ $line .= '';
+ } else {
+ // fixed button size for keep size without images
+ $line .= '';
+ }
+
+ $icon = get_icon($config['sensor_types'][$sensor['sensor_class']]['icon']);
+ if ($sensor['sensor_class'] === 'power' || $sensor['sensor_class'] === 'dbm') {
+ if (str_icontains_array($sensor['sensor_descr'], [ ' Rx', 'Rx ', 'Receive' ])) {
+ // rx
+ $icon = get_icon('glyphicon-arrow-down text-primary').' ';
+ } elseif (str_icontains_array($sensor['sensor_descr'], [ ' Tx', 'Tx ', 'Trans' ])) {
+ // tx
+ $icon = get_icon('glyphicon-arrow-up text-danger').' ';
+ }
+ }
+
+ $line .= $icon.' ';
+ $line .= generate_entity_link('sensor', $sensor, $text, NULL, FALSE);
+ if (!get_var_true($vars['compact'])) {
+ $line .= ' ' .generate_entity_link('sensor', $sensor, $mini_graph, NULL, FALSE);
+ }
+ //$line .= '' . generate_tooltip_link('', $sensor['human_value'] . $sensor['sensor_symbol'], $sensor_tooltip, $sensor['event_class']) . ' ';
+ $line .= ' ';
+ $line .= ' ';
+
+ //r($line);
+ return $line;
+}
+
+function get_compact_sensors_line($measured_class, $entry, $vars) {
+
+ // order dom sensors always by temperature, voltage, current, dbm, power
+ $order = [];
+ if (safe_count($entry) > 0) {
+ $classes = array_keys($entry);
+ //r($types);
+ if ($measured_class === 'port') {
+ // always display all classes for dom (also if not exist)
+ $order = [ 'temperature', 'voltage', 'current', /* 'dbm', 'power' */ ];
+ // or dbm or power
+ if (in_array('dbm', $classes, TRUE)) {
+ $order[] = 'dbm';
+ } elseif (in_array('power', $classes, TRUE)) {
+ $order[] = 'power';
+ } else {
+ $order[] = 'dbm';
+ }
+ } else {
+ $order = array_intersect([ 'temperature', 'voltage', 'current', 'dbm', 'power' ], $classes);
+ }
+ $order = array_merge($order, array_diff($classes, $order));
+ //r($order);
+ }
+ $line = '';
+ foreach ($order as $class) {
+ if (!isset($entry[$class])) {
+ // Add empty columns for port entities (for correct align)
+ $line .= ' ';
+ }
+
+ foreach ($entry[$class] as $sensor) {
+ /*
+ $sensor['sensor_descr'] = trim(str_ireplace($rename_from, '', $sensor['sensor_descr']), ":- \t\n\r\0\x0B");
+ if (empty($sensor['sensor_descr'])) {
+ // Some time sensor descriptions equals to entity name
+ $sensor['sensor_descr'] = nicecase($sensor['sensor_class']);
+ }
+ */
+
+ // Compact view per entity/lane
+ $line .= generate_sensor_line($sensor, $vars);
+ }
+ }
+
+ return $line;
+}
+
function print_sensor_row($sensor, $vars)
{
echo generate_sensor_row($sensor, $vars);
@@ -404,7 +524,7 @@ function generate_sensor_row($sensor, $vars)
$sensor['sensor_class'],
$config['sensor_types'][$sensor['sensor_class']]['alt_units']) as $unit => $unit_value)
{
- if (is_numeric($unit_value)) { $sensor_tooltip .= " ${unit_value}${unit}"; }
+ if (is_numeric($unit_value)) { $sensor_tooltip .= " {$unit_value}{$unit}"; }
}
}
diff --git a/html/includes/entities/sla.inc.php b/html/includes/entities/sla.inc.php
index 0a6cd1b5..408dc585 100644
--- a/html/includes/entities/sla.inc.php
+++ b/html/includes/entities/sla.inc.php
@@ -6,7 +6,7 @@
*
* @package observium
* @subpackage web
- * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2020 Observium Limited
+ * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2022 Observium Limited
*
*/
@@ -23,38 +23,38 @@ function generate_sla_query($vars)
case "group":
case "group_id":
$values = get_group_entities($value);
- $sql .= generate_query_values($values, 'slas.sla_id');
+ $sql .= generate_query_values_and($values, 'slas.sla_id');
break;
case 'device_group_id':
case 'device_group':
$values = get_group_entities($value, 'device');
- $sql .= generate_query_values($values, 'storage.device_id');
+ $sql .= generate_query_values_and($values, 'storage.device_id');
break;
case "device":
case "device_id":
- $sql .= generate_query_values($value, 'slas.device_id');
+ $sql .= generate_query_values_and($value, 'slas.device_id');
break;
case "id":
case "sla_id":
- $sql .= generate_query_values($value, 'slas.sla_id');
+ $sql .= generate_query_values_and($value, 'slas.sla_id');
break;
case "owner":
- $sql .= generate_query_values($value, 'slas.sla_owner');
+ $sql .= generate_query_values_and($value, 'slas.sla_owner');
break;
case "target":
case "sla_target":
- $sql .= generate_query_values($value, 'slas.sla_target', '%LIKE%');
+ $sql .= generate_query_values_and($value, 'slas.sla_target', '%LIKE%');
break;
case "sla_tag":
- $sql .= generate_query_values($value, 'slas.sla_tag');
+ $sql .= generate_query_values_and($value, 'slas.sla_tag');
break;
case "rtt_type":
case "rtt_sense":
- $sql .= generate_query_values($value, 'slas.'.$var);
+ $sql .= generate_query_values_and($value, 'slas.'.$var);
break;
case "event":
case "rtt_event":
- $sql .= generate_query_values($value, 'slas.rtt_event');
+ $sql .= generate_query_values_and($value, 'slas.rtt_event');
break;
}
}
diff --git a/html/includes/entities/status.inc.php b/html/includes/entities/status.inc.php
index fff4f060..b373688d 100644
--- a/html/includes/entities/status.inc.php
+++ b/html/includes/entities/status.inc.php
@@ -6,7 +6,7 @@
*
* @package observium
* @subpackage web
- * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2021 Observium Limited
+ * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2022 Observium Limited
*
*/
@@ -74,26 +74,26 @@ function generate_status_query($vars, $query_count = FALSE) {
case "group":
case "group_id":
$values = get_group_entities($value, 'status');
- $sql .= generate_query_values($values, 'status.status_id');
+ $sql .= generate_query_values_and($values, 'status.status_id');
break;
case 'device_group_id':
case 'device_group':
$values = get_group_entities($value, 'device');
- $sql .= generate_query_values($values, 'status.device_id');
+ $sql .= generate_query_values_and($values, 'status.device_id');
break;
case "device":
case "device_id":
- $sql .= generate_query_values($value, 'status.device_id');
+ $sql .= generate_query_values_and($value, 'status.device_id');
break;
case "id":
case 'status_id':
- $sql .= generate_query_values($value, 'status.status_id');
+ $sql .= generate_query_values_and($value, 'status.status_id');
break;
case "entity_id":
- $sql .= generate_query_values($value, 'measured_entity');
+ $sql .= generate_query_values_and($value, 'measured_entity');
break;
case "entity_type":
- $sql .= generate_query_values($value, 'measured_class');
+ $sql .= generate_query_values_and($value, 'measured_class');
break;
case 'entity_state':
case "measured_state":
@@ -101,23 +101,23 @@ function generate_status_query($vars, $query_count = FALSE) {
break;
case "class":
case 'entPhysicalClass':
- $sql .= generate_query_values($value, 'entPhysicalClass');
+ $sql .= generate_query_values_and($value, 'entPhysicalClass');
break;
case "event":
case "status_event":
- $sql .= generate_query_values($value, 'status_event');
+ $sql .= generate_query_values_and($value, 'status_event');
break;
case "status":
case "status_name":
- $sql .= generate_query_values($value, 'status_name');
+ $sql .= generate_query_values_and($value, 'status_name');
break;
case "descr":
case "status_descr":
- $sql .= generate_query_values($value, 'status_descr', '%LIKE%');
+ $sql .= generate_query_values_and($value, 'status_descr', '%LIKE%');
break;
case 'type':
case "status_type":
- $sql .= generate_query_values($value, 'status_type', '%LIKE%');
+ $sql .= generate_query_values_and($value, 'status_type', '%LIKE%');
break;
}
}
@@ -323,7 +323,7 @@ function generate_status_row($status, $vars) {
$row .= '' . generate_entity_link('status', $status, $mini_graph, NULL, FALSE) . ' ';
if ($vars['tab'] !== "overview")
{
- $row .= '' . generate_tooltip_link('', format_uptime((get_time() - $status['status_last_change']), 'short-2') . ' ago', format_unixtime($status['status_last_change'])) . '
+ $row .= '' . generate_tooltip_time($status['status_last_change'], 'ago') . '
' . generate_tooltip_link('', $status['status_event'], $status['event_descr'], $status['event_class']) . ' ';
$table_cols++;
$table_cols++;
diff --git a/html/includes/entities/storage.inc.php b/html/includes/entities/storage.inc.php
index 8c5aa73c..5621acbc 100644
--- a/html/includes/entities/storage.inc.php
+++ b/html/includes/entities/storage.inc.php
@@ -6,7 +6,7 @@
*
* @package observium
* @subpackage web
- * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2021 Observium Limited
+ * @copyright (C) 2006-2013 Adam Armstrong, (C) 2013-2022 Observium Limited
*
*/
@@ -30,23 +30,23 @@ function generate_storage_query($vars)
case "group":
case "group_id":
$values = get_group_entities($value);
- $sql .= generate_query_values($values, 'storage.storage_id');
+ $sql .= generate_query_values_and($values, 'storage.storage_id');
break;
case 'device_group_id':
case 'device_group':
$values = get_group_entities($value, 'device');
- $sql .= generate_query_values($values, 'storage.device_id');
+ $sql .= generate_query_values_and($values, 'storage.device_id');
break;
case "device":
case "device_id":
- $sql .= generate_query_values($value, 'storage.device_id');
+ $sql .= generate_query_values_and($value, 'storage.device_id');
break;
case "descr":
case "storage_descr";
- $sql .= generate_query_values($value, 'storage_descr', '%LIKE%');
+ $sql .= generate_query_values_and($value, 'storage_descr', '%LIKE%');
break;
case 'ignored':
- $sql .= generate_query_values($value, 'storage.storage_ignore');
+ $sql .= generate_query_values_and($value, 'storage.storage_ignore');
break;
}
}
@@ -92,8 +92,7 @@ function generate_storage_query($vars)
}
-function print_storage_table($vars)
-{
+function print_storage_table($vars) {
global $cache, $config;
@@ -101,13 +100,16 @@ function print_storage_table($vars)
$sql = generate_storage_query($vars);
- $storages = array();
+ $storages = [];
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'];
+
+ // FIXME. Should be part of humanize_storage()
+ $storage['human_type'] = array_preg_replace($config['rewrites']['storage_type_regexp'], $storage['storage_type']);
$storages[] = $storage;
}
}
@@ -152,19 +154,19 @@ function print_storage_table_header($vars)
}
echo('' . PHP_EOL);
- $cols = array(
- array(NULL, 'class="state-marker"'),
- 'device' => array('Device', 'style="width: 250px;"'),
- 'mountpoint' => array('Mountpoint'),
- 'size' => array('Size', 'style="width: 100px;"'),
- 'used' => array('Used', 'style="width: 100px;"'),
- 'free' => array('Free', 'style="width: 100px;"'),
- array('', 'style="width: 100px;"'),
- 'usage' => array('Usage %', 'style="width: 200px;"'),
- );
+ $cols = [
+ [ NULL, 'class="state-marker"' ],
+ 'device' => [ 'Device', 'style="width: 250px;"' ],
+ 'mountpoint' => [ 'Mountpoint' ],
+ 'fstype' => [ 'FS Type', 'style="width: 90px;"' ],
+ 'size' => [ 'Size', 'style="width: 100px;"' ],
+ 'used' => [ 'Used', 'style="width: 100px;"' ],
+ 'free' => [ 'Free', 'style="width: 100px;"' ],
+ [ '', 'style="width: 100px;"' ],
+ 'usage' => [ 'Usage %', 'style="width: 200px;"' ],
+ ];
- if ($vars['page'] === "device")
- {
+ if ($vars['page'] === "device") {
unset($cols['device']);
}
@@ -182,10 +184,10 @@ function generate_storage_row($storage, $vars) {
global $config;
- $table_cols = 8;
+ $table_cols = 9;
if ($vars['page'] !== "device" && $vars['popup'] != TRUE) { $table_cols++; } // Add a column for device.
- if(isset($vars['graph_type']) && $vars['graph_type'] == "perc")
+ if(isset($vars['graph_type']) && $vars['graph_type'] === "perc")
$graph_array = array();
$graph_array['to'] = $config['time']['now'];
@@ -225,6 +227,7 @@ function generate_storage_row($storage, $vars) {
if ($vars['page'] !== "device" && $vars['popup'] != TRUE) { $row .= '' . generate_device_link($storage) . ' '; }
$row .= ' '.generate_entity_link('storage', $storage).'
+ '.$storage['human_type'].'
'.$total.'
'.$used.'
'.$free.'
diff --git a/html/includes/entities/virtualmachine.inc.php b/html/includes/entities/virtualmachine.inc.php
index fb1aff92..a7c4f567 100644
--- a/html/includes/entities/virtualmachine.inc.php
+++ b/html/includes/entities/virtualmachine.inc.php
@@ -1,13 +1,12 @@
< / s c r i p t >
// javascript:alert("Hello world");/
//
+ //
+
+