Thread: Integration with vBulletin - Flashchat Integration for vB 3.6
View Single Post
  #176  
Old 09-25-2006, 07:14 PM
voteforbird's Avatar
voteforbird voteforbird is offline
 
Join Date: Jul 2006
Posts: 121
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

2 is Registered Users. 25 is Premium Members. Admins work.
PHP Code:
<?php

    
if ( !defined'INC_DIR' ) ) {
        die( 
'hacking attempt' );
    }

/*

Version 3.02
By Paul M - this CMS file is For vBulletin 3.6.x and Flashchat 4.5.x (or above).

Recent changes ;
3.01 - First Version, based on vb 3.5 CMS file (v2.60).
3.02 - Changes to User and Role Caching to fix minor irritations.

*/

class vBulletinCMS
{
    
// Initialise CMS
    
function vBulletinCMS()
    {
        
$this->loginStmt = new Statement("SELECT userid AS id, password, salt FROM {$GLOBALS['vbulletin']['prefix']}user WHERE username=?");
        
$this->getUserStmt = new Statement("SELECT userid AS id, username AS login, usergroupid, membergroupids FROM {$GLOBALS['vbulletin']['prefix']}user WHERE userid=?");
        
$this->getUsersStmt = new Statement("SELECT userid AS id, username AS login, usergroupid FROM {$GLOBALS['vbulletin']['prefix']}user");
        
$this->getUserForSession = new Statement("SELECT * FROM {$GLOBALS['vbulletin']['prefix']}session WHERE sessionhash=? ORDER BY lastactivity DESC");
        
$this->updateLastactivityForUser = new Statement("UPDATE {$GLOBALS['vbulletin']['prefix']}user SET lastactivity=? WHERE userid=?");
        
$this->updateSessionForUser = new Statement("UPDATE {$GLOBALS['vbulletin']['prefix']}session SET lastactivity=?, location='$_SERVER[REQUEST_URI]' WHERE userid=?");
        
$this->getAvatar = new Statement("SELECT * FROM {$GLOBALS['vbulletin']['prefix']}customavatar WHERE userid = ? AND visible = 1");
        
$this->getPicture = new Statement("SELECT * FROM {$GLOBALS['vbulletin']['prefix']}customprofilepic WHERE userid = ? AND visible = 1");

        
$this->session $_COOKIE[$GLOBALS['vbulletin']['cookie'] . 'sessionhash'];
        if(
$_SESSION['fc_users_cache']['sessionhashid'] != $this->session)
        {
            
$rs $this->getUserForSession->process($this->session);
            if(
$rec $rs->next())
            {
                
$this->userid intval($rec['userid']);
                
$_SESSION['fc_users_cache']['sessionuserid'] = $this->userid;
                
$_SESSION['fc_users_cache']['sessionhashid'] = $this->session;
            }
        }
        else
        {
            
$this->userid $_SESSION['fc_users_cache']['sessionuserid'];
        }

        if(
$_POST['t'] AND $GLOBALS['vbulletin']['spkupdate'] AND intval($this->userid) > 0)
        {
            
$ru $this->updateSessionForUser->process(time(),$this->userid);
            
$ru $this->updateLastactivityForUser->process(time(),$this->userid);
        }
    }

    
// Auto Login
    
function isLoggedIn()
    {
        if(
$this->userid AND $GLOBALS['vbulletin']['logupdate'])
        {
            
$ru $this->updateSessionForUser->process(time(),$this->userid);
            
$ru $this->updateLastactivityForUser->process(time(),$this->userid);
        }
        unset (
$_SESSION['fc_users_cache'][$this->userid]);
        unset (
$_SESSION['fc_roles_cache'][$this->userid]);
        return 
$this->userid;
    }

    
// Manual Login
    
function login($login$password)
    {
        
$rv NULL;
        if (
$login == '_int_') return $this->userid;
        
$login utf8_to_entities($login);
        
$rs $this->loginStmt->process(utf8_decode($login));
        
$rec $rs->next();
        if(
$rs)
        {
            
$password utf8_to_entities($password);
            if((
$rec['password'] == md5(md5(utf8_decode($password)) . $rec['salt']))) $rv $rec['id'];
        }
        if(
$rv AND $GLOBALS['vbulletin']['logupdate'])
        {
            
$ru $this->updateSessionForUser->process(time(),$rv);
            
$ru $this->updateLastactivityForUser->process(time(),$rv);
        }
        unset (
$_SESSION['fc_users_cache'][$this->userid]);
        unset (
$_SESSION['fc_roles_cache'][$this->userid]);
        return 
$rv;
    }

    
// Logout
    
function logout()
    {
        
$_SESSION['fc_users_cache']['sessionhashid'] = '#';
        if(
$this->userid AND $GLOBALS['vbulletin']['logupdate'])
        {
            
$ru $this->updateSessionForUser->process(time(),$this->userid);
            
$ru $this->updateLastactivityForUser->process(time(),$this->userid);
        }
        return 
NULL;
    }

    
// Assign chat role
    
function getRoles($usergroupid)
    {
        
$groups explode(',',$usergroupid);
        
$userrole ROLE_NOBODY // Set default access
        
foreach ($GLOBALS['vbulletin']['users'] as $group) if (in_array($group,$groups)) $userrole ROLE_USER;
        if (
$GLOBALS['fc_config']['liveSupportMode'])
        {
            foreach (
$GLOBALS['vbulletin']['customer'] as $group) if (in_array($group,$groups)) $userrole ROLE_CUSTOMER;
        }
        foreach (
$GLOBALS['vbulletin']['mods'] as $group) if (in_array($group,$groups)) $userrole ROLE_MODERATOR;
        foreach (
$GLOBALS['vbulletin']['admin'] as $group) if (in_array($group,$groups)) $userrole ROLE_ADMIN;
        foreach (
$GLOBALS['vbulletin']['banned'] as $group) if (in_array($group,$groups)) $userrole ROLE_NOBODY;
        return 
$userrole;
    }

    
// Get user details
    
function getUser($userid)
    {
        if((
$rs $this->getUserStmt->process($userid)) && ($rec $rs->next()))
        {
            
$rec['usergroupid'] .= ",".$rec['membergroupids'] ;
            
$rec['roles'] = $this->getRoles($rec['usergroupid']);
            
$tagencoded entities_to_utf8($rec['login']);
            if(
strlen($rec['login']) > strlen($tagencoded)) $rec['login'] = $tagencoded;
            else 
$rec['login'] = utf8_encode($rec['login']);
            
$_SESSION['fc_users_cache'][$userid] = $rec;
            
$_SESSION['fc_roles_cache'][$userid] = $rec['roles'];
            return 
$rec;
        }
        return 
null;
    }

    
// Return all existing users
    
function getUsers()
    {
        return 
$this->getUsersStmt->process();
    }

    
// Returns URL of user profile page for such user id or null if user not found
    
function getUserProfile($userid)
    {
        return (
$this->userid == $userid) ? "../profile.php?do=editprofile" "../member.php?u=$userid";
    }

    
// Check if user is in a specific role
    
function userInRole($userid$role)
    {
        if(!
intval($userid))
        {
            return 
false;
        }
        
$user $this->getUser($userid) ;
        if(
$role == $user['roles']) return true;
        return 
false;
    }

    
// Get male or female
    
function getGender($user)
    {
        return 
NULL;
    }

    
// Get current profile picture or avatar
    // This function is only supported if you use the database storage method in vbulletin
    
function getPhoto($userid)
    {
        if(
$_SESSION['fc_users_cache'][$userid]['pid'] == $userid)
        {
            return 
$_SESSION['fc_users_cache'][$userid]['fpath'];
        }
        if(
$GLOBALS['vbulletin']['useavatar'])
        {
            
$rs $this->getAvatar->process($userid);
        }
        else
        {
            
$rs $this->getPicture->process($userid);
        }
        if((
$rec $rs->next()) == null) return '';
        
$fparts explode('.'$rec['filename']);
        
$fname  strtolower('$'.substr('000000'.$userid,-6).'$'.$rec['dateline'].'.'.$fparts[count($fparts)-1]);
        
$fpath  './images/cust_img/'.$fname;
        if(!
file_exists($fpath))
        {
            
$fp fopen($fpath'wb');
            
fwrite($fp$rec['filedata']);
            
fflush($fp);
            
fclose($fp);
        }
        
$_SESSION['fc_users_cache'][$userid]['pid'] = $userid;
        
$_SESSION['fc_users_cache'][$userid]['fpath'] = $fpath;
        return 
$fpath;
    }
}

// Get vb config.php
$vbpath realpath(dirname(__FILE__));
require_once 
$vbpath '/../../../includes/config.php';

// Clear moderator message
foreach($GLOBALS['fc_config']['languages'] as $k => $v)
{
    
$GLOBALS['fc_config']['languages'][$k]['dialog']['login']['moderator'] = '';
}

// Get settings from vbulletin config settings
$GLOBALS['fc_config']['db'] = array(
    
'base' => $config['Database']['dbname'],
    
'user' => $config['MasterServer']['username'],
    
'pass' => $config['MasterServer']['password'],
    
'pref' => $GLOBALS['fc_config']['db']['pref'],
    
'host' => $config['MasterServer']['servername'],
);

// Add tcp port if specified
if($config['MasterServer']['port'])
{
    
$GLOBALS['fc_config']['db']['host'] .= ':'.$config['MasterServer']['port'];
}

// vbulletin specific settings
$GLOBALS['vbulletin'] = array(
    
'cookie' => $config['Misc']['cookieprefix'],
    
'prefix' => $config['Database']['tableprefix'],

    
'spkupdate' => true// Update vBulletin when user speaks.
    
'logupdate' => true// Update vBulletin when user logs in/out.
    
'useavatar' => true// True = use custom avatar for flashchat photo feature, False = use custom profile picture.

    
'users' => array( 2,25 ) , // Usergroups allowed standard access to chat.
    
'mods' => array( 5,) , // Usergroups allowed access as chat moderators.
    
'admin' => array( ) , // Usergroups allowed access as chat administrators.
    
'banned' => array( 1,14 ) , // Usergroups banned from accessing the chat.
    
'customer' => array( ) , // Usergroups allowed access as customers (Live support mode only).
);

// Initiate class
$GLOBALS['fc_config']['cms'] = new vBulletinCMS();

?>
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.02434 seconds
  • Memory Usage 1,980KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_php
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • showpost_complete