MediaWiki  master
MultiUsernameFilter.php
Go to the documentation of this file.
1 <?php
21 namespace MediaWiki\Preferences;
22 
23 use CentralIdLookup;
26 
27 class MultiUsernameFilter implements Filter {
31  private $lookup;
34 
39  public function __construct(
40  CentralIdLookup $lookup = null,
42  ) {
43  $this->lookup = $lookup;
44  $this->authorityOrAudience = $authorityOrAudience;
45  }
46 
50  public function filterFromForm( $names ) {
51  $names = trim( $names );
52  if ( $names !== '' ) {
53  $names = preg_split( '/\n/', $names, -1, PREG_SPLIT_NO_EMPTY );
54  $ids = $this->getLookup()->centralIdsFromNames( $names, $this->authorityOrAudience );
55  if ( $ids ) {
56  return implode( "\n", $ids );
57  }
58  }
59  // If the user list is empty, it should be null (don't save) rather than an empty string
60  return null;
61  }
62 
66  public function filterForForm( $value ) {
67  $ids = self::splitIds( $value );
68  $names = $ids ? $this->getLookup()->namesFromCentralIds( $ids, $this->authorityOrAudience ) : [];
69  return implode( "\n", $names );
70  }
71 
78  public static function splitIds( $str ) {
79  return array_map( 'intval', preg_split( '/\n/', $str, -1, PREG_SPLIT_NO_EMPTY ) );
80  }
81 
85  private function getLookup() {
86  $this->lookup = $this->lookup ?? MediaWikiServices::getInstance()->getCentralIdLookup();
87  return $this->lookup;
88  }
89 }
The CentralIdLookup service allows for connecting local users with cluster-wide IDs.
MediaWikiServices is the service locator for the application scope of MediaWiki.
static getInstance()
Returns the global default instance of the top level service locator.
static splitIds( $str)
Splits a newline separated list of user ids into an array.
__construct(CentralIdLookup $lookup=null, $authorityOrAudience=CentralIdLookup::AUDIENCE_PUBLIC)
Authority int $authorityOrAudience
User querying central usernames or one of the audience constants.
This interface represents the authority associated the current execution context, such as a web reque...
Definition: Authority.php:37
Base interface for user preference filters that work as a middleware between storage and interface.
Definition: Filter.php:27