diff options
Diffstat (limited to 'modules-available/sysconfig/hooks/locations-column.inc.php')
-rw-r--r-- | modules-available/sysconfig/hooks/locations-column.inc.php | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/modules-available/sysconfig/hooks/locations-column.inc.php b/modules-available/sysconfig/hooks/locations-column.inc.php new file mode 100644 index 00000000..8042b51c --- /dev/null +++ b/modules-available/sysconfig/hooks/locations-column.inc.php @@ -0,0 +1,57 @@ +<?php + +if (!User::hasPermission('.sysconfig.config.*') || !Module::isAvailable('sysconfig')) + return null; + +class SysconfigLocationColumn extends AbstractLocationColumn +{ + + private $lookup = []; + + public function __construct() + { + $confs = SysConfig::getAll(); + foreach ($confs as $conf) { + if (!isset($conf['locs']) || strlen($conf['locs']) === 0) + continue; + $confLocs = explode(',', $conf['locs']); + foreach ($confLocs as $locId) { + $this->lookup[$locId] = $conf['title']; + } + } + } + + public function getColumnHtml(int $locationId): string + { + return htmlspecialchars($this->lookup[$locationId] ?? ''); + } + + public function getEditUrl(int $locationId): string + { + if (!User::hasPermission('.sysconfig.config.assign', $locationId)) + return ''; + return '?do=sysconfig&locationid=' . $locationId; + } + + public function header(): string + { + return Dictionary::translateFileModule('sysconfig', 'module', 'location-column-header'); + } + + public function priority(): int + { + return 2000; + } + + public function propagateColumn(): bool + { + return true; + } + + public function propagateDefaultHtml(): string + { + return htmlspecialchars($this->lookup[0] ?? ''); + } +} + +return new SysconfigLocationColumn();
\ No newline at end of file |