* 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';
$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/DefaultSettings.php" );
if ( $wgCommandLineMode ) {
die( "This script must be run from the command line\n" );
}
}
+
+class DatabaseForge extends DatabasePostgres {
+ function __construct($server=false, $user=false, $password=false,
+ $dbName=false, $failFunction=false, $flags=0) {
+ global $wgDBtype;
+
+ $wgDBtype = "postgres";
+ return parent::__construct($server, $user,
+ $password, $dbName, $failFunction, $flags);
+ }
+
+ function open($server, $user, $password, $dbName) {
+ $v = DatabasePostgres::open($server, $user, $password, $dbName);
+
+ global $wgDBmwschema;
+ if ($this->schemaExists($wgDBmwschema)) {
+ $safeschema = $this->addIdentifierQuotes($wgDBmwschema);
+ $this->doQuery("SET search_path TO $safeschema,public");
+ }
+
+ return $v;
+ }
+
+ function tableName($name, $format='quoted') {
+ switch ($name) {
+ case 'interwiki':
+ return 'public.interwiki';
+ default:
+ return DatabasePostgres::tableName($name, $format);
+ }
+ }
+}
+
$g = group_get_object_by_name($fusionforgeproject) ;
$wgSitename = $g->getPublicName() . " Wiki";
$wgScriptPath = "/plugins/mediawiki/wiki/$fusionforgeproject" ;
foreach ($available_roles as $r) {
$linked_projects = $r->getLinkedProjects () ;
+ if ($r->hasGlobalPermission('forge_admin')) {
+ $rs[] = $r ;
+ continue ;
+ }
+
foreach ($linked_projects as $lp) {
if ($lp->getID() == $g->getID()) {
$rs[] = $r ;
+ continue ;
}
}
}
$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) ;
$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') ;
// mode: php
// c-file-style: "bsd"
// End:
+
+/* !isset($fusionforge_plugin_mediawiki_LocalSettings_included) */
+}