diff options
Diffstat (limited to 'modules-available/serversetup-bwlp-ipxe/hooks')
-rw-r--r-- | modules-available/serversetup-bwlp-ipxe/hooks/ipxe-update.inc.php | 20 | ||||
-rw-r--r-- | modules-available/serversetup-bwlp-ipxe/hooks/locations-column.inc.php | 57 |
2 files changed, 72 insertions, 5 deletions
diff --git a/modules-available/serversetup-bwlp-ipxe/hooks/ipxe-update.inc.php b/modules-available/serversetup-bwlp-ipxe/hooks/ipxe-update.inc.php index c58a64ae..76f8cfa2 100644 --- a/modules-available/serversetup-bwlp-ipxe/hooks/ipxe-update.inc.php +++ b/modules-available/serversetup-bwlp-ipxe/hooks/ipxe-update.inc.php @@ -1,12 +1,22 @@ <?php +$get = Module::get('serversetup'); +if ($get === false) + return; + +$get->activate(1, false); + $data = [ - 'ipaddress' => Property::getServerIp() + 'ipaddress' => Property::getServerIp(), + 'parentTask' => $taskId, ]; if ($data['ipaddress'] === 'invalid') - return false; + return null; $task = Taskmanager::submit('CompileIPxeNew', $data); -if (Taskmanager::isFailed($task)) - return false; -Property::set('ipxe-task-id', $task['id'], 15); +if (Taskmanager::isFailed($task)) { + error_log(print_r($task, true)); + return null; +} +TaskmanagerCallback::addCallback($task, 'ipxeCompileDone'); +Property::set(IPxeBuilder::PROP_IPXE_COMPILE_TASKID, $task['id'], 15); return $task['id'];
\ No newline at end of file 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 |