' . PHP_EOL);
$cols = array(
array(NULL, 'class="state-marker"'),
'device' => array('Device', 'style="width: 200px;"'),
'virt_name' => array('Virtual'),
array('', 'style="width: 100px;"'),
'virt_ip' => array('Address', 'style="width: 250px;"'),
'virt_type' => array('Type', 'style="width: 250px;"'),
'virt_state' => array('Status', 'style="width: 250px;"'),
);
if ($vars['page'] == "device")
{
unset($cols['device']);
}
echo(get_table_header($cols, $vars));
echo('
' . PHP_EOL);
}
function get_customoid_by_id($oid_id) {
if (is_numeric($oid_id)) {
$oid = dbFetchRow('SELECT * FROM `oids` WHERE `oid_id` = ?', array($oid_id));
}
if (safe_count($oid)) {
return $oid;
}
return FALSE;
} // 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)
{
global $config;
$entity_type = $vars['entity_type'];
if (is_array($config['entities'][$entity_type]['graph']))
{
if (isset($config['entities'][$entity_type]['graph']['type']))
{
$graphs[] = $config['entities'][$entity_type]['graph'];
} else {
$graphs = $config['entities'][$entity_type]['graph'];
}
foreach($graphs as $graph_array)
{
//$graph_array = $config['entities'][$entity_type]['graph'];
// We can draw a graph for this type/metric pair!
foreach($graph_array as $key => $val)
{
// Check to see if we need to do any substitution
if (substr($val, 0, 1) == "@")
{
$nval = substr($val, 1);
$graph_array[$key] = $entity[$nval];
}
}
$graph_array['height'] = "100";
$graph_array['width'] = "323";
$content = '';
$content .= "
" . nicecase(str_replace("_", " ", $graph_array['type'])) . "
";
/*
$content = generate_box_open(array('title' => nicecase(str_replace("_", " ", $graph_array['type'])),
'body-style' => 'white-space: nowrap;'));
*/
foreach(array('day', 'month') as $period)
{
$graph_array['from'] = $config['time'][$period];
$content .= generate_graph_tag($graph_array);
}
$content .= "
";
//$content .= generate_box_close();
}
//r($content);
return $content;
}
}
function generate_entity_popup_header($entity, $vars)
{
$translate = entity_type_translate_array($vars['entity_type']);
$vars['popup'] = TRUE;
$vars['entity_icon'] = TRUE;
$contents = '';
switch($vars['entity_type'])
{
case "sensor":
$contents .= generate_box_open();
$contents .= '';
$contents .= generate_sensor_row($entity, $vars);
$contents .= '
';
$contents .= generate_box_close();
break;
case "toner":
case "printersupply":
case "supply":
$contents .= generate_box_open();
$contents .= '';
$contents .= generate_printersupplies_row($entity, $vars);
$contents .= '
';
$contents .= generate_box_close();
break;
case "bgp_peer":
if ($entity['peer_device_id'])
{
$peer_dev = device_by_id_cache($entity['peer_device_id']);
$peer_name = '
'.$peer_dev['hostname'].'';
}
else if ($entity['reverse_dns'])
{
$peer_name = '
' . $entity['reverse_dns'] . '';
}
$astext = 'AS'.$entity['human_remote_as'];
if ($entity['astext'])
{
$astext .= '
' . $entity['astext'] . '';
}
$astext .= '';
$contents .= generate_box_open();
$contents .= '
|
|
|
'.$peer_name.' |
'.$astext.' |
|
';
$contents .= generate_box_close();
break;
case "sla":
$contents .= generate_box_open();
$contents .= '';
$contents .= generate_sla_row($entity, $vars);
$contents .= '
';
$contents .= generate_box_close();
break;
case "processor":
$contents .= generate_box_open();
$contents .= '';
$contents .= generate_processor_row($entity, $vars);
$contents .= '
';
$contents .= generate_box_close();
break;
case "mempool":
$contents .= generate_box_open();
$contents .= '';
$contents .= generate_mempool_row($entity, $vars);
$contents .= '
';
$contents .= generate_box_close();
break;
case "p2pradio":
$contents .= generate_box_open();
$contents .= '';
$contents .= generate_p2pradio_row($entity, $vars);
$contents .= '
';
$contents .= generate_box_close();
break;
case "status":
$contents .= generate_box_open();
$contents .= '';
$contents .= generate_status_row($entity, $vars);
$contents .= '
';
$contents .= generate_box_close();
break;
case "counter":
$contents .= generate_box_open();
$contents .= '';
$contents .= generate_counter_row($entity, $vars);
$contents .= '
';
$contents .= generate_box_close();
break;
case "storage":
$contents .= generate_box_open();
$contents .= '';
$contents .= generate_storage_row($entity, $vars);
$contents .= '
';
$contents .= generate_box_close();
break;
case "netscalervsvr":
$contents .= generate_box_open();
$contents .= '';
$contents .= generate_netscalervsvr_row($entity, $vars);
$contents .= '
';
$contents .= generate_box_close();
break;
case "netscalersvc":
$contents .= generate_box_open();
$contents .= '';
$contents .= generate_netscalersvc_row($entity, $vars);
$contents .= '
';
$contents .= generate_box_close();
break;
case "netscalersvcgrpmem":
$contents .= generate_box_open();
$contents .= '';
$contents .= generate_netscalersvcmem_row($entity, $vars);
$contents .= '
';
$contents .= generate_box_close();
break;
default:
entity_rewrite($vars['entity_type'], $entity);
$contents = generate_box_open(). '
'.generate_box_close();
}
return $contents;
}
function generate_entity_popup($entity, $vars)
{
if (is_numeric($entity)) { $entity = get_entity_by_id_cache($vars['entity_type'], $entity); }
$device = device_by_id_cache($entity['device_id']);
$content = generate_device_popup_header($device);
$content .= generate_entity_popup_header($entity, $vars);
$content .= generate_entity_popup_graphs($entity, $vars);
return $content;
}
function generate_entity_popup_multi($entities, $vars)
{
// Note here limited only to one entity_type and one device_id
$count = count($entities);
// First element
$entity = array_shift($entities);
if (is_numeric($entity))
{
$entity = get_entity_by_id_cache($vars['entity_type'], $entity);
}
$device = device_by_id_cache($entity['device_id']);
$header = generate_entity_popup_header($entity, $vars);
if ($count > 1)
{
// Multiple entities graph
/// FIXME. Need add multi-graphs
$graphs = generate_entity_popup_graphs($entity, $vars);// This is incorrect, only first graph
} else {
// Single entity graph
$graphs = generate_entity_popup_graphs($entity, $vars);
}
// All other elements
foreach ($entities as $entity)
{
if (is_numeric($entity))
{
$entity = get_entity_by_id_cache($vars['entity_type'], $entity);
}
if ($entity['device_id'] != $device['device_id'])
{
// Skip if passed entity from different device
continue;
}
$header .= generate_entity_popup_header($entity, $vars);
//$graphs .= generate_entity_popup_graphs($entity, $vars); // Currently disabled, need multi graph
}
$content = generate_device_popup_header($device);
$content .= $header;
$content .= $graphs;
return $content;
}
// Measured specific functions
function build_entity_measured_where($entity_type, $vars)
{
$entity_array = entity_type_translate_array($entity_type);
$column_measured_id = $entity_array['table_fields']['measured_id'];
$column_measured_type = $entity_array['table_fields']['measured_type'];
$measure_array = [];
// Build query
foreach($vars as $var => $value)
{
if (!is_array($value)) { $value = explode(',', $value); }
switch ($var)
{
case 'measured_group':
foreach (dbFetchColumn('SELECT DISTINCT `'.$column_measured_type.'` FROM `'.$entity_array['table'].'` WHERE `'.$entity_array['table_fields']['deleted'].'` = ?', [0]) as $measured_type)
{
if (!$measured_type) { continue; }
$entities = get_group_entities($value, $measured_type);
$measure_sql = '';
switch ($measured_type)
{
case 'port':
case 'printersupply':
$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; }
}
break;
case 'measured_state':
// UP / DOWN / STUTDOWN / NONE states
//$value = (array)$value;
// Select all without measured entities
if (in_array('none', $value)) {
$measure_array[] = generate_query_values_ng(1, $column_measured_id);
$value = array_diff($value, [ 'none' ]);
}
if (count($value))
{
// Limit statuses with measured entities
foreach (dbFetchColumn('SELECT DISTINCT `'.$column_measured_type.'` FROM `'.$entity_array['table'].'` WHERE `'.$entity_array['table_fields']['deleted'].'` = ?', [0]) as $measured_type)
{
if (!$measured_type) { continue; }
$measure_sql = '';
$measure_entities = dbFetchColumn('SELECT DISTINCT `'.$column_measured_id.'` FROM `'.$entity_array['table'].'` WHERE `'.$column_measured_type.'` = ? AND `'.$entity_array['table_fields']['deleted'].'` = ?', [$measured_type, 0]);
switch ($measured_type)
{
case 'port':
$where_array = build_ports_where_array(['port_id' => $measure_entities, 'state' => $value]);
$entity_sql = 'SELECT `port_id` FROM `ports` WHERE 1 ';
$entity_sql .= implode('', $where_array);
$entities = dbFetchColumn($entity_sql);
//$entities = dbFetchColumn($entity_sql, NULL, TRUE);
//r($entities);
$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;
}
if ($measure_sql) { $measure_array[] = $measure_sql; }
}
}
break;
}
}
switch (count($measure_array))
{
case 0:
$sql = '';
break;
case 1:
$sql = ' AND ' . $measure_array[0];
break;
default:
$sql = ' AND (('.implode(') OR (', $measure_array).'))';
}
return $sql;
}
// EOF