login | register
Tue 07 of Oct, 2008 (20:48 UTC)

bitweaver - Web Application Framework and CMS

Web Application Framework and CMS

Refresh cacheHistoryPrint

phpBB Edits

phpBB edits

Created by: Southpaw, Last modification: Fri 21 of Apr, 2006 (12:10 UTC) by SV1
phpBB 2.0.x 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