⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 forumperms.jsp

📁 一个jive论坛管理的源码 学习Jive源程序
💻 JSP
📖 第 1 页 / 共 2 页
字号:
<%@ 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 + -