'CHECKOUT', 'ref' => $version, 'parentTask' => $parent, ]); if (!Taskmanager::isTask($task)) return null; TaskmanagerCallback::addCallback($task, 'ipxeVersionSet'); Property::set(IPxeBuilder::PROP_VERSION_SELECT_TASKID, $task['id'], 2); return $task['id']; } public static function getVersionTaskResult(): ?array { $task = Taskmanager::status(IPxeBuilder::VERSION_LIST_TASK); if (!Taskmanager::isTask($task) || Taskmanager::isFailed($task)) { $task = Taskmanager::submit('IpxeVersion', ['id' => IPxeBuilder::VERSION_LIST_TASK, 'action' => 'LIST']); } $task = Taskmanager::waitComplete($task); if (Taskmanager::isFinished($task) && !Taskmanager::isFailed($task)) { return $task['data']; } return null; } /** * Callback when compile Taskmanager job finished */ public static function compileCompleteCallback(array $task): void { if (!Taskmanager::isFinished($task) || Taskmanager::isFailed($task)) return; $version = 'Unknown'; if (isset($task['data']['hash'])) { $hash = $task['data']['hash']; Property::set(IPxeBuilder::PROP_IPXE_HASH, $hash); $version = $hash; $list = IPxeBuilder::getVersionTaskResult(); if (isset($list['versions'])) { foreach ($list['versions'] as $v) { if ($v['hash'] === $version) { // Do NOT change (see below) $version = date('Y-m-d H:i', $v['date']) . ' (' . substr($version, 0, 7) . ')'; break; } } } } // Do NOT change the format of this string -- we depend on it in ScriptBuilderIpxe::output() $buildString = date('d.m.Y H:i') . ', Version: ' . $version; Property::set(IPxeBuilder::PROP_IPXE_BUILDSTRING, $buildString); } public static function setIPxeVersionCallback(array $task): void { if (!Taskmanager::isFinished($task) || Taskmanager::isFailed($task) || empty($task['data']['ref'])) return; Property::set(IPxeBuilder::PROP_IPXE_HASH, $task['data']['ref']); } }