/**
  * 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>';
 }