MediaWiki  master
MWGrants.php
Go to the documentation of this file.
1 <?php
21 
25 class MWGrants {
26 
31  public static function getValidGrants() {
32  global $wgGrantPermissions;
33 
34  return array_keys( $wgGrantPermissions );
35  }
36 
41  public static function getRightsByGrant() {
42  global $wgGrantPermissions;
43 
44  $res = [];
45  foreach ( $wgGrantPermissions as $grant => $rights ) {
46  $res[$grant] = array_keys( array_filter( $rights ) );
47  }
48  return $res;
49  }
50 
57  public static function grantName( $grant, $lang = null ) {
58  // Give grep a chance to find the usages:
59  // grant-blockusers, grant-createeditmovepage, grant-delete,
60  // grant-editinterface, grant-editmycssjs, grant-editmywatchlist,
61  // grant-editsiteconfig, grant-editpage, grant-editprotected,
62  // grant-highvolume, grant-oversight, grant-patrol, grant-protect,
63  // grant-rollback, grant-sendemail, grant-uploadeditmovefile,
64  // grant-uploadfile, grant-basic, grant-viewdeleted,
65  // grant-viewmywatchlist, grant-createaccount, grant-mergehistory,
66  // grant-import
67  $msg = wfMessage( "grant-$grant" );
68  if ( $lang !== null ) {
69  if ( is_string( $lang ) ) {
70  $lang = MediaWikiServices::getInstance()->getLanguageFactory()
71  ->getLanguage( $lang );
72  }
73  $msg->inLanguage( $lang );
74  }
75  if ( !$msg->exists() ) {
76  $msg = wfMessage( 'grant-generic', $grant );
77  if ( $lang ) {
78  $msg->inLanguage( $lang );
79  }
80  }
81  return $msg->text();
82  }
83 
90  public static function grantNames( array $grants, $lang = null ) {
91  if ( $lang !== null && is_string( $lang ) ) {
92  $lang = MediaWikiServices::getInstance()->getLanguageFactory()->getLanguage( $lang );
93  }
94 
95  $ret = [];
96  foreach ( $grants as $grant ) {
97  $ret[] = self::grantName( $grant, $lang );
98  }
99  return $ret;
100  }
101 
107  public static function getGrantRights( $grants ) {
108  global $wgGrantPermissions;
109 
110  $rights = [];
111  foreach ( (array)$grants as $grant ) {
112  if ( isset( $wgGrantPermissions[$grant] ) ) {
113  $rights = array_merge( $rights, array_keys( array_filter( $wgGrantPermissions[$grant] ) ) );
114  }
115  }
116  return array_unique( $rights );
117  }
118 
124  public static function grantsAreValid( array $grants ) {
125  return array_diff( $grants, self::getValidGrants() ) === [];
126  }
127 
133  public static function getGrantGroups( $grantsFilter = null ) {
135 
136  if ( is_array( $grantsFilter ) ) {
137  $grantsFilter = array_flip( $grantsFilter );
138  }
139 
140  $groups = [];
141  foreach ( $wgGrantPermissions as $grant => $rights ) {
142  if ( $grantsFilter !== null && !isset( $grantsFilter[$grant] ) ) {
143  continue;
144  }
145  if ( isset( $wgGrantPermissionGroups[$grant] ) ) {
146  $groups[$wgGrantPermissionGroups[$grant]][] = $grant;
147  } else {
148  $groups['other'][] = $grant;
149  }
150  }
151 
152  return $groups;
153  }
154 
159  public static function getHiddenGrants() {
161 
162  $grants = [];
163  foreach ( $wgGrantPermissionGroups as $grant => $group ) {
164  if ( $group === 'hidden' ) {
165  $grants[] = $grant;
166  }
167  }
168  return $grants;
169  }
170 
181  public static function getGrantsLink( $grant, $lang = null ) {
182  $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer();
183  return $linkRenderer->makeKnownLink(
184  \SpecialPage::getTitleFor( 'Listgrants', false, $grant ),
185  self::grantName( $grant, $lang )
186  );
187  }
188 
195  public static function getGrantsWikiText( $grantsFilter, $lang = null ) {
196  if ( is_string( $lang ) ) {
197  $lang = MediaWikiServices::getInstance()->getLanguageFactory()->getLanguage( $lang );
198  } elseif ( $lang === null ) {
199  $lang = MediaWikiServices::getInstance()->getContentLanguage();
200  }
201 
202  $s = '';
203  foreach ( self::getGrantGroups( $grantsFilter ) as $group => $grants ) {
204  if ( $group === 'hidden' ) {
205  continue; // implicitly granted
206  }
207  $s .= "*<span class=\"mw-grantgroup\">" .
208  wfMessage( "grant-group-$group" )->inLanguage( $lang )->text() . "</span>\n";
209  $s .= ":" . $lang->semicolonList( self::grantNames( $grants, $lang ) ) . "\n";
210  }
211  return "$s\n";
212  }
213 
214 }
MediaWiki\MediaWikiServices
MediaWikiServices is the service locator for the application scope of MediaWiki.
Definition: MediaWikiServices.php:163
$lang
if(!isset( $args[0])) $lang
Definition: testCompression.php:37
MWGrants\getGrantRights
static getGrantRights( $grants)
Fetch the rights allowed by a set of grants.
Definition: MWGrants.php:107
MWGrants\grantNames
static grantNames(array $grants, $lang=null)
Fetch the display names for the grants.
Definition: MWGrants.php:90
wfMessage
wfMessage( $key,... $params)
This is the function for getting translated interface messages.
Definition: GlobalFunctions.php:1220
$s
$s
Definition: mergeMessageFileList.php:184
SpecialPage\getTitleFor
static getTitleFor( $name, $subpage=false, $fragment='')
Get a localised Title object for a specified special page name If you don't need a full Title object,...
Definition: SpecialPage.php:96
$res
$res
Definition: testCompression.php:57
MWGrants\getHiddenGrants
static getHiddenGrants()
Get the list of grants that are hidden and should always be granted.
Definition: MWGrants.php:159
MWGrants\getGrantsLink
static getGrantsLink( $grant, $lang=null)
Generate a link to Special:ListGrants for a particular grant name.
Definition: MWGrants.php:181
MWGrants\getGrantsWikiText
static getGrantsWikiText( $grantsFilter, $lang=null)
Generate wikitext to display a list of grants.
Definition: MWGrants.php:195
$wgGrantPermissions
array $wgGrantPermissions
Map of (grant => right => boolean) Users authorize consumers (like Apps) to act on their behalf but o...
Definition: DefaultSettings.php:6245
MWGrants\grantName
static grantName( $grant, $lang=null)
Fetch the display name of the grant.
Definition: MWGrants.php:57
MWGrants\getValidGrants
static getValidGrants()
List all known grants.
Definition: MWGrants.php:31
MWGrants\grantsAreValid
static grantsAreValid(array $grants)
Test that all grants in the list are known.
Definition: MWGrants.php:124
MWGrants\getGrantGroups
static getGrantGroups( $grantsFilter=null)
Divide the grants into groups.
Definition: MWGrants.php:133
MWGrants
A collection of public static functions to deal with grants.
Definition: MWGrants.php:25
MWGrants\getRightsByGrant
static getRightsByGrant()
Map all grants to corresponding user rights.
Definition: MWGrants.php:41
$wgGrantPermissionGroups
array $wgGrantPermissionGroups
Map of grants to their UI grouping.
Definition: DefaultSettings.php:6359