MediaWiki  REL1_23
ResourceLoaderUserGroupsModule.php
Go to the documentation of this file.
00001 <?php
00026 class ResourceLoaderUserGroupsModule extends ResourceLoaderWikiModule {
00027 
00028     /* Protected Members */
00029 
00030     protected $origin = self::ORIGIN_USER_SITEWIDE;
00031     protected $targets = array( 'desktop', 'mobile' );
00032 
00033     /* Protected Methods */
00034 
00039     protected function getPages( ResourceLoaderContext $context ) {
00040         global $wgUser, $wgUseSiteJs, $wgUseSiteCss;
00041 
00042         $userName = $context->getUser();
00043         if ( $userName === null ) {
00044             return array();
00045         }
00046         if ( !$wgUseSiteJs && !$wgUseSiteCss ) {
00047             return array();
00048         }
00049 
00050         // Use $wgUser is possible; allows to skip a lot of code
00051         if ( is_object( $wgUser ) && $wgUser->getName() == $userName ) {
00052             $user = $wgUser;
00053         } else {
00054             $user = User::newFromName( $userName );
00055             if ( !$user instanceof User ) {
00056                 return array();
00057             }
00058         }
00059 
00060         $pages = array();
00061         foreach ( $user->getEffectiveGroups() as $group ) {
00062             if ( $group == '*' ) {
00063                 continue;
00064             }
00065             if ( $wgUseSiteJs ) {
00066                 $pages["MediaWiki:Group-$group.js"] = array( 'type' => 'script' );
00067             }
00068             if ( $wgUseSiteCss ) {
00069                 $pages["MediaWiki:Group-$group.css"] = array( 'type' => 'style' );
00070             }
00071         }
00072         return $pages;
00073     }
00074 
00075     /* Methods */
00076 
00080     public function getGroup() {
00081         return 'user';
00082     }
00083 }