MediaWiki  REL1_24
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;
00041 
00042         $userName = $context->getUser();
00043         if ( $userName === null ) {
00044             return array();
00045         }
00046 
00047         $useSiteJs = $this->getConfig()->get( 'UseSiteJs' );
00048         $useSiteCss = $this->getConfig()->get( 'UseSiteCss' );
00049         if ( !$useSiteJs && !$useSiteCss ) {
00050             return array();
00051         }
00052 
00053         // Use $wgUser is possible; allows to skip a lot of code
00054         if ( is_object( $wgUser ) && $wgUser->getName() == $userName ) {
00055             $user = $wgUser;
00056         } else {
00057             $user = User::newFromName( $userName );
00058             if ( !$user instanceof User ) {
00059                 return array();
00060             }
00061         }
00062 
00063         $pages = array();
00064         foreach ( $user->getEffectiveGroups() as $group ) {
00065             if ( $group == '*' ) {
00066                 continue;
00067             }
00068             if ( $useSiteJs ) {
00069                 $pages["MediaWiki:Group-$group.js"] = array( 'type' => 'script' );
00070             }
00071             if ( $useSiteCss ) {
00072                 $pages["MediaWiki:Group-$group.css"] = array( 'type' => 'style' );
00073             }
00074         }
00075         return $pages;
00076     }
00077 
00078     /* Methods */
00079 
00083     public function getGroup() {
00084         return 'user';
00085     }
00086 }