flashchat-6-0-8 and PHP fusion V7.02.03

Flashchat 6.0.8 and PHP-FUSION V7.02.03 Integration.
Works also with older version PHP-FUSION v7.02.01 in fact the script was created using this version then tested the version previously announced..

Download available PHP-FUSION v7.02.03

In the v7.01.04 and maybe lower the php-fusion team still used md5() hashed to encrypt the user_passoword, but in version 7.02.01 and over the encryption was updated for use of more secured hashes..
This is good, better protection overall..

  • Connect the usernames from database.
  • Super Admin becomes Admin in Flashchat 6.0.8
  • Admin user Without any privileges in PHP-FUSION becomes Moderator in Flashchat 6.0.8
  • Auto login when user is logged in PHP-FUSION V7 site.
  • Login to the chat and to the site using Flashchat login Form..
  • User banned cannot login the chat if is banned from the PHP-FUSION site itself..

The php files that we need to create are the following:

In the folder “/inc/cmses” create “fusion7_02_03CMS.php” will use this higher version because I created the script thinking in this specific version..

<?php
/*
* Integration fix by Neumann Valle aka utan, july 30, 2011
* original code and post at http://vcomputadoras.com/flashchat-6-0-8-php-fusionv7-02-03/
* where php-fusion used hash_hmac() for hashing passwords.
*
* */
ini_set('display_errors', 'OFF');
error_reporting(E_ALL);

$fusion_root_path = realpath(dirname(__FILE__) . '/../../../') . '/';

require_once($fusion_root_path . 'config.php');

class FusionCMS {

var $userid;
var $loginStmt;
var $getUserStmt;
var $getUsersaltStmt;
var $getUsersStmt;

function FusionCMS()
{
$this->getUserStmt = new Statement('SELECT user_id AS id, user_name AS login, user_level FROM '.DB_PREFIX.'users WHERE user_id=? LIMIT 1');
$this->getUsersStmt = new Statement('SELECT user_id AS id, user_name as login FROM '.DB_PREFIX.'users');

$this->userid = NULL;

if (isset($_COOKIE[COOKIE_PREFIX."user"])) {
$cookie_vars = explode('.', $_COOKIE[COOKIE_PREFIX."user"]);
$cookie_1 = is_numeric($cookie_vars['0']) ? $cookie_vars['0'] : NULL;
$cookie_2 = (preg_match('/^[0-9a-z]{32}$/', $cookie_vars['1']) ? $cookie_vars['1'] : '');

$this->userid = $cookie_1;
}

}

function isLoggedIn() {
return $this->userid;
}

function getRoles($group) {
$rv = ROLE_USER;

if ($group == 101)
{
$rv = ROLE_USER;
}

if ($GLOBALS['fc_config']['liveSupportMode'] && $group == 101)
{
$rv = ROLE_CUSTOMER;
}

if ($group == 102)
{
$rv = ROLE_MODERATOR;
}

if ($group == 103)
{
$rv = ROLE_ADMIN;
}

return $rv;

}

function getUserProfile($userid) {

if ($userid == SPY_USERID) $rv = NULL;

elseif ($user = $this->getUser($userid)) {

$rv = ($id = $this->isLoggedIn() && ($id == $userid)) ?  '../edit_profile.php' : '../profile.php?lookup=' . $userid;

return $rv;
}
}

function getUser($userid) {

// if ($userid == SPY_USERID) return NULL;

$rv = NULL;

if(($rs = $this->getUserStmt->process($userid)) && ($rec = $rs->next())) {
$rec['roles'] = $this->getRoles($rec['user_level']);
$rv = $rec;
}
return $rv;
}

function login($login, $password) {
$this->loginStmt = new Statement("SELECT * FROM ".DB_PREFIX."users WHERE user_name='".$login."'");

$rs = $this->loginStmt->process();
$rec = $rs->next();

if ((hash_hmac($rec['user_algo'] , $password , $rec['user_salt'])) === $rec['user_password'])
{

if ($rec['user_status']) return NULL; /* user is banned from the site */
$cookieExpiration = time() + 172800;

$key = hash_hmac($rec['user_algo'], $rec['user_id'].$cookieExpiration, $rec['user_salt']);
$hash = hash_hmac($rec['user_algo'], $rec['user_id'].$cookieExpiration, $key );

$cookie_value = $rec['user_id'].".".$cookieExpiration.".".$hash;
setcookie(COOKIE_PREFIX."user", $cookie_value, $cookieExpiration, '/', '', '0');

return $rec['user_id'];

}

}

function userInRole($userid, $role) {
if($user = $this->getUser($userid)) {
return ($user['roles'] == $role);
}
return false;
}

function logout() {

}

function getUsers() {

$rv = $this->getUsersStmt->process();
return $rv;

}

function getGender($userid) {
// 'M' for Male, 'F' for Female, NULL for undefined
return NULL;
}
}
$GLOBALS['fc_config']['db'] = array(
'host' => $db_host,
'user' => $db_user,
'pass' => $db_pass,
'base' => $db_name,
'pref' => DB_PREFIX . 'fc_'
);

$GLOBALS['fc_config']['cms'] = new FusionCMS();

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

?>

Now we need to override “consts.php” located in the “install_files” folder with the new content .. copy paste everything overriding the old content..

<?php
/**
** Constants used for installation file.
**/

define('INC_DIR', dirname(__FILE__) . '/../inc/');//for config.php

define('NAVY_FILE_SIZE', 1992);//necessary for check uploaded in binary mode

define('CHAT_ROOMS', 'The Lounge, Hollywood, Tech Talk, Current Events');//default rooms

define('CONFIG_FILE', INC_DIR . 'config.php');

define('INST_DIR', './install_files/');

$cmss = array(
//'aedatingCMS' => 'aeDating 2.0/3.0 (FlashChat is built in to aeDating 3.x)',
//'aedatingCMS2'=> 'aeDating 2.0/3.0 (which only permits access to Gold members)',
//'aedating4CMS'=> 'aeDating 4.0',
'azdgCMS'     => 'AZDG Dating Lite 2.1.2',
'cpgNukeCMS'  => 'CPGNuke',
'cpgNukeDragonfly921CMS'  => 'CPGNuke Dragonfly 9.2.1',
'datingProCMS'=> 'Dating Pro',
'e107CMS'     => 'e107 0.617',
'eMeetingCMS' => 'eMeeting',
'efriendsCMS497' => 'Alstrasoft E-friends 4.9.7',
'fusionCMS'   => 'PHP Fusion 4.0.0',
'fusionCMS2'  => 'PHP Fusion 5.0.1',
'fusion6CMS'  => 'PHP Fusion 6',
'fusion7CMS'  => 'PHP Fusion 7.01.04',
'fusion7_02_03CMS' => 'PHP Fusion 7.02.03',
'geeklogCMS'  => 'GeekLog 1.3.9',
'joomlaCMS'	  => 'Joomla 1.1',
'ipbCMS'      => 'Invision Power Board (IPB) 2.0.0',
'ipbCMS2'     => 'Invision Power Board (IPB) 2.0.3',
'ipbCMS2'     => 'Invision Power Board (IPB) 2.1.0',
'ipb30CMS'     => 'Invision Power Board (IPB) 3.0.3',
'lunabyteCMS' => 'LunaByte / Enigma 1.3',
'mamboCMS'    => 'Mambo 4.5.0',
'mamboCMS2'   => 'Mambo 4.5.2',
'mambo465CMS'   => 'Mambo 4.6.5',

'mdproCMS'    => 'MD-Pro 1.0.7',
'mdpro1081CMS'    => 'MD-Pro 1.0.81',
'moodleCMS'   => 'Moodle',
'moodle16CMS' => 'Moodle 1.6',
'moodle17CMS' => 'Moodle 1.7',
'moodle18CMS' => 'Moodle 1.8',
'moodle19CMS' => 'Moodle 1.9',
'osdateCMS'   => 'osDate Dating System',
'phpBB2CMS'	  => 'phpBB 2.0.10 and above',
'phpBB3CMS'	  => 'phpBB 3.0.B2 and above',
'phpBB307CMS'	  => 'phpBB 3.0.2 and above',
'phpBB305CMS'	  => 'phpBB 3.0.5 and above',
//'phpNukeModCMS'	=> 'PHP-Nuke 7.3(module version)',
'phpNukeCMS73'	=> 'PHP-Nuke 7.3',
'phpNukeCMS76'	=> 'PHP-Nuke 7.6',
'phpNukeCMS78'	=> 'PHP-Nuke 7.8',
//'postNukeModCMS'	=> 'PostNuke 0.726-3(module version)',
'postNukeCMS'	=> 'PostNuke 0.726-3',
'postNukeCMS0762'	=> 'PostNuke 0.762',
'phorumCMS518' => 'Phorum 5.1.8',
'phorumCMS527' => 'Phorum 5.2.7',
'smfCMS'	=> 'Simple Machines 1.0',
'smfCMS2'	=> 'Simple Machines 1.1',
'smfCMS20'	=> 'Simple Machines 2.0',
'ubbCMS'	=> 'UBB.Threads 6.5',
'ubb70CMS'	=> 'UBB.Threads 7.0',
'ubb71CMS'	=> 'UBB.Threads 7.1',
'ubb74CMS'	=> 'UBB.Threads 7.4',
'vbulletin30CMS'=> 'vBulletin 3.0',
'vbulletin35CMS'=> 'vBulletin 3.5',
'vbulletin36CMS'=> 'vBulletin 3.6',
'vbulletin37CMS'=> 'vBulletin 3.7',
'vbulletin38CMS'=> 'vBulletin 3.8',
'vbulletin40CMS'=> 'vBulletin 4.0',
'webDateCMS'    => 'Web Date',
'wotCMS2'	=> 'WoltLab Burning Board 2.3.4',
'wowCMS'	=> 'WowBB 1.6.1',
'wowCMS2'	=> 'WowBB 1.6.2',
'wowCMS165'	=> 'WowBB 1.6.5',
'wowCMS170'	=> 'WowBB 1.7',
'xmbCMS'	=> 'XMB 1.9.1',
'xoopsCMS'	=> 'Xoops 2.0.7',
'xoops2016CMS'	=> 'Xoops 2.0.16',
'phpkitCMS' => 'phpkit 1.6.1',
'MyBBCMS'	=> 'MyBB 1.0',
'easysiteCMS' => 'EasySite 3.2.5',
'SBDatingCMS' => 'Softbiz Dating',
'phpFox108' => 'phpFox 1.0.8',
'phpFox11' => 'phpFox 1.1',
'phpFox16CMS' => 'phpFox 1.6',
'inspirations31CMS'   => 'Inspirations 3.1',
'drupalCMS' => 'Drupal',
'drupal613CMS' => 'Drupal 6.1.3',
'punbbCMS'        => 'punBB 1.2.10',
'wordpress22CMS' => 'WordPress 2.1.0 - 2.7',
);

?>

Now that will do it, Install the chat as usual, when the integration page come up , chose to install PHP fusion V7.02.03.
I have installed the script using the root folder where all the php-fusion files resides, the “FLASHCHAT” folder is with the php-fusion files.

Please leave message about any error or suggestions.. if you don’t leave any feed back then I will not be able to fix problems with the script.. please leave a comment good or bad.. thanks for reading..