Fixed an error on 'manucheckv'. If the users doesn't have the variable

it fell through causing an exception.
Added checking of subgroups for Info nodes.
This commit is contained in:
ElgarL 2011-10-31 20:07:21 +00:00
parent 3f2916967d
commit 9734274ed1
3 changed files with 50 additions and 10 deletions

View file

@ -59,4 +59,6 @@ v 1.5:
- Added Global Groups - Added Global Groups
Defined in groupmanager/globalgroups.yml. Defined in groupmanager/globalgroups.yml.
Create groups in the yml with a g: prefix, then inherit in the worlds groups files. Create groups in the yml with a g: prefix, then inherit in the worlds groups files.
- Added Info node support to Global Groups. - Added Info node support to Global Groups.
- Fixed an error on 'manucheckv'. If the users doesn't have the variable it fell through causing an exception.
- Added checking of subgroups for Info nodes.

View file

@ -1176,11 +1176,17 @@ public class GroupManager extends JavaPlugin {
} }
// VALIDANDO PERMISSAO // VALIDANDO PERMISSAO
auxGroup = auxUser.getGroup(); auxGroup = auxUser.getGroup();
auxGroup2 = permissionHandler.nextGroupWithVariable(auxGroup, args[1], null); auxGroup2 = permissionHandler.nextGroupWithVariable(auxGroup, args[1]);
if (!auxUser.getVariables().hasVar(args[1])) { if (!auxUser.getVariables().hasVar(args[1])) {
// Check sub groups
if (!auxUser.isSubGroupsEmpty() && auxGroup2 == null)
for (Group subGroup : auxUser.subGroupListCopy()) {
auxGroup2 = permissionHandler.nextGroupWithVariable(subGroup, args[1]);
}
if (auxGroup2 == null) { if (auxGroup2 == null) {
sender.sendMessage(ChatColor.RED + "The user doesn't have access to that variable!"); sender.sendMessage(ChatColor.RED + "The user doesn't have access to that variable!");
return false;
} }
} }
// PARECE OK // PARECE OK

View file

@ -438,7 +438,8 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
/** /**
* Returns the variable value of the user, in INFO node. If not found, it * Returns the variable value of the user, in INFO node. If not found, it
* will search for his Group variables. It will harvest the inheritance. * will search for his Group variables. It will harvest the inheritance
* and subgroups.
* *
* @param user * @param user
* @param variable * @param variable
@ -459,7 +460,14 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
} }
Group result = nextGroupWithVariable(start, variable); Group result = nextGroupWithVariable(start, variable);
if (result == null) { if (result == null) {
return ""; // Check sub groups
if (!auser.isSubGroupsEmpty())
for (Group subGroup : auser.subGroupListCopy()) {
result = nextGroupWithVariable(subGroup, variable);
// Found value?
if (result != null) continue;
}
if (result == null) return "";
} }
return result.getVariables().getVarString(variable); return result.getVariables().getVarString(variable);
// return getUserPermissionString(user, variable); // return getUserPermissionString(user, variable);
@ -467,7 +475,8 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
/** /**
* Returns the variable value of the user, in INFO node. If not found, it * Returns the variable value of the user, in INFO node. If not found, it
* will search for his Group variables. It will harvest the inheritance. * will search for his Group variables. It will harvest the inheritance
* and subgroups.
* *
* @param user * @param user
* @param variable * @param variable
@ -488,7 +497,14 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
} }
Group result = nextGroupWithVariable(start, variable); Group result = nextGroupWithVariable(start, variable);
if (result == null) { if (result == null) {
return -1; // Check sub groups
if (!auser.isSubGroupsEmpty())
for (Group subGroup : auser.subGroupListCopy()) {
result = nextGroupWithVariable(subGroup, variable);
// Found value?
if (result != null) continue;
}
if (result == null) return -1;
} }
return result.getVariables().getVarInteger(variable); return result.getVariables().getVarInteger(variable);
// return getUserPermissionInteger(string, string1); // return getUserPermissionInteger(string, string1);
@ -496,7 +512,8 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
/** /**
* Returns the variable value of the user, in INFO node. If not found, it * Returns the variable value of the user, in INFO node. If not found, it
* will search for his Group variables. It will harvest the inheritance. * will search for his Group variables. It will harvest the inheritance
* and subgroups.
* *
* @param user * @param user
* @param variable * @param variable
@ -517,7 +534,14 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
} }
Group result = nextGroupWithVariable(start, variable); Group result = nextGroupWithVariable(start, variable);
if (result == null) { if (result == null) {
return false; // Check sub groups
if (!auser.isSubGroupsEmpty())
for (Group subGroup : auser.subGroupListCopy()) {
result = nextGroupWithVariable(subGroup, variable);
// Found value?
if (result != null) continue;
}
if (result == null) return false;
} }
return result.getVariables().getVarBoolean(variable); return result.getVariables().getVarBoolean(variable);
// return getUserPermissionBoolean(user, string1); // return getUserPermissionBoolean(user, string1);
@ -525,7 +549,8 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
/** /**
* Returns the variable value of the user, in INFO node. If not found, it * Returns the variable value of the user, in INFO node. If not found, it
* will search for his Group variables. It will harvest the inheritance. * will search for his Group variables. It will harvest the inheritance
* and subgroups.
* *
* @param user * @param user
* @param variable * @param variable
@ -546,7 +571,14 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
} }
Group result = nextGroupWithVariable(start, variable); Group result = nextGroupWithVariable(start, variable);
if (result == null) { if (result == null) {
return -1.0D; // Check sub groups
if (!auser.isSubGroupsEmpty())
for (Group subGroup : auser.subGroupListCopy()) {
result = nextGroupWithVariable(subGroup, variable);
// Found value?
if (result != null) continue;
}
if (result == null) return -1.0D;
} }
return result.getVariables().getVarDouble(variable); return result.getVariables().getVarDouble(variable);
// return getUserPermissionDouble(string, string1); // return getUserPermissionDouble(string, string1);