mirror of
https://port.numenaute.org/aleajactaest/khanat-opennel-code.git
synced 2024-11-14 19:49:55 +00:00
9bc219ee14
About Shared Library (shared) and Module Library (module) type of cmake target INSTALL command has different behaviour for ARCHIVE LIBRARY RUNTIME depending on the platform
744 lines
22 KiB
PHP
744 lines
22 KiB
PHP
<?php
|
|
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
|
// Copyright (C) 2010 Winch Gate Property Limited
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU Affero General Public License as
|
|
// published by the Free Software Foundation, either version 3 of the
|
|
// License, or (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU Affero General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU Affero General Public License
|
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
global $HTTP_POST_VARS, $HTTP_GET_VARS;
|
|
|
|
include('authenticate.php');
|
|
|
|
|
|
include('display_view.php');
|
|
|
|
|
|
if (isset($reset_filters))
|
|
{
|
|
//$filter_shard = "";
|
|
$filter_server = "";
|
|
$filter_service = "";
|
|
$filter_entity = "";
|
|
}
|
|
|
|
$HTTP_VARS = array_merge($HTTP_POST_VARS, $HTTP_GET_VARS);
|
|
|
|
unset($sel);
|
|
unset($tid);
|
|
unset($tname);
|
|
unset($updateResult);
|
|
unset($overriden);
|
|
|
|
if (isset($active_player) && $active_player != "")
|
|
{
|
|
$arr = explode(',', $active_player);
|
|
foreach($arr as $player)
|
|
{
|
|
$pl = explode(' ', $player);
|
|
nel_query("*.*.EGS.loadPlayer ".$pl[0], $dummyResult);
|
|
nel_query("*.*.EGS.activePlayer ".$pl[0]." ".$pl[1], $dummyResult);
|
|
}
|
|
}
|
|
|
|
if (isset($current_tid) && $current_tid != "")
|
|
$tid = $current_tid;
|
|
|
|
$updatedShardAnnot = false;
|
|
|
|
// select table and display name
|
|
foreach ($HTTP_VARS as $var => $value)
|
|
{
|
|
if (strncmp($var, "selectTid_", 10) == 0)
|
|
$tid = (int)substr($var, 10);
|
|
else if (strncmp($var, "upd_annot_button_", 17) == 0)
|
|
{
|
|
$shard = substr($var, 17);
|
|
|
|
if ($shardLockState[$shard]['lock_state'] == 1)
|
|
{
|
|
$annot = $GLOBALS["upd_annot_text_".$shard];
|
|
|
|
$result = sqlquery("SELECT shard FROM shard_annotation WHERE shard='$shard'");
|
|
if (!$result || sqlnumrows($result) == 0)
|
|
sqlquery("INSERT INTO shard_annotation SET shard='$shard'");
|
|
|
|
sqlquery("UPDATE shard_annotation SET annotation='$annot', user='$uid', post_date=NOW() WHERE shard='$shard'");
|
|
|
|
$updatedShardAnnot = true;
|
|
}
|
|
}
|
|
else if (strncmp($var, "upd_lock_button_", 16) == 0)
|
|
{
|
|
$shard = substr($var, 16);
|
|
|
|
if ($shardLockState[$shard]['lock_state'] != 1)
|
|
{
|
|
$result = sqlquery("SELECT shard FROM shard_annotation WHERE shard='$shard'");
|
|
|
|
if (!$result || sqlnumrows($result) == 0)
|
|
sqlquery("INSERT INTO shard_annotation SET shard='$shard', annotation='locked by $admlogin', user='$uid', post_date=NOW()");
|
|
|
|
sqlquery("UPDATE shard_annotation SET lock_user='$uid', lock_ip='$REMOTE_ADDR', lock_date=NOW() WHERE shard='$shard'");
|
|
|
|
$updatedShardAnnot = true;
|
|
}
|
|
}
|
|
else if (strncmp($var, "upd_unlock_button_", 18) == 0)
|
|
{
|
|
$shard = substr($var, 18);
|
|
|
|
if ($shardLockState[$shard]['lock_state'] == 1)
|
|
{
|
|
$result = sqlquery("SELECT shard FROM shard_annotation WHERE shard='$shard'");
|
|
if (!$result || sqlnumrows($result) == 0)
|
|
sqlquery("INSERT INTO shard_annotation SET shard='$shard', annotation='locked by $admlogin', user='$uid', post_date=NOW()");
|
|
|
|
sqlquery("UPDATE shard_annotation SET lock_user='0' WHERE shard='$shard'");
|
|
|
|
$updatedShardAnnot = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($updatedShardAnnot)
|
|
{
|
|
getShardLockState();
|
|
}
|
|
|
|
|
|
if (isset($select_view) && $select_view != "")
|
|
$tname = explode(',', $select_view);
|
|
|
|
if (isset($tname) && count($tname)>0 && !isset($tid))
|
|
{
|
|
$found = false;
|
|
foreach($tname as $tbname)
|
|
{
|
|
$result = sqlquery("SELECT tid, name FROM view_table WHERE uid='$uid' AND name='$tbname'");
|
|
if ($result && ($arr=sqlfetch($result)))
|
|
{
|
|
$tid = $arr["tid"];
|
|
$tname = $tbname;
|
|
$found = true;
|
|
break;
|
|
}
|
|
|
|
$result = sqlquery("SELECT tid, name FROM view_table WHERE uid='$gid' AND name='$tbname'");
|
|
if ($result && ($arr=sqlfetch($result)))
|
|
{
|
|
$tid = $arr["tid"];
|
|
$tname = $tbname;
|
|
$found = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (!$found)
|
|
{
|
|
unset($tname);
|
|
}
|
|
}
|
|
|
|
if (!isset($tid))
|
|
{
|
|
$result = sqlquery("SELECT default_view FROM user, view_table WHERE user.uid='$uid' AND (view_table.uid='$uid' OR view_table.uid='$gid') AND view_table.tid=user.default_view");
|
|
if ($result && ($arr=sqlfetch($result)))
|
|
{
|
|
$tid=$arr["default_view"];
|
|
if ($tid == 0)
|
|
unset($tid);
|
|
}
|
|
|
|
if (!isset($tid))
|
|
{
|
|
$result = sqlquery("SELECT tid, name FROM view_table WHERE uid='$uid' ORDER BY ordering LIMIT 1");
|
|
if ($result && ($arr=sqlfetch($result)))
|
|
{
|
|
$tid = $arr["tid"];
|
|
$tname = $arr["name"];
|
|
}
|
|
else
|
|
{
|
|
$result = sqlquery("SELECT tid, name FROM view_table WHERE uid='$gid' ORDER BY ordering LIMIT 1");
|
|
if ($result && ($arr=sqlfetch($result)))
|
|
{
|
|
$tid = $arr["tid"];
|
|
$tname = $arr["name"];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$refreshRate = 0;
|
|
|
|
if (isset($tid))
|
|
$current_tid = $tid;
|
|
|
|
$result = sqlquery("SELECT name, refresh_rate FROM view_table WHERE tid='$tid'");
|
|
if ($result && ($result=sqlfetch($result)))
|
|
{
|
|
$tname = $result["name"];
|
|
$refreshRate = $result["refresh_rate"];
|
|
}
|
|
|
|
// get selection
|
|
foreach ($HTTP_VARS as $var => $value)
|
|
{
|
|
if (strncmp($var, "select_", 7) == 0)
|
|
{
|
|
$sel_arr = explode(":", substr($var, 7));
|
|
|
|
if (!$keep_shard) $sel_arr[0] = '*';
|
|
if (!$keep_server) $sel_arr[1] = '*';
|
|
if (!$keep_service) $sel_arr[2] = '*';
|
|
|
|
$sel[] = $sel_arr[0].".".$sel_arr[1].".".$sel_arr[2].".*";
|
|
}
|
|
else if (strncmp($var, "execServCommand_", 16) == 0)
|
|
{
|
|
$execServCommand = substr($var, 16);
|
|
}
|
|
}
|
|
|
|
if (!isset($sel) || !is_array($sel))
|
|
$sel = array("*.*.*.*");
|
|
|
|
unset($shards);
|
|
$selShards = array();
|
|
|
|
// add shard access to selection
|
|
if ($admlogin != "root" && !$IsNevrax)
|
|
{
|
|
if (count($shardAccess)>0)
|
|
{
|
|
$unfiltered = $sel;
|
|
unset($sel);
|
|
foreach ($shardAccess as $sshard)
|
|
{
|
|
$shards[] = $sshard["shard"];
|
|
$filtershard = $sshard["shard"];
|
|
foreach ($unfiltered as $filter)
|
|
{
|
|
list($shard, $server, $service, $variable) = explode(".", $filter);
|
|
if ($shard == "*" || $shard == $filtershard)
|
|
{
|
|
$sel[] = "$filtershard.$server.$service.$variable";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
unset($sel);
|
|
$shards = array();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$result = sqlquery("SELECT DISTINCT shard FROM service ORDER BY shard");
|
|
while ($result && ($arr=sqlfetch($result)))
|
|
{
|
|
$shards[] = $arr["shard"];
|
|
}
|
|
}
|
|
|
|
unset($cmdResult);
|
|
|
|
if (isset($execServCommand) && isset($factPaths) && isset($execServParams) && isset($variableData[$execServCommand]))
|
|
{
|
|
// get command path
|
|
$cmd = $variableData[$execServCommand];
|
|
$path = $cmd["path"];
|
|
|
|
$paths = expandQuery($factPaths);
|
|
|
|
for ($i=0; $i<count($paths); ++$i)
|
|
{
|
|
$fpath = filterPathUsingAliases($paths[$i], $path);
|
|
if ($fpath != "")
|
|
$newPaths[] = $fpath;
|
|
}
|
|
|
|
$fullPath = factorizeQuery("[".join($newPaths, ",")."]");
|
|
|
|
// filter selection with command
|
|
$fullCmd = $fullPath." ".$execServParams;
|
|
logUser($uid, "COMMAND=".$fullCmd);
|
|
$qstate = nel_query($fullPath." ".$execServParams, $cmdResult);
|
|
}
|
|
|
|
unset($ownerTables);
|
|
|
|
// display available user and group views
|
|
$result = sqlquery("SELECT view.name AS name, view.tid AS tid, view.uid AS gid, user.login AS owner FROM view_table AS view, user WHERE view.uid=user.uid AND (view.uid='$uid' OR view.uid='$gid') ORDER BY gid, ordering");
|
|
if ($result)
|
|
{
|
|
$owner = "";
|
|
while ($arr = sqlfetch($result))
|
|
$ownerTables[$arr["owner"]][] = $arr;
|
|
}
|
|
|
|
htmlProlog($_SERVER['PHP_SELF'], "View Selection '$tname'", true);
|
|
|
|
if (isset($tname))
|
|
$current_tname = $tname;
|
|
|
|
$use_refreshRate = (isset($form_refreshRate) && $form_refreshRate != 0 ? $form_refreshRate : $refreshRate);
|
|
|
|
if ($use_refreshRate > 0)
|
|
{
|
|
echo "<script><!--\n";
|
|
echo " var sURL = unescape(window.location.pathname);\n";
|
|
echo " var pos = sURL.indexOf('.php');\n";
|
|
echo " function refresh() { window.location.replace( sURL ); }\n";
|
|
echo " if (pos >= 0) {\n";
|
|
echo " sURL = sURL.substr(0, pos+4)+'?current_tid=$tid&form_refreshRate=$form_refreshRate';\n";
|
|
echo " setTimeout(\"refresh()\", ".($use_refreshRate*1000).");\n";
|
|
echo " }\n";
|
|
echo "//--></script>\n";
|
|
}
|
|
|
|
echo "<br>\n";
|
|
echo "<table width=100%><form method=post action='".$_SERVER['PHP_SELF']."' name='viewForm'><tr valign=top>\n";
|
|
|
|
if (count($ownerTables)>0)
|
|
{
|
|
$clr = array("#E8E8E8", "#E0E0E0");
|
|
$o = 0;
|
|
foreach ($ownerTables as $owner => $ownerViews)
|
|
{
|
|
$i=0;
|
|
$bgcolor=$clr[$o];
|
|
$o = 1-$o;
|
|
foreach ($ownerViews as $arr)
|
|
{
|
|
if ($i%4 == 0)
|
|
{
|
|
if ($i>0)
|
|
echo "</table></td><td width=150 bgcolor=$bgcolor><table><tr><th> </th></tr>\n";
|
|
else
|
|
echo "<td width=150 bgcolor=$bgcolor><table><tr><th align=left>$owner views</th></tr>\n";
|
|
}
|
|
if ($tname == $arr["name"])
|
|
echo "<tr><td nowrap><input type=submit name='selectTid_".$arr["tid"]."' value='View'> <b>".$arr["name"]."</b></td></tr>";
|
|
else
|
|
echo "<tr><td nowrap><input type=submit name='selectTid_".$arr["tid"]."' value='View'> ".$arr["name"]."</td></tr>";
|
|
|
|
++$i;
|
|
}
|
|
echo "</table></td>\n";
|
|
}
|
|
}
|
|
|
|
echo "<td width=40> </td>\n";
|
|
|
|
//
|
|
$use_filter_shard = $filter_shard;
|
|
$use_filter_server = $filter_server;
|
|
$use_filter_service = $filter_service;
|
|
$use_filter_entity = $filter_entity;
|
|
|
|
if (!isset($use_filter_shard) || $use_filter_shard == "") $use_filter_shard = "*";
|
|
if (!isset($use_filter_server) || $use_filter_server == "") $use_filter_server = "*";
|
|
if (!isset($use_filter_service) || $use_filter_service == "") $use_filter_service = "*";
|
|
if (!isset($use_filter_entity) || $use_filter_entity == "") $use_filter_entity = "*";
|
|
|
|
$view_filter = $use_filter_shard.".".$use_filter_server.".".$use_filter_service.".".$use_filter_entity;
|
|
|
|
$selAllShards = false;
|
|
for ($i=0; $i<count($sel); ++$i)
|
|
{
|
|
$sel[$i] = partialFilterPath($sel[$i], $view_filter);
|
|
|
|
$expSel = explode('.', $sel[$i]);
|
|
if ($expSel[0] == '*')
|
|
$selAllShards = true;
|
|
$selShards[$expSel[0]] = true;
|
|
}
|
|
//
|
|
echo "<td nowrap bgcolor=#E0E0E0>\n";
|
|
if (count($shards) > 0)
|
|
{
|
|
echo "<b>Shard shortcuts</b><table><tr valign=top><td>\n";
|
|
$i = 1;
|
|
echo "<table>";
|
|
echo "<tr><td><a href='".$_SERVER['PHP_SELF']."?current_tid=$tid&form_refreshRate=$form_refreshRate&filter_shard=$link_shard&filter_server=&filter_service='><i>All</i></a></td></tr>";
|
|
foreach ($shards as $link_shard)
|
|
{
|
|
if ($i%5 == 0 && $i>0)
|
|
echo "</table></td><td><table>\n";
|
|
echo "<tr>";
|
|
echo ($selShards[$link_shard]) ? '<td nowrap bgcolor=#C0C0C0><b>' : '<td nowrap>';
|
|
$alias = $shardLockState[$link_shard]['alias'];
|
|
if ($alias == '')
|
|
$alias = $link_shard;
|
|
else
|
|
$alias .= "($link_shard)";
|
|
echo "<a href='".$_SERVER['PHP_SELF']."?current_tid=$tid&form_refreshRate=$form_refreshRate&filter_shard=$link_shard&filter_server=&filter_service='>$alias</a>";
|
|
if ($selShards[$link_shard])
|
|
echo "</b>";
|
|
echo "</td></tr>";
|
|
++$i;
|
|
}
|
|
echo "</table>";
|
|
echo "</td></tr></table>\n";
|
|
}
|
|
echo "</td>\n";
|
|
|
|
echo "<td width=100% align=right>\n";
|
|
echo "<table><tr><th>Refresh rate</th></tr>\n";
|
|
echo "<tr><td><select name=form_refreshRate onChange='submit()'>\n";
|
|
echo "<option value='0'".(!isset($form_refreshRate) || $form_refreshRate==0 ? " selected" : "").">View setting (".($refreshRate>0 ? "$refreshRate seconds" : "no refresh").")\n";
|
|
echo "<option value='-1'".($form_refreshRate==-1 ? " selected" : "").">No refresh\n";
|
|
echo "<option value='30'".($form_refreshRate==30 ? " selected" : "").">30 seconds\n";
|
|
echo "<option value='60'".($form_refreshRate==60 ? " selected" : "").">60 seconds\n";
|
|
echo "<option value='120'".($form_refreshRate==120 ? " selected" : "").">2 minutes\n";
|
|
echo "<option value='300'".($form_refreshRate==300 ? " selected" : "").">5 minutes\n";
|
|
echo "</select></td></tr></table>\n";
|
|
echo "</td>\n";
|
|
|
|
echo "<td align=right><table><tr><th width=300>Selection</th></tr>\n";
|
|
if (count($sel) > 0)
|
|
foreach ($sel as $s)
|
|
echo "<tr><td>$s</td></tr>\n";
|
|
echo "</table></td>\n";
|
|
|
|
echo "</tr></table><br>Content of view <font size=3><b>$tname</b></font><br><br>\n";
|
|
|
|
echo "<table><tr><td>\n";
|
|
|
|
$queryErrors = array();
|
|
|
|
// update values
|
|
if ($upd_values)
|
|
{
|
|
unset($update);
|
|
$tid = $current_tid;
|
|
|
|
foreach ($HTTP_VARS as $var => $value)
|
|
if (strncmp($var, "override_", 9) == 0)
|
|
$overriden[substr($var, 9)]=$value;
|
|
|
|
$shardAccessForbidden = array();
|
|
|
|
foreach ($HTTP_VARS as $var => $value)
|
|
{
|
|
if (strncmp($var, "updvar_", 7) == 0)
|
|
{
|
|
$vv = substr($var, 7);
|
|
$prevValue = $GLOBALS["prevvar_$vv"];
|
|
|
|
$var_split = explode("|", $vv);
|
|
$shard = $var_split[0];
|
|
$var_split = $var_split[count($var_split)-1];
|
|
$override = $overriden[$var_split];
|
|
|
|
if ($shardLockState[$shard]['lock_state'] != 1)
|
|
{
|
|
if (!$shardAccessForbidden[$shard])
|
|
{
|
|
$shardAccessForbidden[$shard] = true;
|
|
$queryErrors[] = "You can't update values on shard '$shard', access is not locked for you";
|
|
}
|
|
continue;
|
|
}
|
|
|
|
if ($value != $prevValue)
|
|
{
|
|
$address = str_replace("|", ".", $vv);
|
|
$update[] = "$address=$value";
|
|
}
|
|
else if (isset($override) && $override != "" && $override != $prevValue)
|
|
{
|
|
$address = str_replace("|", ".", $vv);
|
|
$update[] = "$address=$override";
|
|
}
|
|
}
|
|
else if (strncmp($var, "current_select_", 15) == 0)
|
|
{
|
|
$sel[] = $value;
|
|
}
|
|
}
|
|
|
|
$sel = array_unique($sel);
|
|
|
|
if (isset($update) && count($update > 0))
|
|
{
|
|
if (count($update) > 1)
|
|
{
|
|
$query = "[".join(",", $update)."]";
|
|
$query = factorizeQuery($query);
|
|
}
|
|
else
|
|
$query = $update[0];
|
|
|
|
$executeQuery = $query;
|
|
|
|
$bef = microtime();
|
|
logUser($uid, "UPDATE=".$executeQuery);
|
|
$qstate = nel_query($executeQuery, $updateResult);
|
|
$aft = microtime();
|
|
|
|
list($usec, $sec) = explode(" ", $bef);
|
|
$bef = ((float)$sec + (float)$usec);
|
|
list($usec, $sec) = explode(" ", $aft);
|
|
$aft = ((float)$sec + (float)$usec);
|
|
$tm = (int)(($aft-$bef)*1000.0);
|
|
|
|
$queryResult = "Executed $executeQuery<br>$tm milliseconds computation time<br>\n";
|
|
}
|
|
}
|
|
else if (isset($executeQuery))
|
|
{
|
|
$bef = microtime();
|
|
$qstate = nel_query($executeQuery, $updateResult);
|
|
$aft = microtime();
|
|
|
|
list($usec, $sec) = explode(" ", $bef);
|
|
$bef = ((float)$sec + (float)$usec);
|
|
list($usec, $sec) = explode(" ", $aft);
|
|
$aft = ((float)$sec + (float)$usec);
|
|
$tm = (int)(($aft-$bef)*1000.0);
|
|
|
|
$queryResult = "Executed $executeQuery<br>$tm milliseconds computation time<br>\n";
|
|
}
|
|
|
|
if ($updateResult)
|
|
{
|
|
buildVariableEnv($uid, $gid, $tid, $vardisp, $bounds, $privilege, $tree, $condensed, $autoDisplay);
|
|
displayResult($updateResult, $vardisp, $bounds, $privilege);
|
|
}
|
|
else
|
|
{
|
|
// send select request
|
|
if (count($sel) > 0)
|
|
$sel = array_unique($sel);
|
|
|
|
if (count($sel) == 1 && $sel[0] == "")
|
|
unset($sel);
|
|
|
|
$queryResult = displayViewTable($uid, $gid, $tid, $sel);
|
|
}
|
|
|
|
echo "<input type=hidden name='current_tid' value='$tid'>\n";
|
|
$i=0;
|
|
if (count($sel) > 0)
|
|
foreach ($sel as $selec)
|
|
echo "<input type=hidden name='current_select_".($i++)."' value='$selec'>\n";
|
|
|
|
if (isset($tid) && $tid != "")
|
|
{
|
|
$result = sqlquery("SELECT view_row.name AS name, variable.vid AS vid FROM view_row, variable WHERE tid='$tid' AND variable.command='command' AND view_row.vid=variable.vid ORDER BY ordering");
|
|
if ($result && sqlnumrows($result) > 0)
|
|
{
|
|
echo "<br><br><b>Service commands</b> <font size=1>The commands are sent to all services seen in the view above</font><br>\n";
|
|
echo "Command parameters <input name=execServParams size=64 maxlength=128><br>\n";
|
|
echo "<table>\n";
|
|
echo "<tr valign=top>\n";
|
|
echo "<td><table>\n";
|
|
|
|
$numInCol = 0;
|
|
while ($result && ($arr=sqlfetch($result)))
|
|
{
|
|
if ($numInCol >= 5 || $arr["name"] == 'SEPARATOR')
|
|
{
|
|
echo "</table></td><td width=30></td><td><table>\n";
|
|
$numInCol = 0;
|
|
}
|
|
if ($arr["name"] != 'SEPARATOR')
|
|
{
|
|
echo "<tr><td><input type=submit name=execServCommand_".$arr["vid"]." value='".$arr["name"]."'></td></tr>\n";
|
|
++$numInCol;
|
|
}
|
|
}
|
|
|
|
if (isset($listPath) && count($listPath) > 0)
|
|
{
|
|
$address = "[".join(",", $listPath)."]";
|
|
$address = factorizeQuery($address);
|
|
|
|
echo "<input type=hidden name=factPaths value='$address'>\n";
|
|
}
|
|
|
|
echo "</table></td>\n";
|
|
echo "</tr></table>\n";
|
|
|
|
if (isset($cmdResult))
|
|
{
|
|
echo "<br>Result of command '$fullPath $execServParams':<br>\n";
|
|
echo "<table border=1><tr><td>\n";
|
|
echo "<pre>$cmdResult</pre>\n";
|
|
echo "</td></tr></table>\n";
|
|
}
|
|
}
|
|
}
|
|
|
|
if (count($queryErrors) > 0)
|
|
{
|
|
echo "<br><font size=3><b>Execution errors:</b></font>\n";
|
|
foreach ($queryErrors as $error)
|
|
echo "<br><font size=3 color=#FF0000><b>$error</b></font>\n";
|
|
}
|
|
echo "<br><br><font size=0>$queryResult</font>\n";
|
|
echo "</td></form></tr></table>\n";
|
|
|
|
function lvcmp($a, $b)
|
|
{
|
|
return ($a["path"] == $b["path"] ? 0 : $a["path"] < $b["path"] ? -1 : 1);
|
|
}
|
|
|
|
if (isset($tid) && $tid != "" && count($listPath) > 0)
|
|
{
|
|
$result = sqlquery("SELECT view_row.name AS name, variable.vid, variable.path, warning_bound, error_bound, alarm_order FROM view_row, variable WHERE tid='$tid' AND variable.vid=view_row.vid AND graph!='0' ORDER BY name");
|
|
|
|
if ($result && sqlnumrows($result) > 0)
|
|
{
|
|
unset($listVars);
|
|
|
|
while ($result && ($arr=sqlfetch($result)))
|
|
{
|
|
$gname = $arr["name"];
|
|
$gvid = $arr["vid"];
|
|
$gfilter = $arr["path"];
|
|
|
|
$gwarn = $arr["warning_bound"];
|
|
$gerr = $arr["error_bound"];
|
|
$gord = $arr["alarm_order"];
|
|
|
|
for ($i=0; $i<count($listPath); ++$i)
|
|
{
|
|
$path = $listPath[$i].".*";
|
|
$varpath = filterPathUsingAliases($path, $gfilter);
|
|
$rrdpath = $rrdrootpath."/".$varpath.".rrd";
|
|
if ($varpath != "" && file_exists($rrdpath))
|
|
$listVars[] = array("path" => $varpath, "name" => $gname, "warn" => $gwarn, "err" => $gerr, "order" => $gord);
|
|
}
|
|
}
|
|
|
|
if (count($listVars) > 0)
|
|
{
|
|
usort($listVars, "lvcmp");
|
|
|
|
echo "<br><br><b>View Graphs</b><br><br>\n";
|
|
echo "<table><tr valign=top>\n";
|
|
echo "<td><table>\n";
|
|
|
|
$counter = 0;
|
|
|
|
// remove too old picture files
|
|
// opendir for scanning gif files
|
|
if ($dir = @opendir($gifoutputpath))
|
|
{
|
|
unset($eraseFiles);
|
|
$curtime = time();
|
|
while($file = readdir($dir))
|
|
{
|
|
if (substr($file, 0, 7) == "tmppic_")
|
|
{
|
|
$fstats = stat("$gifoutputpath/$file");
|
|
if ($fstats[9] < $curtime - $gifpersistence)
|
|
$eraseFiles[] = "$gifoutputpath/$file";
|
|
}
|
|
}
|
|
|
|
closedir($dir);
|
|
|
|
if (count($eraseFiles) > 0)
|
|
foreach ($eraseFiles as $file)
|
|
unlink($file);
|
|
|
|
}
|
|
|
|
mt_srand((float) microtime()*1000000);
|
|
$randFilename = "tmppic_".mt_rand(10000, 99999);
|
|
|
|
foreach ($listVars as $var)
|
|
{
|
|
$rrdvar = $var["path"];
|
|
$rrdpath = $rrdrootpath."/".$rrdvar.".rrd";
|
|
$rrdname = $var["name"];
|
|
$rrdwarn = $var["warn"];
|
|
$rrderr = $var["err"];
|
|
$rrdord = strtoupper($var["order"]);
|
|
|
|
echo "<tr><th>$rrdvar <font size=0>(using path $rrdpath)</font></th></tr>\n";
|
|
|
|
// generate a temp filename
|
|
|
|
$tempFilename_0 = "$gifhttplocation/".$randFilename."_".$counter."_0.gif";
|
|
$tempFilename_1 = "$gifhttplocation/".$randFilename."_".$counter."_1.gif";
|
|
$tempFilename_2 = "$gifhttplocation/".$randFilename."_".$counter."_2.gif";
|
|
|
|
$tempFilenameout_0 = "$gifoutputpath/".$randFilename."_".$counter."_0.gif";
|
|
$tempFilenameout_1 = "$gifoutputpath/".$randFilename."_".$counter."_1.gif";
|
|
$tempFilenameout_2 = "$gifoutputpath/".$randFilename."_".$counter."_2.gif";
|
|
|
|
++$counter;
|
|
|
|
// generate picture according to the temp filename
|
|
|
|
unset($result);
|
|
|
|
$rrdDEF = "DEF:val=$rrdpath:var:AVERAGE";
|
|
$rrdDraw = "";
|
|
|
|
if ($rrdwarn != -1)
|
|
{
|
|
$rrdDEF .= " CDEF:warn=val,$rrdwarn,$rrdord,val,0,IF";
|
|
$rrdDraw .= "AREA:warn#FFCC88 ";
|
|
}
|
|
|
|
if ($rrderr != -1)
|
|
{
|
|
$rrdDEF .= " CDEF:err=val,$rrderr,$rrdord,val,0,IF";
|
|
$rrdDraw .= "AREA:err#FF4422 ";
|
|
}
|
|
|
|
$rrdDraw .= "LINE2:val#0000FF";
|
|
|
|
$execStr = "rrdtool graph $tempFilenameout_0 --start -1200 $rrdDEF $rrdDraw";
|
|
//echo "exec(\"$execStr\")<br>\n";
|
|
exec($execStr, $result, $retcode1);
|
|
// echo "<tr><td><img src='$tempFilename_0'></td></tr>";
|
|
|
|
$execStr = "rrdtool graph $tempFilenameout_1 --start -10800 $rrdDEF $rrdDraw";
|
|
//echo "exec(\"$execStr\")<br>\n";
|
|
exec($execStr, $result, $retcode2);
|
|
// echo "<tr><td><img src='$tempFilename_1'></td></tr>";
|
|
|
|
$execStr = "rrdtool graph $tempFilenameout_2 --start -86400 $rrdDEF $rrdDraw";
|
|
//echo "exec(\"$execStr\")<br>\n";
|
|
exec($execStr, $result, $retcode3);
|
|
// echo "<tr><td><img src='$tempFilename_2'></td></tr>";
|
|
echo "<tr><td><img src='$tempFilename_0'><img src='$tempFilename_1'><img src='$tempFilename_2'></td></tr>";
|
|
|
|
echo "<tr height=10><td colspan=1></td></tr>";
|
|
|
|
if ($retcode1 || $retcode2 || $retcode3)
|
|
{
|
|
echo "<b>RRDTool output:</b><br>\n";
|
|
print_r($result);
|
|
echo "<br>\n";
|
|
}
|
|
}
|
|
|
|
echo "</table></td>\n";
|
|
echo "</tr></table>\n";
|
|
}
|
|
}
|
|
}
|
|
|
|
htmlEpilog();
|
|
|
|
//print_r($shardLockState);
|
|
?>
|