X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fspecialpage%2FSpecialPage.php;h=6a04c6a7540b8cde98617f241587fd675e46ebf9;hb=fb7b3eebeb8de47eb42e8d6ccf204106a2d6d9e4;hp=65a4eb9abfa18e7b539dac41affb3cd061b1b737;hpb=04fdc78370dbc042116488d6826e19bf3910273b;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specialpage/SpecialPage.php b/includes/specialpage/SpecialPage.php index 65a4eb9abf..6a04c6a754 100644 --- a/includes/specialpage/SpecialPage.php +++ b/includes/specialpage/SpecialPage.php @@ -310,7 +310,7 @@ class SpecialPage { public function prefixSearchSubpages( $search, $limit, $offset ) { $subpages = $this->getSubpagesForPrefixSearch(); if ( !$subpages ) { - return array(); + return []; } return self::prefixSearchArray( $search, $limit, $subpages, $offset ); @@ -325,7 +325,30 @@ class SpecialPage { * @return string[] subpages to search from */ protected function getSubpagesForPrefixSearch() { - return array(); + return []; + } + + /** + * Perform a regular substring search for prefixSearchSubpages + * @param string $search Prefix to search for + * @param int $limit Maximum number of results to return (usually 10) + * @param int $offset Number of results to skip (usually 0) + * @return string[] Matching subpages + */ + protected function prefixSearchString( $search, $limit, $offset ) { + $title = Title::newFromText( $search ); + if ( !$title || !$title->canExist() ) { + // No prefix suggestion in special and media namespace + return []; + } + + $search = SearchEngine::create(); + $search->setLimitOffset( $limit, $offset ); + $search->setNamespaces( [] ); + $result = $search->defaultPrefixSearch( $search ); + return array_map( function( Title $t ) { + return $t->getPrefixedText(); + }, $result ); } /** @@ -354,11 +377,11 @@ class SpecialPage { $out->setRobotPolicy( $this->getRobotPolicy() ); $out->setPageTitle( $this->getDescription() ); if ( $this->getConfig()->get( 'UseMediaWikiUIEverywhere' ) ) { - $out->addModuleStyles( array( + $out->addModuleStyles( [ 'mediawiki.ui.input', 'mediawiki.ui.radio', 'mediawiki.ui.checkbox', - ) ); + ] ); } } @@ -378,7 +401,7 @@ class SpecialPage { * @param SpecialPage $this * @param string|null $subPage */ - Hooks::run( 'SpecialPageBeforeExecute', array( $this, $subPage ) ); + Hooks::run( 'SpecialPageBeforeExecute', [ $this, $subPage ] ); $this->beforeExecute( $subPage ); $this->execute( $subPage ); @@ -392,7 +415,7 @@ class SpecialPage { * @param SpecialPage $this * @param string|null $subPage */ - Hooks::run( 'SpecialPageAfterExecute', array( $this, $subPage ) ); + Hooks::run( 'SpecialPageAfterExecute', [ $this, $subPage ] ); } /** @@ -603,7 +626,7 @@ class SpecialPage { */ public function msg( /* $args */ ) { $message = call_user_func_array( - array( $this->getContext(), 'msg' ), + [ $this->getContext(), 'msg' ], func_get_args() ); // RequestContext passes context to wfMessage, and the language is set from @@ -626,7 +649,7 @@ class SpecialPage { $feedTemplate = wfScript( 'api' ); foreach ( $this->getConfig()->get( 'FeedClasses' ) as $format => $class ) { - $theseParams = $params + array( 'feedformat' => $format ); + $theseParams = $params + [ 'feedformat' => $format ]; $url = wfAppendQuery( $feedTemplate, $theseParams ); $this->getOutput()->addFeedLink( $format, $url ); } @@ -675,6 +698,16 @@ class SpecialPage { return $group; } + /** + * Indicates whether this special page may perform database writes + * + * @return bool + * @since 1.27 + */ + public function doesWrites() { + return false; + } + /** * Under which header this special page is listed in Special:SpecialPages * See messages 'specialpages-group-*' for valid names