MediaWiki REL1_39
SpecialApiHelp.php
Go to the documentation of this file.
1<?php
31 public function __construct() {
32 parent::__construct( 'ApiHelp' );
33 }
34
35 public function execute( $par ) {
36 if ( empty( $par ) ) {
37 $par = 'main';
38 }
39
40 // These come from transclusions
41 $request = $this->getRequest();
42 $options = [
43 'action' => 'help',
44 'nolead' => true,
45 'submodules' => $request->getCheck( 'submodules' ),
46 'recursivesubmodules' => $request->getCheck( 'recursivesubmodules' ),
47 'title' => $request->getVal( 'title', $this->getPageTitle( '$1' )->getPrefixedText() ),
48 ];
49
50 // These are for linking from wikitext, since url parameters are a pain
51 // to do.
52 while ( true ) {
53 if ( substr( $par, 0, 4 ) === 'sub/' ) {
54 $par = substr( $par, 4 );
55 $options['submodules'] = 1;
56 continue;
57 }
58
59 if ( substr( $par, 0, 5 ) === 'rsub/' ) {
60 $par = substr( $par, 5 );
61 $options['recursivesubmodules'] = 1;
62 continue;
63 }
64
65 $moduleName = $par;
66 break;
67 }
68
69 if ( !$this->including() ) {
70 unset( $options['nolead'], $options['title'] );
71 // @phan-suppress-next-line PhanPossiblyUndeclaredVariable False positive
72 $options['modules'] = $moduleName;
73 $link = wfAppendQuery( wfExpandUrl( wfScript( 'api' ), PROTO_CURRENT ), $options );
74 $this->getOutput()->redirect( $link );
75 return;
76 }
77
78 $main = new ApiMain( $this->getContext(), false );
79 try {
80 // @phan-suppress-next-line PhanTypeMismatchArgumentNullable,PhanPossiblyUndeclaredVariable False positive
81 $module = $main->getModuleFromPath( $moduleName );
82 } catch ( ApiUsageException $ex ) {
83 $this->getOutput()->addHTML( Html::rawElement( 'span', [ 'class' => 'error' ],
84 // @phan-suppress-next-line PhanPossiblyUndeclaredVariable False positive
85 $this->msg( 'apihelp-no-such-module', $moduleName )->inContentLanguage()->parse()
86 ) );
87 return;
88 }
89
90 ApiHelp::getHelp( $this->getContext(), $module, $options );
91 }
92
93 public function isIncludable() {
94 return true;
95 }
96}
const PROTO_CURRENT
Definition Defines.php:198
wfExpandUrl( $url, $defaultProto=PROTO_CURRENT)
Expand a potentially local URL to a fully-qualified URL.
wfAppendQuery( $url, $query)
Append a query string to an existing URL, which may or may not already have query string parameters a...
wfScript( $script='index')
Get the path to a specified script file, respecting file extensions; this is a wrapper around $wgScri...
static getHelp(IContextSource $context, $modules, array $options)
Generate help for the specified modules.
Definition ApiHelp.php:132
This is the main API class, used for both external and internal processing.
Definition ApiMain.php:52
Exception used to abort API execution with an error.
Special page to redirect to API help pages, for situations where linking to the api....
execute( $par)
Default execute method Checks user permissions.
isIncludable()
Whether it's allowed to transclude the special page via {{Special:Foo/params}}.
getOutput()
Get the OutputPage being used for this instance.
getContext()
Gets the context this SpecialPage is executed in.
msg( $key,... $params)
Wrapper around wfMessage that sets the current context.
getRequest()
Get the WebRequest being used for this instance.
getPageTitle( $subpage=false)
Get a self-referential title object.
including( $x=null)
Whether the special page is being evaluated via transclusion.
Shortcut to construct a special page which is unlisted by default.