/** * returns a json object which hold the data of all existing usergroups * @param string $output the ajax output string */ public static function getGroups() { if (BsCore::checkAccessAdmission('wikiadmin') === false) { return true; } global $wgGroupPermissions; $aGroups = array(); foreach (BsGroupHelper::getAvailableGroups() as $sGroup) { if (in_array($sGroup, array('*', 'user', 'autoconfirmed', 'emailconfirmed'))) { continue; } if (!wfMessage('group-' . $sGroup)->inContentLanguage()->isBlank()) { $sDisplayName = wfMessage('group-' . $sGroup)->plain() . " (" . $sGroup . ")"; } else { $sDisplayName = $sGroup; } $aGroups[] = array('group' => $sGroup, 'displayname' => $sDisplayName); } return FormatJson::encode(array('groups' => $aGroups)); }
public function getForm() { global $wgImplicitGroups, $wgGroupPermissions, $wgNamespacePermissionLockdown; $this->getOutput()->addModules('ext.bluespice.permissionManager'); $aGroups = array('text' => '*', 'builtin' => true, 'implicit' => true, 'expanded' => true, 'children' => array(array('text' => 'user', 'builtin' => true, 'implicit' => true, 'expanded' => true, 'children' => array()))); $aExplicitGroups = BsGroupHelper::getAvailableGroups(array('blacklist' => $wgImplicitGroups)); sort($aExplicitGroups); $aExplicitGroupNodes = array(); foreach ($aExplicitGroups as $sExplicitGroup) { $aExplicitGroupNode = array('text' => $sExplicitGroup, 'leaf' => true); if (in_array($sExplicitGroup, self::$aBuiltInGroups)) { $aExplicitGroupNode['builtin'] = true; } $aExplicitGroupNodes[] = $aExplicitGroupNode; } $aGroups['children'][0]['children'] = $aExplicitGroupNodes; $aJsVars = array('bsPermissionManagerGroupsTree' => $aGroups, 'bsPermissionManagerNamespaces' => self::buildNamespaceMetadata(), 'bsPermissionManagerRights' => self::buildRightsMetadata(), 'bsPermissionManagerGroupPermissions' => $wgGroupPermissions, 'bsPermissionManagerPermissionLockdown' => $wgNamespacePermissionLockdown, 'bsPermissionManagerPermissionTemplates' => self::getTemplateRules()); wfRunHooks('BsPermissionManager::beforeLoadPermissions', array(&$aJsVars)); //Make sure a new group without any explicit permissions is converted into an object! //Without any key => value it would be converted into an empty array. foreach ($aJsVars['bsPermissionManagerGroupPermissions'] as $sGroup => $aPermissions) { if (!empty($aPermissions)) { continue; } $aJsVars['bsPermissionManagerGroupPermissions'][$sGroup] = (object) array(); } $this->getOutput()->addJsConfigVars($aJsVars); return '<div id="panelPermissionManager" style="height: 500px"></div>'; }