📄 forumperms.jsp
字号:
<%@ page contentType="text/html;charset=GB2312" %>
<%
/**
* $RCSfile: forumPerms.jsp,v $
* $Revision: 1.1.1.1 $
* $Date: 2002/09/09 13:50:13 $
*/
%>
<%@ page import="java.util.*,
java.net.URLEncoder,
com.jivesoftware.forum.*,
com.jivesoftware.forum.util.*"
errorPage="error.jsp"
%>
<%! // Global variables, methods, etc
// Global permission definitions
static final int READ = ForumPermissions.READ;
static final int CREATE_THREAD = ForumPermissions.CREATE_THREAD;
static final int CREATE_MESSAGE = ForumPermissions.CREATE_MESSAGE;
static final int MODERATE_THREADS = ForumPermissions.MODERATE_THREADS;
static final int MODERATE_MESSAGES = ForumPermissions.MODERATE_MESSAGES;
// types of users/groups to give permissions to
static final int ANYBODY = 1;
static final int REGISTERED = 2;
static final int USER = 3;
static final int GROUP = 4;
// anonymous user & special user constants
static final long GUEST_ID = -1L;
static final long REGISTERED_ID = 0L;
// Returns the total number of users (registered users plus the "anonymous
// user" and the "all registered users" user) with permission to a given
// permission type.
private int getUserPermCount(PermissionsManager permManager, int type) {
// All registered users...
int count = permManager.usersWithPermissionCount(type);
// ... plus the "anonymous" user
if (permManager.anonymousUserHasPermission(type)) {
count++;
}
// ... plus the "registered users" user
if (permManager.registeredUserHasPermission(type)) {
count++;
}
return count;
}
// Returns an iterator of users with permission types of both
// MODERATE_THREADS and MODERATE_MESSAGES
private Iterator getUserModerators(PermissionsManager permManager) {
// Temporarily hold all moderators in a hashmap so when we combine the
// thread & message moderators, duplicates will be ignored.
Map moderators = new HashMap();
// add thread moderators (user)
for (Iterator iter=permManager.usersWithPermission(MODERATE_THREADS);iter.hasNext();) {
User user = (User)iter.next();
moderators.put(user.getUsername(),user);
}
// add message moderators (user)
for (Iterator iter=permManager.usersWithPermission(MODERATE_MESSAGES);iter.hasNext();) {
User user = (User)iter.next();
moderators.put(user.getUsername(),user);
}
// Sort the user moderators list
List moderatorList = new ArrayList(moderators.values());
Object[] moderatorArray = moderatorList.toArray();
Arrays.sort(moderatorArray, new Comparator() {
public int compare(Object o1, Object o2) {
User u1 = (User)o1;
User u2 = (User)o2;
return (u1.getUsername().compareTo(u2.getUsername()));
}
});
return (Arrays.asList(moderatorArray)).iterator();
}
// Returns an iterator of users with permission types of both
// MODERATE_THREADS and MODERATE_MESSAGES
private Iterator getGroupModerators(PermissionsManager permManager) {
// Temporarily hold all moderators in a hashmap so when we combine the
// thread & message moderators, duplicates will be ignored.
Map moderators = new HashMap();
// add thread moderators (groups)
for (Iterator iter=permManager.groupsWithPermission(MODERATE_THREADS);iter.hasNext();) {
Group group = (Group)iter.next();
moderators.put(group.getName(),group);
}
// add message moderators (groups)
for (Iterator iter=permManager.groupsWithPermission(MODERATE_MESSAGES);iter.hasNext();) {
Group group = (Group)iter.next();
moderators.put(group.getName(),group);
}
// Sort the user moderators list
List moderatorList = new ArrayList(moderators.values());
Object[] moderatorArray = moderatorList.toArray();
Arrays.sort(moderatorArray, new Comparator() {
public int compare(Object o1, Object o2) {
Group g1 = (Group)o1;
Group g2 = (Group)o2;
return (g1.getName().compareTo(g2.getName()));
}
});
return (Arrays.asList(moderatorArray)).iterator();
}
// Returns an iterator of users sorted by username
private Iterator getSortedUserIterator(Iterator users) {
// Add elements to a list
List list = new LinkedList();
while (users.hasNext()) {
list.add(users.next());
}
// if the list size is <= 1, just return the orig iterator -- no sorting
// necessary
if (list.size() <= 1) {
return users;
}
else {
Object[] sortedUsers = list.toArray();
Arrays.sort(sortedUsers, new Comparator() {
public int compare(Object o1, Object o2) {
User u1 = (User)o1;
User u2 = (User)o2;
return (u1.getUsername().compareTo(u2.getUsername()));
}
});
List sortedList = new ArrayList();
for (int i=0; i<sortedUsers.length; i++) {
sortedList.add(sortedUsers[i]);
}
return sortedList.iterator();
}
}
// Returns an iterator of groups sorted by group name
private Iterator getSortedGroupIterator(Iterator groups) {
// Add elements to a list
List list = new LinkedList();
while (groups.hasNext()) {
list.add(groups.next());
}
// if the list size is <= 1, just return the orig iterator -- no sorting
// necessary
if (list.size() <= 1) {
return groups;
}
else {
Object[] sortedGroups = list.toArray();
Arrays.sort(sortedGroups, new Comparator() {
public int compare(Object o1, Object o2) {
Group g1 = (Group)o1;
Group g2 = (Group)o2;
return (g1.getName().compareTo(g2.getName()));
}
});
List sortedList = new ArrayList();
for (int i=0; i<sortedGroups.length; i++) {
sortedList.add(sortedGroups[i]);
}
return sortedList.iterator();
}
}
//
private long[] getUserIDs(String[] items) {
return getIDs(items, "u");
}
//
private long[] getGroupIDs(String[] items) {
return getIDs(items, "g");
}
//
private long[] getIDs(String[] items, String prefix) {
if (items == null) {
return new long[0];
}
long[] IDs = new long[items.length];
int size = 0;
for (int i=0; i<items.length; i++) {
String item = items[i];
if (item != null && item.startsWith(prefix)) {
try {
IDs[size] = Long.parseLong(item.substring(1,item.length()));
size++;
}
catch (Exception e) {}
}
}
if (size == IDs.length) {
return IDs;
}
else {
long[] temp = new long[size];
for (int i=0; i<temp.length; i++) {
temp[i] = IDs[i];
}
return temp;
}
}
%>
<%@ include file="global.jsp" %>
<% // get parameters
int forumID = ParamUtils.getIntParameter(request,"forum",-1);
int[] permissions = ParamUtils.getIntParameters(request,"permission",-1);
int givePermTo = ParamUtils.getIntParameter(request,"givePermTo",-1);
boolean add = ParamUtils.getBooleanParameter(request,"add");
boolean remove = ParamUtils.getBooleanParameter(request,"remove");
String username = ParamUtils.getParameter(request,"username");
String groupname = ParamUtils.getParameter(request,"groupname");
String[] items = request.getParameterValues("items");
int itemType = ParamUtils.getIntParameter(request,"itemType",-1);
// UserManager for getting and setting users or lists of users
UserManager userManager = forumFactory.getUserManager();
// GroupManager for getting and setting groups or list of groups
GroupManager groupManager = forumFactory.getGroupManager();
// Load the forum
Forum forum = null;
if (forumID != -1L) {
forum = forumFactory.getForum(forumID);
}
// This forum's permission manager
PermissionsManager permManager = null;
if (forum != null) {
permManager = forum.getPermissionsManager();
}
else {
permManager = forumFactory.getPermissionsManager();
}
// add a new permission if requested
if (add) {
// Check to see that the user clicked a permission radio button and
// selected at least one permission
if (givePermTo > 0 && (permissions!=null && permissions.length>0)) {
switch (givePermTo) {
case ANYBODY:
// Add anonymous user permissions
for (int i=0; i<permissions.length; i++) {
permManager.addAnonymousUserPermission(permissions[i]);
}
break;
case REGISTERED:
// Add registered user permissions
for (int i=0; i<permissions.length; i++) {
permManager.addRegisteredUserPermission(permissions[i]);
}
break;
case USER:
try {
// get the user:
User user = userManager.getUser(username);
// Add the user permission
for (int i=0; i<permissions.length; i++) {
permManager.addUserPermission(user, permissions[i]);
}
} catch (Exception ignored) {}
break;
case GROUP:
try {
// get the user:
Group group = groupManager.getGroup(groupname);
// Add the user permission
for (int i=0; i<permissions.length; i++) {
permManager.addGroupPermission(group, permissions[i]);
}
} catch (Exception ignored) {}
break;
default:
}
}
// done adding, so redirect back to this page
response.sendRedirect("forumPerms.jsp?forum="+forumID);
return;
}
// remove a permission if requested
if (remove) {
// Get the lists of user IDs and group IDs.
long[] userIDs = getUserIDs(items);
long[] groupIDs = getGroupIDs(items);
// if there are user perms or group perms to remove:
if (userIDs.length > 0 || groupIDs.length > 0) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -