wiki.techinc.nl/includes/resourceloader/ResourceLoaderUserGroupsModule.php
Scimonster cf7b8049f8 Unblacklist group-specific JS/CSS for the user group
Changes ResourceLoaderUserGroupsModule so that if the
user is in the 'user' group, i.e., the user is not
anonymous, then custom JS or CSS can be inserted using
system messages in the same way as is allowed for other
user groups.

Bug: 47812
Change-Id: I0ef9674e1a9e1e5db9537ba7b9578d2b7b14fd8e
2013-12-06 09:07:35 +00:00

83 lines
2.1 KiB
PHP

<?php
/**
* Resource loader module for user customizations.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
* @file
*/
/**
* Module for user customizations
*/
class ResourceLoaderUserGroupsModule extends ResourceLoaderWikiModule {
/* Protected Members */
protected $origin = self::ORIGIN_USER_SITEWIDE;
protected $targets = array( 'desktop', 'mobile' );
/* Protected Methods */
/**
* @param $context ResourceLoaderContext
* @return array
*/
protected function getPages( ResourceLoaderContext $context ) {
global $wgUser, $wgUseSiteJs, $wgUseSiteCss;
$userName = $context->getUser();
if ( $userName === null ) {
return array();
}
if ( !$wgUseSiteJs && !$wgUseSiteCss ) {
return array();
}
// Use $wgUser is possible; allows to skip a lot of code
if ( is_object( $wgUser ) && $wgUser->getName() == $userName ) {
$user = $wgUser;
} else {
$user = User::newFromName( $userName );
if ( !$user instanceof User ) {
return array();
}
}
$pages = array();
foreach ( $user->getEffectiveGroups() as $group ) {
if ( $group == '*' ) {
continue;
}
if ( $wgUseSiteJs ) {
$pages["MediaWiki:Group-$group.js"] = array( 'type' => 'script' );
}
if ( $wgUseSiteCss ) {
$pages["MediaWiki:Group-$group.css"] = array( 'type' => 'style' );
}
}
return $pages;
}
/* Methods */
/**
* @return string
*/
public function getGroup() {
return 'user';
}
}