diff --git a/security/PermissionCheckboxSetField.php b/security/PermissionCheckboxSetField.php
index d3eafeed4..c0a8033eb 100644
--- a/security/PermissionCheckboxSetField.php
+++ b/security/PermissionCheckboxSetField.php
@@ -1,12 +1,33 @@
filterField = $filterField;
$this->managedClass = $managedClass;
$this->record = $record;
parent::__construct($name, $title, Permission::get_codes(true));
}
+
+ /**
+ * @param Array $codes
+ */
+ function setHiddenPermissions($codes) {
+ $this->hiddenPermissions = $codes;
+ }
+
+ /**
+ * @return Array
+ */
+ function getHiddenPermissions() {
+ return $this->hiddenPermissions;
+ }
function Field() {
Requirements::css(SAPPHIRE_DIR . '/css/CheckboxSetField.css');
@@ -69,9 +90,8 @@ class PermissionCheckboxSetField extends CheckboxSetField {
if($source) {
foreach($source as $categoryName => $permissions) {
$options .= "
$categoryName
";
- $hiddens = Permission::$hidden_permissions;
foreach($permissions as $code => $permission) {
- if(in_array($code, $hiddens)) continue;
+ if(in_array($code, $this->hiddenPermissions)) continue;
$key = $code;
$value = $permission['name'];
diff --git a/tests/security/PermissionCheckboxSetFieldTest.php b/tests/security/PermissionCheckboxSetFieldTest.php
new file mode 100644
index 000000000..8deff75a4
--- /dev/null
+++ b/tests/security/PermissionCheckboxSetFieldTest.php
@@ -0,0 +1,24 @@
+setHiddenPermissions(
+ array('CMS_ACCESS_ReportAdmin')
+ );
+ $this->assertEquals(
+ $f->getHiddenPermissions(),
+ array('CMS_ACCESS_ReportAdmin')
+ );
+ $this->assertContains('CMS_ACCESS_CMSMain', $f->Field());
+ $this->assertNotContains('CMS_ACCESS_ReportAdmin', $f->Field());
+ }
+}
\ No newline at end of file
diff --git a/tests/security/PermissionTest.php b/tests/security/PermissionTest.php
index ca56dcf29..a28e61d4f 100644
--- a/tests/security/PermissionTest.php
+++ b/tests/security/PermissionTest.php
@@ -40,18 +40,4 @@ class PermissionTest extends SapphireTest {
// Check that a random permission that shouldn't be there isn't
$this->assertFalse(Permission::checkMember($member, "CMS_ACCESS_SecurityAdmin"));
}
-
- function testHiddenPermissions(){
- $permissionCheckboxSet = new PermissionCheckboxSetField('Permissions','Permissions','Permission','GroupID');
- $this->assertContains('CMS_ACCESS_CMSMain', $permissionCheckboxSet->Field());
- $this->assertContains('CMS_ACCESS_AssetAdmin', $permissionCheckboxSet->Field());
-
- Permission::add_to_hidden_permissions('CMS_ACCESS_CMSMain');
- Permission::add_to_hidden_permissions('CMS_ACCESS_AssetAdmin');
- $this->assertNotContains('CMS_ACCESS_CMSMain', $permissionCheckboxSet->Field());
- $this->assertNotContains('CMS_ACCESS_AssetAdmin', $permissionCheckboxSet->Field());
-
- Permission::remove_from_hidden_permissions('CMS_ACCESS_AssetAdmin');
- $this->assertContains('CMS_ACCESS_AssetAdmin', $permissionCheckboxSet->Field());
- }
}
\ No newline at end of file