mediawiki-extensions-InputBox/InputBox.hooks.php
Kunal Mehta 3501819bea build: Updating mediawiki/mediawiki-codesniffer to 0.9.0
The following sniffs are failing and were disabled:
* MediaWiki.Commenting.FunctionComment.MissingParamName
* MediaWiki.Commenting.FunctionComment.MissingParamTag
* MediaWiki.Commenting.FunctionComment.MissingReturn
* MediaWiki.Commenting.FunctionComment.WrongStyle
* MediaWiki.FunctionComment.Missing.Public
* MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment

Change-Id: I063d035702bf538bcf1b05730c295a09210eb2d1
2017-06-20 00:09:00 -07:00

91 lines
2.3 KiB
PHP

<?php
/**
* Hooks for InputBox extension
*
* @file
* @ingroup Extensions
*/
// InputBox hooks
class InputBoxHooks {
// Initialization
public static function register( Parser &$parser ) {
// Register the hook with the parser
$parser->setHook( 'inputbox', [ 'InputBoxHooks', 'render' ] );
// Continue
return true;
}
// Prepend prefix to wpNewTitle if necessary
public static function onSpecialPageBeforeExecute( $special, $subPage ) {
$request = $special->getRequest();
$prefix = $request->getText( 'prefix', '' );
$title = $request->getText( 'wpNewTitle', '' );
$search = $request->getText( 'search', '' );
$searchfilter = $request->getText( 'searchfilter', '' );
if ( $special->getName() == 'Movepage' && $prefix !== '' && $title !== '' ) {
$request->setVal( 'wpNewTitle', $prefix . $title );
$request->unsetVal( 'prefix' );
}
if ( $special->getName() == 'Search' && $searchfilter !== '' ) {
$request->setVal( 'search', $search . ' ' . $searchfilter );
}
return true;
}
// Render the input box
public static function render( $input, $args, Parser $parser ) {
// Create InputBox
$inputBox = new InputBox( $parser );
// Configure InputBox
$inputBox->extractOptions( $parser->replaceVariables( $input ) );
// Return output
return $inputBox->render();
}
/**
* <inputbox type=create...> sends requests with action=edit, and
* possibly a &prefix=Foo. So we pick that up here, munge prefix
* and title together, and redirect back out to the real page
* @param $output OutputPage
* @param $article Article
* @param $title Title
* @param $user User
* @param $request WebRequest
* @param $wiki MediaWiki
* @return bool
*/
public static function onMediaWikiPerformAction(
$output,
$article,
$title,
$user,
$request,
$wiki
) {
if ( $wiki->getAction( $request ) !== 'edit' ) {
// not our problem
return true;
}
if ( $request->getText( 'prefix', '' ) === '' ) {
// Fine
return true;
}
$params = $request->getValues();
$title = $params['prefix'];
if ( isset( $params['title'] ) ) {
$title .= $params['title'];
}
unset( $params['prefix'] );
$params['title'] = $title;
global $wgScript;
$output->redirect( wfAppendQuery( $wgScript, $params ), '301' );
return false;
}
}