From 9734274ed1b61ba50272324a2bd72723e6b576be Mon Sep 17 00:00:00 2001 From: ElgarL Date: Mon, 31 Oct 2011 20:07:21 +0000 Subject: 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. --- EssentialsGroupManager/src/Changelog.txt | 4 +- .../org/anjocaido/groupmanager/GroupManager.java | 8 +++- .../permissions/AnjoPermissionsHandler.java | 48 ++++++++++++++++++---- 3 files changed, 50 insertions(+), 10 deletions(-) (limited to 'EssentialsGroupManager/src') diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index 6c23895ec..b2a85568f 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -59,4 +59,6 @@ v 1.5: - Added Global Groups Defined in groupmanager/globalgroups.yml. Create groups in the yml with a g: prefix, then inherit in the worlds groups files. - - Added Info node support to Global Groups. \ No newline at end of file + - 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. \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index 8a6960697..ebb63653a 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -1176,11 +1176,17 @@ public class GroupManager extends JavaPlugin { } // VALIDANDO PERMISSAO auxGroup = auxUser.getGroup(); - auxGroup2 = permissionHandler.nextGroupWithVariable(auxGroup, args[1], null); + auxGroup2 = permissionHandler.nextGroupWithVariable(auxGroup, 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) { sender.sendMessage(ChatColor.RED + "The user doesn't have access to that variable!"); + return false; } } // PARECE OK diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java index 98c062ea5..e7939c411 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java @@ -438,7 +438,8 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { /** * 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 variable @@ -459,7 +460,14 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } Group result = nextGroupWithVariable(start, variable); 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 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 - * 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 variable @@ -488,7 +497,14 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } Group result = nextGroupWithVariable(start, variable); 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 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 - * 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 variable @@ -517,7 +534,14 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } Group result = nextGroupWithVariable(start, variable); 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 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 - * 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 variable @@ -546,7 +571,14 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } Group result = nextGroupWithVariable(start, variable); 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 getUserPermissionDouble(string, string1); -- cgit v1.2.3