Merge "SpecialPage: DRY array filter for prefixSearchSubpages()"
This commit is contained in:
commit
a249073d37
4 changed files with 35 additions and 10 deletions
|
|
@ -335,6 +335,21 @@ class SpecialPage {
|
|||
return array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function for implementations of prefixSearchSubpages() that
|
||||
* filter the values in memory (as oppposed to making a query).
|
||||
*
|
||||
* @since 1.24
|
||||
* @param string $search
|
||||
* @param int $limit
|
||||
* @param array $subpages
|
||||
* @return string[]
|
||||
*/
|
||||
protected static function prefixSearchArray( $search, $limit, Array $subpages ) {
|
||||
$escaped = preg_quote( $search );
|
||||
return array_slice( preg_grep( "/^$escaped/i", $subpages ), 0, $limit );
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets headers - this should be called from the execute() method of all derived classes!
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -125,11 +125,16 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
|
|||
* @return string[] Matching subpages
|
||||
*/
|
||||
public function prefixSearchSubpages( $search, $limit = 10 ) {
|
||||
// SpecialWatchlist uses SpecialEditWatchlist::getMode, so new types should be added
|
||||
// here and there - no 'edit' here, because that the default for this page
|
||||
$subpages = array( 'clear', 'raw' );
|
||||
$escaped = preg_quote( $search );
|
||||
return array_slice( preg_grep( "/^$escaped/i", $subpages ), 0, $limit );
|
||||
return self::prefixSearchArray(
|
||||
$search,
|
||||
$limit,
|
||||
// SpecialWatchlist uses SpecialEditWatchlist::getMode, so new types should be added
|
||||
// here and there - no 'edit' here, because that the default for this page
|
||||
array(
|
||||
'clear',
|
||||
'raw',
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -127,8 +127,7 @@ class SpecialLog extends SpecialPage {
|
|||
$subpages = $wgLogTypes;
|
||||
$subpages[] = 'all';
|
||||
sort( $subpages );
|
||||
$escaped = preg_quote( $search );
|
||||
return array_slice( preg_grep( "/^$escaped/i", $subpages ), 0, $limit );
|
||||
return self::prefixSearchArray( $search, $limit, $subpages );
|
||||
}
|
||||
|
||||
private function parseParams( FormOptions $opts, $par ) {
|
||||
|
|
|
|||
|
|
@ -88,9 +88,15 @@ class SpecialWatchlist extends ChangesListSpecialPage {
|
|||
*/
|
||||
public function prefixSearchSubpages( $search, $limit = 10 ) {
|
||||
// See also SpecialEditWatchlist::prefixSearchSubpages
|
||||
$subpages = array( 'clear', 'edit', 'raw' );
|
||||
$escaped = preg_quote( $search );
|
||||
return array_slice( preg_grep( "/^$escaped/i", $subpages ), 0, $limit );
|
||||
return self::prefixSearchArray(
|
||||
$search,
|
||||
$limit,
|
||||
array(
|
||||
'clear',
|
||||
'edit',
|
||||
'raw',
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in a new issue