i have created my own integration based on the posted one:
my changes are: both admin and mods are moderator on chat
moderater level in chat no longer based on user_rank but based on user_level (how it should be)
option to pull user_passwords out of the mysql DB
OPEN chat/inc/config.php
FIND
- Code: Select all
//your CMS system
- Code: Select all
REPLACE NEXT LINE with]
CREATE: integramodCMS.php
ADD
[code] <php>constArr = array( 'users' =>'phpbb_users', 'login' =>'username', 'id' =>'user_id', 'password' =>'user_password', 'roles' =>'user_id', //'encode_type' =>'md5', use this for passwords filled in by users //'encode_type' =>'', use this for passwords pulled out of the DB 'encode_type' =>'', 'spy_fld' =>'user_id', 'spy_value' =>'100', 'profile_path'=>'../profile.php', 'profile_arg' =>'?mode=viewprofile&u={$user_id}', 'moderator_fld'=>'user_level', 'moderator_value'=>'2', 'admin_fld'=>'user_level', 'admin_value'=>'1', 'logoff' =>'false' ); $this->loginStmt = new Statement("SELECT * FROM {$this->constArr['users']} WHERE username=? AND user_password=md5(?) AND user_active<0>constArr['sessions']} WHERE session_id=?"); $this->configStmt = new Statement("SELECT * FROM {$GLOBALS['table_prefix']}config WHERE config_name='cookie_name'"); $this->getUserStmt = new Statement("SELECT * FROM {$this->constArr['users']} WHERE {$this->constArr['id']}=? LIMIT 1"); $this->getUsersStmt = new Statement("SELECT * FROM {$this->constArr['users']} ORDER BY {$this->constArr['login']}"); $this->delStmt = new Statement("DELETE FROM {$this->constArr['users']} WHERE {$this->constArr['login']}=?"); $encode_type = $this->constArr['encode_type']; switch( $encode_type ) { case 'md5' ]} WHERE {$this->constArr['login']}=? AND {$this->constArr['password']}=MD5(?) LIMIT 1"); $this->addUserStmt = new Statement("INSERT INTO {$this->constArr['users']} ({$this->constArr['login']}, {$this->constArr['password']}) VALUES(?, MD5(?))"); break; case 'mysql_pass' : $this->loginStmt = new Statement("SELECT * FROM {$this->constArr['users']} WHERE {$this->constArr['login']}=? AND {$this->constArr['password']}=PASSWORD(?) LIMIT 1"); $this->addUserStmt = new Statement("INSERT INTO {$this->constArr['users']} ({$this->constArr['login']}, {$this->constArr['password']}) VALUES(?, PASSWORD(?))"); break; default : $this->loginStmt = new Statement("SELECT * FROM {$this->constArr['users']} WHERE {$this->constArr['login']}=? AND {$this->constArr['password']}=? LIMIT 1"); $this->addUserStmt = new Statement("INSERT INTO {$this->constArr['users']} ({$this->constArr['login']}, {$this->constArr['password']}) VALUES(?, ?)"); break; } } //----------------------------------------------------------------------------------------- function isLoggedIn() { return $this->userid; } //----------------------------------------------------------------------------------------- function login($login, $password) { $this->userid = null; if($login && $password) { $encode_type = $this->constArr['encode_type']; $pass = $password; /* switch( $encode_type ) { case 'md5' : $pass = md5($password); break; default : $pass = $password; break; }*/ //Try to find user using provided login if(($rs = $this->loginStmt->process($login,$pass)) && ($rec = $rs->next())) { //if($rec[$this->constArr['password']] == $pass) $this->userid = $rec[$this->constArr['id']]; } else { //If not - autocreate user with such login and password if($this->autocreateUsers) { //$roles = ($password == $GLOBALS['fc_config']['adminPassword'])?ROLE_ADMIN:($GLOBALS['fc_config']['liveSupportMode']?ROLE_CUSTOMER:ROLE_USER); $ins = $this->addUserStmt->process($login, $pass); if( $ins != null && $ins == 0 ) { //we not know if id field is autoincrement $this->userid = login($login, $password); } elseif($ins != null) { $this->userid = $ins; } } } } return $this->userid; } //----------------------------------------------------------------------------------------- function logout() { if($this->constArr['logoff'] == 'true') $this->user = null; } //----------------------------------------------------------------------------------------- function getUser($userid) { if($userid) { $rs = $this->getUserStmt->process($userid); $usr = $rs->next(); $usr['login'] = $usr[$this->constArr['login']];//important! $usr['roles'] = ($usr[$this->constArr['admin_fld']] == $this->constArr['admin_value']) ? ROLE_ADMIN : ($usr[$this->constArr['moderator_fld']] == $this->constArr['moderator_value']) ? ROLE_MODERATOR : ($usr[$this->constArr['spy_fld']] == $this->constArr['spy_value'] ? ROLE_SPY : ROLE_USER); return $usr; } else { return null; } } //----------------------------------------------------------------------------------------- function getUsers() { $users = $this->getUsersStmt->process(); if( is_array($users) ) if( sizeof($users) > 0) foreach( $users as $k=>$v ) { $users['login'] = $users[$this->constArr['login']];//important! $users['roles'] = ($users[$this->constArr['admin_fld']] == $this->constArr['admin_value']) ? ROLE_ADMIN : ($users[$this->constArr['moderator_fld']] == $this->constArr['moderator_value']) ? ROLE_MODERATOR : ($users[$this->constArr['spy_fld']] == $this->constArr['spy_value'] ? ROLE_SPY : ROLE_USER); } return $users; } //----------------------------------------------------------------------------------------- function getUserProfile($userid) { $spy_fld = $this->constArr['spy_fld']; $spy_val = $this->constArr['spy_value']; $user = $this->getUser($userid); if( $spy_fld != '' ) { if( $user[$spy_fld] == $spy_val ) return null; } extract($user); return "{$this->constArr['profile_path']}?mode=viewprofile&u={$user_id}"; } //----------------------------------------------------------------------------------------- function userInRole($userid, $role) { if($user = $this->getUser($userid)) { if($role == ROLE_ADMIN) { if( $user[$this->constArr['admin_fld']] == $this->constArr['admin_value']) return true; else return false; } if($role == ROLE_MODERATOR) { if( $user[$this->constArr['moderator_fld']] == $this->constArr['moderator_value']) return true; else return false; } if($role == ROLE_SPY) { if( $user[$this->constArr['spy_fld']] == $this->constArr['spy_value']) return true; else return false; } if($role == ROLE_USER) { return true;//??? } } return false; } function getGender($userid) { // 'M' for Male, 'F' for Female, NULL for undefined return NULL; } function addUser($login, $password, $roles) { $user = $this->loginStmt->process($login); if(($rec = $user->next()) != null) return $rec['id']; /* $encode_type = $this->constArr['encode_type']; $pass = $password; switch( $encode_type ) { case 'md5' : $pass = md5($password); break; default : $pass = $password; break; } */ return $this->addUserStmt->process($login, $password); } function deleteUser($login){ $this->delUserStmt->process($login); } } $GLOBALS['fc_config']['cms'] = new DefaultCMS(); //clear 'if moderator' message foreach($GLOBALS['fc_config']['languages'] as $k => $v) { $GLOBALS['fc_config']['languages'][$k]['dialog']['login']['moderator'] = ''; }?> [/code]
for those who want to make a auto login page
OPEN includes/page_header.php
FIND:
[code] //// Generate logged in/logged out status// [/code]
BEFORE ADD] //insert variable USERNAME into smarty engine$template->assign_vars(array('USERNAME' => $userdata['username'],'PASSWORD' => $userdata['user_password'],'ID' => $userdata['user_id']));
IN WICH TEMPLATE YOU WANT TO CREATE LOGIN ADD:
- Code: Select all
<a><img></a> Or a tekst link can also be created just use "chat/flashchat.php?username={USERNAME}&password={PASSWORD}" as url
iff you gonna pull the data out off the db make sure to make following edit in interamodCMS.php] //'encode_type' =>'md5', use this for passwords filled in by users //'encode_type' =>'', use this for passwords pulled out of the DB 'encode_type' =>'',[/code]