/** * 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)); }
/** * Add the given User to a temporary group if he is a responsible editor * for the given Title. This group will have special permissions for the * Title's namespace. The group assignment exists only during the current * request. This method needs to be called before a permission check is * performed on the Title. * @param Title $oTitle * @param User $oUser * @return boolean */ public function applyTempPermissionsForRespEditor(Title $oTitle, User $oUser) { $iArticleID = $oTitle->getArticleID(); $aResponsibleEditorsIDs = $this->getResponsibleEditorIdsByArticleId($iArticleID); if (!in_array($oUser->getId(), $aResponsibleEditorsIDs)) { return false; } $aAvailablePermissions = BsConfig::get('MW::ResponsibleEditors::AutoPermissions'); if (empty($aAvailablePermissions)) { return false; } BsGroupHelper::addTemporaryGroupToUser($oUser, 'tmprespeditors', $aAvailablePermissions, $oTitle); return true; }
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>'; }