Add 'WikiPageFactory' hook
authorKunal Mehta <legoktm@member.fsf.org>
Fri, 16 Sep 2016 00:40:03 +0000 (17:40 -0700)
committerTim Starling <tstarling@wikimedia.org>
Fri, 14 Oct 2016 23:57:37 +0000 (23:57 +0000)
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

docs/hooks.txt
includes/page/WikiPage.php

index 3b3741a..562d7b4 100644 (file)
@@ -3791,6 +3791,10 @@ $content: the Content to generate updates for (or null, if the Content could not
 due to an error)
 &$updates: the array of DataUpdate objects. Hook function may want to add to it.
 
+'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.
index c791587..3dc41fb 100644 (file)
@@ -121,6 +121,11 @@ class WikiPage implements Page, IDBAccessObject {
                        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 );