--=phpBB 2.0.6 Edits=-
|
+-=phpBB 2.0.x Edits=- |
|
-This is the current phpBB 2.0.6 edits required for user integration to TikiPro. Remeber to make a backup of everything before you start editing!
|
+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
|
-*./tiki_setup_inc.php ''#Needs to be created!''
|
-*./admin/schema_inc.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_admin.tpl
|
-*./templates/tiki_phpbb.tpl ''#Needs to be created!''
|
+*./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();
|
+{code source='php'} |
+$board_config = array(); |
$userdata = array();
|
$theme = array();
|
$images = array();
|
$lang = array();
|
-$gen_simple_header = FALSE;^
|
+$gen_simple_header = FALSE; |
+{/code} |
|
''Add After:''
|
-^// {{{ TIKI_MOD
|
+{code source='php'} |
+// {{{ BIT_MOD |
if( file_exists( $phpbb_root_path . 'config.'.$phpEx ) ) {
|
include($phpbb_root_path . 'config.'.$phpEx);
|
}
|
-if( !defined("PHPBB_INSTALLED") )
|
+if( !defined("PHPBB_INSTALLED") ) |
{
|
- header("Location: install/install.$phpEx");
|
+ header("Location: install/install.$phpEx"); |
exit;
|
}
|
|
-require_once( $phpbb_root_path.'/../tiki_setup_inc.php' );
|
-//phpBB is not as clean as tiki. errors only
|
-))error_reporting(( ( E_ALL & ~E_NOTICE );
|
-// }}} TIKI_MOD^
|
+require_once( $phpbb_root_path.'/../bit_setup_inc.php' ); |
+//phpBB is not as clean as bitweaver. errors only |
+error_reporting ( E_ALL & ~E_NOTICE ); |
+// }}} BIT_MOD |
+{/code} |
|
''Save and upload the file.''
|
|
---
|
|
-__Create a new file called ''tiki_setup_inc.php'' in your phpBB root folder.__
|
+__In ./db/mysql.php:__ |
+ |
+''Find:'' |
+{code source='php'} |
+function sql_query($query = "", $transaction = FALSE) |
+ { |
+{/code} |
+ |
+"Add After: |
+ |
+{code source='php'} |
+ // {{{ BIT_MOD |
+ // This is necessary for the module queries to run if bitweaver and phpBB are running in different DB's |
+ $dbselect = mysql_select_db($this->dbname); |
+ // }}} BIT_MOD |
+{/code} |
+ |
+"Find:" |
+{code source='php'} |
+ $this->query_result = @mysql_query($query, $this->db_connect_id); |
+{/code} |
+ |
+ |
+"Add After: |
+ |
+{code source='php'} |
+ // {{{ BIT_MOD |
+ if( $this->dbname != $gBitDbName ) { |
+ // This is necessary for the module queries to run if bitweaver and phpBB are running in different DB's |
+ $dbselect = mysql_select_db($this->dbname); |
+ } |
+ // }}} BIT_MOD |
+{/code} |
+ |
+--- |
+ |
+__In ./install/install.php:__ |
+ |
+''Find:'' |
+{code source='php'} |
+// --------- |
+// FUNCTIONS |
+{/code} |
+ |
+''Add Before:'' |
+{code source='php'} |
+// {{{ BIT_MOD |
+// Make sure only bitweaver admins can run the installer |
+require_once( '../../bit_setup_inc.php' ); |
+global $gBitSystem; |
+$gBitSystem->verifyPermission( 'bit_p_admin' ); |
+// }}} BIT_MOD |
+{/code} |
+ |
+--- |
+ |
+__Create a new file called ''bit_setup_inc.php'' in your phpBB root folder.__ |
|
''Add this into the file:'' |
+{code source='php'} |
+<?php |
+global $gBitSystem; |
+ |
+$gBitSystem->registerPackage( 'phpBB', dirname( __FILE__ ).'/' ); |
+if( $gBitSystem->isPackageActive( 'phpbb' ) ) { |
+ $gBitSystem->registerAppMenu( 'phpbb', 'Forums', PHPBB_PKG_URL.'index.php', 'bitpackage:phpbb/menu_phpbb.tpl' ); |
+ if( file_exists( PHPBB_PKG_PATH.'config.php' ) ) { |
+ require_once( PHPBB_PKG_PATH.'config.php' ); |
+ } |
+} |
+?> |
+{/code} |
+ |
+''Save and upload the file.'' |
+ |
+--- |
+ |
+__In ./admin/index.php:__ |
+ |
+''Find:'' |
+{code source='php'} |
+ $db->sql_close(); |
+ exit; |
+ |
+} |
+ |
+?> |
+{/code} |
+ |
+''Add __ABOVE__:'' |
+{code source='php'} |
+// {{{ BIT_MOD |
+$template->flush_buffer(); |
+// }}} BIT_MOD |
+{/code} |
+ |
+''Save and upload the file.'' |
+ |
+--- |
+ |
+__Create a new file called ''schema_inc.php'' in your ./admin/ folder.__ |
+ |
+''Add this into the file:'' |
+{code source='php'} |
+<?php |
+global $gBitInstaller; |
+$gBitInstaller->registerPackageInfo( PHPBB_PKG_DIR, array( |
+ 'description' => "phpBB is a high powered, fully scalable, and highly customizable Open Source bulletin board package. phpBB has a user-friendly interface, simple and straightforward administration panel, and helpful FAQ.", |
+ 'license' => '<a href="http://www.gnu.org/licenses/licenses.html#LGPL">LGPL</a>', |
+ 'version' => '2.0.6', |
+ 'state' => 'external package', |
+ 'dependencies' => '', |
+ 'install' => array( |
+ 'package' => 'phpbb', |
+ 'file' => 'install/install.php' |
+ ) |
+) ); |
+?> |
+{/code} |
+ |
+''Save and upload the file.'' |
+ |
+--- |
+ |
+__In ./includes/page_tail.php:__ |
+"Find:" (~lines 45-48 ) |
+{code source='php'} |
+// |
+// |
+// Close our DB connection. |
+// |
+$db->sql_close(); |
+{/code} |
+ |
+and delete |
+ |
+''Find:'' (~lines 52-70 ) |
+{code source='php'} |
+// |
+// Compress buffered output if required and send to browser |
+// |
+if ( $do_gzip_compress ) |
+{ |
+ // |
+ // Borrowed from php.net! |
+ // |
+ $gzip_contents = ob_get_contents(); |
+ ob_end_clean(); |
+ |
+ $gzip_size = strlen($gzip_contents); |
+ $gzip_crc = crc32($gzip_contents); |
+ |
+ $gzip_contents = gzcompress($gzip_contents, 9); |
+ $gzip_contents = substr($gzip_contents, 0, strlen($gzip_contents) - 4); |
+ |
+ echo "\x1f\x8b\x08\x00\x00\x00\x00\x00"; |
+ echo $gzip_contents; |
+ echo pack('V', $gzip_crc); |
+ echo pack('V', $gzip_size); |
+} |
+{/code} |
+ |
+''Add After:'' |
+{code source='php'} |
+// {{{ BIT_MOD |
+global $gBitPhpBBSubFrame, $gBitSmarty, $gBitSystem, $gBitDbName; |
+// hack around php database driver issues when tiki is a different db from bitweaver |
+// This will only work on some databases anyway !!!! |
+$gBitSystem->mDb->mDb->SelectDB( $gBitDbName ); |
+if( !empty( $gBitPhpBBSubFrame ) ) { |
+ $gBitSmarty->display( 'bitpackage:phpbb/bit_phpbb.tpl' ); |
+} else { |
+ $gBitSystem->display( 'bitpackage:phpbb/bit_phpbb.tpl', $page_title ); |
+} |
+ |
+// |
+// Close our DB connection. |
+// |
+$db->sql_close(); |
+ |
+// }}} BIT_MOD |
+{/code} |
+ |
+--- |
+ |
+__In ./includes/sessions.php:__ |
+ |
+''Find:'' |
+{code source='php'} |
+ if ( isset($HTTP_COOKIE_VARS[$cookiename . '_sid']) || isset($HTTP_COOKIE_VARS[$cookiename . '_data']) ) |
+ { |
+ $session_id = isset($HTTP_COOKIE_VARS[$cookiename . '_sid']) ? $HTTP_COOKIE_VARS[$cookiename . '_sid'] : ''; |
+ $sessiondata = isset($HTTP_COOKIE_VARS[$cookiename . '_data']) ? unserialize(stripslashes($HTTP_COOKIE_VARS[$cookiename . '_data'])) : array(); |
+ $sessionmethod = SESSION_METHOD_COOKIE; |
+ } |
+ else |
+ { |
+ $sessiondata = array(); |
+ $session_id = ( isset($HTTP_GET_VARS['sid']) ) ? $HTTP_GET_VARS['sid'] : ''; |
+ $sessionmethod = SESSION_METHOD_GET; |
+ } |
+{/code} |
+ |
+''Add After:'' |
+{code source='php'} |
+// {{{ BIT_MOD |
+// we always force auto login |
+$sessiondata['autologinid'] = TRUE; |
+// }}} BIT_MOD |
+{/code} |
+ |
+ |
+''Find:'' |
+{code source='php'} |
+ // |
+ // Did the session exist in the DB? |
+ // |
+ if ( isset($userdata['user_id']) ) |
+ { |
+{/code} |
+ |
+''Add After:'' |
+{code source='php'} |
+ // {{{ BEGIN BIT_MOD |
+ $sessiondata['session_page'] = $thispage_id; |
+ check_bit_user( $userdata ); |
+ // }}} END BIT_MOD |
+{/code} |
+ |
+''Find:'' |
+{code source='php'} |
+ setcookie($cookiename . '_data', serialize($sessiondata), $current_time + 31536000, $cookiepath, $cookiedomain, $cookiesecure); |
+ setcookie($cookiename . '_sid', $session_id, 0, $cookiepath, $cookiedomain, $cookiesecure); |
+ } |
+ |
+ return $userdata; |
+ } |
+ } |
+ } |
+{/code} |
+ |
+''Add After:'' |
+{code source='php'} |
+ // {{{ 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 |
+{/code} |
+ |
+''Find:'' |
+{code source='php'} |
+ // |
+ // 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; |
+ |
+ |
+} |
+{/code} |
+ |
+''Add After:'' (i'm afraid we can't use php syntax highlighting as it causes the code plugin to crash) |
+{code source='Html4Strict'} |
+// {{{ 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'] ); |
+ } |
+ } |
+} |
+{/code} |
+ |
+''Save and upload the file.'' |
+ |
+--- |
+ |
+__In ./db/postgres7.php:__ |
+ |
+Bug fix for phpBB in postgres schemas. |
+ |
+''Find:'' |
+{code source="php"} |
+ |
+ if( preg_match("/^INSERT[\t\n ]+INTO[\t\n ]+([a-z0-9\_\-]+)/is", $this->last_query_text[$query_id], $tablename) ) |
+{/code} |
+ |
+replace with |
+{code source="php"} |
+ |
+if( preg_match("/^INSERT[\t\n ]+INTO[\t\n ]+([-a-z0-9\_\.]+)/is", $this->last_query_text[$query_id], $tablename) ) |
+{/code} |
+ |
+--- |
+ |
+__In ./viewtopic.php__ |
+ |
+Bug fix for mystery function "phpbb_rtrim" which doesn't appear to be defined anywhere. |
+ |
+''Find:'' |
+{code source="php"} |
+ |
+ $highlight_match = phpbb_rtrim($highlight_match, "\\"); |
+{/code} |
+ |
+replace with |
+{code source="php"} |
+ |
+ $highlight_match = rtrim($highlight_match, "\\"); |
+{/code} |
+ |
+ |
+--- |
+ |
+__Create a new file called ''menu_phpbb.tpl'' in your ./templates/ folder.__ |
+ |
+''Add this into the file:'' |
+{code source='php'} |
+<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} |
+{/code} |
+ |
+''Save and upload the file.'' |
+ |
+--- |
+ |
+__Create a new file called ''menu_phpbb_admin.tpl'' in your ./templates/ folder.__ |
+ |
+''Add this into the file:'' |
+{code source='php'} |
+<a class="menuoption" href="{$smarty.const.PHPBB_PKG_URL}admin/index.php">{tr}Administer phpBB{/tr}</a> |
+{/code} |
+ |
+''Save and upload the file.'' |
+ |
+--- |
+ |
+__Create a new file called ''phpbb_mini_search.tpl'' in your ./templates/ folder.__ |
+ |
+''Add this into the file:'' |
+{code source='php'} |
+<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> |
+{/code} |
+ |
+''Save and upload the file.'' |
+ |
+--- |
+ |
+__Create a new file called ''bit_phpbb.tpl'' in your ./templates/ folder.__ |
+ |
+''Add this into the file:'' |
+{code source='php'} |
+{* BIT_MOD - this is a new file*} |
+<div class="phpbb"> |
+{php} |
+global $template; |
+$template->flush_buffer(); |
+{/php} |
+</div> |
+{* BIT_MOD *} |
+{/code} |
+ |
+''Save and upload the file.'' |
+ |
+--- |
+--- |
+ |
+Fin. |
+ |
+--- |
+--- |
+ |