Integrate PHP-Fusion with ajax_chat

Escrita por UTAN, 19 febrero 2011

PHP-Fusion is Content Management System,

note: Since my folder path are not the same as others in the web, please find the real path for your installation otherwise you would think that the integration doesn't work which it does it.

This integration is for PHP-Fusion v7.01.04 and AJAX CHAT version 0.8.3 .
note: latest PHP-Fusion v7.02.01 also works with this integration.

A little of info from the official Website.

a light-weight open-source content management system (CMS). PHP-Fusion is written in PHP and MySQL and includes a simple, comprehensive administration system as well as Forum, Photogallery, Articles, FAQ and much more.

Unfortunately his founder and lead coder MR Nick Jones passed away and the users and community is mourning this lost, Descanse en Paz..

This integration has the following features,

  • Set user admin
  • Set user moderator
  • Set the regular chatters username
  • Check if guest login usernick is registered in the Fusion database.

Now SuperAdmin becomes Admin in ajax chat, userAdmin becomes Moderator in the ajax chat and regular user becomes regular users.
in order to have a moderator you need to set a regular user as admin, you can do that in the control panel of PHP-FUSION CMS , its up to you if you want this user have all the admin privileges, in my testing I lef the boxes to give all privileges blank so it could only have the admin flag but not all privileges..

So please be careful when setting this up.. this is in a default installation, and with the most uptodate PHP-FUSION CMS..

Please install ajax chat as described in the readme.txt .

PHP-FUSION is installed in its own folder and Ajax Chat is also in its own folder, so PHP-FUSION -> /Webroot/php-fusion/ and
Ajax Chat -> /Webroot/php-fusion/chat/.

Please make sure you know how you set up the chat and PHP-FUSION,
now let go to start editing:

open up “/chat/lib/custom.php” :
NOTE: I have made a few changes so people don’t have PHP error when they don’t set correctly the maincore.php path.
Again the maincore.php its the important piece in the integration if you set it incorrectly the integration will not work at all, and a bunch of PHP error will come up.

<?php
$maincore_path="/maincore.php"; // change your path here
if(file_exists($_SERVER{'DOCUMENT_ROOT'} . $maincore_path )){
require_once(($_SERVER{'DOCUMENT_ROOT'} . "/config.php"));
define('DB_HOST', $db_host);define('DB_USER', $db_user);define('DB_PASS', $db_pass);define('DB_NAME', $db_name);
require_once(($_SERVER{'DOCUMENT_ROOT'} . $maincore_path));
}else{
exit("<span style=\"color:red;\">The maincore.php was not found.<br> Please make sure the path is correct in your installation.</span>");
}
// lets create our vars for login, username, userID
if(defined('iUSER'))
{
$fusionUserName=$userdata['user_name'];
$fusionUserId=$userdata['user_id'];
}
?>

Now we got set up some variables that we will need, basically we put the username and user ID from PHP-FUSION in variables for easy accessing.

Next we need to open “/chat/lib/class/CustomAJAXCHAT.php”.
highlight line 11 to line 72 and paste the code below.
make sure you do correctly or else you will get a nasty error..

  // auto login PHP-fusion CMS
	function initCustomRequestVars(){
      if(!$this->getRequestVar('logout') && (iUSER)) {
      $this->setRequestVar('login', true);
      }
    }
	// Returns an associative array containing userName, userID and userRole
	// Returns null if login is invalid
	function getValidLoginUserData() {
	// globalize the important variables from fusion cms
	global $fusionUserName,$fusionUserId;
        // Check if we have a valid registered user:
		$customUsers = $this->getCustomUsers();
        if(iUSER){
		$userData = array();
        $userData['userID'] =$fusionUserId;
        $userData['userName'] =$fusionUserName;
		$user_name=$this->trimUserName($userData['userName']);
		 if(iSUPERADMIN){
                $userData['userRole'] = AJAX_CHAT_ADMIN;
				}elseif(iADMIN){
                $userData['userRole'] = AJAX_CHAT_MODERATOR;
				}elseif(iMEMBER){
                $userData['userRole'] = AJAX_CHAT_USER;
				}
                return $userData;
		}// Check if we have a valid registered user using the ajax chat form:
		elseif($this->getRequestVar('password')) {
			$userName = $this->getRequestVar('userName');
			$userName = $this->convertEncoding($userName, $this->getConfig('contentEncoding'), $this->getConfig('sourceEncoding'));

			$password = $this->getRequestVar('password');
			$password = $this->convertEncoding($password, $this->getConfig('contentEncoding'), $this->getConfig('sourceEncoding'));

			foreach($customUsers as $key=>$value) {
				if(($value['userName'] == $userName) && ($value['password'] == $password)) {
					$userData = array();
					$userData['userID'] = $key;
					$userData['userName'] = $this->trimUserName($value['userName']);

					$userData['userRole'] = $value['userRole'];
					return $userData;
				}
			}

			return null;
		}else{
            // Guest users:
            return $this->getGuestUser();
        }

    }

	// Store the channels the current user has access to
	// Make sure channel names don't contain any whitespace
	function &getChannels() {
		if($this->_channels === null) {
			$this->_channels = array();

			$customUsers = $this->getCustomUsers();

			// Get the channels, the user has access to:
			if($this->getUserRole() == AJAX_CHAT_GUEST) {
				$validChannels = $customUsers[0]['channels'];
			} else {
				//$validChannels = $customUsers[$this->getUserID()]['channels'];
				$validChannels = $customUsers[0]['channels'];
			}

			// Add the valid channels to the channel list (the defaultChannelID is always valid):
			foreach($this->getAllChannels() as $key=>$value) {
				// Check if we have to limit the available channels:
				if($this->getConfig('limitChannelList') && !in_array($value, $this->getConfig('limitChannelList'))) {
					continue;
				}

				if(in_array($value, $validChannels) || $value == $this->getConfig('defaultChannelID')) {
					$this->_channels[$key] = $value;
				}
			}
		}
		return $this->_channels;
	}

All good so far, now lets edit another PHP class document, important so we can check if user guest nick is a registered username, if used we get an error and the user wont be able to login in the chat..
Unless of course he changes for a different nickname.

Now Open “/chat/lib/class/AJAXChat.php”

Highlight from line 3179 to line 3207 paste the following code below:

function getGuestUser() {
		if(!$this->getConfig('allowGuestLogins'))
			return null;

		if($this->getConfig('allowGuestUserName')) {
			$maxLength =	$this->getConfig('userNameMaxLength')
							- $this->stringLength($this->getConfig('guestUserPrefix'))
							- $this->stringLength($this->getConfig('guestUserSuffix'));

			// Trim guest userName:
			$userName=$this->getRequestVar('userName');
			if($this->IfUserExist($userName)){
			return null;
			}
			$userName = $this->trimString($this->getRequestVar('userName'), null, $maxLength, true, true);

			// If given userName is invalid, create one:
			if(!$userName) {
				$userName = $this->createGuestUserName();
			} else {
				// Add the guest users prefix and suffix to the given userName:
				$userName = $this->getConfig('guestUserPrefix').$userName.$this->getConfig('guestUserSuffix');
			}
		} else {
			$userName = $this->createGuestUserName();
		}

		$userData = array();
		$userData['userID'] = $this->createGuestUserID();
		$userData['userName'] = $userName;
		$userData['userRole'] = AJAX_CHAT_GUEST;
		return $userData;
	}
  /* lets create a custom function that will check if username exist in database..  PHP 4.0.3 , PHP 5*/

     function IfUserExist($username){
     $link = mysql_connect(DB_HOST,DB_USER, DB_PASS);
     if($link)
	 {
	 $username=mysql_real_escape_string(stripslashes($username));
     mysql_select_db(DB_NAME, $link);
	 $db_table=DB_PREFIX."users";
     $query = "SELECT user_name FROM $db_table WHERE user_name='$username'";
     $result= mysql_query($query);
     if(mysql_num_rows($result) > 0)
	 {
     return true;
	 mysql_close($link);
     }else{
     return false;
     }
     }else{
     die('There is an error in the custom function IfUserExist()' . mysql_error());
     }
     }

There is a new function called IfUserExist(); that will check if usernick that the guest user is trying to use is or not registered in the PHP-FUSION.. very important so we don’t have people impersonating other registered user in the chat..

So there it is, your chat its fully connected to PHP-FUSION CMS..
hope you like, please comment and forgive my English since is not my primary speaking language…

Please, comment the integration so I know is working for all thanks again for reading..

Categorias : Guias para la Web,integrations,php y algo mas,Un poco de html Etiquetas :

Comentarios
20 febrero 2011

Hi and tnx for the mod. But it don’t work. As I’ve told on SF, it give me a blank page when I try to open the chat.
Also, I’ve to change require_once “../maincore.php”; with require_once “http://www.xxx.xx/maincore.php”; or it give me a bad XML interpretation

Echo by The Master
20 febrero 2011

It works, what happens is that you need to fix the require for the maincore.php, as I stated above in the post you need to check how its your path done and connect it..

Like I have like this /webroot/PHP-FUSION

then I have the chat like this /webroot/PHP-FUSION/chat
then my require looks like this require_once “../maincore.php”;

I should fix the above example because it don’t reflect my paths..

Echo by UTAN
20 febrero 2011

The Master, you need to make sure you got everything done, this is for the latest PHP-FUSION, and there is also a new function that must be also copied or you will receive the kind of errors you have..

thanks

Echo by UTAN
5 marzo 2011

Fail. This doesnt work.

Echo by kljasdf
6 marzo 2011

what doesnt work, can you elaborate?.

Echo by UTAN
15 marzo 2011

Parse error: syntax error, unexpected T_REQUIRE_ONCE in /member/p2pinside/chat/lib/custom.php on line 11

is here:

require_once “../maincore.php”;

what’s the solution?

Echo by Zack
27 marzo 2011

you need to find the path of your “maincore.php” in your installation because in this tutorial I have used my installation and its different than yours..
regards.

Echo by UTAN
13 abril 2011

Thank you for this tutorial! Very useful! I’ve got it working!

Echo by Victor
11 mayo 2011

Is this a similar way to integrate it with PHP-Nuke? I can’t seem to find an available tutorial for that CMS.

Echo by Drew
12 mayo 2011

Hum, If I get people to support the idea to make it happens I would install PHP-NUKE on my test bed…

And make the integrations…
thanks and regards.

Echo by UTAN
3 febrero 2012

it seems that I am not able to get to maincore.php – pls help!

I have files as following:
http://www.simplenunique.com/maincore.php

http://simplenunique.com/chat/install.php,

the path for maincore, i tried /maincore.php; and then to avoid any mistakes put the whole path as http://www.simplenunique.com/maincore.php

I still get message The maincore.php was not found.
Please make sure the path is correct in your installation.

The path I am changing is in custom.php.

Any idea what’s happenign :( I am not so good at this it seems

Echo by Svetlana
3 febrero 2012

Hi,

can you please output this code for debugging at the top of the page after $maincore_path?

echo $_SERVER{'DOCUMENT_ROOT'} . $maincore_path;
exit();

This way I can see your server vars and the whole require path..

thanks a lot.

Echo by UTAN
Deja tu comentario

(requerido)

(requerido)