📄 groupmanager.java
字号:
else if ("admin".equals(val))
r = IUserStates.ROLE_GOD;
if (!rUser.hasRight(r))
return null;
g.setMinRight(r);
} else if ("autosulist".equals(low)) {
g.setAutoSu (val.split(","));
} else if ("lockprotected".equals(low)
&& "true".equals(val)) {
if (!g.hasState(IGroupState.OPEN))
g.setState (IGroupState.OPEN);
g.setState (IGroupState.LOCKPROTECTED);
} else if ("autosu".equals(low)
&& "false".equals(val)) {
g.unsetState (IGroupState.AUTO_SU_FIRST);
} else if ("allowsu".equals(low)
&& "false".equals(val)) {
g.unsetState (IGroupState.ALLOW_SU);
} else if ("nosufirst".equals(low)
&& "true".equals(val)) {
g.setState (IGroupState.NO_SU_FIRST);
} else if ("minuserrolesu".equals(low)) {
if ("vip".equals(val))
g.setMinRightSu(IUserStates.ROLE_VIP);
else if ("moderator".equals(val))
g.setMinRightSu(IUserStates.IS_MODERATOR);
else if ("admin".equals(val))
g.setMinRightSu(IUserStates.ROLE_GOD);
else
Server.log (this, "minuserrolesu has wrong value '" + val + "' for group " + g.getRawName(), Server.MSG_STATE, Server.LVL_MINOR);
} else if ("soundprooffor".equals(low)) {
String[] roles = val.toLowerCase().split(",");
for (int j = 0; j < roles.length; j++) {
String curr = roles[j].trim();
if ("vip".equals(curr))
g.setState(IGroupState.SND_PRF_VIP);
else if ("guest".equals(curr))
g.setState(IGroupState.SND_PRF_GUEST);
else if ("moderator".equals(curr))
g.setState(IGroupState.SND_PRF_MODERATOR);
else if ("admin".equals(curr))
g.setState(IGroupState.SND_PRF_GOD);
else if ("user".equals(curr))
g.setState(IGroupState.SND_PRF_USER);
}
} else if ("suforbidden".equals(low)) {
g.setSuForbiddenMembership(val);
} else if ("memberroom".equals(low)) {
String[] memberships = val.toLowerCase().split(",");
Vector msObjects = new Vector();
for (int j = 0; j < memberships.length; j++) {
Membership cms = MembershipManager.instance.getMembership(memberships[j]);
if (cms == null)
continue;
msObjects.add(cms);
}
g.setMemberRoom ((Membership[]) msObjects.toArray(new Membership[0]));
} else if ("deactivatehitdice".equals(low) && "true".equals(val)){
g.setState (IGroupState.DEACTIVATE_HITDICE);
} else if (low.startsWith("extension.")) {
String namespace = low.substring(10);
int idx = namespace.indexOf(".");
if (idx == -1) {
Server.log (this, "invalid GroupPolicy for extension: " + low, Server.MSG_ERROR, Server.LVL_MINOR);
continue;
}
String propName = namespace.substring(idx+1);
namespace = namespace.substring(0,idx);
Properties p = (Properties) map.get(namespace);
if (p==null) {
p = new Properties();
map.put(namespace, p);
}
p.setProperty(propName, val);
}
}
if (map.size() > 0) {
Vector plugins = new Vector();
for (Iterator i = map.keySet().iterator(); i.hasNext(); ) {
String namespace = (String) i.next();
Properties p = (Properties) map.get(namespace);
String url = p.getProperty("url");
Object o;
synchronized (pluginStore) {
o = pluginStore.get(url);
if (o == null) {
try {
Class piClass = Class.forName(url);
Method getInstance = piClass.getMethod("getMasterInstance", null);
if (getInstance==null)
throw new Exception ("Specified plugin-object doesn't implement static getMasterInstance");
o = getInstance.invoke(null, null);
if (!(o instanceof IGroupPlugin))
throw new Exception ("Specified plugin-object doesn't implement interface IGroupPlugin");
pluginStore.put(url, o);
} catch (Exception e) {
Server.log (this, "invalid url for extension: " + url, Server.MSG_ERROR, Server.LVL_MINOR);
continue;
}
}
}
try {
plugins.add(((IGroupPlugin) o).instanceForGroup(namespace, g, p));
} catch (Exception e) {
Server.debug(this, "catched exception while getting GroupPlugin-instance", e, Server.MSG_STATE, Server.LVL_MAJOR);
}
}
g.setPlugins((IGroupPlugin[]) plugins.toArray(new IGroupPlugin[0]));
}
return g;
}
public int openGroupsCount() {
return grps.size();
}
public synchronized Group[] currentGroupList () {
if (grpsArr==null)
grpsArr=(Group[]) grps.values().toArray(new Group[0]);
return grpsArr;
}
public void updateStartingGroups (String[] sgNames) {
Vector curr = (Vector) startGroups.clone();
Vector updt = new Vector ();
for (int i = 0; i < sgNames.length; i++) {
String[] c = sgNames[i].split("/");
String key = c[0].trim().toLowerCase();
updt.add(key);
if (c.length>1)
startGroupThemes.put(key, c[1]);
else
startGroupThemes.remove(key);
}
curr.removeAll(updt);
updt.removeAll(startGroups);
startGroups.addAll(updt);
startGroups.removeAll(curr);
synchronized (GroupManager.mgr) {
for (Iterator i = updt.iterator(); i.hasNext(); ) {
String cName = (String) i.next();
Group g = (Group) grps.get(cName);
if (g==null)
continue;
g.setState(IGroupState.ENTRANCE);
}
for (Iterator i = curr.iterator(); i.hasNext(); ) {
String cName = (String) i.next();
Group g = (Group) grps.get(cName);
if (g==null)
continue;
g.unsetState(IGroupState.ENTRANCE);
}
}
}
public void updateModeratedGroups (Vector mg) {
Vector removed = (Vector) moderatedGroups.clone();
removed.removeAll(mg);
Vector added = (Vector) mg.clone();
added.removeAll(moderatedGroups);
for (Enumeration e = removed.elements(); e.hasMoreElements(); ) {
Group g = getGroup ((String) e.nextElement());
if (g==null)
continue;
while (moderatedGroups.contains(g))
moderatedGroups.remove(g);
g.unsetState (IGroupState.MODERATED);
g.setState(IGroupState.OPEN);
}
for (Enumeration e = added.elements(); e.hasMoreElements(); ) {
String gName = (String) e.nextElement();
moderatedGroups.add(gName);
Group g = getGroup (gName);
moderatedGroups.add(g);
if (g==null)
continue;
g.setState(IGroupState.MODERATED);
g.unsetState (IGroupState.OPEN);
}
}
/**
* @param grp The name of the group
* @return true if this group is a startgroup, false if not
*/
public boolean isStartingGroup(String grp) {
return startGroups.contains(grp.trim().toLowerCase());
}
/**
* update groupListLastChange
*/
public void updateGroupListLastModified () {
groupListLastChange=System.currentTimeMillis();
}
/**
* @return last grouplist modification
*/
public long groupListLastModified() {
return groupListLastChange;
}
/**
* @return last usercount modification
*/
public long lastModified() {
return lastModified;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -