Difference between revisions of "PhpBB integration"
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.
Contents
Editing templates/subSilver/overall_header.php
FIND
====
<td height="25" align="center" valign="top" nowrap="nowrap"><span class="mainmenu"> <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> <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> <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> </span></td>
INLINE, FIND
============
<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>
INLINE, BEFORE ADD
==================
<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>
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));
}
.'&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'];