jenkins-bot has submitted this change and it was merged.

Change subject: Add 'WikiPageFactory' hook

Add 'WikiPageFactory' hook

This allows extension to consistently use their WikiPage subclasses.
Currently the only way a subclass would be used is if Article::newPage()
was called.

Change-Id: I74cce5f9627c4bc4b92502aff74beb2daeb78d17
M docs/hooks.txt
M includes/page/WikiPage.php
2 files changed, 9 insertions(+), 0 deletions(-)

  Tim Starling: Looks good to me, approved
  jenkins-bot: Verified

diff --git a/docs/hooks.txt b/docs/hooks.txt
index 3b3741a..562d7b4 100644
--- a/docs/hooks.txt
+++ b/docs/hooks.txt
@@ -3791,6 +3791,10 @@
 due to an error)
 &$updates: the array of DataUpdate objects. Hook function may want to add to 
+'WikiPageFactory': Override WikiPage class used for a title
+$title: Title of the page
+&$page: Variable to set the created WikiPage to.
 'XmlDumpWriterOpenPage': Called at the end of XmlDumpWriter::openPage, to allow
 extra metadata to be added.
 $obj: The XmlDumpWriter object.
diff --git a/includes/page/WikiPage.php b/includes/page/WikiPage.php
index c791587..3dc41fb 100644
--- a/includes/page/WikiPage.php
+++ b/includes/page/WikiPage.php
@@ -121,6 +121,11 @@
                        throw new MWException( "Invalid or virtual namespace 
$ns given." );
+               $page = null;
+               if ( !Hooks::run( 'WikiPageFactory', [ $title, &$page ] ) ) {
+                       return $page;
+               }
                switch ( $ns ) {
                        case NS_FILE:
                                $page = new WikiFilePage( $title );

To view, visit
To unsubscribe, visit

Gerrit-MessageType: merged
Gerrit-Change-Id: I74cce5f9627c4bc4b92502aff74beb2daeb78d17
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Legoktm <>
Gerrit-Reviewer: Tim Starling <>
Gerrit-Reviewer: jenkins-bot <>

MediaWiki-commits mailing list

Reply via email to