khanat-opennel-code/code/nelns/admin/public_html/init.php

145 lines
4.2 KiB
PHP
Raw Normal View History

2010-06-12 10:17:29 +00:00
<?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/>.
function retrieveTable($tableName, $key, $whereClause="", $selectClause="*")
{
$result = sqlquery("SELECT $selectClause FROM $tableName".($whereClause=="" ? "" : " WHERE ".$whereClause));
while ($result && ($arr = sqlfetch($result)))
$dataArray[$arr[$key]] = $arr;
return $dataArray;
}
// retrieve users info
$usersData = retrieveTable("user", "uid");
//$usersData = retrieveTable("user", "uid", "uid='$uid' OR uid='$gid'");
$userData = $usersData[$uid];
$userData['groupname'] = $usersData[$userData['gid']]['login'];
// retrieve variables info
$variableData = retrieveTable("variable", "vid");
// retrieve user variables
$uservariableData = retrieveTable("user_variable", "vid", "uid='$uid' OR uid='$gid'");
// retrieve shard list info
$shardList = retrieveTable("service", "shard", "", "DISTINCT shard");
// retrieve shard access info
$shardAccess = retrieveTable("shard_access", "shard", "uid='$uid' OR uid='$gid'", "DISTINCT shard");
function getUserVariableRights($uid, $gid)
{
// get default variable state
$result = sqlquery("SELECT vid, state FROM variable");
while ($result && ($array = sqlfetch($result)))
{
$uservariablerights[$array["vid"]][0] = 1;
$uservariablerights[$array["vid"]][1] = $array["state"];
}
// override from group settings
$result = sqlquery("SELECT vid, privilege FROM user_variable WHERE uid='$gid'");
while ($result && ($array = sqlfetch($result)))
{
$uservariablerights[$array["vid"]][0] = 2;
$uservariablerights[$array["vid"]][2] = $array["privilege"];
}
// override from user settings
$result = sqlquery("SELECT vid, privilege FROM user_variable WHERE uid='$uid'");
while ($result && ($array = sqlfetch($result)))
{
$uservariablerights[$array["vid"]][0] = 3;
$uservariablerights[$array["vid"]][3] = $array["privilege"];
}
return $uservariablerights;
}
$userUserVariableRights = getUserVariableRights($uid, $gid);
function hasAccessToVariable($vid)
{
global $userUserVariableRights;
$var = &$userUserVariableRights[$vid];
return isset($var) && $var[$var[0]] != "none";
}
function getVariableRight($vid)
{
global $userUserVariableRights;
$var = &$userUserVariableRights[$vid];
return $var[$var[0]];
}
function getShardLockState()
{
global $shardLockState, $uid, $REMOTE_ADDR, $enablelock, $shardList;
global $ASHost, $ASPort;
$shardLockState = array();
if (count($shardList) > 0)
{
foreach ($shardList as $shard => $s)
{
$shardLockState[$shard]['lock_state'] = ($enablelock ? 0 : 1);
}
}
$result = sqlquery("SELECT * FROM shard_annotation");
while ($result && ($arr=sqlfetch($result)))
{
if ($enablelock)
{
if ($arr['lock_user'] == 0)
{
$lockState = 0; // unlocked
}
else if ($arr['lock_user'] == $uid && $arr['lock_ip'] == $REMOTE_ADDR)
{
$lockState = 1; // locked by user
}
else
{
$lockState = 2; // locked by another user
}
}
else
{
$lockState = 1;
}
$shardLockState[$arr['shard']] = array( 'user_annot' => $arr['user'],
'annot' => htmlentities($arr['annotation'], ENT_QUOTES),
'post_date' => $arr['post_date'],
'lock_user' => $arr['lock_user'],
'lock_ip' => $arr['lock_ip'],
'lock_date' => $arr['lock_date'],
'lock_state' => $lockState,
'ASAddr' => $arr['ASAddr'],
'alias' => $arr['alias']);
}
}
getShardLockState();
?>