Flashchat phpbb3.0.1 und Groups
Verfasst: 01.06.2008 13:20
Die Datei phpBB307CMS.php im Verzeichnis /chat/inc/cmses holt sich aus der Datenbank von phpbb die Daten und übergibt sie an den Chat. Ist es möglich die Datei so umzuschreiben das sie über die Userid und die Groupid die Gruppenzugehörigkeit abfragt und beispielsweise einem User nur Zugang gewährt wenn er Mitglied in der Gruppe "Chat" ist? Kann mir da jemand helfen? Meine php Kenntnisse sind nicht so toll das ich das selbst könnte...
Die Datei sieht so aus:
Der relevante Teil ist glaube ich function getUser($userid).
Danke für jede Hilfe.
Chiana
Die Datei sieht so aus:
Code: Alles auswählen
<?php
error_reporting(E_ALL ^ E_NOTICE);
if ( !defined( 'INC_DIR' ) ) {
die( 'hacking attempt' );
}
define('IN_PHPBB', true);
$phpbb3_root_path = realpath(dirname(__FILE__) . '/../../../') . '/';
include($phpbb3_root_path . 'config.php');
include($phpbb3_root_path . 'includes/functions.php');
include($phpbb3_root_path . 'includes/constants.php');
class PhpBB30CMS
{
var $loginStmt;
var $getPasswordStmt;
var $getUserStmt;
var $getUsersStmt;
var $getPhotoStmt;
var $getLoggedStmt;
var $userid;
function PhpBB30CMS()
{
$this->loginStmt = new Statement("SELECT user_id FROM {$GLOBALS['table_prefix']}users WHERE username=? LIMIT 1");
$this->getPasswordStmt = new Statement("SELECT user_password FROM {$GLOBALS['table_prefix']}users WHERE username=? LIMIT 1");
$this->getUserStmt = new Statement("SELECT u.user_id as id, u.username as login, u.group_id, g.group_name, u.user_type, u.user_rank FROM {$GLOBALS['table_prefix']}users u, {$GLOBALS['table_prefix']}groups g WHERE u.group_id=g.group_id AND u.user_id=? LIMIT 1");
$this->getUsersStmt = new Statement("SELECT user_id as id, username as login FROM {$GLOBALS['table_prefix']}users ORDER BY login");
$this->getPhotoStmt = new Statement("SELECT config_value FROM {$GLOBALS['table_prefix']}config WHERE config_name='avatar_salt' LIMIT 1");
$this->getLoggedStmt = new Statement("SELECT config_value FROM {$GLOBALS['table_prefix']}config WHERE config_name='cookie_name' LIMIT 1");
}
function isLoggedIn()
{
$rs = $this->getLoggedStmt->process();
$rl = $rs->next();
$cookie_name = $rl['config_value'] . '_u';
if( isset($GLOBALS['_COOKIE'][$cookie_name]) && $GLOBALS['_COOKIE'][$cookie_name] != ANONYMOUS)
{
return $GLOBALS['_COOKIE'][$cookie_name];
}
return null;
}
function login($username, $password)
{
$rp = $this->getPasswordStmt->process($username);
$rep = $rp->next();
if($username && $password && ($rs = $this->loginStmt->process($username)) && ($rec = $rs->next()) && (phpbb_check_hash($password, $rep['user_password'])))
{
return $rec['user_id'];
}
return false;
}
function logout()
{
}
function getUser($userid)
{
if($userid == SPY_USERID) return null;
if($userid && ($rs = $this->getUserStmt->process($userid)) && ($rec = $rs->next()))
{
switch ($rec['group_name'])
{
case 'ADMINISTRATORS':
$rec['roles'] = $rec['group_id'] = ROLE_ADMIN;
break;
case 'GLOBAL_MODERATORS':
$rec['roles'] = $rec['group_id'] = ROLE_MODERATOR;
break;
case 'BOTS':
break;
default:
if ($GLOBALS['fc_config']['liveSupportMode'])
{
$rec['roles'] = $rec['group_id'] = ROLE_CUSTOMER;
}
else if ($rec['user_rank'] >= 0)
{
switch ($rec['user_rank'])
{
case 'USER':
$rec['roles'] = $rec['group_id'] = ROLE_USER ;
break;
case 'GLOBAL_MODERATORS':
$rec['roles'] = $rec['group_id'] = ROLE_MODERATOR;
break;
default:
$rec['roles'] = $rec['group_id'] = ROLE_USER;
break;
}
}
break;
}
return $rec;
}
return null;
}
function getUsers()
{
return $this->getUsersStmt->process();
}
function getUserProfile($userid)
{
if($user = $this->getUser($userid))
{
return "../ucp.php?i=164";
//return "../memberlist.php?mode=viewprofile&u=$userid";
}
return null;
}
function getPhoto($userid)
{
$rs = $this->getPhotoStmt->process();
$rl = $rs->next();
$name = $rl['config_value'] . '_' . $userid . '.jpg';
return '../images/avatars/upload/' . $name;
}
function userInRole($userid, $role)
{
if($user = $this->getUser($userid))
{
return ($user['roles'] == $role);
}
return false;
}
function getGender($userid)
{
// 'M' for Male, 'F' for Female, NULL for undefined
return NULL;
}
}
$GLOBALS['fc_config']['db'] = array(
'host' => $dbhost,
'user' => (isset($dbuser) ? $dbuser : $dbuname),
'pass' => $dbpasswd,
'base' => $dbname,
'pref' => $table_prefix . 'fc_',
);
$GLOBALS['fc_config']['cms'] = new PhpBB30CMS();
foreach($GLOBALS['fc_config']['languages'] as $k => $v)
{
$GLOBALS['fc_config']['languages'][$k]['dialog']['login']['moderator'] = '';
}
?>
Der relevante Teil ist glaube ich function getUser($userid).
Danke für jede Hilfe.
Chiana