From 50d28a0ad8dcf5d9fe697278b6ea05aa00f8fb87 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 5 Nov 2019 18:01:37 +0100 Subject: [baseconfig] Overhaul hook system This enables us to finally properly show the inheritance flow of all the config variables when editing the baseconfig for a certain location or machine. --- .../statistics/baseconfig/getconfig.inc.php | 3 +++ modules-available/statistics/baseconfig/hook.json | 2 +- .../statistics/inc/statisticshooks.inc.php | 20 +++++++++++++++----- 3 files changed, 19 insertions(+), 6 deletions(-) (limited to 'modules-available/statistics') diff --git a/modules-available/statistics/baseconfig/getconfig.inc.php b/modules-available/statistics/baseconfig/getconfig.inc.php index ea351d15..053827db 100644 --- a/modules-available/statistics/baseconfig/getconfig.inc.php +++ b/modules-available/statistics/baseconfig/getconfig.inc.php @@ -8,6 +8,9 @@ if (Request::any('force', 0, 'int') === 1 && Request::any('module', false, 'stri } } +if (!$uuid) // Required at this point, bail out if not given + return; + // Query machine specific settings $res = Database::simpleQuery("SELECT setting, value FROM setting_machine WHERE machineuuid = :uuid", ['uuid' => $uuid]); while ($row = $res->fetch(PDO::FETCH_ASSOC)) { diff --git a/modules-available/statistics/baseconfig/hook.json b/modules-available/statistics/baseconfig/hook.json index da28ad5d..4a406653 100644 --- a/modules-available/statistics/baseconfig/hook.json +++ b/modules-available/statistics/baseconfig/hook.json @@ -3,5 +3,5 @@ "field": "machineuuid", "locationResolver": "StatisticsHooks::baseconfigLocationResolver", "tostring": "StatisticsHooks::getBaseconfigName", - "getfallback": "StatisticsHooks::getBaseconfigParent" + "getInheritance": "StatisticsHooks::baseconfigInheritance" } \ No newline at end of file diff --git a/modules-available/statistics/inc/statisticshooks.inc.php b/modules-available/statistics/inc/statisticshooks.inc.php index ead4917b..746bdabf 100644 --- a/modules-available/statistics/inc/statisticshooks.inc.php +++ b/modules-available/statistics/inc/statisticshooks.inc.php @@ -21,11 +21,6 @@ class StatisticsHooks return self::$row['hostname'] ? self::$row['hostname'] : self::$row['clientip']; } - public static function getBaseconfigParent($machineuuid) - { - return false; // TODO - } - public static function baseconfigLocationResolver($machineuuid) { self::getRow($machineuuid); @@ -34,4 +29,19 @@ class StatisticsHooks return (int)self::$row['locationid']; } + /** + * Hook to get inheritance tree for all config vars + * @param int $machineuuid MachineUUID currently being edited + */ + public static function baseconfigInheritance($machineuuid) + { + self::getRow($machineuuid); + if (self::$row === false) + return []; + BaseConfig::prepareWithOverrides([ + 'locationid' => self::$row['locationid'] + ]); + return ConfigHolder::getRecursiveConfig(true); + } + } \ No newline at end of file -- cgit v1.2.3-55-g7522