urlUtils = $urlUtils; } public function execute( $par ) { if ( !$par ) { $par = 'main'; } // These come from transclusions $request = $this->getRequest(); $options = [ 'action' => 'help', 'nolead' => true, 'submodules' => $request->getCheck( 'submodules' ), 'recursivesubmodules' => $request->getCheck( 'recursivesubmodules' ), 'title' => $request->getVal( 'title', $this->getPageTitle( '$1' )->getPrefixedText() ), ]; // These are for linking from wikitext, since url parameters are a pain // to do. while ( true ) { if ( str_starts_with( $par, 'sub/' ) ) { $par = substr( $par, 4 ); $options['submodules'] = 1; continue; } if ( str_starts_with( $par, 'rsub/' ) ) { $par = substr( $par, 5 ); $options['recursivesubmodules'] = 1; continue; } $moduleName = $par; break; } if ( !$this->including() ) { unset( $options['nolead'], $options['title'] ); // @phan-suppress-next-line PhanPossiblyUndeclaredVariable False positive $options['modules'] = $moduleName; $link = wfAppendQuery( (string)$this->urlUtils->expand( wfScript( 'api' ), PROTO_CURRENT ), $options ); $this->getOutput()->redirect( $link ); return; } $main = new ApiMain( $this->getContext(), false ); try { // @phan-suppress-next-line PhanTypeMismatchArgumentNullable,PhanPossiblyUndeclaredVariable False positive $module = $main->getModuleFromPath( $moduleName ); } catch ( ApiUsageException $ex ) { $this->getOutput()->addHTML( Html::rawElement( 'span', [ 'class' => 'error' ], // @phan-suppress-next-line PhanPossiblyUndeclaredVariable False positive $this->msg( 'apihelp-no-such-module', $moduleName )->inContentLanguage()->parse() ) ); return; } ApiHelp::getHelp( $this->getContext(), $module, $options ); } public function isIncludable() { return true; } } /** @deprecated class alias since 1.41 */ class_alias( SpecialApiHelp::class, 'SpecialApiHelp' );