From: Kunal Mehta Date: Tue, 4 Oct 2016 17:53:10 +0000 (-0700) Subject: Move MWGrants out of utils X-Git-Tag: 1.31.0-rc.0~5106 X-Git-Url: http://git.cyclocoop.org/%22%20.%20generer_url_ecrire%28%22suivi_revisions%22%29%20.%20%22?a=commitdiff_plain;h=cb117e3d59e942369be5425d8d3c3164fb5ae9a4;p=lhc%2Fweb%2Fwiklou.git Move MWGrants out of utils Literally every function in this class depends upon MediaWiki, so it does not make sense to be included in the utils/ directory. Change-Id: If6c6b75dc11b49b75f649d56eaeb9c96ef54b787 --- diff --git a/autoload.php b/autoload.php index 49a9bd4fc8..636cb592fd 100644 --- a/autoload.php +++ b/autoload.php @@ -781,7 +781,7 @@ $wgAutoloadLocalClasses = [ 'MWExceptionHandler' => __DIR__ . '/includes/exception/MWExceptionHandler.php', 'MWExceptionRenderer' => __DIR__ . '/includes/exception/MWExceptionRenderer.php', 'MWFileProps' => __DIR__ . '/includes/utils/MWFileProps.php', - 'MWGrants' => __DIR__ . '/includes/utils/MWGrants.php', + 'MWGrants' => __DIR__ . '/includes/MWGrants.php', 'MWHttpRequest' => __DIR__ . '/includes/http/MWHttpRequest.php', 'MWLBFactory' => __DIR__ . '/includes/db/MWLBFactory.php', 'MWMemcached' => __DIR__ . '/includes/compat/MemcachedClientCompat.php', diff --git a/includes/MWGrants.php b/includes/MWGrants.php new file mode 100644 index 0000000000..58efdc7278 --- /dev/null +++ b/includes/MWGrants.php @@ -0,0 +1,214 @@ + array of rights + */ + public static function getRightsByGrant() { + global $wgGrantPermissions; + + $res = []; + foreach ( $wgGrantPermissions as $grant => $rights ) { + $res[$grant] = array_keys( array_filter( $rights ) ); + } + return $res; + } + + /** + * Fetch the display name of the grant + * @param string $grant + * @param Language|string|null $lang + * @return string Grant description + */ + public static function grantName( $grant, $lang = null ) { + // Give grep a chance to find the usages: + // grant-blockusers, grant-createeditmovepage, grant-delete, + // grant-editinterface, grant-editmycssjs, grant-editmywatchlist, + // grant-editpage, grant-editprotected, grant-highvolume, + // grant-oversight, grant-patrol, grant-protect, grant-rollback, + // grant-sendemail, grant-uploadeditmovefile, grant-uploadfile, + // grant-basic, grant-viewdeleted, grant-viewmywatchlist, + // grant-createaccount + $msg = wfMessage( "grant-$grant" ); + if ( $lang !== null ) { + if ( is_string( $lang ) ) { + $lang = Language::factory( $lang ); + } + $msg->inLanguage( $lang ); + } + if ( !$msg->exists() ) { + $msg = wfMessage( 'grant-generic', $grant ); + if ( $lang ) { + $msg->inLanguage( $lang ); + } + } + return $msg->text(); + } + + /** + * Fetch the display names for the grants. + * @param string[] $grants + * @param Language|string|null $lang + * @return string[] Corresponding grant descriptions + */ + public static function grantNames( array $grants, $lang = null ) { + if ( $lang !== null ) { + if ( is_string( $lang ) ) { + $lang = Language::factory( $lang ); + } + } + + $ret = []; + foreach ( $grants as $grant ) { + $ret[] = self::grantName( $grant, $lang ); + } + return $ret; + } + + /** + * Fetch the rights allowed by a set of grants. + * @param string[]|string $grants + * @return string[] + */ + public static function getGrantRights( $grants ) { + global $wgGrantPermissions; + + $rights = []; + foreach ( (array)$grants as $grant ) { + if ( isset( $wgGrantPermissions[$grant] ) ) { + $rights = array_merge( $rights, array_keys( array_filter( $wgGrantPermissions[$grant] ) ) ); + } + } + return array_unique( $rights ); + } + + /** + * Test that all grants in the list are known. + * @param string[] $grants + * @return bool + */ + public static function grantsAreValid( array $grants ) { + return array_diff( $grants, self::getValidGrants() ) === []; + } + + /** + * Divide the grants into groups. + * @param string[]|null $grantsFilter + * @return array Map of (group => (grant list)) + */ + public static function getGrantGroups( $grantsFilter = null ) { + global $wgGrantPermissions, $wgGrantPermissionGroups; + + if ( is_array( $grantsFilter ) ) { + $grantsFilter = array_flip( $grantsFilter ); + } + + $groups = []; + foreach ( $wgGrantPermissions as $grant => $rights ) { + if ( $grantsFilter !== null && !isset( $grantsFilter[$grant] ) ) { + continue; + } + if ( isset( $wgGrantPermissionGroups[$grant] ) ) { + $groups[$wgGrantPermissionGroups[$grant]][] = $grant; + } else { + $groups['other'][] = $grant; + } + } + + return $groups; + } + + /** + * Get the list of grants that are hidden and should always be granted + * @return string[] + */ + public static function getHiddenGrants() { + global $wgGrantPermissionGroups; + + $grants = []; + foreach ( $wgGrantPermissionGroups as $grant => $group ) { + if ( $group === 'hidden' ) { + $grants[] = $grant; + } + } + return $grants; + } + + /** + * Generate a link to Special:ListGrants for a particular grant name. + * + * This should be used to link end users to a full description of what + * rights they are giving when they authorize a grant. + * + * @param string $grant the grant name + * @param Language|string|null $lang + * @return string (proto-relative) HTML link + */ + public static function getGrantsLink( $grant, $lang = null ) { + return \Linker::linkKnown( + \SpecialPage::getTitleFor( 'Listgrants', false, $grant ), + htmlspecialchars( self::grantName( $grant, $lang ) ) + ); + } + + /** + * Generate wikitext to display a list of grants + * @param string[]|null $grantsFilter If non-null, only display these grants. + * @param Language|string|null $lang + * @return string Wikitext + */ + public static function getGrantsWikiText( $grantsFilter, $lang = null ) { + global $wgContLang; + + if ( is_string( $lang ) ) { + $lang = Language::factory( $lang ); + } elseif ( $lang === null ) { + $lang = $wgContLang; + } + + $s = ''; + foreach ( self::getGrantGroups( $grantsFilter ) as $group => $grants ) { + if ( $group === 'hidden' ) { + continue; // implicitly granted + } + $s .= "*" . + wfMessage( "grant-group-$group" )->inLanguage( $lang )->text() . "\n"; + $s .= ":" . $lang->semicolonList( self::grantNames( $grants, $lang ) ) . "\n"; + } + return "$s\n"; + } + +} diff --git a/includes/utils/MWGrants.php b/includes/utils/MWGrants.php deleted file mode 100644 index 58efdc7278..0000000000 --- a/includes/utils/MWGrants.php +++ /dev/null @@ -1,214 +0,0 @@ - array of rights - */ - public static function getRightsByGrant() { - global $wgGrantPermissions; - - $res = []; - foreach ( $wgGrantPermissions as $grant => $rights ) { - $res[$grant] = array_keys( array_filter( $rights ) ); - } - return $res; - } - - /** - * Fetch the display name of the grant - * @param string $grant - * @param Language|string|null $lang - * @return string Grant description - */ - public static function grantName( $grant, $lang = null ) { - // Give grep a chance to find the usages: - // grant-blockusers, grant-createeditmovepage, grant-delete, - // grant-editinterface, grant-editmycssjs, grant-editmywatchlist, - // grant-editpage, grant-editprotected, grant-highvolume, - // grant-oversight, grant-patrol, grant-protect, grant-rollback, - // grant-sendemail, grant-uploadeditmovefile, grant-uploadfile, - // grant-basic, grant-viewdeleted, grant-viewmywatchlist, - // grant-createaccount - $msg = wfMessage( "grant-$grant" ); - if ( $lang !== null ) { - if ( is_string( $lang ) ) { - $lang = Language::factory( $lang ); - } - $msg->inLanguage( $lang ); - } - if ( !$msg->exists() ) { - $msg = wfMessage( 'grant-generic', $grant ); - if ( $lang ) { - $msg->inLanguage( $lang ); - } - } - return $msg->text(); - } - - /** - * Fetch the display names for the grants. - * @param string[] $grants - * @param Language|string|null $lang - * @return string[] Corresponding grant descriptions - */ - public static function grantNames( array $grants, $lang = null ) { - if ( $lang !== null ) { - if ( is_string( $lang ) ) { - $lang = Language::factory( $lang ); - } - } - - $ret = []; - foreach ( $grants as $grant ) { - $ret[] = self::grantName( $grant, $lang ); - } - return $ret; - } - - /** - * Fetch the rights allowed by a set of grants. - * @param string[]|string $grants - * @return string[] - */ - public static function getGrantRights( $grants ) { - global $wgGrantPermissions; - - $rights = []; - foreach ( (array)$grants as $grant ) { - if ( isset( $wgGrantPermissions[$grant] ) ) { - $rights = array_merge( $rights, array_keys( array_filter( $wgGrantPermissions[$grant] ) ) ); - } - } - return array_unique( $rights ); - } - - /** - * Test that all grants in the list are known. - * @param string[] $grants - * @return bool - */ - public static function grantsAreValid( array $grants ) { - return array_diff( $grants, self::getValidGrants() ) === []; - } - - /** - * Divide the grants into groups. - * @param string[]|null $grantsFilter - * @return array Map of (group => (grant list)) - */ - public static function getGrantGroups( $grantsFilter = null ) { - global $wgGrantPermissions, $wgGrantPermissionGroups; - - if ( is_array( $grantsFilter ) ) { - $grantsFilter = array_flip( $grantsFilter ); - } - - $groups = []; - foreach ( $wgGrantPermissions as $grant => $rights ) { - if ( $grantsFilter !== null && !isset( $grantsFilter[$grant] ) ) { - continue; - } - if ( isset( $wgGrantPermissionGroups[$grant] ) ) { - $groups[$wgGrantPermissionGroups[$grant]][] = $grant; - } else { - $groups['other'][] = $grant; - } - } - - return $groups; - } - - /** - * Get the list of grants that are hidden and should always be granted - * @return string[] - */ - public static function getHiddenGrants() { - global $wgGrantPermissionGroups; - - $grants = []; - foreach ( $wgGrantPermissionGroups as $grant => $group ) { - if ( $group === 'hidden' ) { - $grants[] = $grant; - } - } - return $grants; - } - - /** - * Generate a link to Special:ListGrants for a particular grant name. - * - * This should be used to link end users to a full description of what - * rights they are giving when they authorize a grant. - * - * @param string $grant the grant name - * @param Language|string|null $lang - * @return string (proto-relative) HTML link - */ - public static function getGrantsLink( $grant, $lang = null ) { - return \Linker::linkKnown( - \SpecialPage::getTitleFor( 'Listgrants', false, $grant ), - htmlspecialchars( self::grantName( $grant, $lang ) ) - ); - } - - /** - * Generate wikitext to display a list of grants - * @param string[]|null $grantsFilter If non-null, only display these grants. - * @param Language|string|null $lang - * @return string Wikitext - */ - public static function getGrantsWikiText( $grantsFilter, $lang = null ) { - global $wgContLang; - - if ( is_string( $lang ) ) { - $lang = Language::factory( $lang ); - } elseif ( $lang === null ) { - $lang = $wgContLang; - } - - $s = ''; - foreach ( self::getGrantGroups( $grantsFilter ) as $group => $grants ) { - if ( $group === 'hidden' ) { - continue; // implicitly granted - } - $s .= "*" . - wfMessage( "grant-group-$group" )->inLanguage( $lang )->text() . "\n"; - $s .= ":" . $lang->semicolonList( self::grantNames( $grants, $lang ) ) . "\n"; - } - return "$s\n"; - } - -}