<?php
-/*
+/*
* Copyright (C) 2010 Roland Mas, Olaf Lenz
*
* This file is part of FusionForge.
* Mediawiki plugin of FusionForge.
*/
+/* C style inclusion guard. Yes, I know. Don’t comment on it. */
+if (!isset($fusionforge_plugin_mediawiki_LocalSettings_included)) {
+$fusionforge_plugin_mediawiki_LocalSettings_included = true;
+
require_once dirname(__FILE__) . '/../../../www/env.inc.php';
require_once $gfcommon.'include/pre.php';
require_once $gfcommon.'include/RBACEngine.class.php';
}
$gconfig_dir = forge_get_config('mwdata_path', 'mediawiki');
-$project_dir = forge_get_config('projects_path', 'mediawiki') . "/"
+$project_dir = forge_get_config('projects_path', 'mediawiki') . "/"
. $fusionforgeproject ;
if (!is_dir($project_dir)) {
$path = array( $IP, "$IP/includes", "$IP/languages" );
set_include_path( implode( PATH_SEPARATOR, $path ) . PATH_SEPARATOR . get_include_path() );
+require_once( "$IP/includes/AutoLoader.php" );
+require_once( "$IP/includes/Defines.php" );
require_once( "$IP/includes/DefaultSettings.php" );
if ( $wgCommandLineMode ) {
die( "This script must be run from the command line\n" );
}
}
+
$g = group_get_object_by_name($fusionforgeproject) ;
$wgSitename = $g->getPublicName() . " Wiki";
$wgScriptPath = "/plugins/mediawiki/wiki/$fusionforgeproject" ;
$user->mId=$mwu->getID();
$user->loadFromId() ;
- $user->loadGroups() ;
$current_groups = $user->getGroups() ;
- if (USE_PFO_RBAC) {
- $available_roles = RBACEngine::getInstance()->getAvailableRoles() ;
- $rs = array () ;
- foreach ($available_roles as $r) {
- $linked_projects = $r->getLinkedProjects () ;
-
- foreach ($linked_projects as $lp) {
- if ($lp->getID() == $g->getID()) {
- $rs[] = $r ;
- }
- }
+ $available_roles = RBACEngine::getInstance()->getAvailableRoles() ;
+ $rs = array () ;
+ foreach ($available_roles as $r) {
+ $linked_projects = $r->getLinkedProjects () ;
+
+ if ($r->hasGlobalPermission('forge_admin')) {
+ $rs[] = $r ;
+ continue ;
}
- } else {
- $perm =& $g->getPermission ();
- $r = $u->getRole($g) ;
- if (isset ($r) && $r && !$r->isError()) {
- $rs = array ($r) ;
+
+ foreach ($linked_projects as $lp) {
+ if ($lp->getID() == $g->getID()) {
+ $rs[] = $r ;
+ continue ;
+ }
}
}
-
+
// Sync MW groups for current user with FF roles
$rnames = array () ;
foreach ($rs as $r) {
$g = group_get_object_by_name ($fusionforgeproject) ;
// Setup rights for all roles referenced by project
- $rs = $g->getRoles() ;
+ $rids = $g->getRolesID() ;
+ $e = RBACEngine::getInstance();
+ $grs = $e->getGlobalRoles();
+ foreach ($grs as $r) {
+ $rids[] = $r->getID();
+ }
+ $rids = array_unique($rids);
+ $rs = array();
+ foreach ($rids as $rid) {
+ $rs[] = $e->getRoleById($rid);
+ }
+
foreach ($rs as $r) {
$gr = FusionForgeRoleToMediawikiGroupName ($r, $g) ;
-
+
// Read access
$wgGroupPermissions[$gr]['read'] = $r->hasPermission ('plugin_mediawiki_read', $g->getID()) ;
-
+
// Day-to-day edit privileges
$wgGroupPermissions[$gr]['edit'] = $r->hasPermission ('plugin_mediawiki_edit', $g->getID(), 'editexisting') ;
$wgGroupPermissions[$gr]['writeapi'] = $r->hasPermission ('plugin_mediawiki_edit', $g->getID(), 'editexisting') ;
$wgGroupPermissions[$gr]['move-rootuserpages'] = $r->hasPermission ('plugin_mediawiki_edit', $g->getID(), 'editmove') ;
$wgGroupPermissions[$gr]['delete'] = $r->hasPermission ('plugin_mediawiki_edit', $g->getID(), 'editmove') ;
$wgGroupPermissions[$gr]['undelete'] = $r->hasPermission ('plugin_mediawiki_edit', $g->getID(), 'editmove') ;
-
+
// File upload privileges
$wgGroupPermissions[$gr]['upload'] = $r->hasPermission ('plugin_mediawiki_upload', $g->getID(), 'upload') ;
$wgGroupPermissions[$gr]['reupload-own'] = $r->hasPermission ('plugin_mediawiki_upload', $g->getID(), 'upload') ;
$wgGroupPermissions[$gr]['reupload'] = $r->hasPermission ('plugin_mediawiki_upload', $g->getID(), 'reupload') ;
$wgGroupPermissions[$gr]['reupload-shared'] = $r->hasPermission ('plugin_mediawiki_upload', $g->getID(), 'reupload') ;
$wgGroupPermissions[$gr]['upload_by_url'] = $r->hasPermission ('plugin_mediawiki_upload', $g->getID(), 'reupload') ;
-
+
// Administrative tasks
$wgGroupPermissions[$gr]['editinterface'] = $r->hasPermission ('plugin_mediawiki_admin', $g->getID()) ;
$wgGroupPermissions[$gr]['import'] = $r->hasPermission ('plugin_mediawiki_admin', $g->getID()) ;
$wgGroupPermissions[$gr]['importupload'] = $r->hasPermission ('plugin_mediawiki_admin', $g->getID()) ;
$wgGroupPermissions[$gr]['siteadmin'] = $r->hasPermission ('plugin_mediawiki_admin', $g->getID()) ;
- }
- $rs = RBACEngine::getInstance()->getGlobalRoles();
- foreach ($rs as $r) {
- $gr = FusionForgeRoleToMediawikiGroupName ($r, $g) ;
-
// Interwiki management restricted to forge admins
$wgGroupPermissions[$gr]['interwiki'] = $r->hasGlobalPermission ('forge_admin') ;
}
$wgFavicon = '/images/icon.png' ;
$wgBreakFrames = false ;
-ini_set ('memory_limit', '50M') ;
+ini_set ('memory_limit', '100M') ;
// LOAD THE SITE-WIDE AND PROJECT-SPECIFIC EXTRA-SETTINGS
if (is_file(forge_get_config('config_path')."/plugins/mediawiki/LocalSettings.php")) {
// mode: php
// c-file-style: "bsd"
// End:
+
+/* !isset($fusionforge_plugin_mediawiki_LocalSettings_included) */
+}