3 require_once('/etc/gforge/local.inc');
5 if (!isset($mediawiki_var_path))
6 $mediawiki_var_path = "$sys_var_path/plugins/mediawiki";
7 if (!isset($mediawiki_projects_path))
8 $mediawiki_projects_path = "$mediawiki_var_path/projects";
9 if (!isset($mediawiki_master_path))
10 $mediawiki_master_path = "$mediawiki_var_path/master";
12 if ( isset( $_SERVER ) && array_key_exists( 'REQUEST_METHOD', $_SERVER ) ) {
13 // when loaded from the server
14 require_once ("$sys_opt_path/www/env.inc.php") ;
15 require_once ("$sys_opt_path/www/include/pre.php") ;
17 // when run from the command line
18 require_once ("$sys_etc_path/database.inc") ;
19 require_once ("$sys_opt_path/common/include/config.php") ;
22 $IP = $mediawiki_master_path;
24 if (!isset ($fusionforgeproject)) {
25 $fusionforgeproject = 'siteadmin' ;
27 $exppath = explode ('/', $_SERVER['PHP_SELF']) ;
29 # determine $fusionforgeproject from the URL
30 while (count ($exppath) >= 4) {
31 if (($exppath[0] == 'plugins') && ($exppath[1] == 'mediawiki') && ($exppath[2] == 'wiki') && ($exppath[4] == 'index.php')) {
32 $fusionforgeproject = $exppath[3] ;
35 array_shift ($exppath) ;
39 $project_dir = "$mediawiki_projects_path/$fusionforgeproject" ;
41 $path = array( $IP, "$IP/includes", "$IP/languages" );
42 set_include_path( implode( PATH_SEPARATOR, $path ) . PATH_SEPARATOR . get_include_path() );
44 require_once( "$IP/includes/DefaultSettings.php" );
46 if (!isset($sys_dbport)) { $sys_dbport = 5432; }
48 if ( $wgCommandLineMode ) {
49 if ( isset( $_SERVER ) && array_key_exists( 'REQUEST_METHOD', $_SERVER ) ) {
50 die( "This script must be run from the command line\n" );
53 $g = group_get_object_by_name($fusionforgeproject) ;
54 $wgSitename = $g->getPublicName() . " Wiki";
55 $wgScriptPath = "/plugins/mediawiki/wiki/$fusionforgeproject" ;
57 $wgEmergencyContact = $sys_admin_email;
58 $wgPasswordSender = $sys_admin_email;
60 $wgDBtype = "postgres";
61 $wgDBserver = $sys_dbhost ;
62 $wgDBname = $sys_dbname;
63 $wgDBuser = $sys_dbuser ;
64 $wgDBpassword = $sys_dbpasswd ;
65 $wgDBadminuser = $sys_dbuser ;
66 $wgDBadminpassword = $sys_dbpasswd ;
67 $wgDBport = $sys_dbport ;
68 $wgDBmwschema = str_replace ('-', '_', "plugin_mediawiki_$fusionforgeproject") ;
69 $wgDBts2schema = str_replace ('-', '_', "plugin_mediawiki_$fusionforgeproject") ;
70 $wgMainCacheType = CACHE_NONE;
71 $wgMemCachedServers = array();
73 $wgEnableUploads = false;
74 $wgUploadDirectory = "$project_dir/images";
75 $wgUseImageMagick = true;
76 $wgImageMagickConvertCommand = "/usr/bin/convert";
77 $wgLocalInterwiki = $wgSitename;
78 $wgShowExceptionDetails = true ;
80 $wgLanguageCode = "en";
81 $wgDefaultSkin = 'fusionforge';
83 $GLOBALS['sys_dbhost'] = $sys_dbhost ;
84 $GLOBALS['sys_dbport'] = $sys_dbport ;
85 $GLOBALS['sys_dbname'] = $sys_dbname ;
86 $GLOBALS['sys_dbuser'] = $sys_dbuser ;
87 $GLOBALS['sys_dbpasswd'] = $sys_dbpasswd ;
88 $GLOBALS['sys_plugins_path'] = $sys_plugins_path ;
89 $GLOBALS['sys_urlprefix'] = $sys_urlprefix ;
90 $GLOBALS['sys_use_ssl'] = $sys_use_ssl ;
91 $GLOBALS['sys_default_domain'] = $sys_default_domain ;
92 $GLOBALS['sys_custom_path'] = $sys_custom_path ;
93 $GLOBALS['gfwww'] = $gfwww ;
94 $GLOBALS['gfplugins'] = $gfplugins ;
95 $GLOBALS['sys_lang'] = $sys_lang ;
96 $GLOBALS['sys_urlroot'] = $sys_urlroot;
97 $GLOBALS['sys_session_key'] = $sys_session_key;
98 $GLOBALS['sys_session_expire'] = $sys_session_expire;
99 $GLOBALS['REMOTE_ADDR'] = getStringFromServer('REMOTE_ADDR') ;
100 $GLOBALS['HTTP_USER_AGENT'] = getStringFromServer('HTTP_USER_AGENT') ;
102 function FusionForgeMWAuth( $user, &$result ) {
103 global $fusionforgeproject ;
105 $cookie = getStringFromCookie ('session_ser') ;
107 $s = session_check_session_cookie ($cookie);
112 $u = user_get_object ($s);
113 $g = group_get_object_by_name ($fusionforgeproject) ;
114 $perm =& $g->getPermission($u);
116 $mwname = ucfirst($u->getUnixName ()) ;
117 $mwu = User::newFromName ($mwname);
118 if($mwu->getID() == 0) {
119 $mwu->addToDatabase ();
120 $mwu->setPassword (User::randomPassword());
121 $mwu->setRealName ($u->getRealName ()) ;
123 $mwu->loadFromDatabase ();
125 $user->mId=$mwu->getID();
126 $user->loadFromId() ;
128 $user->loadGroups() ;
129 $current_groups = $user->getGroups() ;
130 if ($perm && is_object($perm) && $perm->isAdmin()) {
131 if (!in_array ('sysop', $current_groups)) {
132 $user->addGroup ('sysop') ;
134 if (!in_array ('Members', $current_groups)) {
135 $user->addGroup ('Members') ;
137 if (!in_array ('ForgeUsers', $current_groups)) {
138 $user->addGroup ('ForgeUsers') ;
140 } elseif ($perm && is_object($perm) && $perm->isMember()) {
141 if (in_array ('sysop', $current_groups)) {
142 $user->removeGroup ('sysop') ;
144 if (!in_array ('Members', $current_groups)) {
145 $user->addGroup ('Members') ;
147 if (!in_array ('ForgeUsers', $current_groups)) {
148 $user->addGroup ('ForgeUsers') ;
151 if (in_array ('sysop', $current_groups)) {
152 $user->removeGroup ('sysop') ;
154 if (in_array ('Members', $current_groups)) {
155 $user->removeGroup ('Members') ;
157 if (!in_array ('ForgeUsers', $current_groups)) {
158 $user->addGroup ('ForgeUsers') ;
162 $user->setCookies ();
163 $user->saveSettings ();
173 if (is_file("/etc/mediawiki-extensions/extensions.php")) {
174 include( "/etc/mediawiki-extensions/extensions.php" );
176 //function NoLogoutLinkOnMainPage(&$personal_urls){unset($personal_urls['logout']);return true;}
177 //$wgHooks['PersonalUrls']['logout']='NoLogoutLinkOnMainPage';
178 //function NoLoginLinkOnMainPage(&$personal_urls){unset($personal_urls['anonlogin']);return true;}
179 //$wgHooks['PersonalUrls']['anonlogin']='NoLoginLinkOnMainPage';
180 function NoLinkOnMainPage(&$personal_urls){
181 unset($personal_urls['anonlogin']);
182 unset($personal_urls['anontalk']);
183 unset($personal_urls['logout']);
184 unset($personal_urls['login']);
187 $wgHooks['PersonalUrls'][]='NoLinkOnMainPage';
189 $GLOBALS['wgHooks']['UserLoadFromSession'][]='FusionForgeMWAuth';
191 $wgGroupPermissions['Members']['createaccount'] = true;
192 $wgGroupPermissions['Members']['edit'] = true;
193 $wgGroupPermissions['Members']['createpage'] = true;
194 $wgGroupPermissions['Members']['createtalk'] = true;
196 $wgGroupPermissions['ForgeUsers']['createaccount'] = false;
197 $wgGroupPermissions['ForgeUsers']['edit'] = false;
198 $wgGroupPermissions['ForgeUsers']['createpage'] = false;
199 $wgGroupPermissions['ForgeUsers']['createtalk'] = false;
201 $wgGroupPermissions['user']['createaccount'] = false;
202 $wgGroupPermissions['user']['edit'] = false;
203 $wgGroupPermissions['user']['createpage'] = false;
204 $wgGroupPermissions['user']['createtalk'] = false;
206 $wgGroupPermissions['*']['createaccount'] = false;
207 $wgGroupPermissions['*']['edit'] = false;
208 $wgGroupPermissions['*']['createpage'] = false;
209 $wgGroupPermissions['*']['createtalk'] = false;
211 $res = db_query_params("SELECT is_public from groups where unix_group_name=$1", array($fusionforgeproject)) ;
212 $row = db_fetch_array($res);
213 $public = $row['is_public'];
215 // Disable read permissions for non-members
216 $wgGroupPermissions['Members']['read'] = true;
217 $wgGroupPermissions['ForgeUsers']['read'] = true;
218 $wgGroupPermissions['user']['read'] = true;
219 $wgGroupPermissions['*']['read'] = true;
221 // Disable read permissions for non-members
222 $wgGroupPermissions['Members']['read'] = true;
223 $wgGroupPermissions['ForgeUsers']['read'] = false;
224 $wgGroupPermissions['user']['read'] = false;
225 $wgGroupPermissions['*']['read'] = false;
228 if (file_exists ("$project_dir/ProjectSettings.php")) {
229 require ("$project_dir/ProjectSettings.php") ;
231 exit_error (sprintf(_('Mediawiki for project %s not created yet, please wait for a few minutes.'), $fusionforgeproject)) ;
234 // Override default wiki logo
235 $wgLogo = "/themes/$sys_theme/images/wgLogo.png";
236 $wgFavicon = '/images/icon.png' ;
237 $wgBreakFrames = false ;
238 ini_set ('memory_limit', '50M') ;
242 // c-file-style: "bsd"