Observium_CE/html/includes/graphs/application/shoutcast_multi_stats.inc.php

109 lines
3.9 KiB
PHP

<?php
/**
* Observium
*
* This file is part of Observium.
*
* @package observium
* @subpackage graphs
* @copyright (C) Adam Armstrong
*
*/
$unit_text = "ShoutCast Server";
$total_text = "Total of all ShoutCast Servers";
$nototal = 0;
// FIXME. Not compatible this way with get_rrd_path; as long as no advanced storage is used this will work
// Call get_rrd_path below instead of using $rrddir.
$$rrddir = $config['rrd_dir'] . "/" . $device['hostname'];
$files = [];
$i = 0;
$x = 0;
if ($handle = opendir($rrddir)) {
while (FALSE !== ($file = readdir($handle))) {
if ($file != "." && $file != ".." &&
str_starts($file, "app-shoutcast-" . $app['app_id'])) {
array_push($files, $file);
}
}
}
foreach ($files as $id => $file) {
$hostname = str_replace(['app-shoutcast-' . $app['app_id'] . '-', '.rrd'], '', $file);
[$host, $port] = explode('_', $hostname, 2);
$rrd_filenames[] = $rrddir . "/" . $file;
$rrd_list[$i]['filename'] = $rrddir . "/" . $file;
$rrd_list[$i]['descr'] = $host . ":" . $port;
$rrd_list[$i]['colour'] = $colour;
$i++;
}
include_once($config['html_dir'] . "/includes/graphs/common.inc.php");
if ($width > "500") {
$descr_len = 38;
} else {
$descr_len = 8;
$descr_len += round(($width - 250) / 8);
}
if ($width > "500") {
$rrd_options .= " COMMENT:\"" . substr(str_pad($unit_text, $descr_len + 2), 0, $descr_len + 2) . " Current Unique Average Peak\\n\"";
} else {
$rrd_options .= " COMMENT:\"" . substr(str_pad($unit_text, $descr_len + 5), 0, $descr_len + 5) . " Now Unique Average Peak\\n\"";
}
$stack = '';
foreach ($rrd_list as $rrd) {
$colours = (isset($rrd['colour']) ? $rrd['colour'] : "default");
$strlen = ((strlen($rrd['descr']) < $descr_len) ? ($descr_len - strlen($rrd['descr'])) : "0");
$descr = (isset($rrd['descr']) ? rrdtool_escape($rrd['descr'], $desc_len + $strlen) : "Unknown");
for ($z = 0; $z < $strlen; $z++) {
$descr .= " ";
}
if ($i) {
$stack = ":STACK";
}
$colour = $config['graph_colours'][$colours][$x];
$rrd_options .= " DEF:cur" . $x . "=" . $rrd['filename'] . ":current:AVERAGE";
$rrd_options .= " DEF:peak" . $x . "=" . $rrd['filename'] . ":peak:MAX";
$rrd_options .= " DEF:unique" . $x . "=" . $rrd['filename'] . ":unique:AVERAGE";
$rrd_options .= " VDEF:avg" . $x . "=cur" . $x . ",AVERAGE";
$rrd_options .= " AREA:cur" . $x . "#" . $colour . ":'" . $descr . "'$stack";
$rrd_options .= " GPRINT:cur" . $x . ":LAST:\"%6.2lf\"";
$rrd_options .= " GPRINT:unique" . $x . ":LAST:\"%6.2lf%s\"";
$rrd_options .= " GPRINT:avg" . $x . ":\"%6.2lf\"";
$rrd_options .= " GPRINT:peak" . $x . ":LAST:\"%6.2lf\"";
$rrd_options .= " COMMENT:\"\\n\"";
if ($x) {
$totcur .= ",cur" . $x . ",+";
$totpeak .= ",peak" . $x . ",+";
$totunique .= ",unique" . $x . ",+";
}
$x = (($x < safe_count($config['graph_colours'][$colours]) - 1) ? $x + 1 : 0);
//$x++;
}
if (!$nototal) {
$strlen = ((strlen($total_text) < $descr_len) ? ($descr_len - strlen($total_text)) : "0");
$descr = (isset($total_text) ? rrdtool_escape($total_text, $desc_len + $strlen) : "Total");
$colour = $config['graph_colours'][$colours][$x];
for ($z = 0; $z < $strlen; $z++) {
$descr .= " ";
}
$rrd_options .= " CDEF:totcur=cur0" . $totcur;
$rrd_options .= " CDEF:totunique=unique0" . $totunique;
$rrd_options .= " CDEF:totpeak=peak0" . $totpeak;
$rrd_options .= " VDEF:totavg=totcur,AVERAGE";
$rrd_options .= " LINE2:totcur#" . $colour . ":'" . $descr . "'";
$rrd_options .= " GPRINT:totcur:LAST:\"%6.2lf\"";
$rrd_options .= " GPRINT:totunique:LAST:\"%6.2lf%s\"";
$rrd_options .= " GPRINT:totavg:\"%6.2lf\"";
$rrd_options .= " GPRINT:totpeak:LAST:\"%6.2lf\"";
$rrd_options .= " COMMENT:\"\\n\"";
}
// EOF