Manual:Code

From MediaWiki.org
Jump to: navigation, search
Language: English  • Deutsch • français • Bahasa Indonesia • 日本語 • português do Brasil • русский • 中文(简体)‎

This page describes key files and directories in the MediaWiki source code. For more detailed information, see the class, file and comprehensive references auto-generated from the MediaWiki source code using doxygen.

Access points[edit | edit source]

See also: Special:Version#Entry point URLs

Note Note: This list can be generated automatically by running: git grep -l /includes/WebStart.php.[AP 1][AP 2]

These are the files that a browser may reach when using the wiki. All of them are located in the root directory of the wiki, and each of them is paired with a .php5 wrapper, for web servers that require the .php5 extension to execute scripts with the PHP5 engine.

File Description Wiki docs
index.php Main access point for the MediaWiki software. It handles most requests made to MediaWiki. Manual:index.php
api.php External access point for MediaWiki's API. See API:Main page. Manual:api.php
load.php Script for the front-end to hook into for loading ResourceLoader modules. Manual:load.php
img_auth.php Script that only serves images to logged in users. To configure the wiki to use that script, see Manual:Image Authorisation. Manual:img_auth.php
opensearch_desc.php Returns an OpenSearch description document that describes the web interface of MediaWiki's search engine. Manual:opensearch_desc.php
profileinfo.php Allow users to see the profiling information that are stored in the database. See Manual:How to debug#Profiling. Manual:profileinfo.php
redirect.php Script that redirects to the article passed in the wpDropdown parameter of the request. Needed for Nostalgia skin Manual:redirect.php
thumb.php Script used to resize images Manual:thumb.php
thumb_handler.php PHP script to be used as 404 handler to create and stream out a not yet existing image thumbnail. Manual:thumb_handler.php
trackback.php Adds trackbacks to the database. Removed in MediaWiki 1.19 (r104051). Manual:trackback.php
  1. Except thumb_handler.php, which is a simple wrapper around thumb.php and thus does not have to re-include WebStart.php
  2. That command also returns mw-config/index.php, but unlike the other files, it is not intended for repeated use during normal wiki operation; in other words, it is not an access point to reach wiki resources, but a one-off script to launch the configuration process of a newly installed wiki.

/cache/[edit | edit source]

Default location for the file cache, if enabled (by setting $wgUseFileCache = true; — the default is false.). This location can be customized using $wgFileCacheDirectory.

/docs/[edit | edit source]

Contains various text files that should help you understand the most important parts of the code of MediaWiki.

/extensions/[edit | edit source]

Mediawiki extensions are distributed separately from the core code. Installing an extension entails copying its files into this directory, and enabling it by following the extension's own installation instructions (usually editing the LocalSettings.php file). In current versions a set of several extensions is distributed with a fresh MediaWiki install.

/includes/[edit | edit source]

This directory stores common include files needed by MediaWiki.

File Description Wiki docs
includes/Article.php Contains the Article class, which provides methods to view, modify and manage articles. This maintains WikiPage functions for backwards compatibility. Manual:Article.php
includes/AutoLoader.php This defines autoloading handler for whole MediaWiki framework. Manual:AutoLoader.php
includes/Defines.php Defines several constants, suchs as those for namespaces, which are used by other files and classes. Manual:Defines.php
includes/EditPage.php Provides much of the code related to the editing user interface Manual:EditPage.php
includes/GlobalFunctions.php Contains globally used functions like wfMsgExt. Manual:GlobalFunctions.php
includes/Linker.php Contains methods to create internal, external or image links and implements page existence detection. Manual:Linker.php
includes/Message.php Provides methods for: fetching interface messages; processing messages into a variety of formats. See Manual:Messages API. Manual:Message.php
includes/OutputPage.php Hold HTML and wikitext parsing. Will also generate the <head> element or part of it. Manual:OutputPage.php
includes/Pager.php Contains the IndexPager class used for paging results of MySQL queries. Manual:Pager.php
includes/Parser.php Contains most of the code that converts wikitext to HTML (though few bits and pieces are in Manual:Skin.php). Manual:Parser.php
includes/Setup.php Include commonly used files and initializes the global object variables so that MediaWiki can work. Manual:Setup.php
includes/Skin.php Encapsulates a "look and feel" for the wiki. Manual:Skin.php
includes/SpecialPage.php Contains the SpecialPage class, which is the parent class for all special page classes. It also makes available several static functions for handling the special page list and several other special page classes, like RedirectSpecialPage and IncludableSpecialPage. See Manual:Special pages. Manual:SpecialPage.php
includes/SiteStats.php Contains the SiteStats class for site statistics and related things. Manual:SiteStats.php
includes/Title.php Represents the title of an article, and does all the work of translating among various forms such as plain text, URL, database key, etc. For convenience, and for historical reasons, it also represents a few features of articles that don't involve their text, such as access rights. Manual:Title.php
includes/User.php Encapsulates the state of the user viewing/using the site. Can be queried for things like the user's settings, name, etc. Handles the details of getting and saving to the user table of the database, and dealing with sessions and cookies. Manual:User.php
includes/UserMailer.php Collection of static functions for sending mail. Manual:UserMailer.php
includes/WebRequest.php This file contains the definition of the WebRequest class. Manual:WebRequest.php
includes/WebStart.php It does the initial setup for a web request: security checks, loads LocalSettings.php and Setup.php. Manual:WebStart.php
includes/Wiki.php This file consists of the definition of the class MediaWiki. Manual:Wiki.php
includes/PathRouter.php The class used for turning pretty urls into query arguments that MediaWiki can use. Manual:PathRouter.php
includes/WikiPage.php Contains the WikiPage class, which represents a page in the wiki. Manual:WikiPage.php

/includes/actions/[edit | edit source]

This directory contains the Action classes, which handle the different actions which can be performed on pages (e.g. view, delete, edit, etc.). All these classes extend the Action, FormlessAction or FormAction classes. Some of them are just stubs which call methods in the Article or EditPage classes to do the actual work.

File Description Wiki docs
includes/actions/CreditsAction.php Handles formatting the credits for articles. See also Manual:$wgMaxCredits. Manual:CreditsAction.php
includes/actions/DeleteAction.php Handles page deletion. Manual:DeleteAction.php
includes/actions/EditAction.php Contains classes EditAction and SubmitAction which handle the edit and submitting actions. Manual:EditAction.php
includes/actions/HistoryAction.php Handles printing the history page for an article. Manual:HistoryAction.php
includes/actions/InfoAction.php Displays informations about a page, like the total number of edits and number of unique editors. Manual:InfoAction.php
includes/actions/MarkpatrolledAction.php Handles marking a revision as patrolled. Manual:MarkpatrolledAction.php
includes/actions/ProtectAction.php Handles protecting a page. Manual:ProtectAction.php
includes/actions/PurgeAction.php Handles purging a page. Manual:PurgeAction.php
includes/actions/RawAction.php Handles the "action=raw" action. Manual:RawAction.php
includes/actions/RenderAction.php Handles the render action, which shows an HTML rendering of the page; similar to the view action, but only the unstyled article text is shown, not the additional toolboxes, search boxes, stylesheets, etc. Manual:RenderAction.php
includes/actions/RevertAction.php Contains class RevertFileAction, which handles reverting a file. Manual:RevertAction.php
includes/actions/RevisiondeleteAction.php Handles the revision delete action by just passing the request to Special:RevisionDelete. Manual:RevisiondeleteAction.php
includes/actions/RollbackAction.php Handles rolling back a page. Manual:RollbackAction.php
includes/actions/ViewAction.php Handles the viewing of a page, by calling Article::view(). Manual:ViewAction.php
includes/actions/WatchAction.php Contains classes WatchAction and UnwatchAction, which handle watching and unwatching a page. Manual:WatchAction.php

/includes/api/[edit | edit source]

This directory contains the code for the MediaWiki API. See API:Main page. The most important files are:

File Description Wiki docs
includes/api/ApiBase.php The base class for all API classes. Has a lot of common code for all API actions. Inherits class ContextSource Manual:ApiBase.php
includes/api/ApiFormatBase.php The base class for all formatting classes. Inherits ApiBase. Manual:ApiFormatBase.php
includes/api/ApiQueryBase.php The base class for all query API classes. Inherits ApiBase. Manual:ApiQueryBase.php

/includes/cache/[edit | edit source]

This directory contains files with code relating to MediaWiki's caching mechanisms.

File Description Wiki docs
cache/FileCacheBase.php The FileCacheBase class is the base class for classes which provide a file based cache scheme. See Manual:File cache. Manual:FileCacheBase.php
cache/GenderCache.php Caches user genders when needed to use correct namespace aliases. Manual:GenderCache.php
cache/HTMLCacheUpdate.php Invalidates the HTML cache of all the pages linking to a given title. Manual:HTMLCacheUpdate.php
HTMLFileCache.php File based caching of HTML pages. Manual:HTMLFileCache.php
cache/LinkBatch.php The LinkBatch class represents a list of titles. Manual:LinkBatch.php
cache/LinkCache.php Caching for article titles (prefixed DB keys) and ids linked from one source. See also LINKCACHE.TXT. Manual:LinkCache.php
cache/MemcachedSessions.php This file gets included if $wgSessionsInMemcache is set in the config. It redirects session handling functions to store their data in memcached instead of the local filesystem. Manual:MemcachedSessions.php
cache/MessageCache.php Performs various MediaWiki namespace-related functions. Manual:MessageCache.php
cache/ObjectFileCache.php File based caching of objects. Manual:ObjectFileCache.php
cache/ResourceFileCache.php File based caching of JavaScript and CSS resources. Manual:ResourceFileCache.php
cache/SquidUpdate.php Handles purging appropriate Squid URLs given a title (or titles). Manual:SquidUpdate.php

/includes/context/[edit | edit source]

This directory contains a few classes related to (request) contexts. As of MediaWiki 1.18 the context of a request is encapsulated inside a RequestContext instance which implements IContextSource. A context is a way of grouping the parts of a request together. This reduces the need for globals. See Manual:RequestContext for more information.

File Description Wiki docs
includes/context/ContextSource.php The ContextSource class implements the IContextSource interface. It is a helper class: by making a class extend ContextSource the class will be provided with the various getOutput, getSkin, getLanguage, etc. helpers directly and will implement IContextSource. Manual:ContextSource.php
includes/context/DerivativeContext.php A DerivativeContext is an IContextSource implementation which will inherit context from another source but allows individual pieces of context to be changed locally. Manual:DerivativeContext.php
includes/context/IContextSource.php This file contains the IContextSource interface. This interface should be implemented by objects which provide a context on a request. Manual:IContextSource.php
includes/context/RequestContext.php A RequestContext object groups all the pieces relevant to the context of a request into one instance. Manual:RequestContext.php

/includes/db/[edit | edit source]

This directory contains the code for database support. Database.php provides MediaWiki's database abstraction layer.

/includes/diff/[edit | edit source]

This directory contains the standard MediaWiki difference engine. A difference engine computes the difference between two texts. Whether this difference engine is used or some external diff tool, depends on the $wgExternalDiffEngine setting.

File Description Wiki docs
includes/diff/DairikiDiff.php The DairikiDiff engine. Currently the standard diff engine. The file defines several related classes. Manual:DairikiDiff.php
includes/diff/DifferenceEngine.php The DifferenceEngine class the interface between MediaWiki and whichever difference engine is used. Which difference engine is used depends on the $wgExternalDiffEngine config setting. Manual:DifferenceEngine.php
includes/diff/WikiDiff3.php Another diff engine. Currently not in use. Manual:WikiDiff3.php

/includes/jobqueue/jobs/[edit | edit source]

Files related to the job queue. Each job class for a specific type of job derives from the Job class and has to implement a run() method which does the actual job.

File Description Wiki docs
includes/job/DoubleRedirectJob.php Job to fix double redirects after moving a page Manual:DoubleRedirectJob.php
includes/job/EnotifNotifyJob.php Job for email notification. Manual:EnotifNotifyJob.php
includes/job/JobQueue.php Contains the Job class. This is the abstract class to describe a background job. The class also contains static functions for handling jobs (insert jobs in the queue and pop jobs from the queue). Manual:JobQueue.php
includes/job/RefreshLinksJob.php Contains the RefreshLinksJob and RefreshLinksJob2 classes for jobs to update links for a given title. They use class LinksUpdate (defined in /includes/LinksUpdate.php) to update several db tables. Manual:RefreshLinksJob.php
includes/job/UploadFromUrlJob.php Job for asynchronous upload-by-url. Its an interface to the UploadFromUrl class in /includes/upload/UploadFromUrl.php. Manual:UploadFromUrlJob.php

/includes/logging/[edit | edit source]

Some files related to logging the events which happen on a Wiki. This directory was introduced in MW 1.19. Some of the files were already present in olders versions, in the includes/ directory.

File Description Wiki docs
includes/logging/LogEntry.php Contains the LogEntry interface and some classes implementing this interface to encapsulate log entries. Introduced in MW 1.19. Manual:LogEntry.php
includes/logging/LogEventsList.php A class to list log entries. Manual:LogEventsList.php
includes/logging/LogFormatter.php Contains several classes for formatting log entries. Introduced in MW 1.19. Manual:LogFormatter.php
includes/logging/LogPage.php Class to manage a log: add entries to the log and extract information from the log. Manual:LogPage.php
includes/logging/LogPager.php Class to list log entries. Implements the ReverseChronologicalPager class. Manual:LogPager.php
includes/logging/PatrolLog.php Class containing static functions for working with logs of patrol events. Manual:PatrolLog.php

/includes/media/[edit | edit source]

This directory contains files for handling several media formats, mostly images.

/includes/normal/[edit | edit source]

This directory contains some Unicode normalization routines. See includes/normal/README for more information.

/includes/objectcache/[edit | edit source]

Files related to MediaWiki's caching mechanisms. The files in this directory provide the possibility to store objects in PHP accelerators, in memcached, in a database or in DBA files.

File Description Wiki docs
includes/objectcache/APCBagOStuff.php Implementation of BagOStuff for APC's shared memory functions. Manual:APCBagOStuff.php
includes/objectcache/BagOStuff.php Abstract class to be derived by classes which cache objects in PHP accelerators, SQL database or DBA files. It specifies the methods a cache class must provide, like get(), set(), delete(), etc. Manual:BagOStuff.php
includes/objectcache/DBABagOStuff.php Implementation of BagOStuff which uses PHP's DBA extension as a backend. Manual:DBABagOStuff.php
includes/objectcache/EhcacheBagOStuff.php Implementation of BagOStuff using the Ehcache RESTful web service. Manual:EhcacheBagOStuff.php
includes/objectcache/EmptyBagOStuff.php Emulates an empty BagOStuff. Manual:EmptyBagOStuff.php
includes/objectcache/MemcachedClient.php Contains the MWMemcached class, a PHP memcache client. Manual:MemcachedClient.php
includes/objectcache/MemcachedPhpBagOStuff.php Implementation of BagOStuff using memcached. It uses the MWMemcached class as a pure PHP memcached client. Manual:MemcachedPhpBagOStuff.php
includes/objectcache/MultiWriteBagOStuff.php Implementation of BagOStuff that replicates all writes to multiple child caches. Manual:MultiWriteBagOStuff.php
includes/objectcache/ObjectCache.php The ObjectCache class contains some static helper functions for caching objects. Manual:ObjectCache.php
includes/objectcache/SqlBagOStuff.php Implementation of BagOStuff using a database. Manual:SqlBagOStuff.php
includes/objectcache/inCacheBagOStuff.php Implementation of BagOStuff using WinCache. Manual:inCacheBagOStuff.php
includes/objectcache/CacheBagOStuff.php Implementation of BagOStuff using XCache. Manual:CacheBagOStuff.php

/includes/parser/[edit | edit source]

The MediaWiki parser, which transforms wikitext to HTML, can be found here together with related files. The most interesting files in this directory:

File Description Wiki docs
includes/parser/CoreParserFunctions.php A collection of functions which implement the core parser functions. Manual:CoreParserFunctions.php
includes/parser/CoreTagHooks.php Tag hooks provided by MediaWiki core, e.g. <nowiki>, <gallery>, <pre>, .. Manual:CoreTagHooks.php
includes/parser/LinkHolderArray.php A LinkHolderArray holds a set of replacement pairs for wiki links. Manual:LinkHolderArray.php
includes/parser/Parser.php This file contains the parser. A few regular expressions are included. Manual:Parser.php
includes/parser/ParserCache.php This class handles caching the output from the parser. Manual:ParserCache.php
includes/parser/ParserOptions.php The ParserOptions class holds a collection of options for the parser. Manual:ParserOptions.php
includes/parser/ParserOutput.php Contains the ParserOutput class, which encapsulates the output of the parser. Manual:ParserOutput.php
includes/parser/Preprocessor.php Contains the Preprocessor interface for preprocessors. Also contains the PPFrame and PPNode interfaces. Manual:Preprocessor.php
includes/parser/Preprocessor_DOM.php A preprocessor using PHP's DOM extension. This preprocessor is used if the PHP DOM extension is available. Manual:Preprocessor_DOM.php
includes/parser/Preprocessor_Hash.php A preprocessor using PHP arrays. This preprocessor is used if the PHP DOM isn't available or when the old XMLDOM extension is present. Manual:Preprocessor_Hash.php
includes/parser/Preprocessor_HipHop.php A preprocessor optimised for HipHop, using HipHop-specific syntax. Manual:Preprocessor_HipHop.php

/includes/resourceloader/[edit | edit source]

Files related to ResourceLoader, a JavaScript/CSS delivery optimizing system for MediaWiki.

/includes/search/[edit | edit source]

This directory contains the code to implement the possibility of searching a wiki using one the possible backends.

File Description Wiki docs
includes/search/SearchEngine.php Contains several classes related to searching a wiki. The SearchEngine class is the parent class for specific search implementations. Manual:SearchEngine.php
includes/search/SearchIBM_DB2.php Implements SearchEngine using IBM DB2. Manual:SearchIBM_DB2.php
includes/search/SearchMssql.php Implements SearchEngine using Msssql. Manual:SearchMssql.php
includes/search/SearchMySQL.php Implements SearchEngine using a MySQL search engine. Manual:SearchMySQL.php
includes/search/SearchOracle.php Implements SearchEngine using Oracle (ConText). Manual:SearchOracle.php
includes/search/SearchSqlite.php Implements SearchEngine using SQLite. Manual:SearchSqlite.php

/includes/specials/[edit | edit source]

This directory contains the code and classes for the standard special pages. All special page classes derive from class SpecialPage (defined in [1]]). Special pages which come with extension are located in their respective extensions directories. See also Manual:Special pages.

/includes/upload/[edit | edit source]

Files providing the backend of MediaWiki's file upload feature.

File Description Wiki docs
includes/upload/UploadBase.php UploadBase and subclasses are the backend of MediaWiki's file uploads. Manual:UploadBase.php
includes/upload/UploadFromChunks.php Subclass of UploadBase implementing uploading from chunks. Manual:UploadFromChunks.php
includes/upload/UploadFromFile.php Subclass of UploadBase implementing regular file uploads. Manual:UploadFromFile.php
includes/upload/UploadFromStash.php Subclass of UploadBase implementing uploading from previously stored file. Manual:UploadFromStash.php
includes/upload/UploadFromUrl.php Subclass of UploadBase implementing uploading from a HTTP resource. Manual:UploadFromUrl.php
includes/upload/UploadStash.php Provides the possibility to enable applications to temporarily stash files without publishing them to the wiki. Manual:UploadStash.php

/images/[edit | edit source]

If uploads are enabled in the wiki, files will be put in subdirectories under this directory. See Manual:Image administration#Folders for more details.

/languages/[edit | edit source]

This directory contains files used for localization and internationalization. For a quick overview, see Language in MediaWiki.

File Description Wiki docs
languages/Language.php Contains the Language class, it represents the language used for incidental text, and also has some character encoding functions and other locale stuff. Two globals contain an instance of this class: $wgContLang for the site language and $wgLang for the user language. Manual:Language.php

/maintenance/[edit | edit source]

This directory contains maintenance scripts that must be run from a command line interface.

See Manual:Maintenance scripts for an overview of those scripts.

/mw-config/[edit | edit source]

Entry point for the Config script (the helper script that helps setting up a newly installed wiki). The actual code of the installer is located at /includes/installer/.

/resources/[edit | edit source]

This directory contains JavaScript and CSS resources used by MediaWiki, including jQuery.

It also contains binary files like PNG and SVG images, for instance in resources/src/mediawiki/images/: see Manual:Assets.

/serialized/[edit | edit source]

Location for serialized objects (database entries converted into files -- see Serialization for more information). The database tables that contain serialized data are listed at Manual:Serialization.

/skins/[edit | edit source]

This directory contain all skins classes, JavaScripts, CSS and some images used by that skins. See Manual:Skins.

/tests/[edit | edit source]

Contains various (unit)test related files, including: