public static function getPermissions() { if (self::$permissions) { return self::$permissions; } global $egApprovedRevsPermissions; self::$permissions = $egApprovedRevsPermissions; $permissionsZones = array('Namespace Permissions', 'Category Permissions', 'Page Permissions'); foreach ($permissionsZones as $zone) { // for each subzone, such as NS_MAIN within namespaces, or // "Category:Approval Required" within categories, or "Main Page" // within pages...for each of these format the permissions for // simpler logic later foreach (self::$permissions[$zone] as $subzone => $subzonePerms) { self::$permissions[$zone][$subzone] = self::formatPermissionTypes($subzonePerms); } } // perform the same formatting on the All Pages permissions self::$permissions['All Pages'] = self::formatPermissionTypes(self::$permissions['All Pages']); return self::$permissions; }
public static function getPermissions() { if (self::$permissions) { return self::$permissions; } preg_match_all('/<syntaxhighlight lang="INI">(.*?)<\\/syntaxhighlight>/si', wfMessage('approvedrevs-permissions')->text(), $matches); if (isset($matches[1][0])) { self::$permissions = parse_ini_string($matches[1][0], true); } // create arrays of N/C/P's for quickly checking if page is approvable foreach (['Namespaces', 'Categories', 'Pages', 'Namespace Permissions', 'Category Permissions', 'Page Permissions'] as $perm) { if (!isset(self::$permissions[$perm])) { self::$permissions[$perm] = []; } } foreach (self::$permissions['Namespace Permissions'] as $ns => $perms) { array_push(self::$permissions['Namespaces'], $ns); } foreach (self::$permissions['Category Permissions'] as $cat => $perms) { array_push(self::$permissions['Categories'], $cat[0] == '+' ? substr($cat, 1) : $cat); } foreach (self::$permissions['Page Permissions'] as $pg => $perms) { array_push(self::$permissions['Pages'], $pg[0] == '+' ? substr($pg, 1) : $pg); } return self::$permissions; }