summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--EssentialsGroupManager/src/Changelog.txt4
-rw-r--r--EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java8
-rw-r--r--EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java48
3 files changed, 50 insertions, 10 deletions
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);