]> scripts.mit.edu Git - autoinstalls/mediawiki.git/blob - includes/AutoLoader.php
MediaWiki 1.11.0-scripts
[autoinstalls/mediawiki.git] / includes / AutoLoader.php
1 <?php
2
3 /* This defines autoloading handler for whole MediaWiki framework */
4
5 ini_set('unserialize_callback_func', '__autoload' );
6
7 function __autoload($className) {
8         global $wgAutoloadClasses;
9
10         static $localClasses = array(
11                 # Includes
12                 'AjaxDispatcher' => 'includes/AjaxDispatcher.php',
13                 'AjaxCachePolicy' => 'includes/AjaxFunctions.php',
14                 'AjaxResponse' => 'includes/AjaxResponse.php',
15                 'AlphabeticPager' => 'includes/Pager.php',
16                 'Article' => 'includes/Article.php',
17                 'AuthPlugin' => 'includes/AuthPlugin.php',
18                 'BagOStuff' => 'includes/BagOStuff.php',
19                 'HashBagOStuff' => 'includes/BagOStuff.php',
20                 'SqlBagOStuff' => 'includes/BagOStuff.php',
21                 'MediaWikiBagOStuff' => 'includes/BagOStuff.php',
22                 'TurckBagOStuff' => 'includes/BagOStuff.php',
23                 'APCBagOStuff' => 'includes/BagOStuff.php',
24                 'eAccelBagOStuff' => 'includes/BagOStuff.php',
25                 'XCacheBagOStuff' => 'includes/BagOStuff.php',
26                 'DBABagOStuff' => 'includes/BagOStuff.php',
27                 'Block' => 'includes/Block.php',
28                 'HTMLFileCache' => 'includes/HTMLFileCache.php',
29                 'DependencyWrapper' => 'includes/CacheDependency.php',
30                 'FileDependency' => 'includes/CacheDependency.php',
31                 'TitleDependency' => 'includes/CacheDependency.php',
32                 'TitleListDependency' => 'includes/CacheDependency.php',
33                 'CategoryPage' => 'includes/CategoryPage.php',
34                 'CategoryViewer' => 'includes/CategoryPage.php',
35                 'Categoryfinder' => 'includes/Categoryfinder.php',
36                 'RCCacheEntry' => 'includes/ChangesList.php',
37                 'ChangesList' => 'includes/ChangesList.php',
38                 'OldChangesList' => 'includes/ChangesList.php',
39                 'EnhancedChangesList' => 'includes/ChangesList.php',
40                 'CoreParserFunctions' => 'includes/CoreParserFunctions.php',
41                 'DBObject' => 'includes/Database.php',
42                 'Database' => 'includes/Database.php',
43                 'DatabaseMysql' => 'includes/Database.php',
44                 'ResultWrapper' => 'includes/Database.php',
45                 'DatabasePostgres' => 'includes/DatabasePostgres.php',
46                 'DatabaseOracle' => 'includes/DatabaseOracle.php',
47                 'DateFormatter' => 'includes/DateFormatter.php',
48                 'DifferenceEngine' => 'includes/DifferenceEngine.php',
49                 '_DiffOp' => 'includes/DifferenceEngine.php',
50                 '_DiffOp_Copy' => 'includes/DifferenceEngine.php',
51                 '_DiffOp_Delete' => 'includes/DifferenceEngine.php',
52                 '_DiffOp_Add' => 'includes/DifferenceEngine.php',
53                 '_DiffOp_Change' => 'includes/DifferenceEngine.php',
54                 '_DiffEngine' => 'includes/DifferenceEngine.php',
55                 'Diff' => 'includes/DifferenceEngine.php',
56                 'MappedDiff' => 'includes/DifferenceEngine.php',
57                 'DiffFormatter' => 'includes/DifferenceEngine.php',
58                 'DjVuImage' => 'includes/DjVuImage.php',
59                 '_HWLDF_WordAccumulator' => 'includes/DifferenceEngine.php',
60                 'WordLevelDiff' => 'includes/DifferenceEngine.php',
61                 'TableDiffFormatter' => 'includes/DifferenceEngine.php',
62                 'EditPage' => 'includes/EditPage.php',
63                 'MWException' => 'includes/Exception.php',
64                 'Exif' => 'includes/Exif.php',
65                 'FormatExif' => 'includes/Exif.php',
66                 'WikiExporter' => 'includes/Export.php',
67                 'XmlDumpWriter' => 'includes/Export.php',
68                 'DumpOutput' => 'includes/Export.php',
69                 'DumpFileOutput' => 'includes/Export.php',
70                 'DumpPipeOutput' => 'includes/Export.php',
71                 'DumpGZipOutput' => 'includes/Export.php',
72                 'DumpBZip2Output' => 'includes/Export.php',
73                 'Dump7ZipOutput' => 'includes/Export.php',
74                 'DumpFilter' => 'includes/Export.php',
75                 'DumpNotalkFilter' => 'includes/Export.php',
76                 'DumpNamespaceFilter' => 'includes/Export.php',
77                 'DumpLatestFilter' => 'includes/Export.php',
78                 'DumpMultiWriter' => 'includes/Export.php',
79                 'ExternalEdit' => 'includes/ExternalEdit.php',
80                 'ExternalStore' => 'includes/ExternalStore.php',
81                 'ExternalStoreDB' => 'includes/ExternalStoreDB.php',
82                 'ExternalStoreHttp' => 'includes/ExternalStoreHttp.php',
83                 'FakeTitle' => 'includes/FakeTitle.php',
84                 'FeedItem' => 'includes/Feed.php',
85                 'ChannelFeed' => 'includes/Feed.php',
86                 'RSSFeed' => 'includes/Feed.php',
87                 'AtomFeed' => 'includes/Feed.php',
88                 'FileStore' => 'includes/FileStore.php',
89                 'FSException' => 'includes/FileStore.php',
90                 'FSTransaction' => 'includes/FileStore.php',
91                 'HTMLForm' => 'includes/HTMLForm.php',
92                 'HistoryBlob' => 'includes/HistoryBlob.php',
93                 'ConcatenatedGzipHistoryBlob' => 'includes/HistoryBlob.php',
94                 'HistoryBlobStub' => 'includes/HistoryBlob.php',
95                 'HistoryBlobCurStub' => 'includes/HistoryBlob.php',
96                 'HTMLCacheUpdate' => 'includes/HTMLCacheUpdate.php',
97                 'Http' => 'includes/HttpFunctions.php',
98                 'IP' => 'includes/IP.php',
99                 'ThumbnailImage' => 'includes/Image.php',
100                 'ImageGallery' => 'includes/ImageGallery.php',
101                 'ImagePage' => 'includes/ImagePage.php',
102                 'ImageHistoryList' => 'includes/ImagePage.php',
103                 'ImageRemote' => 'includes/ImageRemote.php',
104                 'FileDeleteForm' => 'includes/FileDeleteForm.php',
105                 'FileRevertForm' => 'includes/FileRevertForm.php',
106                 'Job' => 'includes/JobQueue.php',
107                 'EmaillingJob' => 'includes/EmaillingJob.php',
108                 'EnotifNotifyJob' => 'includes/EnotifNotifyJob.php',
109                 'HTMLCacheUpdateJob' => 'includes/HTMLCacheUpdate.php',
110                 'RefreshLinksJob' => 'includes/RefreshLinksJob.php',
111                 'Licenses' => 'includes/Licenses.php',
112                 'License' => 'includes/Licenses.php',
113                 'LinkBatch' => 'includes/LinkBatch.php',
114                 'LinkCache' => 'includes/LinkCache.php',
115                 'LinkFilter' => 'includes/LinkFilter.php',
116                 'Linker' => 'includes/Linker.php',
117                 'LinksUpdate' => 'includes/LinksUpdate.php',
118                 'LoadBalancer' => 'includes/LoadBalancer.php',
119                 'LogPage' => 'includes/LogPage.php',
120                 'MacBinary' => 'includes/MacBinary.php',
121                 'MagicWord' => 'includes/MagicWord.php',
122                 'MagicWordArray' => 'includes/MagicWord.php',
123                 'MathRenderer' => 'includes/Math.php',
124                 'MediaTransformOutput' => 'includes/MediaTransformOutput.php',
125                 'ThumbnailImage' => 'includes/MediaTransformOutput.php',
126                 'MediaTransformError' => 'includes/MediaTransformOutput.php',
127                 'TransformParameterError' => 'includes/MediaTransformOutput.php',
128                 'MessageCache' => 'includes/MessageCache.php',
129                 'MimeMagic' => 'includes/MimeMagic.php',
130                 'Namespace' => 'includes/Namespace.php',
131                 'FakeMemCachedClient' => 'includes/ObjectCache.php',
132                 'OutputPage' => 'includes/OutputPage.php',
133                 'PageHistory' => 'includes/PageHistory.php',
134                 'IndexPager' => 'includes/Pager.php',
135                 'ReverseChronologicalPager' => 'includes/Pager.php',
136                 'TablePager' => 'includes/Pager.php',
137                 'Parser' => 'includes/Parser.php',
138                 'ParserOutput' => 'includes/ParserOutput.php',
139                 'ParserOptions' => 'includes/ParserOptions.php',
140                 'ParserCache' => 'includes/ParserCache.php',
141                 'PatrolLog' => 'includes/PatrolLog.php',
142                 'ProfilerSimple' => 'includes/ProfilerSimple.php',
143                 'ProfilerSimpleUDP' => 'includes/ProfilerSimpleUDP.php',
144                 'Profiler' => 'includes/Profiler.php',
145                 'ProxyTools' => 'includes/ProxyTools.php',
146                 'ProtectionForm' => 'includes/ProtectionForm.php',
147                 'QueryPage' => 'includes/QueryPage.php',
148                 'PageQueryPage' => 'includes/PageQueryPage.php',
149                 'ImageQueryPage' => 'includes/ImageQueryPage.php',
150                 'RawPage' => 'includes/RawPage.php',
151                 'RecentChange' => 'includes/RecentChange.php',
152                 'Revision' => 'includes/Revision.php',
153                 'Sanitizer' => 'includes/Sanitizer.php',
154                 'SearchEngine' => 'includes/SearchEngine.php',
155                 'SearchResultSet' => 'includes/SearchEngine.php',
156                 'SearchResult' => 'includes/SearchEngine.php',
157                 'SearchEngineDummy' => 'includes/SearchEngine.php',
158                 'SearchMySQL' => 'includes/SearchMySQL.php',
159                 'MySQLSearchResultSet' => 'includes/SearchMySQL.php',
160                 'SearchMySQL4' => 'includes/SearchMySQL4.php',
161                 'SearchPostgres' => 'includes/SearchPostgres.php',
162                 'SearchUpdate' => 'includes/SearchUpdate.php',
163                 'SearchUpdateMyISAM' => 'includes/SearchUpdate.php',
164                 'SearchOracle' => 'includes/SearchOracle.php',
165                 'SiteConfiguration' => 'includes/SiteConfiguration.php',
166                 'SiteStats' => 'includes/SiteStats.php',
167                 'SiteStatsUpdate' => 'includes/SiteStats.php',
168                 'Skin' => 'includes/Skin.php',
169                 'MediaWiki_I18N' => 'includes/SkinTemplate.php',
170                 'SkinTemplate' => 'includes/SkinTemplate.php',
171                 'QuickTemplate' => 'includes/SkinTemplate.php',
172                 'SpecialAllpages' => 'includes/SpecialAllpages.php',
173                 'AncientPagesPage' => 'includes/SpecialAncientpages.php',
174                 'IPBlockForm' => 'includes/SpecialBlockip.php',
175                 'SpecialBookSources' => 'includes/SpecialBooksources.php',
176                 'BrokenRedirectsPage' => 'includes/SpecialBrokenRedirects.php',
177                 'EmailConfirmation' => 'includes/SpecialConfirmemail.php',
178                 'ContributionsPage' => 'includes/SpecialContributions.php',
179                 'DeadendPagesPage' => 'includes/SpecialDeadendpages.php',
180                 'DisambiguationsPage' => 'includes/SpecialDisambiguations.php',
181                 'DoubleRedirectsPage' => 'includes/SpecialDoubleRedirects.php',
182                 'EmailUserForm' => 'includes/SpecialEmailuser.php',
183                 'WikiRevision' => 'includes/SpecialImport.php',
184                 'WikiImporter' => 'includes/SpecialImport.php',
185                 'ImportStringSource' => 'includes/SpecialImport.php',
186                 'ImportStreamSource' => 'includes/SpecialImport.php',
187                 'IPUnblockForm' => 'includes/SpecialIpblocklist.php',
188                 'ListredirectsPage' => 'includes/SpecialListredirects.php',
189                 'DBLockForm' => 'includes/SpecialLockdb.php',
190                 'LogReader' => 'includes/SpecialLog.php',
191                 'LogViewer' => 'includes/SpecialLog.php',
192                 'LonelyPagesPage' => 'includes/SpecialLonelypages.php',
193                 'LongPagesPage' => 'includes/SpecialLongpages.php',
194                 'MIMEsearchPage' => 'includes/SpecialMIMEsearch.php',
195                 'MostcategoriesPage' => 'includes/SpecialMostcategories.php',
196                 'MostimagesPage' => 'includes/SpecialMostimages.php',
197                 'MostlinkedPage' => 'includes/SpecialMostlinked.php',
198                 'MostlinkedCategoriesPage' => 'includes/SpecialMostlinkedcategories.php',
199                 'SpecialMostlinkedtemplates' => 'includes/SpecialMostlinkedtemplates.php',
200                 'MostrevisionsPage' => 'includes/SpecialMostrevisions.php',
201                 'FewestrevisionsPage' => 'includes/SpecialFewestrevisions.php',
202                 'MovePageForm' => 'includes/SpecialMovepage.php',
203                 'NewbieContributionsPage' => 'includes/SpecialNewbieContributions.php',
204                 'NewPagesPage' => 'includes/SpecialNewpages.php',
205                 'SpecialPage' => 'includes/SpecialPage.php',
206                 'UnlistedSpecialPage' => 'includes/SpecialPage.php',
207                 'IncludableSpecialPage' => 'includes/SpecialPage.php',
208                 'PopularPagesPage' => 'includes/SpecialPopularpages.php',
209                 'PreferencesForm' => 'includes/SpecialPreferences.php',
210                 'SpecialPrefixindex' => 'includes/SpecialPrefixindex.php',
211                 'PasswordResetForm' => 'includes/SpecialResetpass.php',
212                 'RevisionDeleteForm' => 'includes/SpecialRevisiondelete.php',
213                 'RevisionDeleter' => 'includes/SpecialRevisiondelete.php',
214                 'SpecialSearch' => 'includes/SpecialSearch.php',
215                 'ShortPagesPage' => 'includes/SpecialShortpages.php',
216                 'UncategorizedCategoriesPage' => 'includes/SpecialUncategorizedcategories.php',
217                 'UncategorizedPagesPage' => 'includes/SpecialUncategorizedpages.php',
218                 'UncategorizedTemplatesPage' => 'includes/SpecialUncategorizedtemplates.php',
219                 'PageArchive' => 'includes/SpecialUndelete.php',
220                 'UndeleteForm' => 'includes/SpecialUndelete.php',
221                 'DBUnlockForm' => 'includes/SpecialUnlockdb.php',
222                 'UnusedCategoriesPage' => 'includes/SpecialUnusedcategories.php',
223                 'UnusedimagesPage' => 'includes/SpecialUnusedimages.php',
224                 'UnusedtemplatesPage' => 'includes/SpecialUnusedtemplates.php',
225                 'UnwatchedpagesPage' => 'includes/SpecialUnwatchedpages.php',
226                 'UploadForm' => 'includes/SpecialUpload.php',
227                 'UploadFormMogile' => 'includes/SpecialUploadMogile.php',
228                 'LoginForm' => 'includes/SpecialUserlogin.php',
229                 'UserrightsForm' => 'includes/SpecialUserrights.php',
230                 'SpecialVersion' => 'includes/SpecialVersion.php',
231                 'WantedCategoriesPage' => 'includes/SpecialWantedcategories.php',
232                 'WantedPagesPage' => 'includes/SpecialWantedpages.php',
233                 'WhatLinksHerePage' => 'includes/SpecialWhatlinkshere.php',
234                 'WithoutInterwikiPage' => 'includes/SpecialWithoutinterwiki.php',
235                 'SquidUpdate' => 'includes/SquidUpdate.php',
236                 'ReplacementArray' => 'includes/StringUtils.php',
237                 'Replacer' => 'includes/StringUtils.php',
238                 'RegexlikeReplacer' => 'includes/StringUtils.php',
239                 'DoubleReplacer' => 'includes/StringUtils.php',
240                 'HashtableReplacer' => 'includes/StringUtils.php',
241                 'StringUtils' => 'includes/StringUtils.php',
242                 'Title' => 'includes/Title.php',
243                 'User' => 'includes/User.php',
244                 'MailAddress' => 'includes/UserMailer.php',
245                 'EmailNotification' => 'includes/UserMailer.php',
246                 'WatchedItem' => 'includes/WatchedItem.php',
247                 'WebRequest' => 'includes/WebRequest.php',
248                 'WebResponse' => 'includes/WebResponse.php',
249                 'FauxRequest' => 'includes/WebRequest.php',
250                 'MediaWiki' => 'includes/Wiki.php',
251                 'WikiError' => 'includes/WikiError.php',
252                 'WikiErrorMsg' => 'includes/WikiError.php',
253                 'WikiXmlError' => 'includes/WikiError.php',
254                 'Xml' => 'includes/Xml.php',
255                 'ZhClient' => 'includes/ZhClient.php',
256                 'memcached' => 'includes/memcached-client.php',
257                 'EmaillingJob' => 'includes/JobQueue.php',
258                 'WatchlistEditor' => 'includes/WatchlistEditor.php',
259
260                 # filerepo
261                 'ArchivedFile' => 'includes/filerepo/ArchivedFile.php',
262                 'File' => 'includes/filerepo/File.php',
263                 'FileRepo' => 'includes/filerepo/FileRepo.php',
264                 'FileRepoStatus' => 'includes/filerepo/FileRepoStatus.php',
265                 'ForeignDBFile' => 'includes/filerepo/ForeignDBFile.php',
266                 'ForeignDBRepo' => 'includes/filerepo/ForeignDBRepo.php',
267                 'FSRepo' => 'includes/filerepo/FSRepo.php',
268                 'Image' => 'includes/filerepo/LocalFile.php',
269                 'LocalFile' => 'includes/filerepo/LocalFile.php',
270                 'LocalFileDeleteBatch' => 'includes/filerepo/LocalFile.php',
271                 'LocalFileRestoreBatch' => 'includes/filerepo/LocalFile.php',
272                 'LocalRepo' => 'includes/filerepo/LocalRepo.php',
273                 'OldLocalFile' => 'includes/filerepo/OldLocalFile.php',
274                 'RepoGroup' => 'includes/filerepo/RepoGroup.php',
275                 'UnregisteredLocalFile' => 'includes/filerepo/UnregisteredLocalFile.php',
276
277                 # Media
278                 'BitmapHandler' => 'includes/media/Bitmap.php',
279                 'BmpHandler' => 'includes/media/BMP.php',
280                 'DjVuHandler' => 'includes/media/DjVu.php',
281                 'MediaHandler' => 'includes/media/Generic.php',
282                 'ImageHandler' => 'includes/media/Generic.php',
283                 'SvgHandler' => 'includes/media/SVG.php',
284
285                 # Normal
286                 'UtfNormal' => 'includes/normal/UtfNormal.php',
287
288                 # Templates
289                 'UsercreateTemplate' => 'includes/templates/Userlogin.php',
290                 'UserloginTemplate' => 'includes/templates/Userlogin.php',
291
292                 # Languages
293                 'Language' => 'languages/Language.php',
294                 'RandomPage' => 'includes/SpecialRandompage.php',
295
296                 # API
297                 'ApiBase' => 'includes/api/ApiBase.php',
298                 'ApiFormatFeedWrapper' => 'includes/api/ApiFormatBase.php',
299                 'ApiFeedWatchlist' => 'includes/api/ApiFeedWatchlist.php',
300                 'ApiFormatBase' => 'includes/api/ApiFormatBase.php',
301                 'Services_JSON' => 'includes/api/ApiFormatJson_json.php',
302                 'ApiFormatJson' => 'includes/api/ApiFormatJson.php',
303                 'ApiFormatPhp' => 'includes/api/ApiFormatPhp.php',
304                 'ApiFormatWddx' => 'includes/api/ApiFormatWddx.php',
305                 'ApiFormatXml' => 'includes/api/ApiFormatXml.php',
306                 'Spyc' => 'includes/api/ApiFormatYaml_spyc.php',
307                 'ApiFormatYaml' => 'includes/api/ApiFormatYaml.php',
308                 'ApiHelp' => 'includes/api/ApiHelp.php',
309                 'ApiLogin' => 'includes/api/ApiLogin.php',
310                 'ApiMain' => 'includes/api/ApiMain.php',
311                 'ApiOpenSearch' => 'includes/api/ApiOpenSearch.php',
312                 'ApiPageSet' => 'includes/api/ApiPageSet.php',
313                 'ApiQuery' => 'includes/api/ApiQuery.php',
314                 'ApiQueryAllpages' => 'includes/api/ApiQueryAllpages.php',
315                 'ApiQueryAllLinks' => 'includes/api/ApiQueryAllLinks.php',
316                 'ApiQueryAllUsers' => 'includes/api/ApiQueryAllUsers.php',
317                 'ApiQueryBase' => 'includes/api/ApiQueryBase.php',
318                 'ApiQueryGeneratorBase' => 'includes/api/ApiQueryBase.php',
319                 'ApiQueryBacklinks' => 'includes/api/ApiQueryBacklinks.php',
320                 'ApiQueryCategories' => 'includes/api/ApiQueryCategories.php',
321                 'ApiQueryCategoryMembers' => 'includes/api/ApiQueryCategoryMembers.php',
322                 'ApiQueryContributions' => 'includes/api/ApiQueryUserContributions.php',
323                 'ApiQueryExternalLinks' => 'includes/api/ApiQueryExternalLinks.php',
324                 'ApiQueryExtLinksUsage' => 'includes/api/ApiQueryExtLinksUsage.php',
325                 'ApiQueryImages' => 'includes/api/ApiQueryImages.php',
326                 'ApiQueryImageInfo' => 'includes/api/ApiQueryImageInfo.php',
327                 'ApiQueryInfo' => 'includes/api/ApiQueryInfo.php',
328                 'ApiQueryLangLinks' => 'includes/api/ApiQueryLangLinks.php',
329                 'ApiQueryLinks' => 'includes/api/ApiQueryLinks.php',
330                 'ApiQueryLogEvents' => 'includes/api/ApiQueryLogEvents.php',
331                 'ApiQueryRecentChanges'=> 'includes/api/ApiQueryRecentChanges.php',
332                 'ApiQueryRevisions' => 'includes/api/ApiQueryRevisions.php',
333                 'ApiQuerySearch' => 'includes/api/ApiQuerySearch.php',
334                 'ApiQuerySiteinfo' => 'includes/api/ApiQuerySiteinfo.php',
335                 'ApiQueryUserInfo' => 'includes/api/ApiQueryUserInfo.php',
336                 'ApiQueryWatchlist' => 'includes/api/ApiQueryWatchlist.php',
337                 'ApiResult' => 'includes/api/ApiResult.php',
338         );
339         
340         wfProfileIn( __METHOD__ );
341         if ( isset( $localClasses[$className] ) ) {
342                 $filename = $localClasses[$className];
343         } elseif ( isset( $wgAutoloadClasses[$className] ) ) {
344                 $filename = $wgAutoloadClasses[$className];
345         } else {
346                 # Try a different capitalisation
347                 # The case can sometimes be wrong when unserializing PHP 4 objects
348                 $filename = false;
349                 $lowerClass = strtolower( $className );
350                 foreach ( $localClasses as $class2 => $file2 ) {
351                         if ( strtolower( $class2 ) == $lowerClass ) {
352                                 $filename = $file2;
353                         }
354                 }
355                 if ( !$filename ) {
356                         # Give up
357                         wfProfileOut( __METHOD__ );
358                         return;
359                 }
360         }
361
362         # Make an absolute path, this improves performance by avoiding some stat calls
363         if ( substr( $filename, 0, 1 ) != '/' && substr( $filename, 1, 1 ) != ':' ) {
364                 global $IP;
365                 $filename = "$IP/$filename";
366         }
367         require( $filename );
368         wfProfileOut( __METHOD__ );
369 }
370
371 function wfLoadAllExtensions() {
372         global $wgAutoloadClasses;
373
374         # It is crucial that SpecialPage.php is included before any special page 
375         # extensions are loaded. Otherwise the parent class will not be available
376         # when APC loads the early-bound extension class. Normally this is 
377         # guaranteed by entering special pages via SpecialPage members such as 
378         # executePath(), but here we have to take a more explicit measure.
379         
380         require_once( dirname(__FILE__) . '/SpecialPage.php' );
381         
382         foreach( $wgAutoloadClasses as $class => $file ) {
383                 if( !( class_exists( $class ) || interface_exists( $class ) ) ) {
384                         require( $file );
385                 }
386         }
387 }