Difference between revisions of "PhpBB integration"

From Mibbit Wiki
Jump to: navigation, search
m (Fixing Firefox 2 issue; relying only on IFRAME for now)
(mibbit.php for phpBB3 integration added)
Line 81: Line 81:
 
</body>
 
</body>
 
</html></pre></code>
 
</html></pre></code>
 +
 +
==mibbit.php for phpBB3 ==
 +
<code>
 +
<?php
 +
 +
define('IN_PHPBB', true);
 +
$phpbb_root_path = './';
 +
// set this as the path to your phpBB installation
 +
include($phpbb_root_path . 'extension.inc');
 +
include($phpbb_root_path . 'common.'.$phpEx);
 +
include($phpbb_root_path . '/includes/functions_user.'.$phpEx);
 +
 +
 +
//
 +
// Start session management
 +
//
 +
$user->session_begin();
 +
$auth->acl($user->data);
 +
$userdata = $user->data;
 +
 +
//
 +
// End session management
 +
//
 +
 +
function is_valid_nickname($nickname)
 +
{
 +
        if($nickname != '')
 +
        {
 +
                for($i = 0, $maxi = strlen($nickname); $i < $maxi; $i++)
 +
                {
 +
                        $code = ord($nickname[$i]);
 +
                        if( !(($i > 0 && ( $code == 45 || ($code >= 48 && $code <= 57) )) || ($code >= 65 && $code <= 125)) ) break;
 +
                }
 +
                return ($i == $maxi);
 +
        }
 +
}
 +
 +
if($user->data['user_id'] != ANONYMOUS)
 +
{
 +
        $nickname = is_valid_nickname($user->data['username']) ? $user->data['username'] : '';
 +
}
 +
else
 +
{
 +
        $nickname = '';
 +
}
 +
 +
if( !is_valid_nickname($nickname) )
 +
{
 +
        $nickname = 'CoTGuest_'.chr(mt_rand(65, 90)).chr(mt_rand(97, 122)).chr(mt_rand(97, 122));
 +
}
 +
 +
$uri = 'http://embed.mibbit.com/?nick='.$nickname
 +
        .'&chatOutputShowTimes=true'
 +
        .'&server=de.quakenet.org:6667' // replace server and port with matching information
 +
        .'&chatOutputShowTimes=true'
 +
        .'&needSendButton=false'
 +
        .'&userListFontSize=12'
 +
        .'&noServerTab=false'
 +
        .'&channel=%23cot-guild.org'; // replace channel with the name of your channel
 +
 +
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 +
<html>
 +
  <head>
 +
        <title>IRC</title>
 +
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
 +
        <style type="text/css">
 +
                html,body,iframe { border: 0; height: 100%; margin: 0; overflow: hidden; padding: 0; }
 +
                iframe { height: 100%; width: 100%; }
 +
        </style>
 +
  </head>
 +
  <body>
 +
    <iframe src="<?php echo $uri; ?>" frameborder="0"><h1><a href="<?php echo $uri; ?>">Open IRC channel</a></h1></iframe>
 +
  </body>
 +
</html>
 +
</code>
  
 
==Customizing==
 
==Customizing==

Revision as of 13:15, 18 April 2008

This MOD for phpBB2 uses username as the nickname for the user. However a Guest nickname is used if the nickname contains characters that are not valid within IRC.

Editing templates/subSilver/overall_header.php

FIND
====
                  <td height="25" align="center" valign="top" nowrap="nowrap"><span class="mainmenu">&nbsp;<a href="{U_PROFILE}" class="mainmenu"><img src="templates/subSilver/images/icon_mini_profile.gif" width="12" height="13" border="0" alt="{L_PROFILE}" hspace="3" />{L_PROFILE}</a>&nbsp; &nbsp;<a href="{U_PRIVATEMSGS}" class="mainmenu"><img src="templates/subSilver/images/icon_mini_message.gif" width="12" height="13" border="0" alt="{PRIVATE_MESSAGE_INFO}" hspace="3" />{PRIVATE_MESSAGE_INFO}</a>&nbsp; &nbsp;<a href="{U_LOGIN_LOGOUT}" class="mainmenu"><img src="templates/subSilver/images/icon_mini_login.gif" width="12" height="13" border="0" alt="{L_LOGIN_LOGOUT}" hspace="3" />{L_LOGIN_LOGOUT}</a>&nbsp;</span></td>

INLINE, FIND
============
 &nbsp;<a href="{U_PROFILE}" class="mainmenu"><img src="templates/subSilver/images/icon_mini_profile.gif" width="12" height="13" border="0" alt="{L_PROFILE}" hspace="3" />{L_PROFILE}</a>&nbsp;

INLINE, BEFORE ADD
==================
&nbsp;<a href="mibbit.php" class="mainmenu" onclick="window.open('mibbit.php','mibbit','width=500,innerwidth=500,height=400,innerheight=400,location=0,menubar=0,scrollbars=0,status=0,toolbar=0');return false">IRC</a>&nbsp;

mibbit.php

This file goes to the root of your phpBB installation. Remember to change the channel and server!

<?php

define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
//
// End session management
//

function is_valid_nickname($nickname)
{
	if($nickname != '')
	{
		for($i = 0, $maxi = strlen($nickname); $i < $maxi; $i++)
		{
			$code = ord($nickname[$i]);
			if( !(($i > 0 && ( $code == 45 || ($code >= 48 && $code <= 57) )) || ($code >= 65 && $code <= 125)) ) break;
		}
		return ($i == $maxi);
	}
}

if($userdata['session_logged_in'])
{
	$nickname = is_valid_nickname($userdata['username']) ? $userdata['username'] : '';
}
else
{
	$nickname = '';
}

if( !is_valid_nickname($nickname) )
{
	$nickname = 'Guest_'.chr(mt_rand(65, 90)).chr(mt_rand(97, 122)).chr(mt_rand(97, 122));
}

$uri = 'http://embed.mibbit.com/?nick='.$nickname
	.'&chatOutputShowTimes=true'
	.'&server=irc.freenode.net:6667' // replace server and port with matching information
	.'&channel=%23channel'; // replace channel with the name of your channel

?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<title>IRC</title>
		<meta http-equiv="content-type" content="text/html; charset=utf-8">
		<style type="text/css">
html,body,iframe { border: 0; height: 100%; margin: 0; overflow: hidden; padding: 0; }
iframe { height: 100%; width: 100%; }
		</style>
	</head>
	<body>
		<iframe src="<?php echo $uri; ?>" frameborder="0"><h1><a href="<?php echo $uri; ?>">Open IRC channel</a></h1></iframe>
	</body>
</html>

mibbit.php for phpBB3

<?php

define('IN_PHPBB', true); $phpbb_root_path = './'; // set this as the path to your phpBB installation include($phpbb_root_path . 'extension.inc'); include($phpbb_root_path . 'common.'.$phpEx); include($phpbb_root_path . '/includes/functions_user.'.$phpEx);


// // Start session management // $user->session_begin(); $auth->acl($user->data); $userdata = $user->data;

// // End session management //

function is_valid_nickname($nickname) {

       if($nickname != )
       {
               for($i = 0, $maxi = strlen($nickname); $i < $maxi; $i++)
               {
                       $code = ord($nickname[$i]);
                       if( !(($i > 0 && ( $code == 45 || ($code >= 48 && $code <= 57) )) || ($code >= 65 && $code <= 125)) ) break;
               }
               return ($i == $maxi);
       }

}

if($user->data['user_id'] != ANONYMOUS) {

       $nickname = is_valid_nickname($user->data['username']) ? $user->data['username'] : ;

} else {

       $nickname = ;

}

if( !is_valid_nickname($nickname) ) {

       $nickname = 'CoTGuest_'.chr(mt_rand(65, 90)).chr(mt_rand(97, 122)).chr(mt_rand(97, 122));

}

$uri = 'http://embed.mibbit.com/?nick='.$nickname

       .'&chatOutputShowTimes=true'
       .'&server=de.quakenet.org:6667' // replace server and port with matching information
       .'&chatOutputShowTimes=true'
       .'&needSendButton=false'
       .'&userListFontSize=12'
       .'&noServerTab=false'
       .'&channel=%23cot-guild.org'; // replace channel with the name of your channel

?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html>

  <head>
       <title>IRC</title>
       <meta http-equiv="content-type" content="text/html; charset=utf-8">
       <style type="text/css">
               html,body,iframe { border: 0; height: 100%; margin: 0; overflow: hidden; padding: 0; }
               iframe { height: 100%; width: 100%; }
       </style>
  </head>
  <body>

<iframe src="<?php echo $uri; ?>" frameborder="0">

<a href="<?php echo $uri; ?>">Open IRC channel</a>

</iframe>

  </body>

</html>

Customizing

If you add a new profile field or already have a MOD in your forum that allows you to use a valid IRC nickname, you may easily modify the nickname line:

$nickname = is_valid_nickname($userdata['username']) ? $userdata['username'] : '';

To:

$nickname = is_valid_nickname($userdata['username']) ? $userdata['username'] : $userdata['irc_nickname'];

Where 'irc_nickname' is the name of the profile field. You may also switch things around if you prefer IRC nickname over the forum username:

$nickname = is_valid_nickname($userdata['irc_nickname']) ? $userdata['irc_nickname'] : $userdata['username'];