From 55ab4827ead7b6ce3cfd86141f8d27a8fb8d5897 Mon Sep 17 00:00:00 2001 From: MyuTsu Date: Mon, 2 Feb 2026 11:48:19 +0100 Subject: [PATCH 1/4] fix(group): add missing group column to model mapping --- inc/applianceinjection.class.php | 5 ++++- inc/certificateinjection.class.php | 3 +++ inc/commoninjectionlib.class.php | 10 +++++----- inc/computerinjection.class.php | 3 +++ inc/monitorinjection.class.php | 3 +++ inc/peripheralinjection.class.php | 3 +++ inc/phoneinjection.class.php | 3 +++ inc/printerinjection.class.php | 3 +++ 8 files changed, 27 insertions(+), 6 deletions(-) diff --git a/inc/applianceinjection.class.php b/inc/applianceinjection.class.php index 544502d1..30267acf 100644 --- a/inc/applianceinjection.class.php +++ b/inc/applianceinjection.class.php @@ -61,6 +61,9 @@ public function getOptions($primary_type = '') $tab = Search::getOptions(get_parent_class($this)); + //Specific to groups (simple group, not technical) + $tab[71]['linkfield'] = 'groups_id_normal'; + //Remove some options because some fields cannot be imported $blacklist = PluginDatainjectionCommonInjectionLib::getBlacklistedOptions(get_parent_class($this)); $notimportable = [5, 9, 31]; @@ -68,7 +71,7 @@ public function getOptions($primary_type = '') $options['ignore_fields'] = array_merge($blacklist, $notimportable); $options['displaytype'] = [ "multiline_text" => [4], - "dropdown" => [8, 10, 11, 32, 49], + "dropdown" => [8, 10, 11, 32, 49, 71], "user" => [6, 24], "bool" => [7, 61], ]; diff --git a/inc/certificateinjection.class.php b/inc/certificateinjection.class.php index 75781015..228a7fa3 100644 --- a/inc/certificateinjection.class.php +++ b/inc/certificateinjection.class.php @@ -61,6 +61,9 @@ public function getOptions($primary_type = '') $tab = Search::getOptions(get_parent_class($this)); + //Specific to groups (simple group, not technical) + $tab[71]['linkfield'] = 'groups_id_normal'; + //Remove some options because some fields cannot be imported $blacklist = PluginDatainjectionCommonInjectionLib::getBlacklistedOptions(get_parent_class($this)); $notimportable = [2, 14, 19, 61, 72, 121]; diff --git a/inc/commoninjectionlib.class.php b/inc/commoninjectionlib.class.php index 2bfdabc2..ce5d9716 100644 --- a/inc/commoninjectionlib.class.php +++ b/inc/commoninjectionlib.class.php @@ -1673,14 +1673,14 @@ private function effectiveAddOrUpdate($injectionClass, $item, $values, $add = tr // handle new format for group type specification // restricting to group_item relations only - if (($key === "groups_id_tech" || $key === "groups_id") && $option['table'] == getTableForItemType(Group::class) && !empty($option) && isset($option['joinparams']['beforejoin']['table']) && $option['joinparams']['beforejoin']['table'] === getTableForItemType(Group_Item::class) && isset($option['joinparams']['beforejoin']['joinparams']['condition']['NEWTABLE.type'])) { - $value = $option['joinparams']['beforejoin']['joinparams']['condition']['NEWTABLE.type']; + if (($key === "groups_id_tech" || $key === "groups_id" || $key === "groups_id_normal") && $option['table'] == getTableForItemType(Group::class) && !empty($option) && isset($option['joinparams']['beforejoin']['table']) && $option['joinparams']['beforejoin']['table'] === getTableForItemType(Group_Item::class) && isset($option['joinparams']['beforejoin']['joinparams']['condition']['NEWTABLE.type'])) { + $group_type = $option['joinparams']['beforejoin']['joinparams']['condition']['NEWTABLE.type']; // depending on the type, set the correct field (_groups_id_tech => array or _groups_id => array) - // and unset the old one (groups_id_tech => int or groups_id => int) - if ($value == Group_Item::GROUP_TYPE_TECH) { + // and unset the old one (groups_id_tech => int or groups_id => int or groups_id_normal => int) + if ($group_type == Group_Item::GROUP_TYPE_TECH) { $toinject["_groups_id_tech"] = [$value]; } else { - $toinject["_groups"] = [$value]; + $toinject["_groups_id"] = [$value]; } unset($toinject[$key]); } diff --git a/inc/computerinjection.class.php b/inc/computerinjection.class.php index 9a3d88ca..a7bbe67e 100644 --- a/inc/computerinjection.class.php +++ b/inc/computerinjection.class.php @@ -71,6 +71,9 @@ public function getOptions($primary_type = '') //Specific to location $tab[3]['linkfield'] = 'locations_id'; + //Specific to groups (simple group, not technical) + $tab[71]['linkfield'] = 'groups_id_normal'; + //specific for antiviruses $tab[167]['name'] = __s('Antivirus name', 'datainjection'); diff --git a/inc/monitorinjection.class.php b/inc/monitorinjection.class.php index 1227327c..5a69c35b 100644 --- a/inc/monitorinjection.class.php +++ b/inc/monitorinjection.class.php @@ -70,6 +70,9 @@ public function getOptions($primary_type = '') //Specific to location $tab[3]['linkfield'] = 'locations_id'; + //Specific to groups (simple group, not technical) + $tab[71]['linkfield'] = 'groups_id_normal'; + //Remove some options because some fields cannot be imported $blacklist = PluginDatainjectionCommonInjectionLib::getBlacklistedOptions(get_parent_class($this)); $notimportable = [91, 92, 93]; diff --git a/inc/peripheralinjection.class.php b/inc/peripheralinjection.class.php index 1fec9d8a..6d7f5178 100644 --- a/inc/peripheralinjection.class.php +++ b/inc/peripheralinjection.class.php @@ -69,6 +69,9 @@ public function getOptions($primary_type = '') //Specific to location $tab[3]['linkfield'] = 'locations_id'; + //Specific to groups (simple group, not technical) + $tab[71]['linkfield'] = 'groups_id_normal'; + //Remove some options because some fields cannot be imported $blacklist = PluginDatainjectionCommonInjectionLib::getBlacklistedOptions(get_parent_class($this)); $notimportable = [91, 92, 93]; diff --git a/inc/phoneinjection.class.php b/inc/phoneinjection.class.php index 4acebc95..88dbb9bc 100644 --- a/inc/phoneinjection.class.php +++ b/inc/phoneinjection.class.php @@ -67,6 +67,9 @@ public function getOptions($primary_type = '') $tab = Search::getOptions(get_parent_class($this)); + //Specific to groups (simple group, not technical) + $tab[71]['linkfield'] = 'groups_id_normal'; + //specific for domain $tab[205]['name'] = __s('Domain name', 'datainjection'); diff --git a/inc/printerinjection.class.php b/inc/printerinjection.class.php index 226329d0..731a26a5 100644 --- a/inc/printerinjection.class.php +++ b/inc/printerinjection.class.php @@ -70,6 +70,9 @@ public function getOptions($primary_type = '') //Specific to location $tab[3]['linkfield'] = 'locations_id'; + //Specific to groups (simple group, not technical) + $tab[71]['linkfield'] = 'groups_id_normal'; + //Remove some options because some fields cannot be imported $blacklist = PluginDatainjectionCommonInjectionLib::getBlacklistedOptions(get_parent_class($this)); $notimportable = [91, 92, 93]; From 436e754508a5cf78a397bfc4c3eb2cf8b8db9afd Mon Sep 17 00:00:00 2001 From: MyuTsu Date: Mon, 2 Feb 2026 11:56:21 +0100 Subject: [PATCH 2/4] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c9f5296f..9ddab742 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - Fix model subform not displayed after page reload - Rename visibility field label to "Is Private" +- Restored group selection in mappings ## [2.15.3] - 2025-12-22 From 86572a07dbe9a245eae4f5099d298759a0ab2f84 Mon Sep 17 00:00:00 2001 From: MyuTsu Date: Wed, 4 Feb 2026 14:42:23 +0100 Subject: [PATCH 3/4] review --- inc/applianceinjection.class.php | 5 +---- inc/certificateinjection.class.php | 3 --- inc/monitorinjection.class.php | 3 --- inc/peripheralinjection.class.php | 3 --- inc/phoneinjection.class.php | 3 --- 5 files changed, 1 insertion(+), 16 deletions(-) diff --git a/inc/applianceinjection.class.php b/inc/applianceinjection.class.php index 30267acf..544502d1 100644 --- a/inc/applianceinjection.class.php +++ b/inc/applianceinjection.class.php @@ -61,9 +61,6 @@ public function getOptions($primary_type = '') $tab = Search::getOptions(get_parent_class($this)); - //Specific to groups (simple group, not technical) - $tab[71]['linkfield'] = 'groups_id_normal'; - //Remove some options because some fields cannot be imported $blacklist = PluginDatainjectionCommonInjectionLib::getBlacklistedOptions(get_parent_class($this)); $notimportable = [5, 9, 31]; @@ -71,7 +68,7 @@ public function getOptions($primary_type = '') $options['ignore_fields'] = array_merge($blacklist, $notimportable); $options['displaytype'] = [ "multiline_text" => [4], - "dropdown" => [8, 10, 11, 32, 49, 71], + "dropdown" => [8, 10, 11, 32, 49], "user" => [6, 24], "bool" => [7, 61], ]; diff --git a/inc/certificateinjection.class.php b/inc/certificateinjection.class.php index 228a7fa3..75781015 100644 --- a/inc/certificateinjection.class.php +++ b/inc/certificateinjection.class.php @@ -61,9 +61,6 @@ public function getOptions($primary_type = '') $tab = Search::getOptions(get_parent_class($this)); - //Specific to groups (simple group, not technical) - $tab[71]['linkfield'] = 'groups_id_normal'; - //Remove some options because some fields cannot be imported $blacklist = PluginDatainjectionCommonInjectionLib::getBlacklistedOptions(get_parent_class($this)); $notimportable = [2, 14, 19, 61, 72, 121]; diff --git a/inc/monitorinjection.class.php b/inc/monitorinjection.class.php index 5a69c35b..1227327c 100644 --- a/inc/monitorinjection.class.php +++ b/inc/monitorinjection.class.php @@ -70,9 +70,6 @@ public function getOptions($primary_type = '') //Specific to location $tab[3]['linkfield'] = 'locations_id'; - //Specific to groups (simple group, not technical) - $tab[71]['linkfield'] = 'groups_id_normal'; - //Remove some options because some fields cannot be imported $blacklist = PluginDatainjectionCommonInjectionLib::getBlacklistedOptions(get_parent_class($this)); $notimportable = [91, 92, 93]; diff --git a/inc/peripheralinjection.class.php b/inc/peripheralinjection.class.php index 6d7f5178..1fec9d8a 100644 --- a/inc/peripheralinjection.class.php +++ b/inc/peripheralinjection.class.php @@ -69,9 +69,6 @@ public function getOptions($primary_type = '') //Specific to location $tab[3]['linkfield'] = 'locations_id'; - //Specific to groups (simple group, not technical) - $tab[71]['linkfield'] = 'groups_id_normal'; - //Remove some options because some fields cannot be imported $blacklist = PluginDatainjectionCommonInjectionLib::getBlacklistedOptions(get_parent_class($this)); $notimportable = [91, 92, 93]; diff --git a/inc/phoneinjection.class.php b/inc/phoneinjection.class.php index d0d73db9..756945a1 100644 --- a/inc/phoneinjection.class.php +++ b/inc/phoneinjection.class.php @@ -67,9 +67,6 @@ public function getOptions($primary_type = '') $tab = Search::getOptions(get_parent_class($this)); - //Specific to groups (simple group, not technical) - $tab[71]['linkfield'] = 'groups_id_normal'; - //specific for domain $tab[205]['name'] = __('Domain name', 'datainjection'); From 370544af83f7b505a1edd9057ca9c5adfa22d9a5 Mon Sep 17 00:00:00 2001 From: MyuTsu Date: Wed, 4 Feb 2026 14:43:15 +0100 Subject: [PATCH 4/4] review --- inc/printerinjection.class.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/inc/printerinjection.class.php b/inc/printerinjection.class.php index 731a26a5..226329d0 100644 --- a/inc/printerinjection.class.php +++ b/inc/printerinjection.class.php @@ -70,9 +70,6 @@ public function getOptions($primary_type = '') //Specific to location $tab[3]['linkfield'] = 'locations_id'; - //Specific to groups (simple group, not technical) - $tab[71]['linkfield'] = 'groups_id_normal'; - //Remove some options because some fields cannot be imported $blacklist = PluginDatainjectionCommonInjectionLib::getBlacklistedOptions(get_parent_class($this)); $notimportable = [91, 92, 93];