r107132 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r107131‎ | r107132 | r107133 >
Date:02:59, 23 December 2011
Author:laner
Status:ok (Comments)
Tags:
Comment:
Refactor LDAP connections, for performance and less code duplication.
Modified paths:
  • /trunk/extensions/OpenStackManager/OpenStackManager.php (modified) (history)
  • /trunk/extensions/OpenStackManager/OpenStackNovaDomain.php (modified) (history)
  • /trunk/extensions/OpenStackManager/OpenStackNovaHost.php (modified) (history)
  • /trunk/extensions/OpenStackManager/OpenStackNovaLdapConnection.php (added) (history)
  • /trunk/extensions/OpenStackManager/OpenStackNovaProject.php (modified) (history)
  • /trunk/extensions/OpenStackManager/OpenStackNovaRole.php (modified) (history)
  • /trunk/extensions/OpenStackManager/OpenStackNovaSudoer.php (modified) (history)
  • /trunk/extensions/OpenStackManager/OpenStackNovaUser.php (modified) (history)

Diff [purge]

Index: trunk/extensions/OpenStackManager/OpenStackNovaLdapConnection.php
@@ -0,0 +1,22 @@
 2+<?php
 3+
 4+class OpenStackNovaLdapConnection {
 5+
 6+ /**
 7+ * Connect to LDAP as the open stack manager account using wgAuth
 8+ *
 9+ * @return void
 10+ */
 11+ static function connect() {
 12+ global $wgAuth;
 13+ global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
 14+ global $wgOpenStackManagerLDAPDomain;
 15+
 16+ // Only reconnect/rebind if we aren't alredy bound
 17+ if ( $wgAuth->boundAs != $wgOpenStackManagerLDAPUser ) {
 18+ $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
 19+ $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
 20+ }
 21+ }
 22+
 23+}
Index: trunk/extensions/OpenStackManager/OpenStackNovaSudoer.php
@@ -11,25 +11,11 @@
1212 */
1313 function __construct( $sudoername ) {
1414 $this->sudoername = $sudoername;
15 - $this->connect();
 15+ OpenStackNovaLdapConnection::connect();
1616 $this->fetchSudoerInfo();
1717 }
1818
1919 /**
20 - * Connect to LDAP as the open stack manager account using wgAuth
21 - *
22 - * @return void
23 - */
24 - function connect() {
25 - global $wgAuth;
26 - global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
27 - global $wgOpenStackManagerLDAPDomain;
28 -
29 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
30 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
31 - }
32 -
33 - /**
3420 * Fetch the sudoer policy from LDAP and initialize the object
3521 *
3622 * @return void
@@ -140,9 +126,6 @@
141127 global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
142128 global $wgOpenStackManagerLDAPDomain;
143129
144 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
145 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
146 -
147130 $sudoer = array();
148131 foreach ( $users as $user ) {
149132 $sudoer['sudouser'][] = $user;
@@ -180,8 +163,7 @@
181164 global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
182165 global $wgOpenStackManagerLDAPSudoerBaseDN, $wgOpenStackManagerLDAPDomain;
183166
184 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
185 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
 167+ OpenStackNovaLdapConnection::connect();
186168
187169 $sudoers = array();
188170 wfSuppressWarnings();
@@ -238,8 +220,7 @@
239221 global $wgOpenStackManagerLDAPSudoerBaseDN;
240222 global $wgOpenStackManagerLDAPDomain;
241223
242 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
243 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
 224+ OpenStackNovaLdapConnection::connect();
244225
245226 $sudoer = array();
246227 $sudoer['objectclass'][] = 'sudorole';
@@ -282,8 +263,7 @@
283264 global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
284265 global $wgOpenStackManagerLDAPDomain;
285266
286 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
287 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
 267+ OpenStackNovaLdapConnection::connect();
288268
289269 $sudoer = new OpenStackNovaSudoer( $sudoername );
290270 if ( ! $sudoer ) {
Index: trunk/extensions/OpenStackManager/OpenStackNovaRole.php
@@ -20,25 +20,13 @@
2121 } else {
2222 $this->global = true;
2323 }
24 - $this->connect();
 24+ OpenStackNovaLdapConnection::connect();
2525 $this->fetchRoleInfo();
2626 }
2727
2828 /**
2929 * @return void
3030 */
31 - function connect() {
32 - global $wgAuth;
33 - global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
34 - global $wgOpenStackManagerLDAPDomain;
35 -
36 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
37 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
38 - }
39 -
40 - /**
41 - * @return void
42 - */
4331 function fetchRoleInfo() {
4432 global $wgAuth;
4533 global $wgOpenStackManagerLDAPGlobalRoles;
@@ -213,12 +201,9 @@
214202 */
215203 static function getAllGlobalRoles() {
216204 global $wgAuth;
217 - global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
218 - global $wgOpenStackManagerLDAPDomain;
219205 global $wgOpenStackManagerLDAPGlobalRoles;
220206
221 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
222 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
 207+ OpenStackNovaLdapConnection::connect();
223208
224209 $roles = array();
225210 foreach ( array_keys( $wgOpenStackManagerLDAPGlobalRoles ) as $rolename ) {
@@ -237,11 +222,8 @@
238223 */
239224 static function createRole( $rolename, $project ) {
240225 global $wgAuth;
241 - global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
242 - global $wgOpenStackManagerLDAPDomain;
243226
244 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
245 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
 227+ OpenStackNovaLdapConnection::connect();
246228
247229 $role = array();
248230 $role['objectclass'][] = 'groupofnames';
Index: trunk/extensions/OpenStackManager/OpenStackNovaProject.php
@@ -14,25 +14,11 @@
1515 */
1616 function __construct( $projectname ) {
1717 $this->projectname = $projectname;
18 - $this->connect();
 18+ OpenStackNovaLdapConnection::connect();
1919 $this->fetchProjectInfo();
2020 }
2121
2222 /**
23 - * Connect to LDAP as the open stack manager account using wgAuth
24 - *
25 - * @return void
26 - */
27 - function connect() {
28 - global $wgAuth;
29 - global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
30 - global $wgOpenStackManagerLDAPDomain;
31 -
32 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
33 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
34 - }
35 -
36 - /**
3723 * Fetch the project from LDAP and initialize the object
3824 * @return void
3925 */
@@ -207,12 +193,9 @@
208194 */
209195 static function getAllProjects() {
210196 global $wgAuth;
211 - global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
212197 global $wgOpenStackManagerLDAPProjectBaseDN;
213 - global $wgOpenStackManagerLDAPDomain;
214198
215 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
216 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
 199+ OpenStackNovaLdapConnection::connect();
217200
218201 $projects = array();
219202 wfSuppressWarnings();
@@ -245,12 +228,10 @@
246229 */
247230 static function createProject( $projectname ) {
248231 global $wgAuth;
249 - global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
 232+ global $wgOpenStackManagerLDAPUser;
250233 global $wgOpenStackManagerLDAPProjectBaseDN;
251 - global $wgOpenStackManagerLDAPDomain;
252234
253 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
254 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
 235+ OpenStackNovaLdapConnection::connect();
255236
256237 $project = array();
257238 $project['objectclass'][] = 'groupofnames';
@@ -289,11 +270,8 @@
290271 */
291272 static function deleteProject( $projectname ) {
292273 global $wgAuth;
293 - global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
294 - global $wgOpenStackManagerLDAPDomain;
295274
296 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
297 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
 275+ OpenStackNovaLdapConnection::connect();
298276
299277 $project = new OpenStackNovaProject( $projectname );
300278 if ( ! $project ) {
@@ -338,12 +316,9 @@
339317 static function addNamespaces() {
340318 global $wgAuth;
341319 global $wgOpenStackManagerLDAPProjectBaseDN;
342 - global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
343320 global $wgExtraNamespaces;
344 - global $wgOpenStackManagerLDAPDomain;
345321
346 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
347 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
 322+ OpenStackNovaLdapConnection::connect();
348323
349324 $result = ldap_search( $wgAuth->ldapconn, $wgOpenStackManagerLDAPProjectBaseDN, 'owner=*' );
350325 $entries = ldap_get_entries( $wgAuth->ldapconn, $result );
Index: trunk/extensions/OpenStackManager/OpenStackNovaDomain.php
@@ -12,25 +12,11 @@
1313 */
1414 function __construct( $domainname ) {
1515 $this->domainname = $domainname;
16 - $this->connect();
 16+ OpenStackNovaLdapConnection::connect();
1717 $this->fetchDomainInfo();
1818 }
1919
2020 /**
21 - * Connect to LDAP as the open stack manager account using wgAuth
22 - *
23 - * @return void
24 - */
25 - function connect() {
26 - global $wgAuth;
27 - global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
28 - global $wgOpenStackManagerLDAPDomain;
29 -
30 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
31 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
32 - }
33 -
34 - /**
3521 * Fetch the domain from LDAP and initialize the object
3622 *
3723 * @return void
@@ -124,12 +110,9 @@
125111 */
126112 static function getAllDomains( $type='all' ) {
127113 global $wgAuth;
128 - global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
129114 global $wgOpenStackManagerLDAPInstanceBaseDN;
130 - global $wgOpenStackManagerLDAPDomain;
131115
132 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
133 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
 116+ OpenStackNovaLdapConnection::connect();
134117
135118 $domains = array();
136119 if ( $type == 'local' ) {
@@ -186,12 +169,9 @@
187170 */
188171 static function getDomainByHostIP( $ip ) {
189172 global $wgAuth;
190 - global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
191173 global $wgOpenStackManagerLDAPInstanceBaseDN;
192 - global $wgOpenStackManagerLDAPDomain;
193174
194 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
195 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
 175+ OpenStackNovaLdapConnection::connect();
196176
197177 wfSuppressWarnings();
198178 $result = ldap_search( $wgAuth->ldapconn, $wgOpenStackManagerLDAPInstanceBaseDN,
@@ -222,12 +202,9 @@
223203 */
224204 static function getDomainByInstanceId( $instanceid ) {
225205 global $wgAuth;
226 - global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
227206 global $wgOpenStackManagerLDAPInstanceBaseDN;
228 - global $wgOpenStackManagerLDAPDomain;
229207
230 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
231 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
 208+ OpenStackNovaLdapConnection::connect();
232209
233210 wfSuppressWarnings();
234211 $result = ldap_search( $wgAuth->ldapconn, $wgOpenStackManagerLDAPInstanceBaseDN,
@@ -263,13 +240,10 @@
264241 */
265242 static function createDomain( $domainname, $fqdn, $location ) {
266243 global $wgAuth;
267 - global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
268244 global $wgOpenStackManagerLDAPInstanceBaseDN;
269245 global $wgOpenStackManagerDNSOptions;
270 - global $wgOpenStackManagerLDAPDomain;
271246
272 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
273 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
 247+ OpenStackNovaLdapConnection::connect();
274248
275249 $soa = OpenStackNovaDomain::generateSOA();
276250 $domain = array();
@@ -306,11 +280,8 @@
307281 */
308282 static function deleteDomain( $domainname ) {
309283 global $wgAuth;
310 - global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
311 - global $wgOpenStackManagerLDAPDomain;
312284
313 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
314 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
 285+ OpenStackNovaLdapConnection::connect();
315286
316287 $domain = new OpenStackNovaDomain( $domainname );
317288 if ( ! $domain ) {
Index: trunk/extensions/OpenStackManager/OpenStackNovaHost.php
@@ -29,25 +29,11 @@
3030 function __construct( $hostname, $domain ) {
3131 $this->searchvalue = $hostname;
3232 $this->domain = $domain;
33 - $this->connect();
 33+ OpenStackNovaLdapConnection::connect();
3434 $this->fetchHostInfo();
3535 }
3636
3737 /**
38 - * Connect to LDAP as the open stack manager account using wgAuth
39 - *
40 - * @return void
41 - */
42 - function connect() {
43 - global $wgAuth;
44 - global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
45 - global $wgOpenStackManagerLDAPDomain;
46 -
47 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
48 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
49 - }
50 -
51 - /**
5238 * Fetch the host from LDAP and initialize the object
5339 *
5440 * @return void
@@ -501,11 +487,8 @@
502488 */
503489 static function getAllHosts( $domain ) {
504490 global $wgAuth;
505 - global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
506 - global $wgOpenStackManagerLDAPDomain;
507491
508 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
509 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
 492+ OpenStackNovaLdapConnection::connect();
510493
511494 $hosts = array();
512495 wfSuppressWarnings();
@@ -537,11 +520,8 @@
538521 */
539522 static function deleteHost( $hostname, $domain ) {
540523 global $wgAuth;
541 - global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
542 - global $wgOpenStackManagerLDAPDomain;
543524
544 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
545 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
 525+ OpenStackNovaLdapConnection::connect();
546526
547527 $host = OpenStackNovaHost::getHostByName( $hostname, $domain );
548528 if ( ! $host ) {
@@ -572,11 +552,8 @@
573553 */
574554 static function deleteHostByInstanceId( $instanceid ) {
575555 global $wgAuth;
576 - global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
577 - global $wgOpenStackManagerLDAPDomain;
578556
579 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
580 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
 557+ OpenStackNovaLdapConnection::connect();
581558
582559 $host = OpenStackNovaHost::getHostByInstanceId( $instanceid );
583560 if ( ! $host ) {
@@ -614,12 +591,9 @@
615592 static function addHost( $instance, $domain, $puppetinfo = array() ) {
616593 global $wgUser, $wgLang;
617594 global $wgAuth;
618 - global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
619595 global $wgOpenStackManagerLDAPInstanceBaseDN, $wgOpenStackManagerPuppetOptions;
620 - global $wgOpenStackManagerLDAPDomain;
621596
622 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
623 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
 597+ OpenStackNovaLdapConnection::connect();
624598
625599 $hostname = $instance->getInstanceName();
626600 $instanceid = $instance->getInstanceId();
@@ -699,12 +673,9 @@
700674 */
701675 static function addPublicHost( $hostname, $ip, $domain ) {
702676 global $wgAuth;
703 - global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
704677 global $wgOpenStackManagerLDAPInstanceBaseDN;
705 - global $wgOpenStackManagerLDAPDomain;
706678
707 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
708 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
 679+ OpenStackNovaLdapConnection::connect();
709680
710681 $domainname = $domain->getFullyQualifiedDomainName();
711682 $host = OpenStackNovaHost::getHostByName( $hostname, $domain );
Index: trunk/extensions/OpenStackManager/OpenStackNovaUser.php
@@ -11,7 +11,7 @@
1212 */
1313 function __construct( $username = '' ) {
1414 $this->username = $username;
15 - $this->connect();
 15+ OpenStackNovaLdapConnection::connect();
1616 $this->fetchUserInfo();
1717 }
1818
@@ -103,8 +103,6 @@
104104 global $wgAuth;
105105 global $wgOpenStackManagerLDAPProjectBaseDN;
106106
107 - $this->connect();
108 -
109107 # All projects have a owner attribute, project
110108 # roles do not
111109 $projects = array();
@@ -146,8 +144,6 @@
147145 global $wgAuth;
148146 global $wgOpenStackManagerLDAPProjectBaseDN;
149147
150 - $this->connect();
151 -
152148 $filter = "(&(cn=$project)(member=$this->userDN)(owner=*))";
153149 wfSuppressWarnings();
154150 $result = ldap_search( $wgAuth->ldapconn, $wgOpenStackManagerLDAPProjectBaseDN, $filter );
@@ -256,23 +252,7 @@
257253 }
258254 }
259255
260 -
261256 /**
262 - * @return void
263 - */
264 - function connect() {
265 - global $wgAuth;
266 - global $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword;
267 - global $wgOpenStackManagerLDAPDomain;
268 -
269 - if ( !$wgAuth instanceof LdapAuthenticationPlugin ) {
270 - die( 'Install and configure the <a href="http://www.mediawiki.org/wiki/Extension:LDAP_Authentication">LDAP Authentication</a> extension' );
271 - }
272 - $wgAuth->connect( $wgOpenStackManagerLDAPDomain );
273 - $wgAuth->bindAs( $wgOpenStackManagerLDAPUser, $wgOpenStackManagerLDAPUserPassword );
274 - }
275 -
276 - /**
277257 * @param $key
278258 * @return bool
279259 */
@@ -493,7 +473,7 @@
494474 * @return bool
495475 */
496476 static function LDAPSetNovaInfo( $auth ) {
497 - OpenStackNovaUser::connect();
 477+ OpenStackNovaLdapConnection::connect();
498478 $dn = $auth->userInfo[0]['dn'];
499479 wfSuppressWarnings();
500480 $result = ldap_read( $auth->ldapconn, $auth->userInfo[0]['dn'], '(objectclass=*)', array( 'secretkey', 'accesskey', 'objectclass' ) );
Index: trunk/extensions/OpenStackManager/OpenStackManager.php
@@ -103,6 +103,7 @@
104104 $wgAutoloadClasses['OpenStackNovaArticle'] = $dir . 'OpenStackNovaArticle.php';
105105 $wgAutoloadClasses['OpenStackNovaHostJob'] = $dir . 'OpenStackNovaHostJob.php';
106106 $wgAutoloadClasses['OpenStackNovaPuppetGroup'] = $dir . 'OpenStackNovaPuppetGroup.php';
 107+$wgAutoloadClasses['OpenStackNovaLdapConnection'] = $dir . 'OpenStackNovaLdapConnection.php';
107108 $wgAutoloadClasses['SpecialNovaInstance'] = $dir . 'special/SpecialNovaInstance.php';
108109 $wgAutoloadClasses['SpecialNovaKey'] = $dir . 'special/SpecialNovaKey.php';
109110 $wgAutoloadClasses['SpecialNovaProject'] = $dir . 'special/SpecialNovaProject.php';

Comments

#Comment by Nikerabbit (talk | contribs)   13:45, 23 December 2011

Lots of duplication there was :o

Status & tagging log