summaryrefslogtreecommitdiffstats
path: root/modules-available/baseconfig/page.inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules-available/baseconfig/page.inc.php')
-rw-r--r--modules-available/baseconfig/page.inc.php24
1 files changed, 12 insertions, 12 deletions
diff --git a/modules-available/baseconfig/page.inc.php b/modules-available/baseconfig/page.inc.php
index 837a3b67..0c11d5e1 100644
--- a/modules-available/baseconfig/page.inc.php
+++ b/modules-available/baseconfig/page.inc.php
@@ -23,11 +23,7 @@ class Page_BaseConfig extends Page
$newValues = Request::post('setting');
if (is_array($newValues)) {
- if ($this->targetModule === 'locations') {
- User::assertPermission('edit', $this->qry_extra['field_value']);
- } else {
- User::assertPermission('edit', 0);
- }
+ User::assertPermission('edit', $this->getPermissionLocationId());
// Build variables for specific sub-settings
if ($this->targetModule === false || empty($this->qry_extra['field'])) {
// Global, or Module specific, but module doesn't have an extra field
@@ -118,13 +114,9 @@ class Page_BaseConfig extends Page
Util::redirect('?do=BaseConfig');
}
}
- if ($this->targetModule === 'locations') {
- User::assertPermission('view', $this->qry_extra['field_value']);
- $editForbidden = !User::hasPermission('edit', $this->qry_extra['field_value']);
- } else {
- User::assertPermission('view', 0);
- $editForbidden = !User::hasPermission('edit', 0);
- }
+ $lid = $this->getPermissionLocationId();
+ User::assertPermission('view', $lid);
+ $editForbidden = !User::hasPermission('edit', $lid);
// Get stuff that's set in DB already
if ($this->targetModule !== false && isset($this->qry_extra['field'])) {
$fields = '';
@@ -280,6 +272,14 @@ class Page_BaseConfig extends Page
$this->targetModule = $module;
$this->qry_extra = $hook;
}
+
+ private function getPermissionLocationId()
+ {
+ if (!isset($this->qry_extra['locationResolver']) || !isset($this->qry_extra['field_value']))
+ return 0;
+ $func = explode('::', $this->qry_extra['locationResolver']);
+ return (int)call_user_func($func, $this->qry_extra['field_value']);
+ }
/**
* Create html snippet for setting, based on given validator