Это расширение привязывает MediaWiki к таблице пользователей PhpBB для аутентификации и запрещает создание новых учетных записей в MediaWiki. Пользователи должны будут входить в Wiki с учетной записью PhpBB.
Расширение требует PHP5, MySQL 4 или 5, MediaWiki 1,11 + и phpBB3.
Исходные условия
Установленный рабочий форум phpBB (допустим в папке /phpbb3/)
Установленный движок MediaWiki (папка /wiki/)
Установка
Загружаем расширение с сайта автора либо с зеркала MediaWiki PHPBB Auth v3.0.3.
Копируем содержимое архива в папку /wiki/extentions/
Если вы хотите дать доступ только отдельным пользователям форума, создайте новую группу в форуме под названием Wiki. Если вы установите в нижепреведенном коде переменную $wgPHPBB_UseWikiGroup в значение true, то только пользователи из группы Wiki смогут редактировать MediaWiki.
Если же вы присвоите переменной $wgAuth_Config[‘WikiGroupName’] имя уже существующей группы форума, то все пользователи этой группы будут иметь право редактировать MediaWiki.
Добавляем код в конец файла /wiki/LocalSettings.php, заменяя значения из блока PHPBB User Config на правильные. Если MediaWiki и PhpBB используют разные базы, раскомментируйте и заполните правильными данными блок SQL Сonnection.
// PHPBB User Database Plugin. (Requires MySQL Database) require_once './extensions/Auth_phpBB.php'; $wgAuth_Config = array(); // Clean. $wgAuth_Config['WikiGroupName'] = 'Wiki'; // Name of your PHPBB group // users need to be a member // of to use the wiki. (i.e. wiki) // This can also be set to an array // of group names to use more then // one. (ie. // $wgAuth_Config['WikiGroupName'][] = 'Wiki'; // $wgAuth_Config['WikiGroupName'][] = 'Wiki2'; // or // $wgAuth_Config['WikiGroupName'] = array('Wiki', 'Wiki2'); // ) $wgAuth_Config['UseWikiGroup'] = true; // This tells the Plugin to require // a user to be a member of the above // phpBB group. (ie. wiki) Setting // this to false will let any phpBB // user edit the wiki. $wgAuth_Config['UseExtDatabase'] = false; // This tells the plugin that the phpBB tables // are in a different database then the wiki. // The default settings is false. //SQL Connection //$wgAuth_Config['MySQL_Host'] = 'localhost'; // phpBB MySQL Host Name. //$wgAuth_Config['MySQL_Username'] = 'username'; // phpBB MySQL Username. //$wgAuth_Config['MySQL_Password'] = 'password'; // phpBB MySQL Password. //$wgAuth_Config['MySQL_Database'] = 'database'; // phpBB MySQL Database Name. //SQL Connection Ends // PHPBB User Config $wgAuth_Config['UserTB'] = 'phpbb3_users'; // Name of your PHPBB user table. (i.e. phpbb_users) $wgAuth_Config['GroupsTB'] = 'phpbb3_groups'; // Name of your PHPBB groups table. (i.e. phpbb_groups) $wgAuth_Config['User_GroupTB'] = 'phpbb3_user_group'; // Name of your PHPBB user_group table. (i.e. phpbb_user_group) $wgAuth_Config['PathToPHPBB'] = '../phpbb3/'; // Path from this file to your phpBB install. Must end with '/'. // PHPBB User Config Ends // Local $wgAuth_Config['LoginMessage'] = '<strong>You need a phpBB account to login.</strong> <a href="' . $wgAuth_Config['PathToPHPBB'] . 'ucp.php?mode=register">Click here to create an account.</a>'; // Localize this message. $wgAuth_Config['NoWikiError'] = 'You are not a member of the required phpBB group.'; // Localize this message. $wgAuth = new Auth_phpBB($wgAuth_Config); // Auth_phpBB Plugin. |
Фикс, который позволяет использовать кириллицу в именах
В Auth_phpBB.php функцию public function getCanonicalName( $username ) заменить на:
public function getCanonicalName( $username ) { // Connect to the database. $fresMySQLConnection = $this->connect(); $username = $this->utf8($username); // Convert to UTF8 // Check Database for username. We will return the correct casing of the name. $fstrMySQLQuery = sprintf("SELECT `username` FROM `%s` WHERE `username_clean` = '%s' LIMIT 1", $this->_UserTB, mysql_real_escape_string($username, $fresMySQLConnection)); // Query Database. $fresMySQLResult = mysql_query($fstrMySQLQuery, $fresMySQLConnection) or die($this->mySQLError('Unable to view external table')); while($faryMySQLResult = mysql_fetch_assoc($fresMySQLResult)) { return $faryMySQLResult['username']; } // At this point the username is invalid and should return just as it was passed. return $username; } |
Источники:
wikimedia.org
phpbbguru.net/strong