Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F1431493
InputBoxHooks.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
InputBoxHooks.php
View Options
<?php
/**
* Hooks for InputBox extension
*
* @file
* @ingroup Extensions
*/
namespace
MediaWiki\Extension\InputBox
;
use
Article
;
use
MediaWiki\Actions\ActionEntryPoint
;
use
MediaWiki\Config\Config
;
use
MediaWiki\Hook\MediaWikiPerformActionHook
;
use
MediaWiki\Hook\ParserFirstCallInitHook
;
use
MediaWiki\Output\OutputPage
;
use
MediaWiki\Parser\Parser
;
use
MediaWiki\Request\WebRequest
;
use
MediaWiki\SpecialPage\Hook\SpecialPageBeforeExecuteHook
;
use
MediaWiki\SpecialPage\SpecialPage
;
use
MediaWiki\Title\Title
;
use
MediaWiki\User\User
;
/**
* InputBox hooks
*/
class
InputBoxHooks
implements
ParserFirstCallInitHook
,
SpecialPageBeforeExecuteHook
,
MediaWikiPerformActionHook
{
/** @var Config */
private
$config
;
/**
* @param Config $config
*/
public
function
__construct
(
Config
$config
)
{
$this
->
config
=
$config
;
}
/**
* Initialization
* @param Parser $parser
*/
public
function
onParserFirstCallInit
(
$parser
)
{
// Register the hook with the parser
$parser
->
setHook
(
'inputbox'
,
[
$this
,
'render'
]
);
}
/**
* Prepend prefix to wpNewTitle if necessary
* @param SpecialPage $special
* @param string $subPage
*/
public
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
);
}
}
/**
* Render the input box
* @param string|null $input
* @param array $args
* @param Parser $parser
* @return string
*/
public
function
render
(
$input
,
$args
,
Parser
$parser
)
{
if
(
$input
===
null
)
{
return
''
;
}
// Create InputBox
$inputBox
=
new
InputBox
(
$this
->
config
,
$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 OutputPage $output
* @param Article $article
* @param Title $title
* @param User $user
* @param WebRequest $request
* @param ActionEntryPoint $wiki
* @return bool
*/
public
function
onMediaWikiPerformAction
(
$output
,
$article
,
$title
,
$user
,
$request
,
$wiki
)
{
// In order to check for 'action=edit' in URL parameters, even if another extension overrides
// the action, we must not use getActionName() here. (T337436)
if
(
$request
->
getRawVal
(
'action'
)
!==
'edit'
&&
$request
->
getRawVal
(
'veaction'
)
!==
'edit'
)
{
// not our problem
return
true
;
}
$prefix
=
$request
->
getText
(
'prefix'
,
''
);
if
(
$prefix
===
''
)
{
// Fine
return
true
;
}
$title
=
$prefix
.
$request
->
getText
(
'title'
,
''
);
$params
=
$request
->
getValues
();
unset
(
$params
[
'prefix'
]
);
$params
[
'title'
]
=
$title
;
$output
->
redirect
(
wfAppendQuery
(
$output
->
getConfig
()->
get
(
'Script'
),
$params
),
'301'
);
return
false
;
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, May 16, 20:37 (1 d, 4 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
f3/0c/d72ecba6cde9c610b138d01ed813
Default Alt Text
InputBoxHooks.php (3 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment