Difference between revisions of "PhpBB integration"

From Mibbit Wiki
Jump to: navigation, search
m (removed synirc)
 
(23 intermediate revisions by 9 users not shown)
Line 1: Line 1:
 +
{{Wikify|date=December 2009}}
 +
 
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.
 
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.
  
Line 5: Line 7:
  
 
<code><pre style="width:90%;max-height:300px;overflow:auto">FIND
 
<code><pre style="width:90%;max-height:300px;overflow:auto">FIND
====
 
                  <td height="25" align="center" valign="top" nowrap="nowrap"><span class="mainmenu">&amp;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>&amp;nbsp; &amp;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>&amp;nbsp; &amp;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>&amp;nbsp;</span></td>
 
 
INLINE, FIND
 
============
 
&amp;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>&amp;nbsp;
 
 
INLINE, BEFORE ADD
 
==================
 
&amp;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>&amp;nbsp;
 
</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 63: Line 53:
 
}
 
}
  
$uri = 'http://embed.mibbit.com/?nick='.$nickname
+
$uri = 'http://widget.mibbit.com/?nick='.$nickname
 
.'&amp;chatOutputShowTimes=true'
 
.'&amp;chatOutputShowTimes=true'
.'&amp;server=irc.freenode.net:6667' // replace server and port with matching information
+
.'&amp;server=irc.server.net:6667' // replace irc.server.net and 6667 (port) with matching information
.'&amp;channel=%23channel'; // replace channel with the name of your channel
+
.'&amp;channel=%23yourChan'; // replace yourChan with the name of your channel
  
 
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
Line 85: Line 75:
  
 
== phpBB3 Integration==
 
== phpBB3 Integration==
 +
 
===Editing styles/subsilver2/template/overall_header.php===
 
===Editing styles/subsilver2/template/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 92: Line 83:
 
INLINE, BEFORE ADD
 
INLINE, BEFORE ADD
 
==================
 
==================
<!-- IF S_USER_LOGGED_IN -->&nbsp; &nbsp;<a href="mibbit.php"><IRC</a><!-- ENDIF -->
+
<!-- IF S_USER_LOGGED_IN -->&nbsp; &nbsp;<a href="mibbit.php">IRC</a><!-- ENDIF -->
 
</pre></code>
 
</pre></code>
  
  
==mibbit.php==
+
===mibbit.php===
 
<code><pre style="width:90%;max-height:300px;overflow:auto">
 
<code><pre style="width:90%;max-height:300px;overflow:auto">
 
<?php
 
<?php
  
 +
$phpEx = 'php'; // Added to define the variable as the appropriate extension, no extension.inc file in phpBB3
 
define('IN_PHPBB', true);
 
define('IN_PHPBB', true);
$phpbb_root_path = './';
+
$phpbb_root_path = '/rootpath/directory/'; // set this as the path to your phpBB installation
// set this as the path to your phpBB installation
+
// include($phpbb_root_path . 'extension.inc'); // This is no longer valid. phpBB3 no longer utilizes extension.inc
include($phpbb_root_path . 'extension.inc');
 
 
include($phpbb_root_path . 'common.'.$phpEx);
 
include($phpbb_root_path . 'common.'.$phpEx);
include($phpbb_root_path . '/includes/functions_user.'.$phpEx);
+
include($phpbb_root_path . 'includes/functions_user.'.$phpEx);
  
  
Line 146: Line 137:
 
}
 
}
  
$uri = 'http://embed.mibbit.com/?nick='.$nickname
+
$uri = 'http://widget.mibbit.com/?nick='.$nickname
        .'&chatOutputShowTimes=true'
+
         .'&server=irc.sorcery.net%3A6667' // replace server and port with matching information
         .'&server=de.quakenet.org:6667' // replace server and port with matching information
 
        .'&chatOutputShowTimes=true'
 
        .'&needSendButton=false'
 
        .'&userListFontSize=12'
 
 
         .'&noServerTab=false'
 
         .'&noServerTab=false'
         .'&channel=%23cot-guild.org'; // replace channel with the name of your channel
+
         .'&channel=%23chat'; // replace channel with the name of your channel. '%23' is the '#' before most irc channel names.
  
 
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
Line 167: Line 154:
 
   <body>
 
   <body>
 
     <iframe src="<?php echo $uri; ?>" frameborder="0"><h1><a href="<?php echo $uri; ?>">Open IRC channel</a></h1></iframe>
 
     <iframe src="<?php echo $uri; ?>" frameborder="0"><h1><a href="<?php echo $uri; ?>">Open IRC channel</a></h1></iframe>
  </body>
+
 
 +
<h1><a href="<?php echo $uri; ?>">Open IRC channel</a></h1>
 +
</body>
 
</html>
 
</html>
 +
 
</pre></code>
 
</pre></code>
  
Line 183: Line 173:
  
 
<code><nowiki>$nickname = is_valid_nickname($userdata['irc_nickname']) ? $userdata['irc_nickname'] : $userdata['username'];</nowiki></code>
 
<code><nowiki>$nickname = is_valid_nickname($userdata['irc_nickname']) ? $userdata['irc_nickname'] : $userdata['username'];</nowiki></code>
 +
 +
[[Category:How To]]
 +
[[Category:Code]]
 +
{{DEFAULTSORT:Phpbb Integration}}

Latest revision as of 16:58, 10 March 2010


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
===mibbit.php===
This file goes to the root of your phpBB installation. Remember to change the channel and server!

<code><pre style="width:90%;max-height:300px;overflow:auto"><?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://widget.mibbit.com/?nick='.$nickname
	.'&chatOutputShowTimes=true'
	.'&server=irc.server.net:6667' // replace irc.server.net and 6667 (port) with matching information
	.'&channel=%23yourChan'; // replace yourChan 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

$phpEx = 'php'; // Added to define the variable as the appropriate extension, no extension.inc file in phpBB3
define('IN_PHPBB', true);
$phpbb_root_path = '/rootpath/directory/'; // set this as the path to your phpBB installation
// include($phpbb_root_path . 'extension.inc'); // This is no longer valid. phpBB3 no longer utilizes 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://widget.mibbit.com/?nick='.$nickname
        .'&server=irc.sorcery.net%3A6667' // replace server and port with matching information
        .'&noServerTab=false'
        .'&channel=%23chat'; // replace channel with the name of your channel. '%23' is the '#' before most irc channel names.

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

<h1><a href="<?php echo $uri; ?>">Open IRC channel</a></h1>
	</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'];