diff options
Diffstat (limited to 'modules-available/serversetup-bwlp-ipxe/hooks/locations-column.inc.php')
-rw-r--r-- | modules-available/serversetup-bwlp-ipxe/hooks/locations-column.inc.php | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/modules-available/serversetup-bwlp-ipxe/hooks/locations-column.inc.php b/modules-available/serversetup-bwlp-ipxe/hooks/locations-column.inc.php new file mode 100644 index 00000000..d3290b62 --- /dev/null +++ b/modules-available/serversetup-bwlp-ipxe/hooks/locations-column.inc.php @@ -0,0 +1,57 @@ +<?php + +if (!User::hasPermission('.serversetup.ipxe.menu.assign') + || !Module::isAvailable('serversetup') + || !class_exists('IPxe')) { + return null; +} + +class IpxeLocationColumn extends AbstractLocationColumn +{ + + private $lookup = []; + + public function __construct(array $allowedLocationIds) + { + $res = Database::simpleQuery("SELECT ml.locationid, m.title, ml.defaultentryid FROM serversetup_menu m + INNER JOIN serversetup_menu_location ml USING (menuid) + WHERE locationid IN (:allowedLocationIds) GROUP BY locationid", compact('allowedLocationIds')); + foreach ($res as $row) { + $lid = (int)$row['locationid']; + if ($row['defaultentryid'] !== null) { + $row['title'] .= '(*)'; + } + $this->lookup[$lid] = $row['title']; + } + } + + public function getColumnHtml(int $locationId): string + { + return htmlspecialchars($this->lookup[$locationId] ?? ''); + } + + public function getEditUrl(int $locationId): string + { + if (!User::hasPermission('.serversetup.ipxe.menu.assign', $locationId)) + return ''; + return '?do=serversetup&show=assignlocation&locationid=' . $locationId; + } + + public function header(): string + { + return Dictionary::translateFileModule('serversetup', 'module', 'location-column-header'); + } + + public function priority(): int + { + return 3000; + } + + public function propagateColumn(): bool + { + return true; + } + +} + +return new IpxeLocationColumn($allowedLocationIds);
\ No newline at end of file |