diff options
Diffstat (limited to 'ui/include/classes/api/managers/CDiscoveryRuleManager.php')
-rw-r--r-- | ui/include/classes/api/managers/CDiscoveryRuleManager.php | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/ui/include/classes/api/managers/CDiscoveryRuleManager.php b/ui/include/classes/api/managers/CDiscoveryRuleManager.php index ccce03b65e5..b75efff2f5c 100644 --- a/ui/include/classes/api/managers/CDiscoveryRuleManager.php +++ b/ui/include/classes/api/managers/CDiscoveryRuleManager.php @@ -34,7 +34,7 @@ class CDiscoveryRuleManager { $parent_itemids = $ruleids; $child_ruleids = []; do { - $db_items = DBselect('SELECT i.itemid FROM items i WHERE '.dbConditionInt('i.templateid', $parent_itemids)); + $db_items = DBselect('SELECT i.itemid FROM items i WHERE '.dbConditionId('i.templateid', $parent_itemids)); $parent_itemids = []; while ($db_item = DBfetch($db_items)) { $parent_itemids[$db_item['itemid']] = $db_item['itemid']; @@ -45,18 +45,15 @@ class CDiscoveryRuleManager { $ruleids = array_merge($ruleids, $child_ruleids); // Delete item prototypes. - $iprototypeids = []; - $db_items = DBselect( - 'SELECT i.itemid'. + $db_items = DBfetchArrayAssoc(DBselect( + 'SELECT id.itemid,i.name'. ' FROM item_discovery id,items i'. - ' WHERE i.itemid=id.itemid'. - ' AND '.dbConditionInt('parent_itemid', $ruleids) - ); - while ($item = DBfetch($db_items)) { - $iprototypeids[$item['itemid']] = $item['itemid']; - } - if ($iprototypeids) { - CItemPrototypeManager::delete($iprototypeids); + ' WHERE id.itemid=i.itemid'. + ' AND '.dbConditionId('parent_itemid', $ruleids) + ), 'itemid'); + + if ($db_items) { + CItemPrototype::deleteForce($db_items); } // Delete host prototypes. @@ -64,7 +61,7 @@ class CDiscoveryRuleManager { 'SELECT hd.hostid,h.host'. ' FROM host_discovery hd,hosts h'. ' WHERE hd.hostid=h.hostid'. - ' AND '.dbConditionInt('hd.parent_itemid', $ruleids) + ' AND '.dbConditionId('hd.parent_itemid', $ruleids) ), 'hostid'); if ($db_host_prototypes) { @@ -81,6 +78,7 @@ class CDiscoveryRuleManager { DB::delete('items', ['itemid' => $ruleids]); $insert = []; + foreach ($ruleids as $ruleid) { $insert[] = [ 'tablename' => 'events', @@ -88,6 +86,7 @@ class CDiscoveryRuleManager { 'value' => $ruleid ]; } + DB::insertBatch('housekeeper', $insert); } } |