phpBB Edits
phpBB edits
This is the current phpBB 2.0.11 edits required for user integration to bitweaver. Remeber to make a backup of everything before you start editing!
These edits should work for all phpBB 2.0.x boards.
Files: That need to be created and/or edited.
- ./common.php
- ./bit_setup_inc.php #Needs to be created!
- ./viewtopic.php
- ./db/mysql.php
- ./install/install.php
- ./admin/index.php
- ./admin/schema_inc.php #Needs to be created!
- ./includes/page_tail.php
- ./includes/sessions.php
- ./templates/menu_phpbb.tpl #Needs to be created!
- ./templates/menu_phpbb_admin.tpl #Needs to be created!
- ./templates/phpbb_mini_search.tpl #Needs to be created!
- ./templates/bit_phpbb.tpl #Needs to be created!
In ./common.php:
Find:
$board_config = array(); $userdata = array(); $theme = array(); $images = array(); $lang = array(); $gen_simple_header = FALSE;
Add After:
// } BIT_MOD Find:
// // Did the session exist in the DB? // if ( isset($userdata['user_id']) ) {
Add After:
// {{{ BEGIN BIT_MOD $sessiondata['session_page'] = $thispage_id; check_bit_user( $userdata ); // }}} END BIT_MOD
Find:
setcookie($cookiename . '_data', serialize($sessiondata), $current_time + 31536000, $cookiepath, $cookiedomain, $cookiesecure); setcookie($cookiename . '_sid', $session_id, 0, $cookiepath, $cookiedomain, $cookiesecure); } return $userdata; } } }
Add After:
// {{{ BEGIN BIT_MOD // make sure we keep copy a few variables over if we automatically start a new bit_session $sessiondata['session_page'] = $thispage_id; $sessiondata['session_ip'] = $user_ip; check_bit_user( $sessiondata ); // {{{ END BIT_MOD
Find:
// // If we reach here then no (valid) session exists. So we'll create a new one, // using the cookie user_id if available to pull basic user prefs. // $user_id = ( isset($sessiondata['userid']) ) ? intval($sessiondata['userid']) : ANONYMOUS; if ( !($userdata = session_begin($user_id, $user_ip, $thispage_id, TRUE)) ) { message_die(CRITICAL_ERROR, 'Error creating user session', '', __LINE__, __FILE__, $sql); } return $userdata; }
Add After: (i'm afraid we can't use php syntax highlighting as it causes the code plugin to crash)
// {{{ BEGIN TIKI MOD
function check_bit_user( &$p_user_data ) {
// We have a valid tiki user, however we do not have a phpBB user
global $db, $gBitSystem, $gBitUser, $userlib, $HTTP_GET_VARS;
$anon = $p_user_data['user_id'] == ANONYMOUS;
if( empty($p_user_data['user_id']) || $anon
|| ( $gBitUser->isRegistered() && $gBitUser->mUserId != $p_user_data['user_id'] )
) {
if( $gBitUser->isRegistered() ) {
//
// Try and pull the last time stored in a cookie, if it exists
//
$sql = "SELECT *
FROM " . USERS_TABLE . "
WHERE user_id = '".$gBitUser->mUserId."'";
if ( !($result = $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR, 'Could not obtain bitweaver user from phpBB user table', '', __LINE__, __FILE__, $sql);
}
$user_row = $db->sql_fetchrow($result);
//vd( $user_row );
$md5 = ( $gBitSystem->mPrefs['feature_clear_passwords'] == 'y' );
$phpbb_password = ( $md5 ? $gBitUser->mInfo['password'] : md5( $gBitUser->mInfo['password'] ) );
// nuke their existing session cause it stores anonymous_id (-1) initially
$sql = "DELETE FROM " . SESSIONS_TABLE . "
WHERE session_id = '".$p_user_data['session_id']."'";
if ( !$db->sql_query($sql) )
{
message_die(CRITICAL_ERROR, 'Error clearing sessions table', '', __LINE__, __FILE__, $sql);
}
if( empty( $user_row['user_id'] ) ) {
$sql = "INSERT INTO ". USERS_TABLE ." (user_id, username, user_regdate, user_password, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_sig_bbcode_uid, user_avatar, user_avatar_type, user_viewemail, user_aim, user_yim, user_msnm, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_viewonline, user_notify, user_notify_pm, user_popup_pm, user_timezone, user_dateformat, user_lang, user_style, user_level, user_allow_pm, user_active, user_actkey)
VALUES ( ".$gBitUser->mInfo['user_id'].", ".$gBitSystem->mDb->qstr( $gBitUser->mInfo['login'], get_magic_quotes_gpc() ).", ".strtotime('now').", ".$gBitSystem->mDb->qstr( $phpbb_password, get_magic_quotes_gpc() ).", '".$gBitUser->mInfo['email']."',
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL, 0, 1, 0, 1, 0, 0, 1, 1, 0, 'd M Y h:i a', 'english', 1, ".(int)$gBitUser->isAdmin().", 0, 1, NULL)";
if ( !($result = $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR, 'Could not create bitweaver user for phpBB', '', __LINE__, __FILE__, $sql);
}
} else {
// Has user data changed?
if( ($user_row['user_email'] != $gBitUser->mInfo['email'])
|| ($user_row['user_password'] != $phpbb_password)
|| ($user_row['username'] != $gBitUser->mInfo['login'])
)
{
$sql = "UPDATE ". USERS_TABLE ." SET username=".$gBitSystem->mDb->qstr( $gBitUser->mInfo['login'], get_magic_quotes_gpc() ).", user_email = ".$gBitSystem->mDb->qstr( $gBitUser->mInfo['email'], get_magic_quotes_gpc() ).", user_password=".$gBitSystem->mDb->qstr( $phpbb_password, get_magic_quotes_gpc() )."
WHERE user_id = ".$user_row['user_id'];
if ( !($result = $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR, 'Could not create bitweaver user for phpBB', '', __LINE__, __FILE__, $sql);
die;
}
}
}
// Restart the session because somehow we lost it.
$p_user_data = session_begin( $gBitUser->mUserId, $p_user_data['session_ip'], $p_user_data['session_page'], TRUE, TRUE );
} else {
// We have an anonymous session
$user_id = ( isset($p_user_data['user_id']) ) ? intval($p_user_data['user_id']) : ANONYMOUS;
if ( !($p_user_data = session_begin( $user_id, $p_user_data['user_ip'], $p_user_data['session_page'], TRUE, TRUE, , (int)$gBitUser->isAdmin() )) )
{
message_die(CRITICAL_ERROR, 'Error creating user session', '', __LINE__, __FILE__, $sql);
}
}
} elseif( $gBitUser->isRegistered() ) {
if( empty( $p_user_data['session_id'] ) ) {
// we need a session
$p_user_data = session_begin( $gBitUser->mUserId, $p_user_data['session_ip'], $p_user_data['session_page'], TRUE, TRUE, (int)$gBitUser->isAdmin() );
}
} else {
if( $p_user_data['session_logged_in'] ) {
//our bitweaver session has ended before our phpBB session
session_end( $p_user_data['session_id'], $p_user_data['user_id'] );
$p_user_data = session_begin( ANONYMOUS, $p_user_data['session_ip'], $p_user_data['session_page'] );
}
}
}Save and upload the file.
In ./db/postgres7.php:
Bug fix for phpBB in postgres schemas.
Find:
if( preg_match("/^INSERT[\t\n ]+INTO[\t\n ]+([a-z0-9\_\-]+)/is", $this->last_query_text[$query_id], $tablename) )
replace with
if( preg_match("/^INSERT[\t\n ]+INTO[\t\n ]+([-a-z0-9\_\.]+)/is", $this->last_query_text[$query_id], $tablename) )
In ./viewtopic.php
Bug fix for mystery function "phpbb_rtrim" which doesn't appear to be defined anywhere.
Find:
$highlight_match = phpbb_rtrim($highlight_match, "\\");
replace with
$highlight_match = rtrim($highlight_match, "\\");
Create a new file called menu_phpbb.tpl in your ./templates/ folder.
Add this into the file:
<a class="menuoption" href="{$smarty.const.PHPBB_PKG_URL}">{tr}Browse Forums{/tr}</a> {if $user} <a class="menuoption" href="{$smarty.const.PHPBB_PKG_URL}search.php?search_id=newposts">{tr}Posts since last visit{/tr}</a> <a class="menuoption" href="{$smarty.const.PHPBB_PKG_URL}search.php?search_id=egosearch">{tr}Your posts{/tr}</a> <a class="menuoption" href="{$smarty.const.PHPBB_PKG_URL}search.php?search_id=unanswered">{tr}Unanswered posts{/tr}</a> {/if}
Save and upload the file.
Create a new file called menu_phpbb_admin.tpl in your ./templates/ folder.
Add this into the file:
<a class="menuoption" href="{$smarty.const.PHPBB_PKG_URL}admin/index.php">{tr}Administer phpBB{/tr}</a>
Save and upload the file.
Create a new file called phpbb_mini_search.tpl in your ./templates/ folder.
Add this into the file:
<form action="{$smarty.const.PHPBB_PKG_URL}search.php" method="POST"> <input type="hidden" name="search_fields" value="all" /> <input type="text" style="width: 75px" class="post" name="search_keywords" size="30" /> <input class="liteoption" type="submit" value="{tr}Search{/tr}" /> Match: <input type="radio" name="search_terms" value="any" checked="checked" /> {tr}Any{/tr} <input type="radio" name="search_terms" value="all" />{tr}All{/tr}</span> </form> <a href="{$smarty.const.PHPBB_PKG_URL}search.php" style="font-size:smaller">{tr}More options{/tr}</a>
Save and upload the file.
Create a new file called bit_phpbb.tpl in your ./templates/ folder.
Add this into the file:
{* BIT_MOD - this is a new file*} <div class="phpbb"> {php} global $template; $template->flush_buffer(); {/php} </div> {* BIT_MOD *}
Save and upload the file.
Fin.
Comments