public function setUpGroupNamespaces() { global $wgExtraNamespaces, $wgNamespacePermissionLockdown, $wgNonincludableNamespaces; if (!$wgNamespacePermissionLockdown || !$wgNonincludableNamespaces) { throw new \Exception('To use the Group Namespace Feature you need to install Lockdown (https://www.mediawiki.org/wiki/Extension:Lockdown)'); } $nsCount = 200; $groups = $this->groupmanager->findGroups(); foreach ($groups as $group) { $nsName = 'NS_SF_GROUP_' . $group->getId(); $nsNameTalk = $nsName . '_TALK'; define($nsName, $nsCount++); define($nsNameTalk, $nsCount++); $groupName = $group->getName(); $groupName = strtolower($groupName); $groupName = str_replace(array(' ', ',', '.', '-'), '_', $groupName); $groupName = ucfirst($groupName); # add new namespaces $wgExtraNamespaces[constant($nsName)] = $groupName; $wgExtraNamespaces[constant($nsNameTalk)] = $groupName . '_talk'; #restrict "read" permission to logged in users $wgNamespacePermissionLockdown[constant($nsName)]['read'] = array(self::getGroupAlias($group)); $wgNamespacePermissionLockdown[constant($nsNameTalk)]['read'] = array(self::getGroupAlias($group)); #prevent inclusion of pages from that namespace $wgNonincludableNamespaces[] = constant($nsName); $wgNonincludableNamespaces[] = constant($nsNameTalk); } }