Difference between revisions of "PhpBB integration"

From Mibbit Wiki
Jump to: navigation, search
(mibbit.php for phpBB3 integration added)
Line 1: Line 1:
This MOD for [http://www.phpbb.com/ 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.
+
This MOD for [http://www.phpbb.com/ phpBB2/phpBB3] 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==
+
==phpBB2 Integration==
 +
===Editing templates/subSilver/overall_header.php===
  
 
<code><pre style="width:90%;max-height:300px;overflow:auto">FIND
 
<code><pre style="width:90%;max-height:300px;overflow:auto">FIND
Line 16: Line 17:
 
</pre></code>
 
</pre></code>
  
==mibbit.php==
+
===mibbit.php===
 
This file goes to the root of your phpBB installation. Remember to change the channel and server!
 
This file goes to the root of your phpBB installation. Remember to change the channel and server!
  
Line 82: Line 83:
 
</html></pre></code>
 
</html></pre></code>
  
==mibbit.php for phpBB3 ==
+
 
<code>
+
== phpBB3 Integration==
 +
===Editing styles/subsilver2/template/overall_header.php===
 +
<code><pre style="width:90%;max-height:300px;overflow:auto">FIND
 +
====
 +
<!-- IF S_USER_LOGGED_IN -->&nbsp; &nbsp;<a href="{U_PROFILE}"><img src="{T_THEME_PATH}/images/icon_mini_profile.gif" width="12" height="13" alt="*" /> {L_PROFILE}</a><!-- ENDIF -->
 +
 
 +
INLINE, BEFORE ADD
 +
==================
 +
<!-- IF S_USER_LOGGED_IN -->&nbsp; &nbsp;<a href="mibbit.php"><IRC</a><!-- ENDIF -->
 +
</pre></code>
 +
 
 +
 
 +
==mibbit.php==
 +
<code><pre style="width:90%;max-height:300px;overflow:auto">
 
<?php
 
<?php
  
Line 155: Line 169:
 
   </body>
 
   </body>
 
</html>
 
</html>
</code>
+
</pre></code>
  
 
==Customizing==
 
==Customizing==

Revision as of 13:24, 18 April 2008

This MOD for phpBB2/phpBB3 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.

phpBB2 Integration

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>


phpBB3 Integration

Editing styles/subsilver2/template/overall_header.php

FIND
====
<!-- IF S_USER_LOGGED_IN -->   <a href="{U_PROFILE}"><img src="{T_THEME_PATH}/images/icon_mini_profile.gif" width="12" height="13" alt="*" /> {L_PROFILE}</a><!-- ENDIF -->

INLINE, BEFORE ADD
==================
<!-- IF S_USER_LOGGED_IN -->   <a href="mibbit.php"><IRC</a><!-- ENDIF -->


mibbit.php

<?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>

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'];